梯度下降法与牛顿法

举例

梯度下降法

gradient descent ( steepest descent )缩写为GD,主要用于最优化算法中寻找可微函数的局部最小值。其基本思想为随机选取初始点,并沿当前 x 值梯度的反方向更新 x 值(最速下降)方向。也可以沿梯度方向求局部最大值。

以上图为例,我们想要找到
y 1 = 1 20 x 4 − 2 5 x + 1 y1 = \frac{1}{20}x^4 - \frac{2}{5}x + 1 y1=201x452x+1
的最小值点
随机选取一个点,假设我们选到了 -1 算出 ( − 1 , 29 20 ) (-1,\frac{29}{20}) (1,2029) 点在曲线上,因此可以算出切线为
y 2 = − 3 5 x + 17 20 y2 = - \frac{3}{5}x + \frac{17}{20} y2=53x+2017
我们应该沿着切线的方向更新 x 。但是应该更新多少呢?因为从图中我们可以清楚的看到更新的过大的话 x 会到递增的区域,但过小的话又要更新很多次。

因此这个更新的幅度不能过大也不能过小。

如上面所讲,参数更新符合以下公式:
x n + 1 = x n − γ n ∇ F ( x n ) ,   n ≥ 0. \mathbf {x} _{n+1}=\mathbf {x} _{n}-\gamma _{n}\nabla F(\mathbf {x} _{n}),\ n\geq 0. xn+1=xnγnF(xn), n0.
其中 γ n \gamma_n γn 为学习率, ∇ F ( x n ) \nabla F(\mathbf{x}_{n}) F(xn) 为当前点的梯度。

牛顿法

Newton’s Method ( Newton-Raphson ) ,常用于寻找可微函数的根。其基本思路与梯度下降法基本一致,区别在于牛顿法用二次函数来拟合函数,并在每次计算时直接将 x 更新到二次函数的最小值点。

根据上面的分析我们知道梯度下降法的一个问题在于参数 (学习率) γ n \gamma_{n} γn 需要自己选取。
我们知道泰勒展开式

f ( x ) ≈ f ( x k ) + f ′ ( x k ) ( x − x k ) + 1 2 f ′ ′ ( x k ) ( x − x k ) 2 f(x)\approx f(x_{k})+f'(x_{k})(x-x_{k})+{\frac {1}{2}}f''(x_{k})(x-x_{k})^{2} f(x)f(xk)+f(xk)(xxk)+21f′′(xk)(xxk)2

我们想求近似函数 f ( x k ) f(x_{k}) f(xk) 的最小值,因此对上式两边求导得到:
f ′ ( x ) = f ′ ( x k ) + f ′ ′ ( x k ) ( x − x k ) f'(x) = f'(x_{k}) + f''(x_{k})(x - x_{k}) f(x)=f(xk)+f′′(xk)(xxk)
并令 f ′ ( x ) = 0 f'(x) = 0 f(x)=0
因此可以求得
x = x k − f ′ ( x ) f ′ ′ x x = x_{k} - \frac{f'(x)}{f''{x}} x=xkf′′xf(x)
从图中可以看出牛顿法采用二次函数 y 3 y3 y3 来拟合原函数曲线 y 1 y1 y1

我们发现和梯度下降法的公式很像
梯度下降法:
x n + 1 = x n − γ n y ′ ( x n ) \mathbf x_{n+1} = \mathbf x_{n} - \gamma_{n}y'(x_{n}) xn+1=xnγny(xn)
牛顿法:
x n + 1 = x n − f ′ ( x n ) f ′ ′ ( x n ) \mathbf x_{n+1} = \mathbf x_{n} - \frac{f'(x_{n})}{f''(x_{n})} xn+1=xnf′′(xn)f(xn)
两个式子唯一的不同在于梯度下降算法中的学习率 γ n \gamma_{n} γn 换成了牛顿法中的 1 f ′ ′ ( x n ) \frac{1}{f''(x_{n})} f′′(xn)1

总结

  • 梯度下降法:梯度下降法梯度方向和步长来更新参数,优点是参数的更新速度较快。但存在着容易陷入局部最优解的缺点,并且越靠近最小值点时,步长应该越小,否则可能会导致在最小值点附近震荡,收敛很慢甚至无法收敛。
  • 牛顿法:不仅考虑了梯度而且引入二阶导数,不需要手动设置学习率,也考虑到了更新之后的梯度变化(二阶导数),同时其收敛速度也很快。缺点是也会陷入局部最优解,而且需要计算黑塞(Hessian)矩阵的逆矩阵,并且每次迭代都需要计算,因此计算量非常大。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

max_lfy99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值