adadelta算法_Momentum、Adagrad、RMSprop、Adadelta、Adam优化算法

本文介绍了优化算法的发展,从Momentum、Adagrad、RMSprop到Adadelta,强调了Adadelta无需设置学习率这一优点。Adadelta通过历史梯度平方的指数加权平均来动态调整学习率,简化了RMSprop的参数调整。最后提到了Adam算法,它是动量法、RMSProp和偏差修正的结合,是目前常用的优化算法之一。
摘要由CSDN通过智能技术生成

点击蓝字关注我哦

先放一张公式汇总图

3b50dc8dd035449ed2f9b3456cca45a7.png

No.1

Momentum算法

Momentum算法借用了物理中的动量概念,使得参数更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。 如果把原始的 SGD 想象成一个纸团在重力作用向下滚动,由于纸团质量小受到山壁弹力的干扰大,导致来回震荡;或者在鞍点处因为质量小速度很快减为 0,导致无法离开这块平地。 Momentum方法相当于把纸团换成了铁球,不容易受到外力的干扰,轨迹更加稳定;同时因为在鞍点处因为惯性的作用,更有可能离开平地。 (参考博客:一杯明月) Momentum算法计算了梯度的指数加权平均数,并以此来更新权重,它的运行速度几乎总是快于标准的梯度下降算法。

8e3a1a78f559f380adbd9052edd97cb7.png

其中,动量超参数γ满足0≤γ<1。当γ=0时,动量法等价于小批量随机梯度下降。

No.2

Adagrad算法

    AdaGrad算法根据自变量在每个维度的梯度值的大小来调整各个维度上的学习率,从而避免统一的学习率难以适应所有维度的问题。

    Adagrad算法能够在训练中自动的对learning rate进行调整,对于出现频率较低参数采用较大的α更新;相反,对于出现频率较高的参数采用较小的α更新。因此,Adagrad非常适合处理稀疏数据

7c84fdee4fd402bb263e7e91d002f5fc.png

41bf35061a4fff0954b777978f9c324c.png

AdaGrad算法在迭代过程中不断调整学习率,并让目标函数自变量中每个元素都分别拥有自己的学习率。使用AdaGrad算法时,自变量中每个元素的学习率在迭代过程中一直在降低。 然而AdaGrad算法也有一些缺点:(之后的优化算法即是在该算法基础上改进)
  1. 小批量随机梯度按元素累加变量,出现在学习率的分母项中。(若目标函数有关自变量的偏导数一直都较大,那么学习率下降较快;反之亦然。)

  2. 若迭代早期下降过快 + 当前解仍然不佳,可能导致很难找到有效解。

No.3

RMSprop算法

RMSprop算法(Root Mean Square prop) 是一种自适应学习率的方法。它针对 Adagrad 算法的缺陷进行修改,将梯度积累改变为 指数加权移动平均Adagrad 算法旨在应用于凸问题时快速收敛RMSProp 算法使用 指数衰减平均 以丢弃过分无关的数据。 不同于AdaGrad算法里状态变量st是截至时间步t所有小批量随机梯度gt 按元素平方和 ,RMSProp算法将梯度 按元素平方做指数加权移动平均 ,因此可缓解Adagrad算法学习率下降较快的问题。

c8676e9fc9b5d18964457f9d97c277a7.png

180e79564c9b9fbdc8ba6d243b9a9c70.png

RMSProp 的状态变量可以看作是最近 76d3d542-e244-eb11-8da9-e4434bdf6706.svg 个时间步的小批量随机梯度平方项的加权平均,自变量每个元素的学习率在迭代过程中不再一直降低(如此一来,一直具有较大梯度的元素的学习率依然下降较快,但不会无止境的下降,从而解决了没办法得到局部最优解的缺点)

No.4

Adadelta算法

    AdaDelta算法没有学习率这一超参数。

    AdaDelta算法也像RMSProp算法一样,使用了小批量随机梯度gt按元素平方的指数加权移动平均变量st。在时间步t=0,它的所有元素被初始化为0。给定超参数0≤ρ<1(对应RMSProp算法中的γ),在时间步t>0,同RMSProp算法一样计算

dd699114cb522b25546e9715b104b1a4.png

    与RMSProp算法不同的是,AdaDelta算法还维护一个额外的状态变量Δxt,其元素同样在时间步0时被初始化为0。使用Δxt−1来计算自变量的变化量:

c9ea3c7d533872fc73b3334d5865a96e.png

    其中ϵ是为了维持数值稳定性而添加的常数,如1e−5。接着更新自变量:

3245f6d35eecf780f827ef3cf3319f77.png

    最后,我们使用Δxt来记录自变量变化量g′t按元素平方的指数加权移动平均:

18f467b3eaa0d0482043c78e45fbfd86.png

    可以看到,如不考虑ϵ的影响,AdaDelta算法跟RMSProp算法的不同之处在于使用√ Δx t−1来替代学习率η

No.5

Adam算法

   Adam(Adaptive Moment Estimation)是另一种自适应学习率的方法,它在RMSProp算法基础上对小批量随机梯度也做了指数加权移动平均。

   Adam算法还使用了偏差修正

9d83fd2006b9e44c521cb610f18b8cf4.png

644f2b1d83661072c213e6f1a5a2fe06.png

d552bfa629e60a51bdc94cd5d75ee772.png

8550eac643f39e769954c64e5bd600a4.png

1ced665ea5e49ebb16b6c544e3385382.png

edfa7b7387c156e4052236b376bd08cf.png

Adam 算法可以看作是动量法(Momentum) 和 RMSProp 算法的结合,使用了动量变量;

89d3d542-e244-eb11-8da9-e4434bdf6706.svg

和RMSProp中小批量随机梯度逐元素平方的指数加权移动平均变量 8bd3d542-e244-eb11-8da9-e4434bdf6706.svg

8ed3d542-e244-eb11-8da9-e4434bdf6706.svg

参数选取建议:

学习率90d3d542-e244-eb11-8da9-e4434bdf6706.svg92d3d542-e244-eb11-8da9-e4434bdf6706.svg

超参数94d3d542-e244-eb11-8da9-e4434bdf6706.svg96d3d542-e244-eb11-8da9-e4434bdf6706.svg

超参数98d3d542-e244-eb11-8da9-e4434bdf6706.svg9ad3d542-e244-eb11-8da9-e4434bdf6706.svg


Hints:
  • 动量法:梯度转化为速度

  • AdaGrad:每个参数反比于历史梯度平方总和的平方根

  • RMSProp:AdaGrad的升级(将梯度积累替换为滑动平均)

  • Adadelta:AdaGrad的升级(在RMSProp的基础上维护了一个额外的状态变量,用于替换学习率参数)

  • Adam:动量 + RMSProp + 偏差修正

最后通过两张动图从直观上展现算法的优化过程:

1、不同算法在损失平面等高线上随时间的变化情况:

0e4f6a4f848d85a472ab7877bc8a2766.gif

2、不同算法在鞍点处的行为比较:

b39b20d10e535b7b096d8917de9e89d0.gif

参考:

https://www.jianshu.com/p/75aba780f2c1

https://blog.csdn.net/u010089444/article/details/76725843

https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter07_optimization/7.7_adadelta

你还想看

子网络组成深层网络:NIN、GoogLeNet 批量(Batch)归一化 ResNet残差网络 、 DenseNet网络 经典卷积网络:LeNet、AlexNet、VGGNet K折交叉验证——房价预测(KAGGLE比赛)实现【附详细解释】
写留言
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值