神经网络优化中的学习率调整(下)

目录

一、AdaGrad算法

二、RMSprop算法

三、AdaDelta算法

四、学习率调整方法总结 


在上一遍文章中详细介绍了学习率衰减、学习率预热、周期性学习率调整几种方法,本文将主要介绍一些自适应调整学习率的方法,例如AdaGrad、RMSprop、 AdaDelta 等。想要了解学习率衰减、学习率预热、周期性学习率调整方法的朋友可以在文末找到链接入口。

一、AdaGrad算法

在标准的梯度下降法中 每个参数在每次迭代时都使用相同的学习率。 由于每个参数的维度上收敛速度都不相同, 因此需要根据不同参数的收敛情况分别设置学习率。
AdaGrad算法 Adaptive Gradient Algorithm )是借鉴 ℓ2 正则化的思想 每次迭代时自适应地调整每个参数的学习率。 在第  次迭代时 , 先计算每个参数梯度平方的累计值:

神经网络优化中的学习率调整(下)_第1张图片

其中 为按元素乘积 ∈ ℝ || 是第    次迭代时的梯度。
AdaGrad 算法的参数更新差值为:

神经网络优化中的学习率调整(下)_第2张图片

其中 是初始的学习率 , 是为了保持数值稳定性而设置的非常小的常数 一般取值e −7 e −10。 此外 这里的开平方 加运算都是按元素进行的操作。 在 AdaGrad 算法中 如果某个参数的偏导数累积比较大 其学习率相对较小; 相反 如果其偏导数累积较小 其学习率相对较大。 但整体是随着迭代次数的增加, 学习率逐渐缩小。
AdaGrad 算法的缺点是在经过一定次数的迭代依然没有找到最优点时 由于这时的学习率已经非常小, 很难再继续找到最优点。

二、RMSprop算法

RMSprop算法 Geoff Hinton 提出的一种自适应学习率的方法 可以在有些情况下避免 AdaGrad 算法中学习率不断单调下降以至于过早衰减的缺点。
RMSprop 算法首先计算每次迭代梯度  平方的指数衰减移动平均:

神经网络优化中的学习率调整(下)_第3张图片

其中  为衰减率 一般取值为 0.9。
RMSprop 算法的参数更新差值为:

神经网络优化中的学习率调整(下)_第4张图片

从上式可以看出 RMSProp 算法和 AdaGrad 算法的区别在于 的计算由累积方式变成了指数衰减移动平均。 在迭代过程中 每个参数的学习率并不是呈衰减趋势,而是 既可以变小也可以变大。

三、AdaDelta算法

AdaDelta 算法 也是 AdaGrad 算法的一个改进。 RMSprop算法类似, AdaDelta 算法通过梯度平方的指数衰减移动平均来调整学习率。 此外, AdaDelta 算法还引入了每次参数更新差值  Δ  的平方的指数衰减权移动平均。

次迭代时 参数更新差值 Δ 的平方的指数衰减权移动平均为:

其中 1 为衰减率。此时 Δ 还未知因此只能计算到Δ−1。

AdaDelta算法的参数更新差值为:

神经网络优化中的学习率调整(下)_第5张图片

 

其中  的计算方式和 RMSprop算法一样 Δ ^2 (−1) 为参数更新差值 Δ 的指数衰减权移动平均
从上式可以看出 AdaDelta 算法将 RMSprop 算法中的初始学习率    改为动态计算的√Δ^2 (−1),在一定程度上平抑了学习率的波动。

四、学习率调整方法总结 

神经网络优化中的学习率调整(下)_第6张图片

 相关文章链接:

神经网络优化中的学习率调整(上)_云隐雾匿的博客-CSDN博客

你可能感兴趣的:(深度学习,神经网络,深度学习,自然语言处理,pytorch)