牛顿法(Newton method)和拟牛顿法(quasi-Newton method)也是求解无约束最优化的常用方法,有收敛速度快的优点。牛顿法是迭代算法,每一步需要求解目标函数的黑塞矩阵的逆矩阵,计算比较复杂。拟牛顿法通过正定矩阵近似黑塞矩阵的逆矩阵或黑塞矩阵,简化了这一计算过程。
-
牛顿法
考虑无约束最优化问题
x∈Rnminf(x)(B.1)
其中x∗为目标函数的极小值。
假设f(x)具有二阶连续偏导数,若第k次迭代值为x(k),则可将f(x)在x(k)附近进行二阶泰勒展开:
f(x)=f(x(k))+gkT(x−x(k))+21(x−x(k))TH(x(k))(x−x(k))(B.2)
这里,gk=g(x(k))=∇f(x(k))是f(x)的梯度向量在点x(k)的值,H(x(k))是f(x)的黑塞矩阵(Hessian matrix)
H(x)=[∂xi∂xj∂2f]n×n(B.3)
在点(x(k)的值,函数f(x)有极值的必要条件是在极值点初一阶导数为0,即梯度向量为0。特别是当H((x(k))是正定矩阵时,函数f(x)的极值为极小值。
牛顿法利用极小值点的必要条件
∇f(x)=0(B.4)
每次迭代中从点(x(k))开始,求目标函数的极小点,作为第k+1次迭代值x(k+1)。具体地,假设x(k+1)满足
∇f(x(k+1))=0(B.5)
由式(B.2),对∇f(x)在x(k)处进行一阶泰勒展开。
∇f(x)=gk+Hk(x−x(k))(B.6)
其中Hk=H(x(k))。这样,式(B.5)成为
gk+Hk(x(k+1)−x(k))=0(B.7)
因此,
x(k+1)=x(k)−Hk−1gk(B.8)
或者
x(k+1)=x(k)+pk(B.9)
其中,
Hkpk=−gk
用式(B.8)作为迭代公式的算法就是牛顿法。
算法B.1(牛顿法)
输入:目标函数f(x),梯度g(x)=∇f(x),黑塞矩阵H(x),精度要求ϵ;
输出:f(x)的极小值x∗。
(1)取初始点x(0),置k=0。
(2)计算gk=g(x(k))。
(3)若∣∣gk∣∣<ϵ,则停止计算,得近似解x∗=x(k)。
(4)计算Hk=H(x(k)),并求pk
Hkpk=−gk
(5)置x(k+1)=x(k)+pk。
(6)置k=k+1,转(2)。
步骤(4)求pk,pk=−Hk(−1)gk,要求Hk(−1),计算比较复杂,所以有其他改进得方法。。
-
拟牛顿法得思路
在牛顿法的迭代中,需要计算黑塞矩阵的逆矩阵H(−1),这一计算比较复杂,考虑用一个n阶矩阵Gk=G(xk)来近似代替Hk−1=H−1(x(k))。这就是拟牛顿法的基本想法。
先看牛顿法迭代中黑塞矩阵Hk满足的条件。首先,Hk满足以下关系。在式(B.6)中取x=x(k+1),即得
g(k+1)−gk=Hk(x(k+1)−x(k))(B.11)
记yk=gk+1−gk,δk=x(k+1)−x(k),则
yk=Hkδk(B.12)
或
Hk−1yk=δk(B.13)
式(B.12)或式(B.13)称为拟牛顿条件。
如果Hk是正定的(Hk−1也是正定的),那么可以保证牛顿法搜索方向pk是下降方向。这是因为搜索方向是pk=−Hk−1gk,由式(B.8)有
x=x(k)+λpk=x(k)−λHk−1gk(B.14)
所以f(x)在x(k)的泰勒展开式(B.2)可以去掉2阶项可以近似写成:
f(x)=f(x(k)−λgkTHk−1gk(B.15)
因为Hk−1正定,故有gkTHk−1gk>0。当λ为一个充分小的正数时,总有f(x)<f(x(k)),也就是说pk是下降方向。
Gk+1yk=δk(B.16)
拟牛顿法将Gk作为Hk−1的近似或选择Bk作为Hk的近似的算法称为拟牛顿法。
按照拟牛顿法条件,在每次迭代中可以选择更新矩阵Gk+1;
Gk+1=Gk+△Gk(B.17)
这种选择有一定的灵活性,因此有多种具体实现方法。下面介绍Broyden类拟牛顿法。
-
DFP(Davidon-Flecher-Powell)算法
DFP算法选择Gk+1的方法是,假设每一步迭代中矩阵Gk+1是由Gk加上两个附加项构成的,即
Gk+1=Gk+Pk+Qk(B.18)
其中Pk,Qk是待定矩阵,这时。
Gk+1yk=Gkyk+Pkyk+Qkyk(B.19)
为使Gk+1满足拟牛顿条件,可以Pk和Qk满足:
Pkyk=δk(B.20)
Qkyk=−Gkyk(B.21)
事实上,不难找出这样的Pk和Qk,例如取
Pk=δkTykδkδkT(B.22)
Qk=−ykTGkykGkykykTGk(B.23)
这样就可得到矩阵Gk+1的迭代公式:
Gk+1=Gk+δkTykδkδkT−ykTGkykGkykykTGk(B.24)
称为DFP算法:
可以证明,如果初始矩阵G0是正定的,则迭代过程中的每个矩阵Gk都是正定的。
DFP算法如下:
算法B.2(DFP算法)
输入:目标函数f(x),梯度g(x)=∇f(x),精度要求ϵ;
输出:f(x)的极小点x∗。
(1)选定初始点x(0),取G0为正定对称矩阵,置k=0。
(2)计算gk=g(x(k))。若∣∣gk∣∣<ϵ,则停止计算,得近似解x∗=xk;否则转(3)。
(3)置pk=−Gkgk。
(4)一维搜索:求λk使得
f(x(k)+λkpk)=λ≥0minf(x(k)+λpk)
(5)置x(k+1)=x(k)+λkpk。
(6)计算gk+1=g(x(k+1)),若∣∣gk+1∣∣<ϵ,则停止计算,得近似解x∗=x(k+1);否则,按式(B.24)算出Gk+1。
(7)置k=k+1,转(3)。
-
BFGS(Broyden-Fletcher-Goldfarb-Shanno)算法(BFGS algorithm)
BFGS算法是最流行得拟牛顿算法。
可以考虑用Gk逼近黑塞矩阵得逆矩阵H−1,也可以考虑用Bk逼近黑塞矩阵H。这时,相应得拟牛顿条件是
Bk+1δk=yk(B.25)
可以用同样的方法得到另一迭代公式。首先令
Bk+1=Bk+Pk+QK(B.26)
Bk+1δk=Bkδk+Pkδk+Qkδk(B.27)
考虑使Pk和Qk满足:
Pkδk=yk(B.28)
Qkδk=−Bkδk(B.29)
找出适合条件的Pk和Qk,得到BFGS算法矩阵Bk+1的迭代公式:
Bk+1=Bk+ykTδkykykT−δkTBkδkBkδkδkTBk(B.30)
可以证明,如果初始矩阵B0是正定的,则迭代过程中的每个矩阵Bk都是正定的。下面写出BFGS拟牛顿法。
算法B.3(BFGS算法)
输入:目标函数f(x),g(x)=∇f(x),精度要求ϵ;
输出:f(x)的极小点x∗。
(1)选定初始点x(0),取G0为正定对称矩阵,置k=0。
(2)计算gk=g(x(k))。若∣∣gk∣∣<ϵ,则停止计算,得近似解x∗=xk;否则转(3)。
(3)置Bkpk=−gk,求出pk。
(4)一维搜索:求λk使得
f(x(k)+λkpk)=λ≥0minf(x(k)+λpk)
(5)置x(k+1)=x(k)+λkpk。
(6)计算gk+1=g(x(k+1)),若∣∣gk+1∣∣<ϵ,则停止计算,得近似解x∗=x(k+1);否则,按式(B.30)算出Bk+1。
(7)置k=k+1,转(3)。
-
Broyden类算法(Broyden’s algorithm)
我们可以从BFGS算法矩阵Bk的迭代公式(B.30)得到BFGS算法关于Gk的迭代公式。事实上,若记Gk=Bk(−1),Gk+1=Bk+1(−1),那么对式(B.30)两次应用Sherman-Morrison公式①即得
Gk+1=(I−δkTykδkykT)Gk(I−δkTykδkykT)T+δkTykδkδkT(B.31)
称为BFGS算法关于Gk的迭代公式。
由DFP算法Gk的迭代公式(B.23)得到的Gk+1记作GDFP,由BFGS算法Gk的迭代公式(B.31)得到的Gk+1记作GBFGS,它们都满足方程拟牛顿条件式,所以它们的线性组合
Gk+1=αGDFP+(1−α)GBFGS(B.32)
也满足拟牛顿条件式,而且是正定的。其中0≤α≤1。这样就得到了一类拟牛顿法,称为Broyden类算法。
[1] 李航. 统计学习方法-2版.北京:清华大学出版社,2019