Incorporating Nesterov Momentum into Adam/paper/zh

    From Marovi AI
    < Incorporating Nesterov Momentum into Adam
    Revision as of 06:41, 27 April 2026 by DeployBot (talk | contribs) (Batch translate Incorporating Nesterov Momentum into Adam/paper unit 6 → zh)
    (diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
    Other languages:
    SummarySource
    Research Paper
    Authors Dozat, T.
    Year 2016
    Venue ICLR Workshop
    Topic area Machine Learning
    Difficulty Research
    Source View paper

    Workshop track — ICLR 2016

    摘要

    本工作旨在改進近期被提出並迅速流行起來的優化算法 Adam (Kingma 與 Ba, 2014)。Adam 有兩個主要組成部分——一個 momentum 組件和一個自適應學習率組件。然而,可以從概念上和經驗上證明,常規 momentum 不如一種類似的算法——Nesterov 加速梯度(NAG)。我們展示如何修改 Adam 的 momentum 組件以利用 NAG 的洞見,並隨後給出初步證據表明這種替換可以提升收斂速度並改善所學模型的質量。

    引言

    在試圖提升深度學習系統的性能時,可以採取若干種方法——改善模型結構,例如讓其更深;改善模型的初始化,使誤差信號能夠均勻地分布到模型參數中;收集更多數據或嘗試不同的正則化技術以防止過擬合;以及使用更強大的優化算法,使得能夠在合理的時間內達到更好的解。本工作旨在通過提供一種更強大的學習算法來提升所學模型的質量。

    許多用於優化非凸目標的流行學習算法都使用某種 stochastic gradient descent (SGD) 的變體;本工作將在其分析中考慮此類算法的一個子集。算法 1 以本文使用的記號給出 SGD——後續所有算法都將在此基礎模板上進行擴展或修改:

    算法 1:stochastic gradient descent

    Require: $ \alpha_0, \dots, \alpha_T $:每個 timestep 的學習率(通常會進行退火)。
    Require: $ f_i(\theta) $:由 $ \theta $ 參數化、按 timestep $ i $ 索引的隨機目標函數。
    Require: $ \theta_0 $:初始參數。

    $ \theta_t $ 尚未收斂時:

    $ t \leftarrow t + 1 $
    $ g_t \leftarrow \nabla_{\theta_{t-1}} f_t(\theta_{t-1}) $
    $ \theta_t \leftarrow \theta_{t-1} - \alpha_t g_t $

    循環結束;返回 $ \theta_t $

    相關工作

    經典 momentum (Polyak, 1964) 將先前更新的衰減和(衰減因子為 $ \mu $)累積到一個 momentum 向量 $ m $ 中,並用該向量替換算法 1 中原本的梯度步。也就是說,我們對算法做如下修改,使其在每個 timestep 包含:

    $ m_t \leftarrow \mu m_{t-1} + \alpha_t g_t \qquad (1) $
    $ \theta_t \leftarrow \theta_{t-1} - m_t \qquad (2) $

    直覺上,這使得算法在低曲率維度上能夠更快地移動——這些維度上更新雖然始終很小但方向一致——而在湍動的維度上更慢,這些維度上更新的方向顯著振盪 (Sutskever 等人, 2013)。

    Sutskever 等人 (2013) 證明 Nesterov 加速梯度(NAG)(Nesterov, 1983)——在凸的、非隨機目標上具有可證明優於 gradient descent 的界——可以被改寫為一種改進的 momentum。如果我們在第 2 行原始 momentum 表述中展開 $ m_t $,就會看到該更新等價於在前一 momentum 向量方向上走一步,以及在當前梯度方向上走一步:

    $ \theta_t = \theta_{t-1} - (\mu m_{t-1} + \alpha_t g_t) \qquad (3) $

    然而,momentum 步 $ \mu m_{t-1} $ 並不依賴當前梯度 $ g_t $,因此我們可以先用 momentum 步更新參數再計算梯度,從而得到一個質量更高的梯度步方向。Sutskever 等人 (2013) 提出按照下面的第 4 行修改算法 1 循環中的梯度計算行以實現這一點:

    $ g_t \leftarrow \nabla_{\theta_{t-1}} f_t(\theta_{t-1} - \mu m_{t-1}) \qquad (4) $
    $ m_t \leftarrow \mu m_{t-1} + \alpha_t g_t \qquad (5) $
    $ \theta_t \leftarrow \theta_{t-1} - m_t \qquad (6) $

    作者還提供了經驗證據,表明在傳統上較為困難的優化目標上,該算法優於 SGD、經典 momentum 和 Hessian-Free (Martens, 2010)。

    經典 momentum 和 NAG 都將 $ m $ 定義為對先前更新的衰減和;然而 Adaptive moment estimation (Adam) (Kingma 與 Ba, 2014) 將其改為對先前梯度的衰減均值(該算法還包含此處未討論的自適應學習率組件;參見 Duchi 等人 (2011) 與 Tieleman 與 Hinton (2012))。

    $ m_t \leftarrow \mu m_{t-1} + (1 - \mu) g_t \qquad (7) $
    $ \theta_t \leftarrow \theta_{t-1} - \alpha_t \frac{m_t}{1 - \mu^t} \qquad (8) $

    用過去的梯度而非過去的更新,使算法在訓練接近尾聲、學習率已顯著退火時仍能持續改變方向,從而獲得更精細的收斂。它還使算法能夠直接校正由 momentum 向量初始化為零所導致的 "初始化偏差"(這正是第 8 行分母中 $ (1 - \mu^t) $ 項的作用)。Kingma 與 Ba (2014) 證明其算法在一小批基準上優於包括 NAG 在內的若干其他算法。

    修改 Adam 的 momentum

    為清晰起見,在下文中我們將允許 $ \mu $ 按 timestep 取不同的值 $ \mu_1, \dots, \mu_T $。在修改 Adam 的更新規則之前,我們先展示如何把 NAG 改寫得更易實現(代價是損失部分直覺性)。我們不必先用 momentum 步更新參數以計算梯度、再撤銷該步以恢復原始參數狀態、然後在實際更新時再次執行 momentum 步,而可以只在前一時間步 $ t $ 的更新中應用一次 timestep $ t+1 $ 的 momentum 步,而不是在 $ t+1 $ 中再做:

    $ g_t \leftarrow \nabla_{\theta_{t-1}} f_t(\theta_{t-1}) \qquad (9) $
    $ m_t \leftarrow \mu_t m_{t-1} + \alpha_t g_t \qquad (10) $
    $ \theta_t \leftarrow \theta_{t-1} - (\mu_{t+1} m_t + \alpha_t g_t) \qquad (11) $

    請注意,第 11 行幾乎與第 3 行相同——唯一區別是更新中使用的是 $ \mu_{t+1} m_t $ 而不是 $ \mu_t m_{t-1} $。同樣不難看出,與經典 momentum 不同,這裡的 momentum 步和梯度步都依賴當前的梯度。

    現在,我們可以把同樣的技巧用在 Adam 的 momentum 上:先把 Adam 的更新步以 $ m_{t-1} $$ g_t $ 表示,如第 12 行所示,然後用下一步的 momentum 步替換當前的 momentum 步,如第 13 行所示(相應地處理初始化偏差)。

    $ \theta_t \leftarrow \theta_{t-1} - \alpha_t \left( \frac{\mu_t m_{t-1}}{1 - \prod_{i=1}^{t} \mu_i} + \frac{(1 - \mu_t) g_t}{1 - \prod_{i=1}^{t} \mu_i} \right) \qquad (12) $
    $ \theta_t \leftarrow \theta_{t-1} - \alpha_t \left( \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} \right) \qquad (13) $

    以這種方式修改 Adam 之後,我們得到算法 2。然而,這種形式的 momentum 原則上還可以與其他使用自適應學習率的算法結合,例如 Adamax (Kingma 與 Ba, 2014) 或 Equilibrated gradient descent (EGD) (Dauphin 等人, 2015)。

    算法 2:Nesterov 加速的自適應矩估計 (Nadam)

    Require: $ \alpha_0, \dots, \alpha_T $$ \mu_0, \dots, \mu_T $$ \nu $$ \epsilon $:超參數。
    $ m_0, n_0 \leftarrow 0 $(一階 / 二階矩向量)。

    $ \theta_t $ 尚未收斂時:

    $ g_t \leftarrow \nabla_{\theta_{t-1}} f_t(\theta_{t-1}) $
    $ m_t \leftarrow \mu_t m_{t-1} + (1 - \mu_t) g_t $
    $ n_t \leftarrow \nu n_{t-1} + (1 - \nu) g_t^2 $
    $ \hat{m} \leftarrow \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} $
    $ \hat{n} \leftarrow \frac{\nu n_t}{1 - \nu^t} $
    $ \theta_t \leftarrow \theta_{t-1} - \frac{\alpha_t \hat{m}_t}{\sqrt{\hat{n}_t} + \epsilon} $

    循環結束;返回 $ \theta_t $

    實驗

    為了測試 Nesterov 加速 Adam (Nadam) 的性能,我們訓練了一個卷積 autoencoder(改編自 Jones (2015)),其編碼器與解碼器各包含三層卷積加兩層全連接層,用以將 MNIST 數據集 (LeCun 等人, 1998) 中的圖像壓縮到 16 維向量空間,然後再重建原始圖像(已知為一項困難任務)。我們測試了六種優化算法:SGD、momentum、NAG、RMSProp、Adam 和 Nadam,所有這些算法在適用之處都使用了初始化偏差校正和衰減均值(而非衰減和)。SGD 找到的最佳學習率為 $ 0.2 $,momentum / NAG 為 $ 0.5 $,RMSProp 為 $ 0.001 $,Adam / Nadam 為 $ 0.002 $$ \mu $$ \nu $$ \epsilon $ 分別被設為 $ 0.975 $$ 0.999 $$ 10^{-8} $(帶有不同程度的任意性),並未做調優。圖 1 的結果表明,儘管 Nadam 與 Adam 擁有最多的超參數,它們在除學習率(通常無法避免)之外不做任何調優的情況下也能取得最佳結果。關鍵的是,Nadam 在降低訓練損失和驗證損失方面明顯優於其他算法——包括其父算法 Adam。

    圖 1:不同優化器在 MNIST 數據集上的訓練損失和驗證損失。

    結論

    Kingma 與 Ba (2014) 實質上展示了如何以一種乾淨優雅的方式將經典 momentum 與 RMSProp 或 EGD 等自適應學習率相結合。本工作在此研究基礎上更進一步,在不顯著增加複雜度的情況下改進了其算法的一個核心組件。

    參考文獻

    • Yann Dauphin, Harm de Vries, 與 Yoshua Bengio. Equilibrated adaptive learning rates for non-convex optimization. 見 Advances in Neural Information Processing Systems, 第 1504–1512 頁, 2015 年.
    • John Duchi, Elad Hazan, 與 Yoram Singer. Adaptive subgradient methods for online learning and stochastic optimization. The Journal of Machine Learning Research, 12:2121–2159, 2011 年.
    • Mike Swarbrick Jones. Convolutional autoencoders in python/theano/lasagne. 博客文章(於 2016 年 2 月 17 日檢索), 2015 年 4 月. 網址 https://swarbrickjones.wordpress.com/2015/04/29/convolutional-autoencoders-in-pythontheanolasagne/.
    • Diederik Kingma 與 Jimmy Ba. Adam: a method for stochastic optimization. arXiv preprint arXiv:1412.6980, 2014 年.
    • Yann LeCun, Corinna Cortes, 與 Christopher J. C. Burges. The MNIST database of handwritten digits, 1998 年.
    • James Martens. Deep learning via Hessian-free optimization. 見 Proceedings of the 27th International Conference on Machine Learning (ICML-10), 第 735–742 頁, 2010 年.
    • Yurii Nesterov. A method of solving a convex programming problem with convergence rate $ O(1/k^2) $. 見 Soviet Mathematics Doklady, 第 27 卷, 第 372–376 頁, 1983 年.
    • Boris Teodorovich Polyak. Some methods of speeding up the convergence of iteration methods. USSR Computational Mathematics and Mathematical Physics, 4(5):1–17, 1964 年.
    • Ilya Sutskever, James Martens, George Dahl, 與 Geoffrey Hinton. On the importance of initialization and momentum in deep learning. 見 Proceedings of the 30th International Conference on Machine Learning (ICML-13), 第 1139–1147 頁, 2013 年.
    • Tijmen Tieleman 與 Geoffrey Hinton. Lecture 6.5 — RMSprop: divide the gradient by a running average of its recent magnitude. COURSERA: Neural Networks for Machine Learning, 4, 2012 年.