牛顿方法

牛顿方法是现在用的比较广泛的最优化算法之一,其特点是收敛速度较快,上一节的梯度下降和随机梯度下降都是一阶收敛,而牛顿方法是二阶收敛。
回忆高等数学里面介绍的二阶泰勒展开有

Q(x)=f(x0)+f(x0)(xx0)+(xx0)22!2f(x0)

Q(x)取到极值的条件,也就是最优化条件是Q(x)=0,可得
f(xk)+2f(xk)(xxk)=0
xk+1=xk(2f(xk))1f(xk)
xk+1=xkH1kgk
其中Hk=2f(xk),gk=f(xk),可以看到牛顿方法在迭代中不但使用了梯度,而且使用了二阶的hessian矩阵。

收敛性分析

假设f(x)是二阶可导,强凸,并且Hessian的有界,并且在最优解附近的Lipschitz continuous常数是M,另外2f(x)1N,最优解为x
由于

f(xt)f(x)=102f(xt+t(xxt))(xtx)dx
xt+1x=xtx2f(xt)(xtx)=2f(xt)1[2f(xt)(xtx)(f(xt)f(x))]

使用上面两式还有Lipschitz continuous可得
f(xt)f(x)2f(xt)(xtx)=10[2f(xt+t(xxt))2f(xt)](xtx)dx

=102f(xt+t(xxt))2f(xt)xtxdxxtx10Mtdx=M2xtx2

因此可得
xt+1xMN2xtx2

拟牛顿方法

牛顿方法中需要每一步去求解hessian矩阵的逆矩阵是一个计算复杂度较高的操作,所以就出现了拟牛顿方法。拟牛顿方法就是通过近似的方法来求解hessian矩阵或其逆矩阵。具体的由于当x=xk+1

f(xk+1)f(xk)=Hk(xk+1xk)

其中Hk=2f(x)k,记yk=gk+1gk,sk=xk+1xk得:
yk=Hksk
H1kyk=sk

以上称为拟牛顿条件
如果Hk是正定的话,可以保证牛顿方法的搜索方向pk是下降方向,因为hessian矩阵正定的话,由更新迭代的公式可以知道H1kgk的方向和梯度gk的方向一致(当目标函数为凸时),并且
x=xkλH1kgk
代入泰勒展开公式中得
f(x)=f(xk)λgTkH1kgk
λ为充分小时,可以保证目标函数递减。
拟牛顿方法用Gk作为H1k的近似,要求矩阵Gk满足同样的条件,第一,Gk是正定的,第二,满足拟牛顿条件。并且每次迭代中选择更新矩阵Gk+1如下
Gk+1=Gk+ΔGk

BFGS的方法是通过Bk去逼近hessian矩阵Hk相应的拟牛顿条件为
Bk+1sk=yk
并且通过上面的Hessian矩阵更新公式
Bk+1=Bk+Pk+Qk
Bk+1sk=Bksk+Pksk+Qksk
Pk Qk满足如下条件:
Pksk=yk
Qksk=Bksk
找出适合条件的PkQk,得到BFGS算法矩阵Bk+1的迭代公式:
Bk+1=Bk+ykyTkyTkskBksksTkBksTkBksk
可以证明初始矩阵B0为正定的时候,Bk也是正定矩阵。

L-BFGS

拟牛顿方法中减少求逆的时间复杂度,但是又面临另外的一个问题,就是当原问题是一个高维问题时,Hessian矩阵的存储成了一个大的问题,因此有了L-BFGS算法,L-BFGS算法的思想是通过最近的m次skyk来近似计算下降方向,并且不用去存储整个Hessian矩阵。具体的推导不介绍了,算法伪代码如下:

最优化算法(三)

相关文章:

  • 2022-12-23
  • 2021-12-10
  • 2022-12-23
  • 2022-01-16
  • 2021-09-17
  • 2022-12-23
猜你喜欢
  • 2021-12-03
  • 2021-08-24
  • 2022-12-23
  • 2022-12-23
  • 2021-04-19
  • 2022-12-23
  • 2021-04-26
相关资源
相似解决方案