目錄
- 概
- Lion
- 程式碼
Chen X., Liang C., Huang D., Real E., Wang K., Liu Y., Pham H., Dong X., Luong T., Hsieh C., Lu Y. and Le Q. V. Symbolic discovery of optimization algorithms. NeurIPS, 2024.
概
本文搜尋出了一個優雅的, 且經驗上似乎更好的最佳化器: Lion.
Lion
-
作者透過一些技巧, 搜尋出了一個優雅的最佳化器, 和 Adam 的最大不同在於:
- 它僅需要維護一個 momentum (一階);
- 更新的時候採用的是符號梯度更新.
-
特別地,
\[c_t \leftarrow \beta_1 m_{t-1} + (1 - \beta_1) g_t, \]這個保證了我們可以像 Adam 一樣透過 \(\beta_1\) 控制對當前梯度 \(g_t\) 的一個傾向.
-
作者認為, 符號梯度 \(\text{sign}(c_t)\) 的一個優勢就是能夠保證模型整體的引數的大小是保持一致的, 所以泛化性更好. 實際上, 作者發現, 有些時候, Lion 最終的收斂的損失可能是比 AdamW 要高的, 但是最終在驗證集上的實際精度卻是要更高, 這一定程度上說明了猜想的合理性.
-
在權重調節方面, 與 AdamW 稍有不同:
- \((\beta_1, \beta_2)\) 的建議大小為 \((0.9, 0.99)\) 而不是和 AdamW 一樣的 \((0.9, 0.999)\).
- Lion 學習率差不多為 AdamW 的學習率的 1/10~1/3 (既然採用的是符號梯度);
- Lion 所需要的 weight_decay 係數則要相應的乘上 3-10, 則是為了保持:\[lr * \lambda \]不變.
程式碼
[official-code]