深度学习_深度学习基础知识_Adam优化器详解

Adam介绍

Adam优化器结合了AdaGrad和RMSProp两种优化算法的优点。对梯度的一阶矩估计(First Moment Estimation,即梯度的均值)和二阶矩估计(Second Moment Estimation,即梯度的未中心化的方差)进行综合考虑,计算出更新步长。

Adam的优势

  1. 实现简单,计算高效,对内存需求少。
  2. 参数的更新不受梯度的伸缩变换影响。
  3. 超参数具有很好的解释性,且通常无需调整或仅需很少的微调。
  4. 更新的步长能够被限制在大致的范围内(初始学习率)。
  5. 能自然地实现步长退火过程(自动调整学习率)。
  6. 很适合应用于大规模的数据及参数的场景。
  7. 适用于不稳定目标函数。
  8. 适用于梯度稀疏或梯度存在很大噪声的问题。

Adam的实现原理

深度学习_深度学习基础知识_Adam优化器详解

计算t时刻的梯度:

深度学习_深度学习基础知识_Adam优化器详解

然后计算梯度的指数移动平均数,m0m_{0}初始化为0。

类似于Momentum算法,综合考虑之前累积的梯度动量。

β1\beta_{1}系数为指数衰减率,控制动量和当前梯度的权重分配,通常取接近于1的值。默认为0.9。

深度学习_深度学习基础知识_Adam优化器详解

接着,计算梯度平方的指数移动平均数,v0v_{0}初始化为0。

β2\beta_{2}系数为指数衰减率,控制之前的梯度平方的影响情况。默认为0.999。

类似于RMSProp算法,对梯度平方进行加权均值。

深度学习_深度学习基础知识_Adam优化器详解

由于m0m_{0}初始化为0,会导致mtm_{t}偏向于0,尤其在训练初期阶段。

所以,此处需要对梯度均值mtm_{t}进行偏差纠正,降低偏差对训练初期的影响。

深度学习_深度学习基础知识_Adam优化器详解

同时v0v_{0}也要进行偏差纠正:

深度学习_深度学习基础知识_Adam优化器详解

最后总的公式如下所示:

深度学习_深度学习基础知识_Adam优化器详解

其中默认学习率α=0.001\alpha = 0.001ε=108\varepsilon = 10^{-8}避免除数变为0。

从表达式中可以看出,对更新的步长计算,能够从梯度均值和梯度平方两个角度进行自适应地调节,而不是直接由当前梯度决定。

Adam的不足

虽然Adam算法目前成为主流的优化算法,不过在很多领域里(如计算机视觉的对象识别、NLP中的机器翻译)的最佳成果仍然是使用带动量(Momentum)的SGD来获取到的。Wilson 等人的论文结果显示,在对象识别、字符级别建模、语法成分分析等方面,自适应学习率方法(包括AdaGrad、AdaDelta、RMSProp、Adam等)通常比Momentum算法效果更差。