梯度下降与优化器(Adam/AdamW)


一句话总结

Adam通过维护梯度的一阶矩(动量)和二阶矩(自适应学习率)来加速收敛,AdamW修正了权重衰减的实现,是当前LLM训练的标准优化器。

核心概念

SGD沿梯度反方向更新参数,但学习率对所有参数一致。Adam改进:(1)一阶矩m=β₁m+(1-β₁)g,平滑历史梯度方向(动量);(2)二阶矩v=β₂v+(1-β₂)g²,估计梯度的方差用于自适应调节每个参数的学习率;(3)偏差修正m̂=m/(1-β₁^t)。稀疏梯度的参数得到更大的有效学习率。AdamW的关键区别:将权重衰减(weight decay)从梯度更新中解耦,直接在参数上减去λ×θ,而不是在梯度中加入λ×θ。这在理论和实践上都比Adam中的L2正则化更合理。

为什么重要

优化器决定了模型参数的更新方式,直接影响训练速度和最终性能。Adam/AdamW几乎是所有LLM训练的唯一选择,因为它对超参数相对鲁棒,收敛速度快。但它的代价是需要存储每个参数的m和v,使得优化器状态占用2倍参数量的内存。

实践要点

典型超参数:β₁=0.9, β₂=0.95(LLM常用), weight_decay=0.1;AdamW的显存占用=模型参数×8字节(FP32的m和v),可通过8-bit Adam等方案压缩;Learning Rate Schedule(如Cosine Decay)与优化器配合使用至关重要;Embedding层通常不施加weight decay。

常见误区

误区一:Adam和AdamW只是名字不同——AdamW解耦了权重衰减,在LLM场景中效果明显更好。误区二:Adam不需要调学习率——虽然Adam自适应调节,但全局学习率仍然是最重要的超参数。误区三:优化器状态不占多少显存——对于7B模型,仅优化器状态就需要约56GB(FP32),这也是为什么需要混合精度和分布式训练的重要原因。