進階最佳化
LAMB 最佳化器(LAMB optimizer)
把批次大小放大到數千,能讓你把訓練分散到許多加速器上、用少很多的實際時間完成,但大批次所需的大學習率往往讓訓練發散。LAMB(Layer-wise Adaptive Moments,層級自適應動量的縮寫)藉由讓每一層透過一個信賴比(trust ratio)選擇自己的有效步長來解決這點,於是一個極小的嵌入層與一個龐大的注意力矩陣,能在同一個全域學習率下都維持穩定。
LAMB 先為每個參數算出一個類似 Adam 的更新 r,包含偏差校正後的動量與權重衰減。接著它逐層用信賴比重新縮放那個更新:該層權重的範數除以其建議更新的範數。結果是每一層移動的量,與它自己權重已經有多大成正比,把 LARS 的層級正規化想法和 Adam 的自適應動量估計結合起來。
正是這點讓人能用數萬的批次大小、在遠不到一小時內預訓練出 BERT 而不損失準確率——做法是壓制任何「建議步伐相對於其權重過大」的層。對非常大的批次而言好處是實在的;在中等批次下信賴比很少起作用,單純的 AdamW 也一樣好,所以 LAMB 是大批次的專家,而非萬用的升級。
\theta^{(l)} \leftarrow \theta^{(l)} - \eta\,\frac{\|\theta^{(l)}\|}{\|r^{(l)}\|}\,r^{(l)}
每層的步伐都用「權重範數與更新範數之比」來縮放。
信賴比把每層的更新長度正規化到該層的權重長度;這與 LARS 是同一個機制,LAMB 只是在其上再加了 Adam 的動量估計。
又稱
另見