勘误: 关于 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