牛顿法与拟牛顿法总结

1) 牛顿法

  • 假设目标函数为f(x)f(x)f(x)

  • 牛顿法推导:
    f(x)f(x)f(x)xkx^kxk泰勒公式二阶展开,得
    f(x)=f(x(k))+gkT(x−x(k))+12(x−x(k))TH(x(k))(x−x(k))        (1)f(x)=f\left(x^{(k)}\right)+g_{k}^{\mathrm{T}}\left(x-x^{(k)}\right)+\frac{1}{2}\left(x-x^{(k)}\right)^{\mathrm{T}} H\left(x^{(k)}\right)\left(x-x^{(k)}\right)\ \ \ \ \ \ \ \ (1)f(x)=f(x(k))+gkT(xx(k))+21(xx(k))TH(x(k))(xx(k))        (1)
    将上边公式对x求导可得(注意gkTg_{k}^{\mathrm{T}}gkTH(x(k))H(x^{(k)})H(x(k))都是常数项,自变量已经固定为x(k)x^{(k)}x(k)),得到x=xkx=x_kx=xk邻域内的∇f(x)\nabla f(x)f(x)的近似函数
    ∇f(x)=gk+Hk(x−x(k))        (2) \nabla f(x)=g_{k}+H_{k}\left(x-x^{(k)}\right) \ \ \ \ \ \ \ \ (2) f(x)=gk+Hk(xx(k))        (2)
    由于f(x)f(x)f(x)∇f(x)=0\nabla f(x)=0f(x)=0的地方得到极值点(假如为凸函数则为最优点),那么直接令∇f(x)\nabla f(x)f(x)的近似函数(2)等于0即可得到下一次迭代的x(k+1)x^{(k+1)}x(k+1)
    令公式(2)等于0,可得牛顿法的迭代公式x(k+1)=x(k)−Hk−1gk     (3) x^{(k+1)}=x^{(k)}-H_{k}^{-1} g_{k} \ \ \ \ \ (3) x(k+1)=x(k)Hk1gk     (3)

  • 牛顿法的一步到位:f(x)f(x)f(x)的二阶导是常数时,那么对于∇f(x)\nabla f(x)f(x)的泰勒展开式就完全没有误差,可以一步到位了!
    如当f(x)=x2f(x)=x^2f(x)=x2时,若x0=2,g0=4,H0−1=0.5x^0 = 2,g_0=4,H^{-1}_0=0.5x0=2,g0=4,H01=0.5,则x1=2−4×0.5=0x_1 = 2-4\times 0.5=0x1=24×0.5=0,直接就迭代到了最优解x=0x=0x=0

  • 更新方向正确性:如果HkH_kHk是正定的,那么可以保证当前的迭代方向(仅仅是方向,不是具体的迭代量)pk=−λgkp_{k}=-\lambda g_{k}pk=λgk是下降方向。HkH_kHk正定代表当前梯度的导数在任意基方向都是要增大的。由公式(3)可得
    x=x(k)+λpk=x(k)−λHk−1gk     (4)x=x^{(k)}+\lambda p_{k}=x^{(k)}-\lambda H_{k}^{-1} g_{k} \ \ \ \ \ (4)x=x(k)+λpk=x(k)λHk1gk     (4)
    将公式(4)代入f(x)f(x)f(x)的一阶泰勒展开公式,可得
    f(x)=f(x(k))+gkT(x−x(k))=f(x(k))−λgkTHk−1gk     (5) f(x)=f\left(x^{(k)}\right)+g_{k}^{\mathrm{T}}\left(x-x^{(k)}\right)=f\left(x^{(k)}\right)-\lambda g_{k}^{\mathrm{T}} H_{k}^{-1} g_{k} \ \ \ \ \ (5) f(x)=f(x(k))+gkT(xx(k))=f(x(k))λgkTHk1gk     (5)
    由于HkH_kHk正定因此Hk−1H_k^{-1}Hk1也是正定的,若gk!=0g_{k}!=0gk!=0可得gkTHk−1gk&gt;0g_{k}^{\mathrm{T}} H_{k}^{-1} g_{k}&gt;0gkTHk1gk>0。当λ\lambdaλ为足够小的正数时f(x)&lt;f(x(k))f(x)&lt;f\left(x^{(k)}\right)f(x)<f(x(k))

  • 收敛性分析:与梯度下降比较,可以对梯度下降作类似的分析。梯度下降的更新公式为x=x(k)−λgkx=x^{(k)}-\lambda g_{k}x=x(k)λgk,将其代入f(x)f(x)f(x)的一阶泰勒展开公式
    f(x)=f(x(k))+gkT(x−x(k))=f(x(k))−λgkTgk     (6) f(x)=f\left(x^{(k)}\right)+g_{k}^{\mathrm{T}}\left(x-x^{(k)}\right)=f\left(x^{(k)}\right)-\lambda g_{k}^{\mathrm{T}} g_{k} \ \ \ \ \ (6) f(x)=f(x(k))+gkT(xx(k))=f(x(k))λgkTgk     (6)
    然后我们发现公式(5)和公式(6)可以近似地表示了牛顿法与梯度下降法的区别。公式(5)和公式(6)只有一个地方有区别,就是牛顿法的迭代量是 λgkTHk−1gk\lambda g_{k}^{\mathrm{T}} H_{k}^{-1} g_{k}λgkTHk1gk,而梯度下降的迭代量是 λgkTgk\lambda g_{k}^{\mathrm{T}} g_{k}λgkTgk,区别在于Hk−1H_{k}^{-1}Hk1
    假设目标函数是一个凸函数。当曲线很平缓的时候,HkH_{k}Hk会比较小从而Hk−1H_{k}^{-1}Hk1较大导致加大牛顿法的迭代量。当HkH_{k}Hk比较大而Hk−1H_{k}^{-1}Hk1比较小的时候曲线比较陡峭,这个时候要走得小心一点慢一点Hk−1H_{k}^{-1}Hk1比较小导致牛顿法的迭代量也变小了。这就比较好理解,为什么牛顿法会比梯度下降法收敛得更加快了!

2)拟牛顿法

  • 牛顿法存在的问题:由牛顿法的更新公式(3)可知,每次迭代的时候都需要去算二阶导矩阵hessian矩阵的逆矩阵,这个操作非常复杂。
  • 由公式(2)可以推出
    gk+1−gk=Hk(x(k+1)−x(k))  (7) g_{k+1}-g_{k}=H_{k}\left(x^{(k+1)}-x^{(k)}\right) \ \ (7) gk+1gk=Hk(x(k+1)x(k))  (7)
    yk=gk+1−gky_{k}=g_{k+1}-g_{k}yk=gk+1gkδk=x(k+1)−x(k)\delta_{k}=x^{(k+1)}-x^{(k)}δk=x(k+1)x(k),则
    Hk−1yk=δk  (8)H^{-1}_ky_k = \delta_k \ \ (8)Hk1yk=δk  (8)
    公式(8)又称为拟牛顿条件
  • 拟牛顿法用一个n阶矩阵GkG_kGk代替Hk−1H_k^{-1}Hk1。拟牛顿法对于GkG_kGk进行迭代运算
    Gk+1=Gk+ΔGk  (9) G_{k+1}=G_{k}+\Delta G_{k} \ \ (9) Gk+1=Gk+ΔGk  (9)

1. DFP(Davidon-Fletcher-Powell)算法

  • 算法:DFP选择用两个附加项来迭代更新
    Gk+1=Gk+Pk+Qk  (10)G_{k+1} = G_k + P_k + Q_k \ \ (10)Gk+1=Gk+Pk+Qk  (10)
    因此可得,Gk+1yk=Gkyk+Pkyk+QkykG_{k+1}y_k = G_ky_k + P_ky_k + Q_ky_kGk+1yk=Gkyk+Pkyk+Qkyk。其中Pk,QkP_k, Q_kPk,Qk是待定矩阵。为了使Gk+1G_k+1Gk+1满足拟牛顿条件,要满足
    Pkyk=δk,       Qkyk=−Gkyk  (11)P_ky_k=\delta_k, \ \ \ \ \ \ \ Q_ky_k=-G_ky_k \ \ (11)Pkyk=δk,       Qkyk=Gkyk  (11)
  • PkP_kPkQkQ_kQk可以这样得到
    Pk=δkδkTδkTyk,Qk=−GkykykTGkykTGkyk   (12) P_{k}=\frac{\delta_{k} \delta_{k}^{\mathrm{T}}}{\delta_{k}^{\mathrm{T}} y_{k}}, Q_{k}=-\frac{G_{k} y_{k} y_{k}^{\mathrm{T}} G_{k}}{y_{k}^{\mathrm{T}} G_{k} y_{k}} \ \ \ (12) Pk=δkTykδkδkTQk=ykTGkykGkykykTGk   (12)
  • 停止条件:一般为一阶导数小于某个阈值或者迭代次数达到一定代数
  • 正定:如果初始矩阵G0G_0G0是正定的,则迭代过程中的每个GkG_kGk都是正定的

2. BFGS(Broyden-Fletcher-Goldfarb-Shanno)算法

  • 定义:与DFP算法不同,BFGS直接用BkB_kBk逼近hessian矩阵HHH(DFP用GkG_kGk来逼近Hk−1H_k^{-1}Hk1)。BDGS对应的牛顿条件为
    Bk+1δk=yk B_{k+1}\delta_k = y_k Bk+1δk=yk
  • 拟合方法:与DFP类似,使用Bk+1=Bk+Pk+QkB_{k+1} = B_k + P_k +Q_kBk+1=Bk+Pk+Qk,应满足Pkδk=yk,Qkδk=−BkδkP_k\delta_k=y_k,Q_k\delta_k=-B_k\delta_kPkδk=yk,Qkδk=BkδkPk,QkP_k, Q_kPk,Qk可以这样得出
    Pk=ykykTykTδk,Qk=−BkδkδkTBkδkTBkδk   (12) P_{k}=\frac{y_{k} y_{k}^{\mathrm{T}}}{y_{k}^{\mathrm{T}} \delta_{k}}, Q_{k}=-\frac{B_{k} \delta_{k} \delta_{k}^{\mathrm{T}} B_{k}}{\delta_{k}^{\mathrm{T}} B_{k} \delta_{k}} \ \ \ (12) Pk=ykTδkykykTQk=δkTBkδkBkδkδkTBk   (12)
  • 正定:如果初始矩阵B0B_0B0是正定的,则迭代过程中的每个BkB_kBk都是正定的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值