一句话定义:优化器(Optimizer)是训练神经网络时,拿到梯度之后决定“参数具体怎么改”的那套算法。
可以把训练想成蒙眼下山:损失函数(Loss Function)是你所在位置的海拔,反向传播(AI 词典:Backpropagation">Backpropagation)负责算出脚下哪边最陡,也就是梯度(Gradient)。但梯度只告诉你方向,没告诉你迈多大步、要不要借上一步的惯性、不同方向是否该用不同步长。这些都由优化器决定。同一个梯度交给不同优化器,走出来的路线可能完全不同。
最基础的随机梯度下降(Stochastic Gradient Descent, SGD)的做法是:朝最陡的方向走固定的一小步。它简单,但在狭长山谷里容易来回摆动,走得很慢。加上动量(Momentum)后,就像下坡时带了惯性,方向一致的更新会越滚越快,来回摆动的分量则被抵消。
Adam(Adaptive Moment Estimation)更进一步,除了记录梯度的滑动平均(惯性),还记录梯度平方的滑动平均,用后者给每个参数单独缩放步长:一直很大的梯度会被压小,很少更新的参数则会被推一把。结果是每个参数都有自己的实际学习率,前期收敛通常更快,默认超参数往往就能直接跑起来。
| 对比项 | SGD(含动量) | Adam |
|---|---|---|
| 步长 | 全局统一学习率 | 每个参数自适应 |
| 依据 | 当前及近期梯度 | 梯度的一阶、二阶滑动平均 |
| 额外显存 | 少 | 多(每个参数两份统计量) |
| 调参难度 | 对学习率较敏感 | 默认值通常即可用 |
| 常见口碑 | 精调后泛化往往不错 | 上手快、收敛快 |
需要分清几个相邻概念:损失函数定的标准,梯度是方向,反向传播是算梯度的方法,优化器是根据梯度做决策的算法,而学习率(Learning Rate)只是优化器手里的一个旋钮,在 Adam 里还会被自适应地缩放。换句话说,优化器是执行动作的一方,方向不是它算出来的。
对从业者来说,实际意义有两点。第一,调不动模型时先看优化器和学习率,它常是“loss 不降”或“loss 炸掉”的直接原因;Adam 适合快速起步和 Transformer 这类稀疏梯度场景,SGD 加动量在视觉任务上常被说泛化略好,但需要更细的调参。第二,优化器不是万能的:数据、模型结构或损失函数有问题时,换优化器救不回来,它只能保证在既定方向上走得合理一些。具体超参数默认值与推荐配置,以框架官方文档为准。
