RAdam/zh
| Article | |
|---|---|
| Topic area | Optimization |
| Prerequisites | Stochastic gradient descent, Gradient descent |
概述
Rectified Adam(RAdam)是一種自適應的隨機優化算法,它通過在自適應學習率上添加一個閉式修正項來改進流行的 Adam 優化器。該修正糾正了在前幾個訓練步中第二矩估計的高且未定義的方差,這正是從業者傳統上通過手動學習率預熱(warmup)來解決的不穩定性的根本原因。通過解析地推導自適應學習率的方差並引入乘性修正,RAdam 旨在從第一步開始就提供穩定的更新,而無需對預熱調度進行調參。它由 Liu 等人於 2019 年提出,被廣泛用作 Adam 的直接替代品,應用於計算機視覺、語言建模和強化學習等任務。[1]
動機
標準的 Adam 維護一個梯度平方的指數移動平均 $ v_t $,並在每次更新的分母中使用 $ \sqrt{\hat{v}_t} $。在訓練初期,累積的梯度樣本非常少,因此 $ \hat{v}_t $ 是真實第二矩的高方差估計量。除以一個有噪聲的估計會產生不可靠且往往過大的步長,從而可能在矩估計穩定之前就將參數推入損失面的不利區域。
深度學習社區中出現的經驗性變通方法是學習率預熱(warmup):以較小的學習率開始,並在數百或數千次迭代內將其逐步提升。預熱雖然有效,但引入了額外的超參數(預熱長度、預熱調度形狀),它們與基礎學習率、批大小和數據集之間的交互方式難以預測。RAdam 的動機在於觀察到:預熱只是一個啟發式的補丁,而其所針對的問題其實可以解析地刻畫並以閉式方式加以修正。
自適應學習率的方差
RAdam 論文的核心推導將自適應縮放項的逆 $ 1/\sqrt{\hat{v}_t} $ 的方差計算為 $ t $ 和第二矩衰減率 $ \beta_2 $ 的函數。在關於梯度分布的簡化假設下,可以證明該方差在 $ t $ 較小時無界,隨後隨着 $ t \to \infty $ 單調遞減至一個有限的漸近值。作者用近似簡單移動平均的長度(SMA)來近似有效樣本量:
$ {\displaystyle \rho_t = \rho_\infty - \frac{2 t \, \beta_2^t}{1 - \beta_2^t}, \qquad \rho_\infty = \frac{2}{1 - \beta_2} - 1.} $
對於典型值 $ \beta_2 = 0.999 $,有 $ \rho_\infty \approx 1999 $;$ \rho_t $ 的值從零開始增長,並隨着訓練的進行接近 $ \rho_\infty $。自適應分母的方差因此可以用 $ \rho_t $ 以閉式方式表示,從而可以對更新進行修正,使其方差與長期階段的方差相匹配。
算法
設 $ \alpha $ 為基礎學習率,$ (\beta_1, \beta_2) $ 為矩的衰減率,$ \theta_{t-1} $ 為第 $ t $ 步之前的參數。給定梯度 $ g_t $,RAdam 與 Adam 完全相同地更新各階矩:
$ {\displaystyle m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t, \qquad v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2,} $
然後計算經偏差校正的一階矩 $ \hat{m}_t = m_t / (1 - \beta_1^t) $ 以及 SMA 長度 $ \rho_t $。決策規則根據自適應項的方差是否可處理而分兩種情況:
- 若 $ \rho_t > 4 $:計算經偏差校正的二階矩分母 $ \hat{v}_t = \sqrt{v_t / (1-\beta_2^t)} $ 和修正因子
$ {\displaystyle r_t = \sqrt{\frac{(\rho_t - 4)(\rho_t - 2) \rho_\infty}{(\rho_\infty - 4)(\rho_\infty - 2) \rho_t}},} $
然後執行修正後的 Adam 更新步驟 $ \theta_t = \theta_{t-1} - \alpha \, r_t \, \hat{m}_t / \hat{v}_t $。
- 否則(在方差不可處理的早期迭代階段):執行僅使用動量的步驟 $ \theta_t = \theta_{t-1} - \alpha \, \hat{m}_t $,等價於帶動量的隨機梯度下降。
閾值 $ \rho_t > 4 $ 是使修正分母 $ (\rho_\infty - 4)(\rho_\infty - 2)\rho_t $ 保持良好定義的最小整數;低於該閾值時,閉式方差修正未定義,RAdam 退化為更簡單的帶動量SGD更新。
實踐中的行為
修正因子 $ r_t $ 關於 $ \rho_t $ 單調遞增,在 $ \rho_t $ 較小時遠低於 1,並在 $ \rho_t \to \rho_\infty $ 時趨近於 1。因此,作為訓練步的函數,RAdam 表現為三個階段:
- 階段一($ \rho_t \le 4 $):純粹的帶動量 SGD,完全不進行自適應縮放。在默認 $ \beta_2 = 0.999 $ 下,這一階段通常只持續少數迭代。
- 階段二($ \rho_t > 4 $,但仍較小):以 $ r_t \ll 1 $ 進行修正後的更新,使得有效學習率遠低於 $ \alpha $。這就是隱式的預熱(warmup)。
- 階段三($ \rho_t \to \rho_\infty $):$ r_t \to 1 $,算法等同於經偏差校正的 Adam。
各階段之間的過渡是平滑的,且僅取決於 $ t $ 和 $ \beta_2 $,而不依賴於梯度的統計特性。這使得預熱調度與數據無關,並將預熱長度從超參數列表中移除。
與相關優化器的比較
- Adam。當 $ t \to \infty $ 且 $ r_t \to 1 $ 時,RAdam 退化為 Adam。兩者僅在早期階段不同:RAdam 在該階段乘以 $ r_t < 1 $,或者完全跳過自適應分母。
- 帶預熱的 Adam(warmup)。標準的線性預熱調度是一種手動啟發式方法,它在固定的步數內將基礎學習率從零線性提升到 $ \alpha $。RAdam 用一個僅依賴於 $ \beta_2 $ 的解析推導的調度替換了這一啟發式方法。
- AdamW。AdamW 修正了 Adam 將權重衰減與自適應分母耦合的方式。AdamW 和 RAdam 是正交的修改,有時會被組合為 RAdamW。
- 帶動量的 SGD。RAdam 的階段一恰好就是帶動量的 SGD,且共享相同的 $ \beta_1 $。在許多視覺任務中,SGD 的泛化能力優於 Adam;RAdam 僅能在最初的極少數迭代中繼承這一性質,之後便轉變為一種自適應方法。
- LookAhead。LookAhead 是一種包裝器,它周期性地在快速的內部優化器和慢速的權重集合之間進行插值。它同樣與 RAdam 正交,且二者的組合 "Ranger"(RAdam 加 LookAhead)在計算機視覺實踐中是一種流行的選擇。
超參數與默認值
RAdam 保留了 Adam 的接口。推薦的默認值為 $ \alpha = 10^{-3} $(或針對具體任務調整)、$ \beta_1 = 0.9 $、$ \beta_2 = 0.999 $ 和 $ \epsilon = 10^{-8} $。關鍵的實際差異在於:預熱(warmup)長度這一超參數被移除;預熱調度現在隱含於 $ \beta_2 $ 的選擇之中。從 "Adam 加預熱" 配方遷移過來的從業者通常會發現,手動的預熱步驟可以刪除而不損失最終準確率,並且常常在穩定性上略有提升。
局限性
方差的推導假設梯度樣本是平穩的且各步之間近似獨立,這在實踐中並不完全成立(小批量之間存在相關性,學習率衰減也會改變梯度分布)。從經驗上看,即便在這些假設被違反時,RAdam 仍然表現良好,但其理論保證比公式的簡潔性所暗示的要弱。RAdam 還繼承了 Adam 在某些圖像分類基準上相對於精調過的 SGD 較差的泛化性能;修正解決的是早期的不穩定性,而不是更廣泛的泛化差距。最後,該修正只提供了一個固定形態的類預熱(warmup)調度;那些受益於更長或特定形狀預熱的任務(非常大的神經網絡、極端批大小)在 RAdam 之上可能仍需額外調參。