AI / Technology
Adam一种随机优化方法
同一全局步长面对陡峭、稀疏和噪声梯度时的困难
图 1|教学示意,不是论文原图。固定尺度的更新难以同时照顾陡峭、稀疏和嘈杂的坐标;它解释的是动机,不代表实测轨迹。
随机梯度只看一小批数据,因此方向会抖;高维模型里,不同参数的梯度还可能相差很多:有的持续很大,有的很少出现,有的正负反复。普通 SGD 用一个全局学习率缩放所有坐标,容易出现一边跨过头、另一边走不动。高阶方法又往往不适合大数据和高维参数,于是论文把问题限定为:只用一阶梯度和少量额外内存,能否同时适应噪声、稀疏性和非平稳目标? [来源:论文 §1,第 1 页]
Adam 单步:随机梯度分成方向记忆和尺度记忆,校正后合成自适应更新
图 2|教学重绘。上下两路分别表示一阶矩和第二原始矩;两路都校正零初始化偏差后才合成参数更新。图中符号只表示逐坐标运算,完整公式以上文为准。
分子保留稳定方向,分母按各坐标近期尺度缩放, 防止数值问题。论文给出的测试任务默认值是 、、、;这是经验起点,不是对所有任务的最优保证。[来源:论文 Algorithm 1,第 2 页]
Adam 原论文的经验覆盖与理论边界
图 3|非定量证据地图。勾号仅表示论文在对应任务族报告了有竞争力的训练收敛,不表示统一胜出;橙色区域提醒读者,形式化保证位于有界梯度等假设下的在线凸优化范围。
论文统一参数初始化,对各优化器的学习率、动量等做密集网格搜索,并报告各自最佳设置;主要观察如下。[来源:论文 §6,第 5 页]
研究附录
官方原题: Adam: A Method for Stochastic Optimization
作者: Diederik P. Kingma、Jimmy Ba · 发表: ICLR 2015 · 版本: arXiv v9(2017-01-30)
主来源: arXiv:1412.6980 · 论文 PDF
核心结论
三句话记住 Adam
- 它不让所有参数共用同一种步幅。 Adam 为每个参数分别追踪梯度的近期方向和近期尺度,再据此调整更新量。
- 它把“动量”和“按尺度归一化”放进同一个简单的一阶算法。 第一矩给出较稳定的方向,第二原始矩抑制尺度大或波动大的坐标;初期的零初始化偏差另行修正。
- 原论文的实验证明它在多类训练任务中很有竞争力,但没有证明它对所有深度学习问题都收敛或泛化更好。 理论保证针对带假设的在线凸优化;非凸网络部分是实验观察。
一句话说,Adam 的改变是:把同一批随机梯度变成每个参数自己的、带记忆且经过尺度校准的更新。 论文最强的证据是它在凸分类、稀疏文本特征、多层网络和卷积网络上与当时多种一阶优化器比较;最大的未决风险是理论适用范围比实际使用场景窄。[来源:论文摘要、§2、§4、§6]
问题
为什么一个学习率不够用
随机梯度只看一小批数据,因此方向会抖;高维模型里,不同参数的梯度还可能相差很多:有的持续很大,有的很少出现,有的正负反复。普通 SGD 用一个全局学习率缩放所有坐标,容易出现一边跨过头、另一边走不动。高阶方法又往往不适合大数据和高维参数,于是论文把问题限定为:只用一阶梯度和少量额外内存,能否同时适应噪声、稀疏性和非平稳目标? [来源:论文 §1,第 1 页]
论文承接了什么
Adam 有意结合两条已有思路:AdaGrad 擅长稀疏梯度,但累计平方梯度会让有效学习率持续缩小;RMSProp 用指数移动平均适应非平稳目标,但当第二矩衰减率接近 1 时,若不修正零初始化偏差,早期步幅可能异常大。Adam 同时保留近期梯度的均值与平方值,并显式加入偏差修正。[来源:论文 §1、§3、§5]
方法
两本账:方向与尺度
第 (t) 步拿到随机梯度 (g_t) 后,Adam 更新两份指数移动平均:
(m_t) 是梯度的一阶矩估计,可理解为“近期方向”;(v_t) 是逐元素平方梯度的第二原始矩估计,可理解为“近期尺度”。每个参数都有自己的 (m) 和 (v),额外存储量因此与参数量同阶,而不是保存完整二阶矩阵。[来源:论文 Algorithm 1、§2]
先修正起步偏差,再更新参数
两份移动平均从零开始,早期会系统性偏小,尤其当 接近 1。论文用
校正后,再执行
分子保留稳定方向,分母按各坐标近期尺度缩放, 防止数值问题。论文给出的测试任务默认值是 、、、;这是经验起点,不是对所有任务的最优保证。[来源:论文 Algorithm 1,第 2 页]
为什么这种组合可能有效
如果梯度整体乘上常数,分子约乘该常数、分母约乘其绝对值,两者大体抵消,所以更新对梯度的对角尺度重标定不敏感。方向不稳定时,一阶矩相对第二矩变小,有效步幅也会减小;论文把这个比值近似解释为信噪比,并视为一种自动退火。严格说,这些是更新规则的性质和直觉,不等于“任何损失地形上都更快”。[来源:论文 §2.1,第 3 页]
证据与局限
实验到底支持了什么
论文统一参数初始化,对各优化器的学习率、动量等做密集网格搜索,并报告各自最佳设置;主要观察如下。[来源:论文 §6,第 5 页]
| 场景 | 设置与比较 | 论文报告的结果 |
|---|---|---|
| MNIST 逻辑回归 | 784 维输入,mini-batch 128;对比 Nesterov SGD、AdaGrad | Adam 与带动量 SGD 收敛相近,二者快于 AdaGrad。 |
| IMDB 稀疏文本 | 前 10,000 个高频词的 BoW,50% dropout;对比 AdaGrad、RMSProp、Nesterov SGD | Adam 与 AdaGrad 一样快,并明显快于普通动量 SGD。 |
| MNIST 多层网络 | 两个 1,000 单元 ReLU 隐层,mini-batch 128,含有或不含 dropout | 论文图 2 中 Adam 的训练代价下降优于所列比较方法。 |
| CIFAR-10 卷积网络 | c64-c64-c128-1000,mini-batch 128,观察 45 个 epoch | Adam 与 AdaGrad 初期都快;后期 Adam 和 SGD 明显快于 AdaGrad,Adam 仅略优于动量 SGD。 |
| VAE 偏差修正消融 | 500 隐层、50 维潜变量;, | 接近 1 且没有偏差修正时,早期训练更不稳定;Adam 在所试设置中不差于无修正版。 |
不能从这篇论文推出什么
- 理论分析假定凸代价、梯度与参数间距离有界,并使用随时间衰减的 和 ;在这些条件下,平均遗憾为 。它不直接证明固定默认超参数下的现代非凸网络必然收敛。[来源:论文 Theorem 4.1、Corollary 4.2]
- 实验主要看训练代价与训练收敛,不是系统性的测试集泛化、墙钟时间、能耗或跨随机种子稳定性研究;图中也没有为所有方法给出置信区间。[来源:论文 §6、Figures 1–4]
- 各方法都取密集搜索后的最佳超参数,这让比较较公平,却不能回答“默认值零调参时谁最好”。论文的实验集合也不足以证明 Adam 对所有模型和数据都优于 SGD、AdaGrad 或 RMSProp。
- 在 CIFAR-10 CNN 实验里,作者观察到第二矩估计数个 epoch 后接近零并被 主导,因此它对几何结构的近似较差;此处优势更多来自第一矩降噪。这是论文自己揭示的机制边界。[来源:论文 §6.3,第 7 页]
实际意义
何时把 Adam 当作起点
如果模型参数多、梯度噪声大、不同层尺度不一,或输入特征稀疏,Adam 是合理的首个基线:实现只需当前梯度及两份同规模状态,并能逐参数调节更新。实践中先从论文默认值附近开始,同时记录训练损失、验证指标、更新幅度和不同随机种子的波动;若最终泛化或稳定性不理想,再与经过同等调参预算的 SGD/动量方法比较。这里是基于论文机制与证据的实践解读,不是作者证明的通用处方。
复现与核验清单
读实验图时,先确认比较的是训练代价而非测试准确率;复现时固定初始化与数据顺序,给各优化器相近的搜索预算,并同时报告默认值和调优后结果。进一步研究最值得问三件事:固定超参数的非凸训练是否稳定、训练更快是否带来更好泛化、额外两份参数状态在大模型上的内存代价是否值得。
术语速查: 随机梯度是小批数据给出的带噪方向;一阶矩是梯度均值;第二原始矩是平方梯度均值,并非中心化方差;偏差修正补偿移动平均从零起步造成的系统性低估;遗憾是在线学习中累计损失相对最佳固定参数的差距。
来源定位: 算法与默认值见 Algorithm 1;缩放不变性与有效步幅直觉见 §2.1;偏差修正推导见 §3;凸优化保证见 §4;与 RMSProp、AdaGrad 的关系见 §5;全部实验见 §6;AdaMax 与时间平均扩展见 §7。以上页码按 arXiv v9 PDF 的论文页标标注。
关于这篇论文的三个关键问题
Adam:一种随机优化方法 解决了什么问题?
随机梯度只看一小批数据,因此方向会抖;高维模型里,不同参数的梯度还可能相差很多:有的持续很大,有的很少出现,有的正负反复。普通 SGD 用一个全局学习率缩放所有坐标,容易出现一边跨过头、另一边走不动。高阶方法又往往不适合大数据和高维参数,于是论文把问题限定为:只用一阶梯度和少量额外内存,能否同时适应噪声、稀疏性和非平稳目标? [来源:论文 §1,第 1 页]
Adam:一种随机优化方法 的核心结论有哪些证据?
论文统一参数初始化,对各优化器的学习率、动量等做密集网格搜索,并报告各自最佳设置;主要观察如下。[来源:论文 §6,第 5 页]
阅读 Adam:一种随机优化方法 时最需要注意什么局限?
论文统一参数初始化,对各优化器的学习率、动量等做密集网格搜索,并报告各自最佳设置;主要观察如下。[来源:论文 §6,第 5 页]