Incorporating Nesterov Momentum into Adam/zh
| Research Paper | |
|---|---|
| Authors | Dozat, T. |
| Year | 2016 |
| Venue | ICLR Workshop |
| Topic area | Machine Learning |
| Difficulty | Research |
| Source | View paper |
Incorporating Nesterov Momentum into Adam 是 Timothy Dozat 在 ICLR 2016 研讨会上发表的论文,提出了 Nadam(Nesterov 加速的自适应矩估计),这是一种一阶随机优化算法。Nadam 通过用重新表述的 Nesterov 加速梯度(NAG)替换其经典 momentum 组件,对流行的 Adam 优化器(Kingma 与 Ba, 2014)进行了修改。这一替换在概念上很小,但在论文的 MNIST autoencoder 基准上,相比 Adam、RMSProp、NAG、经典 momentum 或纯 SGD,能够产生明显更快的收敛速度和更低的训练与验证损失。
概述
到 2016 年,Adam 已成为训练深度神经网络的默认选择,因为它结合了两个有效的思想:一个累积过去梯度衰减均值的 momentum 项,以及由过去平方梯度衰减均值导出的逐参数自适应学习率。然而,其 momentum 组件采用的是经典的 Polyak (1964) 形式,Sutskever 等人 (2013) 已经从经验上证明,当作为独立的 momentum 方案使用时,该形式不如 Nesterov 加速梯度。Dozat 的贡献在于将 NAG 的思想嫁接到 Adam 上而不破坏其自适应学习率机制,由此得到的算法在保留 Adam 的超参数体系和实现规模的同时,继承了 NAG 的 "look-ahead" 优势。
这篇论文很短——只有四页的研讨会投稿——并仅展示了一个实证实验,但其推导足够清晰,使得由此得到的算法已被作为 Nadam 优化器纳入主流深度学习框架,包括 TensorFlow / Keras 和 PyTorch。
从概念上讲,这项工作属于 2014–2016 年间关于将 momentum 与逐参数自适应学习率相结合的更广泛研究脉络。Adam 本身可以被看作是经典(Polyak)momentum 与 RMSProp 自适应分母(Tieleman 与 Hinton, 2012)的融合,而 Nadam 自然地迈出了下一步:换入 Nesterov momentum,它已成为在需要 look-ahead 的任务中被偏爱的形式。该论文并未声称对任何单一要素具有原创性——Nesterov 算法可追溯到 1983 年,Adam 则可追溯到 2014 年——而是声称这种特定组合让 look-ahead 在偏差校正后仍能保留下来。
主要贡献
- NAG 的重新表述。 论文将 Nesterov 加速梯度改写为一种无需在临时扰动的参数点上计算梯度的形式。相反,下一步的 momentum 因子被并入当前的更新之中。
- Nadam 算法。 将同样的重新表述应用到 Adam 的 momentum 项,便得到 Nadam 更新规则:其中偏差校正后的一阶矩使用即将到来的 momentum 系数 $ \mu_{t+1} $,而非上一时刻的系数。
- $ \mu_t $ 的 schedule。 通过按时间步索引 momentum 衰减系数,Dozat 预见了 momentum schedule 的使用——这是若干参考实现后来采纳的细化。
- MNIST 上的实证证据。 在卷积 autoencoder 上的受控对比表明,Nadam 与 Adam 持平或更优,且这两种算法在各自最佳学习率下均优于 SGD、经典 momentum、NAG 和 RMSProp。
方法
推导分为三步进行。
经典 momentum(Polyak)。 维护一个 momentum 向量,它是过去梯度步的衰减和:
- $ m_t \leftarrow \mu m_{t-1} + \alpha_t g_t, \qquad \theta_t \leftarrow \theta_{t-1} - m_t. $
Nesterov 加速梯度。 Sutskever 等人 (2013) 证明 NAG 可以通过在 look-ahead 点 $ \theta_{t-1} - \mu m_{t-1} $ 处计算梯度来实现。Dozat 将其改写,使 look-ahead 改为在上一时间步的参数更新中应用,从而无需在被扰动的点上计算梯度:
- $ \theta_t \leftarrow \theta_{t-1} - (\mu_{t+1} m_t + \alpha_t g_t). $
Adam。 Adam 使用过去梯度的衰减均值(而非和),并除以过去平方梯度的衰减均方根,分母中带有偏差校正项 $ 1 - \mu^t $:
- $ m_t \leftarrow \mu m_{t-1} + (1 - \mu) g_t, \qquad \theta_t \leftarrow \theta_{t-1} - \alpha_t \frac{m_t}{1 - \mu^t}. $
Nadam。 将 NAG 的重新表述应用到 Adam,把偏差校正后的一阶矩替换为使用 $ \mu_{t+1} $(而非 $ \mu_t $)的版本:
- $ \hat{m}_t = \frac{\mu_{t+1} m_t}{1 - \prod_{i=1}^{t+1} \mu_i} + \frac{(1 - \mu_t) g_t}{1 - \prod_{i=1}^{t} \mu_i}, $
- $ \theta_t \leftarrow \theta_{t-1} - \frac{\alpha_t \hat{m}_t}{\sqrt{\hat{n}_t} + \epsilon}, $
其中 $ \hat{n}_t = \nu n_t / (1 - \nu^t) $ 是偏差校正后的二阶矩。作者还指出,同样的 NAG 风格替换原则上也兼容于其他自适应学习率算法,例如 Adamax 或 Equilibrated gradient descent。
结果
唯一的实验在 MNIST 上训练一个卷积 autoencoder(编码器和解码器各包含三层卷积加两层全连接),将每张 $ 28 \times 28 $ 的数字压缩为 16 维隐向量再重建。比较了六种优化器——SGD、经典 momentum、NAG、RMSProp、Adam 和 Nadam——每种仅就其学习率进行调优;其他超参数固定为 $ \mu = 0.975 $、$ \nu = 0.999 $、$ \epsilon = 10^{-8} $。最佳学习率为:SGD 取 $ 0.2 $,momentum 与 NAG 取 $ 0.5 $,RMSProp 取 $ 0.001 $,Adam 与 Nadam 取 $ 0.002 $。
在训练损失和验证损失两方面,Nadam 都比所有其他被测试的算法——包括其父算法 Adam——更快地达到更低的值。作者强调,这一点是在除了不可避免的学习率搜索之外没有额外超参数调整的情况下实现的,这支持了一种观点:Nadam 是对 Adam 的即插即用改进,而不是一种更脆弱的算法。
该 autoencoder 基准是有意保持适度的:它通过在六次运行中固定架构、数据集、正则化和初始化,来隔离优化器的贡献。论文没有包含大规模图像分类或语言建模实验,也没有研究 Nadam 与学习率 warm-up、weight decay 或 batch size 调度之间的相互作用——而这些都是后续工作所探索的内容。作为研讨会层级的研究,其实证结论被有意保持狭窄:在受控对比下,NAG 风格的一阶矩替换至少与采用经典 momentum 的 Adam 一样好。
影响
Nadam 已成为主流深度学习库中的标准选项:TensorFlow / Keras 将其作为 tf.keras.optimizers.Nadam 提供,PyTorch 将其加入为 torch.optim.NAdam。在实践中,它最常被选用于这样的任务:Adam 已经表现良好,但希望在训练早期获得稍快的收敛,例如语言模型的 fine-tuning 和某些计算机视觉流水线。
该论文还被引用为将一项优化理论的洞见(NAG)干净地移植到基于自适应矩的优化器上的早期范例,这一思路被后续工作在 AdamW(Loshchilov 与 Hutter, 2019)和 RAdam(Liu 等人, 2020)等变体上加以复现。由于这一修改只是对偏差校正后一阶矩的一行改动,Nadam 的采纳并不需要任何新的超参数或实现基础设施,这大大降低了其采用门槛。
这一设计的一个务实后果是,从业者通常可以在现有的训练流水线中用 Nadam 替换 Adam,而无需重新审视学习率 schedule、batch size 或正则化设置。从经验上看,两种算法产生的损失曲线在性质上相似,而 Nadam 往往在前几千次迭代中以微小但稳定的优势领先——这一阶段对于总算力较小的 fine-tuning 工作负载尤其重要。对于受梯度噪声而非曲率限制的训练任务,这两种算法基本可以互换。
参见
- Stochastic Gradient Descent
- Convolutional Neural Networks
- Backpropagation
- Batch Normalization
- Recurrent Neural Networks
- Attention Is All You Need
参考文献
- Dozat, T. (2016). Incorporating Nesterov Momentum into Adam. ICLR Workshop. OpenReview
OM0jvwB8jIp57ZJjtNEZ. - Kingma, D. 与 Ba, J. (2014). Adam: A Method for Stochastic Optimization. arXiv:1412.6980.
- Sutskever, I., Martens, J., Dahl, G. 与 Hinton, G. (2013). On the importance of initialization and momentum in deep learning. ICML.
- Nesterov, Y. (1983). A method of solving a convex programming problem with convergence rate $ O(1/k^2) $. Soviet Mathematics Doklady, 27, 372–376.
- Polyak, B. T. (1964). Some methods of speeding up the convergence of iteration methods. USSR Computational Mathematics and Mathematical Physics, 4(5), 1–17.
- Tieleman, T. 与 Hinton, G. (2012). Lecture 6.5 — RMSprop: divide the gradient by a running average of its recent magnitude. COURSERA.
- Duchi, J., Hazan, E. 与 Singer, Y. (2011). Adaptive subgradient methods for online learning and stochastic optimization. JMLR, 12, 2121–2159.
- Dauphin, Y., de Vries, H. 与 Bengio, Y. (2015). Equilibrated adaptive learning rates for non-convex optimization. NeurIPS, 1504–1512.
- Loshchilov, I. 与 Hutter, F. (2019). Decoupled weight decay regularization. ICLR.
- Liu, L. et al. (2020). On the variance of the adaptive learning rate and beyond. ICLR.