目录
一、AdaGrad算法
二、RMSprop算法
三、AdaDelta算法
四、学习率调整方法总结
在上一遍文章中详细介绍了学习率衰减、学习率预热、周期性学习率调整几种方法,本文将主要介绍一些自适应调整学习率的方法,例如AdaGrad、RMSprop、 AdaDelta 等。想要了解学习率衰减、学习率预热、周期性学习率调整方法的朋友可以在文末找到链接入口。
一、AdaGrad算法
在标准的梯度下降法中 , 每个参数在每次迭代时都使用相同的学习率。 由于每个参数的维度上收敛速度都不相同, 因此需要根据不同参数的收敛情况分别设置学习率。
AdaGrad算法 ( Adaptive Gradient Algorithm )是借鉴 ℓ2 正则化的思想 , 每次迭代时自适应地调整每个参数的学习率。 在第 次迭代时 , 先计算每个参数梯度平方的累计值:
其中 ⊙ 为按元素乘积 , ∈ ℝ || 是第 次迭代时的梯度。
AdaGrad 算法的参数更新差值为:
其中 是初始的学习率 , 是为了保持数值稳定性而设置的非常小的常数 , 一般取值e −7 到 e −10。 此外 , 这里的开平方 、 除 、 加运算都是按元素进行的操作。 在 AdaGrad 算法中 , 如果某个参数的偏导数累积比较大 , 其学习率相对较小; 相反 , 如果其偏导数累积较小 , 其学习率相对较大。 但整体是随着迭代次数的增加, 学习率逐渐缩小。
AdaGrad 算法的缺点是在经过一定次数的迭代依然没有找到最优点时 , 由于这时的学习率已经非常小, 很难再继续找到最优点。
二、RMSprop算法
RMSprop算法 是 Geoff Hinton 提出的一种自适应学习率的方法 , 可以在有些情况下避免 AdaGrad 算法中学习率不断单调下降以至于过早衰减的缺点。
RMSprop 算法首先计算每次迭代梯度 平方的指数衰减移动平均:
其中 为衰减率 , 一般取值为 0.9。
RMSprop 算法的参数更新差值为:
从上式可以看出 , RMSProp 算法和 AdaGrad 算法的区别在于 的计算由累积方式变成了指数衰减移动平均。 在迭代过程中 , 每个参数的学习率并不是呈衰减趋势,而是 既可以变小也可以变大。
三、AdaDelta算法
AdaDelta 算法 也是 AdaGrad 算法的一个改进。 和 RMSprop算法类似, AdaDelta 算法通过梯度平方的指数衰减移动平均来调整学习率。 此外, AdaDelta 算法还引入了每次参数更新差值 Δ 的平方的指数衰减权移动平均。
第 次迭代时 , 参数更新差值 Δ 的平方的指数衰减权移动平均为:
其中 1 为衰减率。此时 Δ 还未知,因此只能计算到Δ−1。
AdaDelta算法的参数更新差值为:
其中 的计算方式和 RMSprop算法一样 , Δ ^2 (−1) 为参数更新差值 Δ 的指数衰减权移动平均。
从上式可以看出 , AdaDelta 算法将 RMSprop 算法中的初始学习率 改为动态计算的√Δ^2 (−1),在一定程度上平抑了学习率的波动。
四、学习率调整方法总结
相关文章链接:
神经网络优化中的学习率调整(上)_云隐雾匿的博客-CSDN博客