技術指南

Adam 和自適應優化器

Adam 是大多數現代神經網路背後的主力優化器,自動調整每個參數的單獨學習率。

閱讀時間約2分鐘最後更新

概述

It matters because it makes training deep models faster and far less finicky than plain gradient descent.

深入探討

Adam(自適應矩估計)由 Kingma 和 Ba 在 2014 年提出,結合了兩個想法。首先,動量:它保持過去梯度(第一個時刻)的指數衰減平均值,因此更新在一致的方向上建立速度。其次,每參數縮放:它追蹤梯度平方的平均值(二階矩),並將每個步驟除以該值的平方根,因此具有大且雜訊梯度的參數採用較小的步長,而很少更新的參數則採用較大的步長。這種適應性意味著您通常可以在整個網路中使用一種學習率。 AdamW 的一個變體將權重衰減與梯度更新解耦,並已成為訓練大型 Transformer 和語言模型的預設。

技術洞察

Adam 為每個參數維護兩個運行平均值:m(梯度)和 v(梯度平方),並以衰減率 beta1(通常為 0.9)和 beta2(通常為 0.999)進行更新。因為兩者都從零開始,所以它們透過除以 (1 - beta^t) 進行偏差校正。更新為 theta = theta - lr * m_hat / (sqrt(v_hat) + epsilon),其中 epsilon(約 1e-8)可防止被零除。這就是為什麼 Adam 與普通 SGD 相比幾乎不需要調整學習率。

戰略影響

成本與預算

多年來,架構決策決定著效能和營運成本。

更明確的決策

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。

品質管控

更好的工程選擇可以減少生產中的可靠性事故。

Adam 和自適應優化器的未來

Adam 和 AdamW 仍然佔據主導地位,但研究正在提高萬億參數模型的效率,在該模型中,每個權重儲存兩個額外值的成本很高。諸如 Adafactor、8 位元 Adam 之類的輕內存變體,以及諸如 Lion(僅使用基於符號的動量)和 Sophia 等較新的優化器,旨在以更少的內存或更快的收斂速度來匹配 Adam 的質量。預計專門針對分散式、低精度訓練進行調整的自適應優化器將持續發展。

現實世界的實施

訓練 GPT 和 Llama 等大型語言模型,它們使用 AdamW 作為標準優化器。

僅使用預設的 Adam 學習率在自訂資料集上微調預先訓練的影像分類器(例如 ResNet)。

訓練影像生成器背後的擴散模型,例如穩定擴散。

在位元和位元組等庫中運行 8 位元 Adam,將優化器狀態適應有限的 GPU 記憶體。

風險與防護欄

優化一項基準測試可以隱藏更廣泛的系統弱點。

基礎設施和維護成本常常被低估。

隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。

實施路線圖

1

在實施之前定義延遲、品質和成本目標。

2

在實際負載和資料條件下進行基準測試。

3

儀器監控錯誤、漂移和使用者影響。

4

在擴展之前準備回滾和事件回應路徑。

不斷探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Adam and Adaptive Optimizers quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

開始測驗

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一步指南

ZeRO 和分片優化器

常見問題

What is Adam and Adaptive Optimizers?

Adam 是大多數現代神經網路背後的主力優化器,自動調整每個參數的單獨學習率。這很重要,因為它使深度模型的訓練速度更快,並且比普通梯度下降更不挑剔。

Adam 對每個參數追蹤哪兩個量?

Adam 為每個參數保持梯度(一階矩)和梯度平方(二階矩)的指數衰減平均值。

為什麼 Adam 對其矩估計應用偏差校正?

m 和 v 都初始化為零,因此早期估計值偏低;除以 (1 - beta^t) 可以修正這個問題。

Adam 和 AdamW 之間的主要差異是什麼?

AdamW 將權重衰減直接應用於權重,而不是將其混合到自適應梯度項中,這提高了 Transformer 的泛化能力。

小 epsilon 項在 Adam 更新規則中扮演什麼角色?

將 Epsilon(大約 1e-8)添加到分母中,以便具有接近零平方梯度平均值的參數不會導致爆炸。

為什麼亞當常被描述為「適應性強」?

透過除以每個參數的梯度平方平均值的平方根,Adam 會縮放每個參數的步長,而不是使用一個全域值。