拟牛顿法

注:本文中所有公式和思路来自于邹博先生的机器学习升级版》,我只是为了加深记忆和理解写的本文。


上一篇文章中,介绍了沿着梯度下降的方法,其实我们不一定非要沿着梯度下降的。


我们首先做个思考,我们都知道二阶导数反映了函数的凸凹性,二阶导数反映了一阶导数变化的大小,那么在搜索中我们可以考虑使用二阶导来进行修正:


我们可以将f(x)在xk处Taylor展开:


扔掉高阶导信息:


最终的得到迭代公式:


这就是牛顿法。


牛顿法总结:

(1):  经典牛顿法虽然具有二次收敛性,但是要求初始点尽量接近极小值点,否则可能不会收敛。

(2):  计算过程中需要计算目标函数的二阶导数的逆,时间复杂度高。

(3):  目标函数的Hessian矩阵无法确保正定,会导致算法产生的方向不能保证是f(x)的下降方向。



既然求Hessian矩阵的逆影响算法效率,方向上也可能出问题,因此可以用近似的矩阵代替hessian矩阵,接下来就介绍两种拟牛顿方法:DFP、BFGS



DFP


记函数f(θ)的梯度为g(θ),二阶导数为H(θ),那么在θi做Tarlor展开:


上边是Tarlor展开后的推导,其中第三行是做了对θ求导的操作,第四行我们将θ取θi-1,倒第二行我们做了简单的符号定义。

其中Ci是个Hessian矩阵,我们使用简单的向量来替换:


进一步推导代换:


接下来我们进行系数对比来解:


最终我们可以求出Ci:


当然了,我们可以通过交换参数g和θ,的到另外一个公式,DFP的迭代公式是:


交换参数:



BFGS


我们DFP中求的Ci其实是Hessian的逆矩阵,而BFGS则是直接求了Hissian矩阵。

首先先介绍一个公式Sherman-Morrison公式:若A是n阶可逆矩阵,u、v为n维列向量,若≠-1,则:


那么根据上边我们交换参数g和θ得到的公式:


使用两次Sherman-Morrison公式即可得到:


这个公式我们直接拿来写代码就好了。


L-BFGS


BFGS需要存储n*n的方阵Ck用来近似Hessain矩阵的逆矩阵,而L-BFGS仅需存储m个:


用于近似Ck即可。


L-BFGS的空间复杂度维O(mn),若将m看作常数,那么空间复杂度就是线性的,特别适合变量非常多的优化问题中。


到此所有的下降算法都讲完了,其中SGD很重要,是和在线学习,拟牛顿可以给出更好的下降方向。







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值