勘误: 关于 outlier 部分的讨论,将 AMSGrad 误写为 SGD,现已更正。
年初,自己还是个不太上道的菜鸟时,写了一篇 从 SGD 到 Adam —— 深度学习优化算法概览(一),简单梳理了在深度学习发展历程中最为常用的几类优化算法。
我们知道,Adam 是其中综合性能出色的一种算法,自适应学习率的引入使得损失函数可以快速收敛。然而,实践证明,虽然在训练早期 Adam 拥有出色的收敛速度,使用其训练的模型的最终泛化能力却并不如使用朴素 SGD 训练的好(体现在 Adam 训练的模型最终收敛时的 test error 更大)。
相关工作
近来有若干工作针对 Adam 的这一缺陷进行探索,其中有些工作也提出了一些可供尝试的修正方案,包括但不限于:The Marginal Value of Adaptive Gradient Methods in Machine Learning. 作者给出了一个有趣的二分类问题构造,证明了在此构造下 SGD 可以收敛至最优解而 Adaptive 方法会收敛至一个泛化能力很差的结果(模型对所有输入都会始终预测为 true);并在若干个经典任务上实验证实 SGD 方法都达到了最低的 test error。
On the Convergence of Adam and Beyond. ICLR 2018 best paper。文章包含了大量理论推导,证明了在特定初始条件下 Adam 存在收敛问题,并将问题归因于更新步长不是单调下降的;作者给出了一个修正方案保证了单调性,声称可以达到更低的 training loss。
Improving Generalization Performance by Switching from Adam to SGD. 该文章指出了 Adam 最终的 test error 往往小于 SGD 的现象,给出一个先用 Adam 在初期进行训练加速收敛,并在合适时机切换为 SGD,追求更好的最终泛化能力的训练策略。
Fixing Weight Decay Regularization in Adam. 这篇文章 ICLR 201