Adam:理解更新过程,而不只会使用默认参数
两个移动平均如何改变训练问题的几何形状?从第一次更新入手,观察偏差校正的作用。
Adam: A Method for Stochastic Optimization · Kingma & Ba · arXiv:1412.6980
Token Lab 原创学习解读 · 来源核对 2026-10-25 · 区分论文主张与合成教学例子。
01 · 论文提出了什么
Adam 维护一阶、二阶矩估计,并校正初始化偏差。论文在多项学习任务上比较优化表现;这些结果支持对应实验范围内的结论,不保证某种优化器在所有任务中最优。
一手来源:论文摘要 ↗学习指南与本课目录
LEARNING CONTRACT理解 → 实现 → 研究
目标:解释本课机制、复现一个例子、测试一个失败案例。读完不自动代表掌握。
- 理解层:写明假设、形状/单位和一个反例。
- 实现层:复算数值例子并检查边界。
- 研究层:在匹配预算下比较一个替代方法。
02 · 核心机制
Text / 原始公式
mₜ = β₁mₜ₋₁ + (1−β₁)gₜ vₜ = β₂vₜ₋₁ + (1−β₂)gₜ² m̂ₜ = mₜ/(1−β₁ᵗ), v̂ₜ = vₜ/(1−β₂ᵗ) θₜ = θₜ₋₁ − αm̂ₜ/(√v̂ₜ + ε)
把每个坐标看作同时具有方向估计和尺度估计。一阶矩平均方向,平方梯度的平均值提供分母。分母并不是 Hessian,因此不能把 Adam 称为牛顿法。零初始化使早期平均值偏小;除以几何级数缺失的质量,可以在矩估计假设下校正这种影响。
符号与直觉为教学解释,完整假设及实现细节请对照原论文方法。
机制图与逐步推导
| 符号 | 含义 |
|---|---|
| gₜ | 当前梯度,与参数同形状 |
| mₜ, vₜ | g 与 g² 的指数平均;v 不是中心化方差 |
| α, β₁, β₂, ε | 步长、两个衰减率及数值稳定项 |
- 展开递推
₌₁ᵗβ₁ᵗ⁻ʲgⱼ。若 E[gⱼ]=μ 恒定,则 E[mₜ]=(1−β₁ᵗ)μ,由此识别偏差项,而不是死记校正公式。 - 对原始二阶矩重复论证。分别除以对应几何级数质量,再用校正二阶矩的平方根归一化方向。
- 恒定
时,第二步原始矩 、 ,校正后仍为 2 与 4。梯度变号时不再有这种相等,平均值编码了历史。
同时记录原始与校正矩。恒定梯度测试不能每步恢复相同矩时,检查步数索引与初始化。
改变一个变量,解释结果为什么变。
原创教学计算,并非论文 benchmark 复现。条形在面板内相对缩放,具体数值与单位以标注为准。
04 · 手算一个例子
原创算例:
05 · 设计实验
在
写出一个假设,保存配置与原始结果,提出替代解释,只报告证据支持的结论。关联实验是本地起点,不是完整论文复现。
打开关联课程/实验 →06 · 局限与审稿式追问
分析提醒:训练损失下降快不等于泛化好。比较相同计算预算下的留出损失,并检查混合精度、ε 的位置和优化器状态内存。原论文的收敛讨论不能解读为任意非凸问题的普遍收敛保证。
为什么很小的梯度仍可能产生明显的首次更新?
当 g 非零且 ε 可忽略时,校正后的比值为 g/√g²=sign(g),首步幅度由学习率决定。接近零时 ε 会破坏这种抵消;零梯度不会移动。
07 · 阅读原文
先看 Algorithm 1 和偏差校正讨论,逐一跟踪状态变量,再读收敛分析。
年份采用首次 arXiv 投稿年份。未锁定版本的链接随修订变化,复现报告请记录准确版本。此处 DeepSeek-R1 明确固定为 v1。
继续学习本主题
AdamW:权重衰减加在哪里,结果就会不同
区分损失惩罚与参数收缩,用不相等的预条件系数检验差异。
Loshchilov & Hutter · arXiv:1711.05101