【优化方法】拟牛顿法之DFP算法

匿名 (未验证) 提交于 2019-12-02 23:34:01

  • 上一篇牛顿法(Newton Method)中介绍了牛顿法的基本思路,牛顿法具有二阶收敛性,相比较最速下降法,收敛的速度更快。
  • 但是牛顿法也有一个缺点就是:求解Hessian矩阵复杂度比较大

  • 对于函数f(X)f(X),其中X=[x1,x2,,xn]TX=[x_1,x_2,…,x_n ]^T为向量。在牛顿法的求解过程中,首先是将f(X)f(X)函数在Xk+1X^{k+1}处展开,并且令f(X)f(X)函数在Xk+1X^{k+1}处的梯度为:f(Xk+1)=[fx1,fx2,,fxn]T
  • 泰勒展开为:f(X)=f(Xk+1)+f(Xk+1)T(XXk+1)+12(XXk+1)TGk+1(XXk+1)++o
  • Gk+1ΪX=Xk+1G_{k+1}ΪX=X^{k+1}的Hesse矩阵,省略高价无穷小量:f(X)=f(Xk+1)+f(Xk+1)T(XXk+1)+12(XXk+1)TGk+1(XXk+1)
  • XX求导,并令导数为00f(X)=f(Xk+1)T+Gk+1(XXk+1)=0
  • 求出XXX=Xk+1f(Xk+1)Gk+1=Xk+1Gk+11f(Xk+1)

  • 由于求解Hessian矩阵复杂度比较大,于是下面我们利用上一步即第kk步的信息来求Hessian矩阵:
  • 上面得到公式:f(X)=f(Xk+1)+Gk+1(XXk+1)
  • 我们令X=XkX=X^kf(Xk)=f(Xk+1)+Gk+1(XXk+1)
  • 利用上面公式我们可以使用f(Xk),f(Xk+1),Xk,Xk+1来模拟出Hesse矩阵的构造过程,此方法便称为拟牛顿法(QuasiNewton)。
  • 在拟牛顿法中主要包括:DFP拟牛顿法,BFGS拟牛顿法。这里我们讲解DFP拟牛顿法。
  • 化解上面式子:Gk+11(f(Xk)f(Xk+1))=XkXk+1Gk+11(f(Xk+1)f(Xk))=Xk1Xk
  • Gk+11=Hk+1G_{k+1}^{-1}=H_{k+1}得:Hk+1(f(Xk+1)f(Xk))=Xk1Xk
  • 假设下面式子成立:Hk+1=Hk+EkH_{k+1}=H_k+E_k
  • 这样只要我们求出EkE_k就就可以得到Hk+1H_{k+1},这样我们就将其带入上面的方程中:(Hk+Ek)(f(Xk+1)f(Xk))=Xk+1Xk
  • 令矩阵EkE_k用下面式子构造:Ek=αukukT+βvkvkTE_k=αu_k u_k^T+βv_k v_k^T其中uk,vku_k,v_kΪn×1n×1的向量。
  • 令:f(Xk+1)f(Xk)=ykXk1Xk=sk:Hk+1yk=skH_{k+1} y_k=s_k(Hk+Ek)yk=sk(H_k+E_k)y_k=s_k(Hk+αukukT+βvkvkT)yk=sk(H_k+αu_k u_k^T+βv_k v_k^T)y_k=s_k
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!