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.