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

岁酱吖の 提交于 2020-03-03 20:59:52

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

  1. 牛顿法

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

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

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

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

算法B.1(牛顿法)

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

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

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

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

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

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

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

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

  1. 拟牛顿法得思路

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

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

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

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

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

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

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

      Qkyk=Gkyk(B.21) Q_ky_k=-G_ky_k \tag{B.21}

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

      Qk=GkykykTGkykTGkyk(B.23) Q_k=-\frac{G_ky_ky_k^TG_k}{y^T_kG_ky_k}\tag{B.23}

      这样就可得到矩阵Gk+1G_{k+1}的迭代公式:
      Gk+1=Gk+δkδkTδkTykGkykykTGkykTGkyk(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}
      称为DFP算法:

      可以证明,如果初始矩阵G0G_0是正定的,则迭代过程中的每个矩阵GkG_k都是正定的。

      DFP算法如下:

      算法B.2(DFP算法)

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

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

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

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

      (3)置pk=Gkgkp_k=-G_kg_k

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

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

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

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

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

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

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

    考虑使PkP_kQkQ_k满足:
    Pkδk=yk(B.28) P_k\delta_k=y_k \tag{B.28}

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

    找出适合条件的PkP_kQkQ_k,得到BFGS算法矩阵Bk+1B_{k+1}的迭代公式:
    Bk+1=Bk+ykykTykTδkBkδkδkTBkδkTBkδ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}
    可以证明,如果初始矩阵B0B_0是正定的,则迭代过程中的每个矩阵BkB_k都是正定的。下面写出BFGS拟牛顿法。

    算法B.3(BFGS算法)

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

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

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

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

    (3)置Bkpk=gkB_kp_k=-g_k,求出pkp_k

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

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

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

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

    我们可以从BFGS算法矩阵BkB_k的迭代公式(B.30)得到BFGS算法关于GkG_k的迭代公式。事实上,若记Gk=Bk(1),Gk+1=Bk+1(1)G_k=B_k^{(-1)},G_{k+1}=B^{(-1)}_{k+1},那么对式(B.30)两次应用Sherman-Morrison公式①即得
    Gk+1=(IδkykTδkTyk)Gk(IδkykTδkTyk)T+δkδkTδkTyk(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}
    称为BFGS算法关于GkG_k的迭代公式。

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!