【数学】梯度下降,牛顿法与拟牛顿法

这三个优化算法,实在是太过经典,以至于很多文章都在说这个算法。这里主要就写一写我自己的感悟吧。剩下的再集成一下别的感觉比较好的博客中的方法。

梯度下降

f(x) 一阶泰勒展开:

f(x)=f(x0)+(xx0)f(x0)

f(x)=f(x0)+Δxf(x0)

如果当前处于 x0 节点,要使得前进同样的距离使得 f(x) 变的最小,则 Δx=δf(x)
f(x)=f(x0)δf2(x0)

新的 f(x) 能够取得下一步的最小值
这也是梯度下降算法为什么沿着梯度进行下降能够取得最小值的证明。
用梯度下降法,每次 xn=xn1δf(x)
在多元函数中:
xn=xn1δf(x)

牛顿法

f(x) 二阶泰勒展开:

f(x)=f(x0)+Δxf(x0)+12Δx2f′′(x0)

因为要使得 f(x) 取得最小值,则 f(x) 在最小值点必为0,将上式两边同时求导得到【其实直接对 f(x) 进行一阶泰勒展开也可以】
f(x)=f(x0)+Δxf′′(x0)

f(x)=0 得到
f(x0)+Δxf′′(x0)=0

Δx=f(x0)f′′(x0)

所以用牛顿法,每次取得 xn=xn1f(x0)f′′(x0)
在多元函数中

xn=xn1(2f(x0))1f(x0)

其中 2f(x0) 就是 f(x0) 的海森矩阵【二阶梯度矩阵】

其实,牛顿法在数值分析里面,是用来求解 f(x)=0 的解的问题的,相较于二分法求值的一阶收敛速度,牛顿法是一个二阶收敛速度。
用牛顿法求解 f(x)=0 的问题的时候,只用一阶导数就好
不过在最优化问题中,需要求解的是最值点,所以找的是其 f(x)=0 的点,所以就用到了二阶导数。

拟牛顿法

拟牛顿法直接看下面参考文献吧
大体思路上来说用牛顿法需要计算Hessian矩阵的逆矩阵,运算复杂度太高( O(n3) 级别的)。因此,很多牛顿算法的变形出现了,这类变形统称拟牛顿算法。
BFGS是用迭代法去近似计算海森矩阵。
而BFGS需要额外储存近似的那个海森矩阵,这时L-BFGS就出现了,它每次是计算出要计算近似海森矩阵就好。详细的看下面的参考文献吧。

参考文献

Jacobian矩阵和Hessian矩阵
【原创】牛顿法和拟牛顿法 – BFGS, L-BFGS, OWL-QN

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值