动量、自适应学习率与学习率计划
层级:B|按需
1. 为什么在梯度之外保存状态
普通 SGD 只看当前位置梯度,在细长谷地会横向震荡,随机梯度还含噪声。动量积累历史方向,让持续一致的方向加速、来回变号的方向抵消;自适应方法再按坐标历史尺度调整步幅。
2. Heavy-ball 动量
一种常见写法:
vt=βvt−1+gt,
θt+1=θt−ηvt,
0≤β<1。也有把 (1−β) 乘在梯度上的指数移动平均写法;两者的有效学习率尺度不同,比较公式与代码必须看约定。
展开:
vt=gt+βgt−1+β2gt−2+⋯.
越旧梯度权重指数衰减。β=0.9 的有效记忆尺度约为 1/(1−β)=10 步。
3. 动量直觉
在谷地陡峭横向,梯度符号交替,历史贡献抵消;沿谷底缓慢方向,梯度符号持续,速度累积。它不是物理模拟的精确需要,但“惯性”类比有助理解。
动量会越过极小点,参数可能震荡;合适阻尼与学习率让振幅衰减。学习率太大时动量也会放大发散。
4. Nesterov 动量
Nesterov 方法在“向前看”的位置计算梯度。一种形式:
vt=βvt−1−η∇f(θt+βvt−1),
θt+1=θt+vt.
直觉是先按惯性预估位置,再用那里的梯度修正。不同框架实现参数化不同,不要只凭名称复制超参数。
5. AdaGrad
逐坐标累积平方梯度:
st=st−1+gt⊙gt,
θt+1=θt−ηst+ϵgt.
频繁出现大梯度的坐标步长逐渐变小,稀疏特征可获得较大相对更新。缺点是 st 单调增大,学习率可能过早衰减到几乎零。
6. RMSProp
用平方梯度指数移动平均代替累积和:
st=ρst−1+(1−ρ)gt2,
θt+1=θt−ηst+ϵgt.
它能忘记很久以前的尺度,更适合非平稳深度训练。
7. Adam
结合一阶与二阶矩移动平均:
mt=β1mt−1+(1−β1)gt,
vt=β2vt−1+(1−β2)gt2.
初始为零会偏小,做偏差修正:
m^t=1−β1tmt,v^t=1−β2tvt.
更新:
θt+1=θt−etav^t+ϵm^t.
vt 不是梯度方差,而是未中心化二阶矩估计。
8. AdamW 与权重衰减
在普通 SGD 中,把 L2 正则梯度 λθ 加入梯度与每步乘 (1−ηλ) 等价。自适应预条件下两者不再等价,因为正则梯度也被逐坐标缩放。
AdamW 使用解耦权重衰减:
θ←(1−ηλ)θ−ηv^+ϵm^.
实践中常优于把 L2 项直接加入 Adam 梯度。偏置与归一化尺度通常不做权重衰减,但需按任务验证。
9. 学习率计划
Warmup
前若干步从小值升至目标学习率,缓解初始化早期梯度/统计不稳定,尤其用于大 batch 与 Transformer。
分段衰减
到预设里程碑乘 γ<1,简单可控,但需知道合理训练时长。
余弦退火
ηt=ηmin+21(ηmax−ηmin)(1+cosTπt).
平滑从最大降到最小。可配合 warm restart,但重启是否有利取决于任务。
One-cycle
学习率先升后降,常与动量反向变化。它是有限预算策略而非一般收敛定理。
10. 如何公平比较优化器
至少统一:
- 模型与初始化;
- 数据顺序与增强随机性;
- batch size 与总训练预算;
- 正则化定义;
- 学习率搜索范围与计划;
- 评估最佳/最终 checkpoint 的规则。
用 Adam 默认参数对比精调 SGD,或只比较相同步数而忽略每步成本,都可能误导。
11. 调参顺序
实用顺序:
- 确认损失、梯度与数据 pipeline 正确;
- 找不发散且进展快的学习率数量级;
- 决定 batch 与总步数;
- 调权重衰减/正则化;
- 再细调动量、β、warmup 和衰减终点。
学习率通常比 Adam 的微小 β 变化更关键。
易错点
- 不同文献的动量递推缩放约定不同。
- Adam 的二阶状态不是 Hessian,也不是中心方差。
- L2 正则与权重衰减在自适应优化器中不等价。
- ϵ 既防除零,也可能影响低梯度坐标的有效步长。
- 优化器更快降低训练损失不保证泛化更好。
常见问答
Q1:Adam 是否总比 SGD 好?
不。Adam 常更易快速训练、对尺度鲁棒;精调的 SGD+动量在某些视觉/泛化任务表现更好。需按时间预算与验证指标选择。
Q2:为什么 bias correction 只在 Adam 初期重要?
βt 随 t 增大趋零,分母 1−βt 趋 1;初始零状态的偏差逐渐消失。
Q3:学习率计划按 epoch 还是 step?
二者都可,但分布式与 batch 改变会改变每 epoch 的 step 数。可复现实验必须明确单位。
练习
- 展开动量 vt 的历史梯度权重。
- β=0.99 的粗略记忆尺度是多少?
- AdaGrad 为什么可能停止过早?
- 解释 AdamW 与把 λθ 加入 Adam 梯度的差别。
- 写出余弦计划在 t=0 与 t=T 的学习率。
答案与提示
- gt+βgt−1+β2gt−2+⋯(对应本章未乘 1−β 的形式)。
- 约 100 步。
- 平方梯度累积只增不减,分母持续增大,有效步长趋零。
- 前者独立缩放参数,后者的正则项会被逐坐标预条件器缩放。
- ηmax 与 ηmin。