当前位置:   article > 正文

常见优化器对比:梯度下降法、带动量的梯度下降法、Adagrad、RMSProp、Adam_adam梯度下降法

adam梯度下降法

系列文章目录

李沐《动手学深度学习》线性神经网络 线性回归
李沐《动手学深度学习》优化算法(相关概念、梯度下降法、牛顿法)
李沐《动手学深度学习》优化算法(经典优化算法)


一、梯度下降法

(一)基本思想

先设定一个学习率 η \eta η,参数沿着梯度的反方向移动。假设需要更新的参数为 w w w,梯度为 g g g,则梯度下降法的更新策略为:
w ← w − η ∗ g w\leftarrow w-\eta * g wwηg

李沐《动手学深度学习》中对于随机梯度下降法的阐释:

在这里插入图片描述

(二)梯度下降法的三种不同形式

  • BGD(batch gradient descent):批量梯度下降,每次参数更新使用所有样本
  • SGD(stochastic gradient descent):随机梯度下降,每次参数更新只使用1个样本
  • MBGD(mini-batch gradient descent):小批量梯度下降,每次参数更新使用小部分数据样本

(三)优缺点

优点:

  • 算法简洁,当学习率取值恰当时,可以收敛到 全局最优点(凸函数)或 局部最优点(非凸函数)。

缺点:

  • 对超参数学习率比较敏感:过小导致收敛速度过慢,过大又越过极值点;
  • 学习率在选代过程中保持不变,很容易造成算法被卡在鞍点的位置;
  • 容易陷入局部极小值。

更优的优化算法从梯度方面和学习率方面对参数更新方式进行优化。

二、带动量的梯度下降法

(一)基本思想

每一步更新都是由前面梯度的累计v和当前梯度g组合而成,进而使得参数的更新具有惯性。

α \alpha α为动量参数, v v v是动量, η \eta η是学习率

  • 累计梯度: v ← α v + ( 1 − α ) g v\leftarrow \alpha v +(1-\alpha)g vαv+(1α)g
  • 梯度更新: w ← w − η ∗ v w\leftarrow w-\eta * v wwηv

(二)优点

  • 在梯度方向改变时,momentum能够降低参数更新速度,从而减少震荡;
  • 在梯度方向相同时,momentum可以加速参数更新, 从而加速收敛。
  • 动量有机会逃脱局部极小值(加入动量后,参数更新就可以保持之前更新趋势,而不会卡在当前梯度较小的点了)。

三、Adagrad:自适应学习率优化算法

Adagrad的关键就是对于不同的参数,会设置不同的学习率

主要思想: 根据每个参数在训练过程中的历史梯度信息来调整学习率,从而使得每个参数的学习率可以自适应地调整,更好地适应不同参数的特性。

特点: 对每个参数的学习率进行适应性调整,使得在训练过程中梯度较大的参数的学习率变小,而梯度较小的参数的学习率变大。

计算方式:

  • 对于每个参数,初始化一个累计平方梯度 r = 0 r=0 r=0,然后每次将该参数的梯度平方求和累加到这个变量上:
    r ← r + g 2 r \leftarrow r+g^2 rr+g2
  • 学习率为:
    η r + δ \frac{\eta}{\sqrt{r+\delta}} r+δ η
  • 权重更新:( g g g是梯度, δ \delta δ是小参数,为了避免分母为0)
    w ← w − η r + δ ∗ g w\leftarrow w-\frac{\eta}{\sqrt{r+\delta}}*g wwr+δ ηg

四、RMSProp:均方根传播

RMSProp全称为root mean square propagation均方根传播。

RMSProp算法是在AdaGrad算法的基础上,进一步在学习率的方向上进行优化: AdaGrad算法中,由于历史梯度的累积可能会导致学习率不断减小,从而影响算法的收敛速度。RMSProp通过引入一个衰减系数 λ \lambda λ来解决这个问题,从而使得学习率的衰减更加平缓,提高了算法的稳定性和收敛速度。

  • 对于每个参数,初始化一个累计平方梯度 r = 0 r=0 r=0,然后每次将该参数的梯度平方求和累加到这个变量上:
    r ← λ r + ( 1 − λ ) g 2 r \leftarrow \lambda r+(1-\lambda)g^2 rλr+(1λ)g2
  • 学习率为:
    η r + δ \frac{\eta}{\sqrt{r+\delta}} r+δ η
  • 权重更新:( g g g是梯度, δ \delta δ是小参数,为了避免分母为0)
    w ← w − η r + δ ∗ g w\leftarrow w-\frac{\eta}{\sqrt{r+\delta}}*g wwr+δ ηg

五、Adam

Adam算法是一种用于优化神经网络训练的自适应学习率优化算法。它结合了动量梯度下降和自适应学习率方法的优点,具有广泛的应用和高效的性能。

在Grandient Descent的基础上,Adam的改进包括:

  • 梯度方面增加了momentum,使用累计梯度 v ← α v + ( 1 − α ) g v\leftarrow \alpha v +(1-\alpha) g vαv+(1α)g
  • 用RMSProp优化算法的方式对学习率进行优化,使用累计平方梯度: r ← λ r + ( 1 − λ ) g 2 r\leftarrow \lambda r+(1-\lambda)g^2 rλr+(1λ)g2
  • 偏差纠正: v ^ = v 1 − α t \hat{v}=\frac{v}{1-\alpha^t} v^=1αtv r ^ = r 1 − λ t \hat{r}=\frac{r}{1-\lambda^t} r^=1λtr

在上述3点改进的基础上,* 权重更新: w ← w − η r ^ + δ ∗ v ^ w\leftarrow w-\frac{\eta}{\sqrt{\hat{r}+\delta}}*\hat{v} wwr^+δ ηv^

六、对比总结

在这里插入图片描述

参考:优化器 |SGD |Momentum |Adagrad |RMSProp |Adam

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/886589
推荐阅读
相关标签
  

闽ICP备14008679号