最优化算法(三)

牛顿方法

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

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
找出适合条件的 Pk Qk ,得到BFGS算法矩阵 Bk+1 的迭代公式:
Bk+1=Bk+ykyTkyTkskBksksTkBksTkBksk
可以证明初始矩阵 B0 为正定的时候, Bk 也是正定矩阵。

L-BFGS

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

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值