Zubnet AI學習Wiki › Adam Optimizer
訓練

Adam Optimizer

別名:Adam、AdamW
訓練神經網路最廣泛使用的最佳化演算法。Adam(自適應動差估計)結合了動量(使用過去梯度的移動平均)和自適應學習率(透過過去梯度大小的倒數來縮放更新)。AdamW 加入了解耦權重衰減以獲得更好的正規化。幾乎所有現代 LLM 都使用 AdamW 訓練。

為什麼重要

Adam 在廣泛的任務和超參數範圍內都能良好運作,使其成為預設最佳化器。理解它能解釋為什麼訓練大多數時候「就是能用」(Adam 為每個參數自適應),以及為什麼有時不行(Adam 的記憶體需求是模型參數的 2 倍,這對大型模型很重要)。在 90% 的情況下,它也是「我該用哪個最佳化器?」的答案。

深度解析

Adam 為每個參數維護兩個移動平均:第一動差(梯度均值——動量)和第二動差(梯度平方的均值——自適應縮放)。更新規則:參數 -= lr × m̂ / (√v̂ + ε),其中 m̂ 和 v̂ 是偏差校正後的動差。具有持續大梯度的參數會獲得較小的更新(它們已經校準得很好了)。具有小而嘈雜梯度的參數會獲得較大的更新(它們需要更積極的移動)。

AdamW:修正

原始的 Adam 在計算動差之前將權重衰減添加到梯度中,這導致衰減被自適應學習率所縮放——這不是你想要的。AdamW(Loshchilov & Hutter, 2017)將權重衰減與梯度更新解耦,直接將其應用於參數。這看起來是一個小修正,但顯著改善了泛化能力。所有現代 LLM 訓練都使用 AdamW。

記憶體成本

Adam 為每個參數額外儲存兩個值(第一和第二動差),使最佳化器狀態所需的記憶體增加三倍:一個 70B 模型需要約 140 GB 用於權重(FP16),加上約 280 GB 用於 Adam 狀態(FP32),總計約 420 GB。這就是為什麼最佳化器狀態分片(DeepSpeed ZeRO、FSDP)對大型模型訓練至關重要。一些較新的最佳化器(Adafactor、CAME、Lion)在穩定性的某些代價下減少了這種記憶體開銷。

相關概念

← 所有術語
ESC
Start typing to search...