点击蓝字关注我哦
先放一张公式汇总图
No.1
Momentum算法
Momentum算法借用了物理中的动量概念,使得参数更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。 如果把原始的 SGD 想象成一个纸团在重力作用向下滚动,由于纸团质量小受到山壁弹力的干扰大,导致来回震荡;或者在鞍点处因为质量小速度很快减为 0,导致无法离开这块平地。 Momentum方法相当于把纸团换成了铁球,不容易受到外力的干扰,轨迹更加稳定;同时因为在鞍点处因为惯性的作用,更有可能离开平地。 (参考博客:一杯明月) Momentum算法计算了梯度的指数加权平均数,并以此来更新权重,它的运行速度几乎总是快于标准的梯度下降算法。 其中,动量超参数γ满足0≤γ<1。当γ=0时,动量法等价于小批量随机梯度下降。No.2
Adagrad算法
AdaGrad算法根据自变量在每个维度的梯度值的大小来调整各个维度上的学习率,从而避免统一的学习率难以适应所有维度的问题。
Adagrad算法能够在训练中自动的对learning rate进行调整,对于出现频率较低参数采用较大的α更新;相反,对于出现频率较高的参数采用较小的α更新。因此,Adagrad非常适合处理稀疏数据。
AdaGrad算法在迭代过程中不断调整学习率,并让目标函数自变量中每个元素都分别拥有自己的学习率。使用AdaGrad算法时,自变量中每个元素的学习率在迭代过程中一直在降低。 然而AdaGrad算法也有一些缺点:(之后的优化算法即是在该算法基础上改进)小批量随机梯度按元素累加变量,出现在学习率的分母项中。(若目标函数有关自变量的偏导数一直都较大,那么学习率下降较快;反之亦然。)
若迭代早期下降过快 + 当前解仍然不佳,可能导致很难找到有效解。
No.3
RMSprop算法
RMSprop算法(Root Mean Square prop) 是一种自适应学习率的方法。它针对 Adagrad 算法的缺陷进行修改,将梯度积累改变为 指数加权移动平均 。 Adagrad 算法旨在应用于凸问题时快速收敛,而RMSProp 算法使用 指数衰减平均 以丢弃过分无关的数据。 不同于AdaGrad算法里状态变量st是截至时间步t所有小批量随机梯度gt 按元素平方和 ,RMSProp算法将梯度 按元素平方做指数加权移动平均 ,因此可缓解Adagrad算法学习率下降较快的问题。 RMSProp 的状态变量可以看作是最近 个时间步的小批量随机梯度平方项的加权平均,自变量每个元素的学习率在迭代过程中不再一直降低(如此一来,一直具有较大梯度的元素的学习率依然下降较快,但不会无止境的下降,从而解决了没办法得到局部最优解的缺点)No.4
Adadelta算法
AdaDelta算法没有学习率这一超参数。
AdaDelta算法也像RMSProp算法一样,使用了小批量随机梯度gt按元素平方的指数加权移动平均变量st。在时间步t=0,它的所有元素被初始化为0。给定超参数0≤ρ<1(对应RMSProp算法中的γ),在时间步t>0,同RMSProp算法一样计算
与RMSProp算法不同的是,AdaDelta算法还维护一个额外的状态变量Δxt,其元素同样在时间步0时被初始化为0。使用Δxt−1来计算自变量的变化量:
其中ϵ是为了维持数值稳定性而添加的常数,如1e−5。接着更新自变量:
最后,我们使用Δxt来记录自变量变化量g′t按元素平方的指数加权移动平均:
可以看到,如不考虑ϵ的影响,AdaDelta算法跟RMSProp算法的不同之处在于使用√ Δx t−1来替代学习率η。
No.5
Adam算法
Adam(Adaptive Moment Estimation)是另一种自适应学习率的方法,它在RMSProp算法基础上对小批量随机梯度也做了指数加权移动平均。
Adam算法还使用了偏差修正。
Adam 算法可以看作是动量法(Momentum) 和 RMSProp 算法的结合,使用了动量变量; 和RMSProp中小批量随机梯度逐元素平方的指数加权移动平均变量 : 参数选取建议:学习率:
超参数:
超参数:
Hints:
动量法:梯度转化为速度
AdaGrad:每个参数反比于历史梯度平方总和的平方根
RMSProp:AdaGrad的升级(将梯度积累替换为滑动平均)
Adadelta:AdaGrad的升级(在RMSProp的基础上维护了一个额外的状态变量,用于替换学习率参数)
Adam:动量 + RMSProp + 偏差修正
最后通过两张动图从直观上展现算法的优化过程:
1、不同算法在损失平面等高线上随时间的变化情况:
2、不同算法在鞍点处的行为比较:参考:
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比赛)实现【附详细解释】写留言