李航统计学习方法-附录B 牛顿法与拟牛顿法

牛顿法(Newton method)和拟牛顿法(quasi-Newton method)也是求解无约束最优化的常用方法,有收敛速度快的优点。牛顿法是迭代算法,每一步需要求解目标函数的黑塞矩阵的逆矩阵,计算比较复杂。拟牛顿法通过正定矩阵近似黑塞矩阵的逆矩阵或黑塞矩阵,简化了这一计算过程。

  1. 牛顿法

    考虑无约束最优化问题
    min ⁡ x ∈ R n f ( x ) (B.1) \min_{x\in R^n}f(x)\tag{B.1} xRnminf(x)(B.1)

其中 x ∗ x^* x为目标函数的极小值。

​ 假设f(x)具有二阶连续偏导数,若第k次迭代值为 x ( k ) x^{(k)} x(k),则可将f(x)在 x ( k ) x^{(k)} x(k)附近进行二阶泰勒展开:
f ( x ) = f ( x ( k ) ) + g k T ( x − x ( k ) ) + 1 2 ( x − x ( k ) ) T H ( x ( k ) ) ( x − x ( k ) ) (B.2) f(x)=f(x^{(k)})+g^T_k(x-x^{(k)})+\frac{1}{2}(x-x^{(k)})^TH(x^{(k)})(x-x^{(k)}) \tag{B.2} f(x)=f(x(k))+gkT(xx(k))+21(xx(k))TH(x(k))(xx(k))(B.2)
这里, g k = g ( x ( k ) ) = ∇ f ( x ( k ) ) g_k=g(x^{(k)})=\nabla f(x^{(k)}) gk=g(x(k))=f(x(k))是f(x)的梯度向量在点 x ( k ) x^{(k)} x(k)的值, H ( x ( k ) ) H(x^{(k)}) H(x(k))是f(x)的黑塞矩阵(Hessian matrix)
H ( x ) = [ ∂ 2 f ∂ x i ∂ x j ] n × n (B.3) H(x)=[\frac{\partial^2f}{\partial x_i\partial x_j}]_{n\times n} \tag{B.3} H(x)=[xixj2f]n×n(B.3)
在点 ( x ( k ) (x^{(k)} (x(k)的值,函数f(x)有极值的必要条件是在极值点初一阶导数为0,即梯度向量为0。特别是当 H ( ( x ( k ) ) H((x^{(k)}) H((x(k))是正定矩阵时,函数f(x)的极值为极小值。

​ 牛顿法利用极小值点的必要条件
∇ f ( x ) = 0 (B.4) \nabla f(x)=0 \tag{B.4} f(x)=0(B.4)
每次迭代中从点 ( x ( k ) ) (x^{(k)}) (x(k))开始,求目标函数的极小点,作为第k+1次迭代值 x ( k + 1 ) x^{(k+1)} x(k+1)。具体地,假设 x ( k + 1 ) x^{(k+1)} x(k+1)满足
∇ f ( x ( k + 1 ) ) = 0 (B.5) \nabla f(x^{(k+1)})=0 \tag{B.5} f(x(k+1))=0(B.5)
由式(B.2),对 ∇ f ( x ) \nabla f(x) f(x) x ( k ) x^{(k)} x(k)处进行一阶泰勒展开。
∇ f ( x ) = g k + H k ( x − x ( k ) ) (B.6) \nabla f(x)=g_k+H_k(x-x^{(k)})\tag{B.6} f(x)=gk+Hk(xx(k))(B.6)
其中 H k = H ( x ( k ) ) H_k=H(x^{(k)}) Hk=H(x(k))。这样,式(B.5)成为
g k + H k ( x ( k + 1 ) − x ( k ) ) = 0 (B.7) g_k+H_k(x^{(k+1)}-x^{(k)})=0 \tag{B.7} gk+Hk(x(k+1)x(k))=0(B.7)
因此,
x ( k + 1 ) = x ( k ) − H k − 1 g k (B.8) x^{(k+1)}=x^{(k)}-H_k^{-1}g_k \tag{B.8} x(k+1)=x(k)Hk1gk(B.8)
或者
x ( k + 1 ) = x ( k ) + p k (B.9) x^{(k+1)}=x^{(k)}+p_k\tag{B.9} x(k+1)=x(k)+pk(B.9)
其中,
H k p k = − g k H_kp_k=-g_k Hkpk=gk
用式(B.8)作为迭代公式的算法就是牛顿法。

算法B.1(牛顿法)

输入:目标函数f(x),梯度g(x)= ∇ f ( x ) \nabla f(x) f(x),黑塞矩阵H(x),精度要求 ϵ \epsilon ϵ;

输出:f(x)的极小值 x ∗ x^* x

(1)取初始点 x ( 0 ) x^(0) x(0),置k=0。

(2)计算 g k = g ( x ( k ) ) g_k=g(x^{(k)}) gk=g(x(k))

(3)若 ∣ ∣ g k ∣ ∣ < ϵ ||g_k||<\epsilon gk<ϵ,则停止计算,得近似解 x ∗ = x ( k ) x^*=x^{(k)} x=x(k)

(4)计算 H k = H ( x ( k ) ) H_k=H(x^{(k)}) Hk=H(x(k)),并求 p k p_k pk
H k p k = − g k H_kp_k=-g_k Hkpk=gk
(5)置 x ( k + 1 ) = x ( k ) + p k x^{(k+1)}=x^{(k)}+p_k x(k+1)=x(k)+pk

(6)置k=k+1,转(2)。

步骤(4)求 p k , p k = − H k ( − 1 ) g k p_k,p_k=-H_k^{(-1)}g_k pk,pk=Hk(1)gk,要求 H k ( − 1 ) H_k^{(-1)} Hk(1),计算比较复杂,所以有其他改进得方法。。

  1. 拟牛顿法得思路

    在牛顿法的迭代中,需要计算黑塞矩阵的逆矩阵 H ( − 1 ) H^{(-1)} H(1),这一计算比较复杂,考虑用一个n阶矩阵 G k = G ( x k ) G_k=G(x^{k}) Gk=G(xk)来近似代替 H k − 1 = H − 1 ( x ( k ) ) H^{-1}_k=H^{-1}(x^{(k)}) Hk1=H1(x(k))。这就是拟牛顿法的基本想法。

    先看牛顿法迭代中黑塞矩阵 H k H_k Hk满足的条件。首先, H k H_k Hk满足以下关系。在式(B.6)中取 x = x ( k + 1 ) x=x^{(k+1)} x=x(k+1),即得
    g ( k + 1 ) − g k = H k ( x ( k + 1 ) − x ( k ) ) (B.11) g_{(k+1)}-g_k=H_k(x^{(k+1)}-x^{(k)})\tag{B.11} g(k+1)gk=Hk(x(k+1)x(k))(B.11)
    y k = g k + 1 − g k , δ k = x ( k + 1 ) − x ( k ) , y_k=g_{k+1}-g_k,\delta_k=x^{(k+1)}-x^{(k)}, yk=gk+1gk,δk=x(k+1)x(k),
    y k = H k δ k (B.12) y_k=H_k\delta_k\tag{B.12} yk=Hkδk(B.12)

    H k − 1 y k = δ k (B.13) H_k^{-1}y_k=\delta_k \tag{B.13} Hk1yk=δk(B.13)
    式(B.12)或式(B.13)称为拟牛顿条件。

    ​ 如果 H k H_k Hk是正定的( H k − 1 H^{-1}_k Hk1也是正定的),那么可以保证牛顿法搜索方向 p k p_k pk是下降方向。这是因为搜索方向是 p k = − H k − 1 g k p_k=-H^{-1}_kg_k pk=Hk1gk,由式(B.8)有
    x = x ( k ) + λ p k = x ( k ) − λ H k − 1 g k (B.14) x=x^{(k)}+\lambda p_k=x^{(k)}-\lambda H^{-1}_kg_k\tag{B.14} x=x(k)+λpk=x(k)λHk1gk(B.14)
    所以f(x)在 x ( k ) x^{(k)} x(k)的泰勒展开式(B.2)可以去掉2阶项可以近似写成:
    f ( x ) = f ( x ( k ) − λ g k T H k − 1 g k (B.15) f(x)=f(x^{(k)}-\lambda g_k^TH^{-1}_kg_k\tag{B.15} f(x)=f(x(k)λgkTHk1gk(B.15)
    因为 H k − 1 H^{-1}_k Hk1正定,故有 g k T H k − 1 g k > 0 g_k^TH^{-1}_kg_k>0 gkTHk1gk>0。当 λ \lambda λ为一个充分小的正数时,总有 f ( x ) < f ( x ( k ) ) , f(x)<f(x^{(k)}), f(x)<f(x(k)),也就是说 p k p_k pk是下降方向。
    G k + 1 y k = δ k (B.16) G_{k+1}y_k=\delta_k \tag{B.16} Gk+1yk=δk(B.16)
    ​ 拟牛顿法将 G k G_k Gk作为 H k − 1 H_k^{-1} Hk1的近似或选择 B k B_k Bk作为 H k H_k Hk的近似的算法称为拟牛顿法。

    ​ 按照拟牛顿法条件,在每次迭代中可以选择更新矩阵 G k + 1 G_{k+1} Gk+1;
    G k + 1 = G k + △ G k (B.17) G_{k+1}=G_k+\triangle G_k \tag{B.17} Gk+1=Gk+Gk(B.17)
    这种选择有一定的灵活性,因此有多种具体实现方法。下面介绍Broyden类拟牛顿法。

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

      DFP算法选择 G k + 1 G_{k+1} Gk+1的方法是,假设每一步迭代中矩阵 G k + 1 G_{k+1} Gk+1是由 G k G_k Gk加上两个附加项构成的,即
      G k + 1 = G k + P k + Q k (B.18) G_{k+1}=G_k+P_k+Q_k\tag{B.18} Gk+1=Gk+Pk+Qk(B.18)
      其中 P k , Q k P_k,Q_k Pk,Qk是待定矩阵,这时。
      G k + 1 y k = G k y k + P k y k + Q k y k (B.19) G_{k+1}y_k=G_ky_k+P_ky_k+Q_ky_k \tag{B.19} Gk+1yk=Gkyk+Pkyk+Qkyk(B.19)
      为使 G k + 1 G_{k+1} Gk+1满足拟牛顿条件,可以 P k P_k Pk Q k Q_k Qk满足:
      P k y k = δ k (B.20) P_ky_k=\delta_k \tag{B.20}\\ Pkyk=δk(B.20)

      Q k y k = − G k y k (B.21) Q_ky_k=-G_ky_k \tag{B.21} Qkyk=Gkyk(B.21)

      事实上,不难找出这样的 P k P_k Pk Q k Q_k Qk,例如取
      P k = δ k δ k T δ k T y k (B.22) P_k=\frac{\delta_k\delta_k^T}{\delta_k^Ty_k}\tag{B.22} Pk=δkTykδkδkT(B.22)

      Q k = − G k y k y k T G k y k T G k y k (B.23) Q_k=-\frac{G_ky_ky_k^TG_k}{y^T_kG_ky_k}\tag{B.23} Qk=ykTGkykGkykykTGk(B.23)

      这样就可得到矩阵 G k + 1 G_{k+1} Gk+1的迭代公式:
      G k + 1 = G k + δ k δ k T δ k T y k − G k y k y k T G k y k T G k y k (B.24) G_{k+1}=G_k+\frac{\delta_k\delta_k^T}{\delta_k^Ty_k}-\frac{G_ky_ky_k^TG_k}{y^T_kG_ky_k}\tag{B.24} Gk+1=Gk+δkTykδkδkTykTGkykGkykykTGk(B.24)
      称为DFP算法:

      可以证明,如果初始矩阵 G 0 G_0 G0是正定的,则迭代过程中的每个矩阵 G k G_k Gk都是正定的。

      DFP算法如下:

      算法B.2(DFP算法)

      输入:目标函数f(x),梯度g(x)= ∇ f ( x ) \nabla f(x) f(x),精度要求 ϵ \epsilon ϵ;

      输出:f(x)的极小点 x ∗ x^* x

      (1)选定初始点 x ( 0 ) x^{(0)} x(0),取 G 0 G_0 G0为正定对称矩阵,置k=0。

      (2)计算 g k = g ( x ( k ) ) g_k=g(x^{(k)}) gk=g(x(k))。若 ∣ ∣ g k ∣ ∣ < ϵ ||g_k||<\epsilon gk<ϵ,则停止计算,得近似解 x ∗ = x k x^*=x^{k} x=xk;否则转(3)。

      (3)置 p k = − G k g k p_k=-G_kg_k pk=Gkgk

      (4)一维搜索:求 λ k \lambda_k λk使得
      f ( x ( k ) + λ k p k ) = min ⁡ λ ≥ 0 f ( x ( k ) + λ p k ) f(x^{(k)}+\lambda_kp_k)=\min_{\lambda\geq0}f(x^{(k)}+\lambda p_k) f(x(k)+λkpk)=λ0minf(x(k)+λpk)
      (5)置 x ( k + 1 ) = x ( k ) + λ k p k x^{(k+1)}=x^{(k)}+\lambda_kp_k x(k+1)=x(k)+λkpk

      (6)计算 g k + 1 = g ( x ( k + 1 ) ) g_{k+1}=g(x^{(k+1)}) gk+1=g(x(k+1)),若 ∣ ∣ g k + 1 ∣ ∣ < ϵ ||g_{k+1}||<\epsilon gk+1<ϵ,则停止计算,得近似解 x ∗ = x ( k + 1 ) ; x^*=x^{(k+1)}; x=x(k+1);否则,按式(B.24)算出 G k + 1 G_{k+1} Gk+1

      (7)置k=k+1,转(3)。

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

    BFGS算法是最流行得拟牛顿算法。

    可以考虑用 G k G_k Gk逼近黑塞矩阵得逆矩阵 H − 1 H^{-1} H1,也可以考虑用 B k B_k Bk逼近黑塞矩阵H。这时,相应得拟牛顿条件是
    B k + 1 δ k = y k (B.25) B_{k+1}\delta_k=y_k\tag{B.25} Bk+1δk=yk(B.25)
    可以用同样的方法得到另一迭代公式。首先令
    B k + 1 = B k + P k + Q K (B.26) B_{k+1}=B_k+P_k+Q_K\tag{B.26} Bk+1=Bk+Pk+QK(B.26)

    B k + 1 δ k = B k δ k + P k δ k + Q k δ k (B.27) B_{k+1}\delta_k=B_k\delta_k+P_k\delta_k+Q_k\delta_k \tag{B.27} Bk+1δk=Bkδk+Pkδk+Qkδk(B.27)

    考虑使 P k P_k Pk Q k Q_k Qk满足:
    P k δ k = y k (B.28) P_k\delta_k=y_k \tag{B.28} Pkδk=yk(B.28)

    Q k δ k = − B k δ k (B.29) Q_k\delta_k=-B_k\delta_k\tag{B.29} Qkδk=Bkδk(B.29)

    找出适合条件的 P k P_k Pk Q k Q_k Qk,得到BFGS算法矩阵 B k + 1 B_{k+1} Bk+1的迭代公式:
    B k + 1 = B k + y k y k T y k T δ k − B k δ k δ k T B k δ k T B k δ k (B.30) B_{k+1}=B_k+\frac{y_ky_k^T}{y^T_k\delta_k}-\frac{B_k\delta_k\delta_k^TB_k}{\delta_k^TB_k\delta_k}\tag{B.30} Bk+1=Bk+ykTδkykykTδkTBkδkBkδkδkTBk(B.30)
    可以证明,如果初始矩阵 B 0 B_0 B0是正定的,则迭代过程中的每个矩阵 B k B_k Bk都是正定的。下面写出BFGS拟牛顿法。

    算法B.3(BFGS算法)

    输入:目标函数f(x),g(x)= ∇ f ( x ) \nabla f(x) f(x),精度要求 ϵ \epsilon ϵ;

    输出:f(x)的极小点 x ∗ x^* x

    (1)选定初始点 x ( 0 ) x^{(0)} x(0),取 G 0 G_0 G0为正定对称矩阵,置k=0。

    (2)计算 g k = g ( x ( k ) ) g_k=g(x^{(k)}) gk=g(x(k))。若 ∣ ∣ g k ∣ ∣ < ϵ ||g_k||<\epsilon gk<ϵ,则停止计算,得近似解 x ∗ = x k x^*=x^{k} x=xk;否则转(3)。

    (3)置 B k p k = − g k B_kp_k=-g_k Bkpk=gk,求出 p k p_k pk

    (4)一维搜索:求 λ k \lambda_k λk使得
    f ( x ( k ) + λ k p k ) = min ⁡ λ ≥ 0 f ( x ( k ) + λ p k ) f(x^{(k)}+\lambda_kp_k)=\min_{\lambda\geq0}f(x^{(k)}+\lambda p_k) f(x(k)+λkpk)=λ0minf(x(k)+λpk)
    (5)置 x ( k + 1 ) = x ( k ) + λ k p k x^{(k+1)}=x^{(k)}+\lambda_kp_k x(k+1)=x(k)+λkpk

    (6)计算 g k + 1 = g ( x ( k + 1 ) ) g_{k+1}=g(x^{(k+1)}) gk+1=g(x(k+1)),若 ∣ ∣ g k + 1 ∣ ∣ < ϵ ||g_{k+1}||<\epsilon gk+1<ϵ,则停止计算,得近似解 x ∗ = x ( k + 1 ) ; x^*=x^{(k+1)}; x=x(k+1);否则,按式(B.30)算出 B k + 1 B_{k+1} Bk+1

    (7)置k=k+1,转(3)。

  3. Broyden类算法(Broyden’s algorithm)

    我们可以从BFGS算法矩阵 B k B_k Bk的迭代公式(B.30)得到BFGS算法关于 G k G_k Gk的迭代公式。事实上,若记 G k = B k ( − 1 ) , G k + 1 = B k + 1 ( − 1 ) G_k=B_k^{(-1)},G_{k+1}=B^{(-1)}_{k+1} Gk=Bk(1),Gk+1=Bk+1(1),那么对式(B.30)两次应用Sherman-Morrison公式①即得
    G k + 1 = ( I − δ k y k T δ k T y k ) G k ( I − δ k y k T δ k T y k ) T + δ k δ k T δ k T y k (B.31) G_{k+1}=(I-\frac{\delta_ky_k^T}{\delta_k^Ty_k})G_k(I-\frac{\delta_ky_k^T}{\delta_k^Ty_k})^T+\frac{\delta_k\delta_k^T}{\delta_k^Ty_k}\tag{B.31} Gk+1=(IδkTykδkykT)Gk(IδkTykδkykT)T+δkTykδkδkT(B.31)
    称为BFGS算法关于 G k G_k Gk的迭代公式。

    ​ 由DFP算法 G k G_k Gk的迭代公式(B.23)得到的 G k + 1 G_{k+1} Gk+1记作 G D F P G^{DFP} GDFP,由BFGS算法 G k G_k Gk的迭代公式(B.31)得到的 G k + 1 G_{k+1} Gk+1记作 G B F G S G^{BFGS} GBFGS,它们都满足方程拟牛顿条件式,所以它们的线性组合
    G k + 1 = α G D F P + ( 1 − α ) G B F G S (B.32) G_{k+1}=\alpha G^{DFP}+(1-\alpha)G^{BFGS}\tag{B.32} Gk+1=αGDFP+(1α)GBFGS(B.32)
    也满足拟牛顿条件式,而且是正定的。其中 0 ≤ α ≤ 1 0\le\alpha\le1 0α1。这样就得到了一类拟牛顿法,称为Broyden类算法。
    [1] 李航. 统计学习方法-2版.北京:清华大学出版社,2019

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
李航的《统计学习方法》是一本经典的统计学习教材,其中涵盖了统计学习的基本理论和方法。该书主要介绍了统计学习的三要素:模型、策略和算法。引用提到,训练集用来训练模型,验证集用来选择模型,测试集用于对学习方法的评估。这些三要素是统计学习方法的基础。引用进一步解释了统计学习的目标,即通过构建概率统计模型对数据进行准确的预测与分析,并提高学习效率。引用提到了一种常用的统计学习方法,即提升(boosting),它通过改变训练样本的权重,学习多个弱分类器,并将它们线性组合成一个强分类器,以提高分类的性能。 总结起来,李航的《统计学习方法》笔记主要围绕统计学习的基本理论和方法展开,介绍了统计学习的三要素、目标和提升等常用方法。这本书对于学习统计学习的人来说是一本非常有价值的参考资料。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [统计学习方法——李航 笔记](https://blog.csdn.net/qq_45383347/article/details/110482540)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [李航统计学习方法学习笔记](https://blog.csdn.net/liuzuoping/article/details/98840923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值