optimizer
这篇blog是阅读prince Chapter6 之后的一些感想与困惑的解答
从梯度下降到 AdamW:常见优化算法全解(GD / SGD / Momentum / NAG / Adam / AdamW)
在机器学习与深度学习中,优化算法(Optimizer)决定了模型如何根据损失函数不断更新参数。一个好的优化器不仅可以让模型收敛更快,还可以提高最终性能与稳定性。
本文将系统介绍以下六种经典优化方法,并给出直观解释与数学公式:
- Gradient Descent(GD)
- Stochastic Gradient Descent(SGD)
- SGD with Momentum
- Nesterov Accelerated Gradient(NAG)
- Adam
- AdamW
1. Gradient Descent(GD, 梯度下降)
基本思想
GD 在每一次参数更新时使用全部训练数据来计算梯度。
更新公式
设损失函数为 ,学习率为 :
缺点
- 每步计算代价极高
- 无法用于大规模数据
- convex函数可以收敛最小,但对于non-convex函数如果initial point选的不好容易陷入局部极小值或鞍点
鞍点定义: 梯度为0的点。 但该点既不是极大值也不是极小值。 在该点的某些方向上函数值增加,在另一些方向上函数值减少。
2. Stochastic Gradient Descent(SGD,随机梯度下降)
基本思想
每次只使用一个样本(或一个 mini-batch)来估计梯度。
更新公式
-其中 为当前 mini-batch。
- 表示在样本 上的损失。
优点
- 计算效率高
- 加了噪声,有助于跳出鞍点
缺点
- 有太多噪声,收敛路径不平滑,收敛速度慢
3. SGD with Momentum(动量法)
核心思想
引入“速度变量”,让参数沿着累积的历史梯度方向前进,减少震荡。
更新公式
其中:
- 为速度
- 为动量系数(常取 0.9)
直观理解
像一个小球在损失函数表面滚动,惯性让它在“对的方向”跑得更快。
优点
- 比起pure SGD, momentum让收敛路径更平滑,收敛速度更快
4. Nesterov Accelerated Gradient(NAG)
核心思想
先往前“看一眼”再计算梯度,避免过度冲过最优点。在算梯度之前先更新参数 ,使其往 方向移动一点,在一个“未来“的位置计算梯度。
更新公式
与 Momentum 的区别
| Momentum | Nesterov |
|---|---|
| 在当前位置算梯度 | 在“未来位置”算梯度 |
| 容易 overshoot | 更稳定、收敛更快 |
5. gradient normalization
GD的问题: 无法获得一个很好的学习率,有时候学习率太小会导致收敛速度过慢,学习率太大会导致步长过大,不稳定。
为了解决学习率选择的问题,我们可以对梯度进行归一化处理, 使得每次更新的步长大小保持一致。
注意:这里的平方和开根都是pointwise的,只对矩阵里的每个元素进行平方和开根操作。
你会发现最终只有 里元素的符号是有用的,因为normalization之后矩阵里所有值都是1,更新的时候乘了一个学习率 ,所有的步长都变成 了。只能通过梯度矩阵里的符号来判断更新的时候是加上步长还是减去步长。
只使用gradient normalization这种方法的问题是,步长是固定值,会在最优值附近来回震荡,收敛不到最优,因此要使用Adam。
如下图所示,a是普通GD,但是学习率太低导致收敛太慢;b也是普通GD但是学习率太高导致步长过大,来回波动不稳定;c是normalized gradient, 步长固定但是在最优值附近来回震荡,收敛不到最优。 d是adam,收敛效果最好。

6. Adam(Adaptive Moment Estimation)
核心思想: Adam = Momentum + gradient normalization
note: Adam中的梯度是SGD而不是GD。
更新公式
常用超参数:
- , + 是对 中所有元素加。
优点
- 自适应学习率,不用特地去找一个好的学习率,直接用上面的常用超参数就行了。
缺点
- 泛化性能有时不如 SGD
- 权重衰减实现不理想
7. AdamW(Adam with Decoupled Weight Decay)
Adam 的问题
在 Adam 中,L2 正则项被混入梯度计算,导致:
- 权重衰减效果被自适应学习率破坏
- 正则化失效
AdamW 的改进
本来Adam里L2正则化是在加在loss计算里面的,现在AdamW里loss计算不加L2正则化,而是把这个正则化直接放在参数更新里面。解决了adam中L2正则化失效的问题。
更新公式
其中 为 weight decay 系数。
实践结论
AdamW 是当前 Transformer / 大模型训练的事实标准优化器
8. 总结
| 方法 | 是否自适应 LR | 是否有动量 | 泛化性能 |
|---|---|---|---|
| GD | 否 | 否 | 中 |
| SGD | 否 | 否 | 好 |
| Momentum | 否 | ✅ | 好 |
| NAG | 否 | ✅✅ | 更好 |
| Adam | ✅ | ✅ | 一般 |
| AdamW | ✅ | ✅ | 很好 |
什么时候用哪种?
- 小模型 / 强泛化需求 → SGD + Momentum
- 快速原型 / 稀疏梯度 → Adam
- Transformer / NLP / CV 大模型 → AdamW
- 理论分析 / 教学 → GD / SGD