AdamW(Adam with Weight Decay)
AdamW 跟 Adam 的核心差別(直觀)
AdamW = 「Adam + 正確的 weight decay(L2 正則化)」
重點不是“多了 weight decay”,而是:
-
Adam:把 L2 正則化「混在梯度裡面」一起算
-
AdamW:把 weight decay「從梯度更新裡分離開,直接對權重做衰減」
這個「分離」(decouple)讓:
-
正則化效果更乾淨,對 overfitting 控制通常比較好
-
學習率的行為更穩,不會被 L2 搞亂更新方向
實務上很多人現在會把 AdamW 當成「比 Adam 更好的預設選擇」。
特點:修正了Adam的weight_decay問題,目前最推薦的優化器
optimizer = optim.AdamW(
model.parameters(),
lr=1e-3, # 學習率
betas=(0.9, 0.999), # 動量參數
eps=1e-8, # 數值穩定性
weight_decay=1e-4, # 正確的權重衰減
amsgrad=False
)
為什麼AdamW更好
| 方面 | Adam | AdamW |
|---|---|---|
| Weight Decay | 與自適應學習率耦合 | 解耦,效果更好 |
| 正則化效果 | 較弱 | 較強 |
| 泛化能力 | 一般 | 更好 |
優點:
-
結合 Adam 的速度
-
正確的正則化
-
更好的泛化能力
-
適合從零訓練和微調
缺點:
- 比 SGD 泛化能力略差(但比 Adam 好)
適用場景:
-
首選優化器
-
CNN、Transformer、任何深度學習模型
-
從零訓練或微調預訓練模型
相關筆記
- Adam(Adaptive Moment Estimation):前身
- 權重衰減(Weight Decay):AdamW 解耦的就是這一項
- 正則化:權重衰減屬於正則化
- 中國醫RAG專案說明:實例:Contriever 檢索模型訓練