优化器:SGD、Momentum、Adam
优化器把梯度变成参数更新,没有一种在所有曲面都胜出。本课固定 20 次更新:SGD 赢圆形无噪碗,Momentum 赢狭谷,Adam 赢高噪声场景。它们共享起点、随机种子生成的批次、步数预算和评估指标,各自使用已声明的参考超参数。
要比较的是状态解决了什么问题:SGD 只用当前梯度,Momentum 保留速度,Adam 还估计各坐标的 RMS 尺度。几何与噪声决定这些状态是帮助前进还是造成越界。
三种优化器如何工作
- SGD:
θₜ = θₜ₋₁ − αgₜ。不保存跨批次的优化器向量状态。 - Momentum:
uₜ = 0.8uₜ₋₁ − αgₜ,θₜ = θₜ₋₁ + uₜ。同向梯度积累速度,狭谷两侧反向梯度可部分抵消。 - Adam:维护梯度均值 m 与平方梯度均值 v,偏差修正后用
m̂ / (√v̂ + ε)更新,让每个坐标按自己的尺度调整。
参考学习率固定为 SGD 1.5 / κ、Momentum 0.45 / κ、Adam 0.2。这些值服务于本二次曲面比较,不是实际模型的通用默认。
优化器逐步演示
默认 κ = 20、批次噪声 σ = 0.08,真实损失 L(x,y) = ½(x² + 20y²),y 方向曲率是 x 的二十倍。三者都从 (4, 1) 出发,使用同样二十个固定种子的批次偏移。
- 首批偏移。 批次最优点偏离真实最低点。三种优化器面对同一偏移碗,但在各自位置计算梯度。
- 预览规则。 SGD 跟随当前梯度,Momentum 建立初速度。Adam 分两步展示 m̂ 的方向估计与 v̂ 的 RMS 分母。
- 提交更新 1。 三点移动。下一批到达时点暂时固定,观察保留状态:SGD 无,Momentum 有 u₁,Adam 有 m₁、v₁。
- 更新 2–20。 在第 5、10、20 次设检查点。等高图两轴比例相同,跨谷移动较长不是绘图拉伸造成。
- 比较末段均值。 用第 16–20 次的真实损失平均值,而非最后一个点。默认 SGD 0.7203,Momentum 0.0585,Adam 0.3854;Momentum 在此末段最好。
- 重放三组证据。 使用计算核心产生的圆形、狭谷、高噪声路径,展示路程、跨谷符号变化和 Adam 坐标 RMS,再显示结果表。
为什么胜者改变
三组实验都固定起点、对应的批次种子序列、20 次预算与评估方式。各优化器保持上面的参考学习率规则。
| 曲面 | (κ, σ) | 最低末五步平均损失 | 解释 |
|---|---|---|---|
| 圆形无噪声 | (1, 0) | SGD · 0.0000 | 条件良好,直接更新已快,额外状态可能越过最低点。 |
| 狭谷 | (20, 0.08) | Momentum · 0.0585 | 速度保留沿谷进展,陡方向反向梯度部分抵消。 |
| 高噪声 | (20, 0.35) | Adam · 0.3886 | 按坐标 RMS 缩放,限制陡且嘈杂方向对更新的支配。 |
0.0000 是显示舍入值。结果只支持这三个曲面、预算与参数设置,不能排出通用优化器名次。
时间与空间成本
d 个参数的更新均需处理 d 维梯度,时间 O(d)。除参数与输入梯度外,普通 SGD 的额外优化器状态为 O(1),Momentum 存一条速度向量,O(d);Adam 存一阶、二阶矩,仍 O(d),常数更大。
真实训练的前向、反向常占主要计算,而大模型的优化器状态仍可能占用大量内存。
边界情况
- σ=0。 每批最优点都是真实最低点,可直接观察没有噪声的越界与振荡。
- κ=1。 碗是圆形,不存在特别陡的坐标需要抑制或归一化。
- 增加 σ。 只改变用于产生梯度的批次最优点,不改变评估所用的真实损失面。
- 末点有偶然性。 噪声下最后一点可能幸运或不幸,因此取最后五次的真实损失均值。
常见错误
- 给优化器不同批次。 比较要明确控制初始化、批次顺序、步数与评估损失,同时说明各自调参规则。
- 把 Momentum 当更大学习率。 关键是保留速度。按本公式每步把速度清零,就退回当前梯度的 SGD 更新。
- 把 Adam 只看成两次平滑。 第二矩的平方根进入分母,会改变坐标尺度。
- 把玩具胜出当生产建议。 实际还取决于调度、权重衰减、批量大小、归一化、精度和网络结构。
用轨迹定位问题
持续横跨某方向的锯齿,先检查条件数、特征尺度与学习率。浅方向进展总被陡方向反转打断时,再考虑保留速度是否有帮助。换优化器本身不能证明原因已解决。
末段损失跳动时看一段窗口,再检查批量大小、梯度裁剪与学习率调度。状态可以改变噪声的作用,不能移除噪声来源。恢复训练时应同时恢复参数与 u、m、v;相同权重但状态清零,下一步也会不同。
模型的简化
本课只有两个参数和固定种子的二次批次,便于查看每次更新并复现结果。真实网络有更多参数、非凸损失、混合精度、裁剪、权重衰减和优化器各自的调参。更新方程是真实的,场景是便于检查的小模型。