结论
在深度学习的训练中,优化器的核心作用是导航与寻优 。它利用损失函数的梯度信息,决定模型参数(权重)更新的方向 和步长。如果将训练模型比作"下山",损失函数是地形,梯度指示了当前最陡峭的下坡方向,那么优化器就是你的"步伐策略"------它决定了你是小步慢走、大步快跑,还是借助惯性冲过平坦的鞍点。
现阶段大厂和成熟开源社区的共识是:自适应优化器(尤其是 Adam 的变体 AdamW)已成为大模型(LLM)、多模态和通用 Transformer 架构的绝对标配;而传统的 SGD(配合动量)更多退居于对泛化极致要求、且有充足算力精调学习率的传统计算机视觉(CV)任务中。
原理解析与对比(事实项)
1. 基础方案:SGD(随机梯度下降 - Stochastic Gradient Descent)
最原始的 SGD 每次仅根据当前小批量(Mini-batch)数据的梯度进行参数更新。现代工程实践中,纯 SGD 几乎被淘汰,通常所说的 SGD 默认指带有动量(Momentum)的 SGD。
-
更新公式:

-
作用与表现:
动量机制帮助模型在梯度方向一致的地方加速,在梯度方向震荡的地方(如狭长的峡谷地形)减慢横向震荡。
-
优点:最终收敛的局部最优点通常具有更好的泛化能力。
-
缺点:全局共用一个学习率 η。对学习率极为敏感,需要复杂的学习率调度策略(如 Cosine Annealing, Warmup),工程调参成本极高。
-
2. 现代标配:Adam (Adaptive Moment Estimation)
Adam 本质上是动量(一阶矩)和 RMSProp(二阶矩,即自适应学习率)的结合体。它不仅考虑了过去的梯度方向,还考虑了过去梯度大小的波动程度,为每个参数独立动态调整学习率。
-
更新公式:

-
作用与表现:
如果某个参数的梯度一直很大且震荡(v_t 大),Adam 会将其有效学习率 \frac{η}{\sqrt{\hat{v}_t}}自动拉低;如果某个参数所在的维度很平坦,梯度一直很小,Adam 会将其学习率相对放大,加速探索。
-
优点:开箱即用,对初始学习率不敏感,在训练初期收敛极快,是应对复杂非凸优化(如深层 Transformer 网络)的利器。
-
缺点:在训练末期,自适应学习率可能会导致在最优点附近局部震荡,某些传统 CV 任务上的绝对泛化性能略逊于精调的 SGD。
-
工程推荐方案与 Trade-off
基于当前成熟实践,对于实际工程落地,我给出以下建议:
推荐方案(优先执行):使用 AdamW + Cosine Warmup
-
适用条件:90% 的现代深度学习场景,包括所有 NLP 任务、大语言模型(LLM)、多模态模型、推荐系统、以及初期的模型验证阶段。
-
为何不是标准 Adam :标准 Adam 在计算 L2 正则化(权重衰减)时,会和自适应学习率机制耦合,导致正则化失效。AdamW (Adam with Weight Decay Fix)解耦了权重衰减,是现阶段大厂公认的 Best Practice(如 PyTorch 中的
torch.optim.AdamW)。 -
Trade-off:牺牲极小概率的极限泛化能力,换取工程上巨大的人效提升和训练稳定性的保障。参数通常使用默认值 \\beta=(0.9, 0.999) 即可,只需调节基础学习率(通常在 1e-4 到 5e-5 级别)。
备选方案:SGD + Momentum + 复杂的学习率调度
-
适用条件:经典的计算机视觉任务(如使用 ResNet 进行图像分类、目标检测),或者打 Kaggle 比赛需要在最后阶段压榨 0.1% 精度的情况。
-
Trade-off:为了换取可能存在的一丁点泛化优势,你需要花费大量算力和时间去尝试各种学习率衰减曲线。除非当前模型的性能瓶颈明确卡在优化器的收敛极值上,否则不建议在项目早期使用。