牛顿法与拟牛顿法总结

1) 牛顿法

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

  • 牛顿法推导:
    f ( x ) f(x) f(x) x k x^k xk泰勒公式二阶展开,得
    f ( x ) = f ( x ( k ) ) + g k T ( x − x ( k ) ) + 1 2 ( x − x ( k ) ) T H ( 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求导可得(注意 g k T g_{k}^{\mathrm{T}} gkT H ( x ( k ) ) H(x^{(k)}) H(x(k))都是常数项,自变量已经固定为 x ( k ) x^{(k)} x(k)),得到 x = x k x=x_k x=xk邻域内的 ∇ f ( x ) \nabla f(x) f(x)的近似函数
    ∇ f ( x ) = g k + H k ( 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)=0 f(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 ) − H k − 1 g k       ( 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 ) = x 2 f(x)=x^2 f(x)=x2时,若 x 0 = 2 , g 0 = 4 , H 0 − 1 = 0.5 x^0 = 2,g_0=4,H^{-1}_0=0.5 x0=2,g0=4,H01=0.5,则 x 1 = 2 − 4 × 0.5 = 0 x_1 = 2-4\times 0.5=0 x1=24×0.5=0,直接就迭代到了最优解 x = 0 x=0 x=0

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

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

2)拟牛顿法

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

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

  • 算法:DFP选择用两个附加项来迭代更新
    G k + 1 = G k + P k + Q k    ( 10 ) G_{k+1} = G_k + P_k + Q_k \ \ (10) Gk+1=Gk+Pk+Qk  (10)
    因此可得, G k + 1 y k = G k y k + P k y k + Q k y k G_{k+1}y_k = G_ky_k + P_ky_k + Q_ky_k Gk+1yk=Gkyk+Pkyk+Qkyk。其中 P k , Q k P_k, Q_k Pk,Qk是待定矩阵。为了使 G k + 1 G_k+1 Gk+1满足拟牛顿条件,要满足
    P k y k = δ k ,         Q k y k = − G k y k    ( 11 ) P_ky_k=\delta_k, \ \ \ \ \ \ \ Q_ky_k=-G_ky_k \ \ (11) Pkyk=δk,       Qkyk=Gkyk  (11)
  • P k P_k Pk Q k Q_k Qk可以这样得到
    P k = δ k δ k T δ k T y k , Q k = − G k y k y k T G k y k T G k y k     ( 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)
  • 停止条件:一般为一阶导数小于某个阈值或者迭代次数达到一定代数
  • 正定:如果初始矩阵 G 0 G_0 G0是正定的,则迭代过程中的每个 G k G_k Gk都是正定的

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

  • 定义:与DFP算法不同,BFGS直接用 B k B_k Bk逼近hessian矩阵 H H H(DFP用 G k G_k Gk来逼近 H k − 1 H_k^{-1} Hk1)。BDGS对应的牛顿条件为
    B k + 1 δ k = y k B_{k+1}\delta_k = y_k Bk+1δk=yk
  • 拟合方法:与DFP类似,使用 B k + 1 = B k + P k + Q k B_{k+1} = B_k + P_k +Q_k Bk+1=Bk+Pk+Qk,应满足 P k δ k = y k , Q k δ k = − B k δ k P_k\delta_k=y_k,Q_k\delta_k=-B_k\delta_k Pkδk=yk,Qkδk=Bkδk P k , Q k P_k, Q_k Pk,Qk可以这样得出
    P k = y k y k T y k T δ k , Q k = − B k δ k δ k T B k δ k T B k δ 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)
  • 正定:如果初始矩阵 B 0 B_0 B0是正定的,则迭代过程中的每个 B k B_k Bk都是正定的
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值