💡一句話定義
Adam(Adaptive Moment Estimation)= 把動量(平滑梯度方向)和 RMSProp(自適應各參數學習率)合而為一的優化器。它為每個參數、依歷史梯度自動調整步伐,收斂快、好調,多數情況用預設值就很好用。
純梯度下降只會「照當下坡度走」;Adam 多了「記憶」——記住過去梯度的方向與大小,讓更新更聰明、更穩。
🏂用「重球下山」來想
🎮互動:SGD 卡死 vs 動量衝破
按第一個按鈕看無動量的 SGD滾進左邊淺坑就停;按第二個看滿血動量如何靠慣性衝過中間山丘、抵達右邊更深的全局最小。
優化演算法:動能與位能的對決
參數調好,沒有衝不過去的山丘!來看看滿血版動量的威力
請點擊上方的按鈕,開始物理模擬動畫!
🧩Adam = 動量 + RMSProp
Adam 同時追蹤梯度的兩個「動量」(moment),這也是名字的由來:
➡️一階動量(動量法)
梯度的指數移動平均,平滑更新方向,過濾抖動、帶著慣性前進。
梯度的指數移動平均,平滑更新方向,過濾抖動、帶著慣性前進。
📏二階動量(RMSProp)
梯度平方的移動平均,自適應每個參數的學習率:常震盪的方向踩小步、平穩的方向踩大步。
梯度平方的移動平均,自適應每個參數的學習率:常震盪的方向踩小步、平穩的方向踩大步。
合起來:方向由一階動量決定、步長由二階動量縮放,再加偏差校正——這就是 Adam 又快又穩、幾乎不用細調的原因。
📈優化器演進對照表
| 優化器 | 核心想法 | 特點 |
|---|---|---|
| SGD | 沿當下梯度走 | 簡單;易震盪、易卡局部最小 |
| SGD + Momentum | 加入慣性 | 平滑方向、衝過小起伏,收斂更快 |
| RMSProp | 自適應各參數學習率 | 依梯度大小縮放步長,適合非平穩目標 |
| Adam | 動量 + RMSProp | 快、好調、預設就好用,最常用 |
| AdamW | Adam + 分離權重衰減 | 正則化更正確,大模型/Transformer 首選 |
🎛️超參數與取捨
超參數:學習率(最關鍵)、兩個衰減率 β1≈0.9(一階)、β2≈0.999(二階),以及防除零的 ε。多數情況用預設即可,主要調學習率。
Adam 一定比 SGD 好嗎?不一定。Adam 收斂快、好調,但在某些任務(如影像分類)SGD + Momentum 的泛化反而更好。訓練大模型時,AdamW 通常優於原始 Adam。實務常兩者都試。
✅自我檢測
Q1. Adam 結合了哪兩個想法?
動量(梯度的指數移動平均,平滑方向)+ RMSProp(梯度平方的移動平均,自適應每個參數的學習率)。名字 Adaptive Moment Estimation 就是指這兩個「動量」。
Q2. 動量為什麼能衝過局部最小?
動量讓更新累積過去梯度的慣性,像有重量的球從高處衝下來儲存動能,遇到小山丘時能靠慣性衝過去,不會一到坡度 0 就停住。
Q3. Adam 的主要超參數有哪些?平常要調什麼?
學習率、β1(≈0.9)、β2(≈0.999)、ε。多數情況 β 與 ε 用預設即可,最需要調的是學習率。
Q4. Adam 和 AdamW 差在哪?
AdamW 把權重衰減(L2 正則化)從梯度更新中分離出來,正則化行為更正確。訓練 Transformer 等大模型時常優於原始 Adam。
🎯重點整理
- 是什麼:動量 + 自適應學習率的優化器,收斂快、好調。
- 兩個動量:一階(方向)+二階(各參數步長)。
- 演進:SGD → +Momentum → RMSProp → Adam → AdamW。
- 超參數:學習率最關鍵;β1=0.9、β2=0.999 多用預設。
- 取捨:SGD+Momentum 有時泛化更好;大模型用 AdamW。