Skip to content

优化与梯度下降

本页速览 梯度下降是让神经网络"学会"的引擎。本文从学习率直觉讲起,梳理 SGD、动量、Adam/AdamW 的演进逻辑,覆盖学习率调度、梯度裁剪与 batch size 缩放规律,最后给出可直接照抄的工程默认配方表。

优化与梯度下降

一句话定义:优化是"沿着梯度把损失踩到尽量低"的过程——深度学习里的优化器负责回答"下一步参数往哪走、走多远"。梯度怎么算由反向传播与自动微分负责,梯度怎么用就是本文的主题。

一、梯度下降原理与学习率直觉

损失函数 L(θ) 是参数空间里的一张"地形图"。梯度 ∇L(θ) 指向损失上升最快的方向,于是参数沿负梯度走就能下山:

θ ← θ − η · ∇L(θ)

η(学习率)是步长,是全部超参数中最敏感的一个:

  • η 太大:跨过山谷、来回震荡甚至发散(loss → NaN)。
  • η 太小:走得太慢,训练半天没进展,浪费算力。
  • η 刚好:稳定下降、收敛。

一条直觉:学习率决定训练是"稳健还是激进",动量与调度决定它"怎么从激进过渡到稳健"。后面所有优化器,本质都是在回答"这个步长怎么给"。

二、SGD 与随机性

朴素梯度下降要用全部数据的平均梯度,一次更新成本太高。**随机梯度下降(SGD)**改成:每次从数据里抽一小批(mini-batch)算梯度就更新。

随机性不是缺陷而是特性:

  1. 省算力:mini-batch 的梯度是全体梯度的无偏估计,样本足够多时噪声相互抵消。
  2. 自带隐式正则:batch 梯度的噪声能帮参数跳出尖锐的局部极小(sharp minima 泛化通常差),这与过拟合与正则化里的泛化讨论直接相关。
  3. batch size 是新的自由度:越大越接近全梯度、越稳但越贵;越小噪声越大、越震荡。

三、动量:Momentum 与 Nesterov

SGD 在"长而窄的山谷"里会来回震荡、前进缓慢。动量(Momentum) 模拟物理惯性:保留历史梯度方向,当次更新 = 历史方向的衰减 + 当前梯度:

v ← γv + ∇L(θ)          # γ ≈ 0.9,历史动量
θ ← θ − η·v

好处:山谷横向上来回震荡的力互相抵消,纵向(前进方向)的力不断叠加——加速收敛。Nesterov 动量更进一步:先在动量方向上"探头"一步,再算那个位置的梯度("向前看再迈步"),收敛更稳、更快,PyTorch 的 SGD(momentum=0.9, nesterov=True) 即是。

四、自适应方法:AdaGrad、RMSProp、Adam 与 AdamW

动量是"沿同一方向加速",另一条路线是"每个参数用不同的步长"——重要方向走小步、次要方向走大步。

方法核心思想关键特性与问题
AdaGrad(2011)按历史梯度平方累积缩放学习率累积只增不减,学习率单调衰减到 0,提前停步
RMSProp(2012)用指数滑动平均替代累积和学习率不再单调归零,适合非平稳目标
Adam(2015)RMSProp + 动量 + 偏差修正结合两者优点、几乎免调参,成为事实标准
AdamW(2019)权重衰减与梯度更新解耦解决 Adam 里 L2 与自适应学习率的耦合问题,LLM 训练标配

Adam 的更新式为(含一阶矩 m、二阶矩 v 与偏差修正):

m ← β1·m + (1−β1)·∇L        v ← β2·v + (1−β2)·∇L²
θ ← θ − η·m̂/(√v̂ + ε)

为什么 AdamW 更优?Adam 的 θ ← θ − η·λ·θ 里 L2 正则被 1/√v̂ 缩放,小梯度参数被正则得更狠,且与 η 耦合。AdamW 把"衰减"从梯度里拆出来直接对参数做:θ ← θ·(1−ηλ) − η·m̂/√v̂——解耦后权重衰减语义清晰,泛化更好。BERT、GPT 系列全部用它。

五、学习率调度:warmup、step、余弦退火

训练中单一固定学习率几乎不是最优。常见调度:

  • Warmup:前几千步从小学习率线性/多项式升到目标值。大模型训练几乎必用——避免初始化不稳时大步长把参数推飞(初始阶段的梯度噪声大)。
  • Step 衰减:每隔固定轮数乘以 γ(如每 30 epoch ×0.1)。经典、好调。
  • 余弦退火(Cosine Annealing):学习率按余弦曲线从峰值平滑降到接近 0。配合 warmup(warmup → 峰值 → 余弦下降)是现代训练的标准配方。还有一种"带重启的余弦"(SGDR),利用周期性升温跳出局部极小。

调度策略与优化器要配套:Adam 系列对调度不那么敏感(自适应步长),SGD+动量则非常依赖调度——一个常见的经验组合是"SGD + 大动量 + 余弦退火"适合刷 SOTA,Adam/AdamW + warmup + 余弦是稳定默认。

六、梯度裁剪

梯度范数过大(梯度爆炸,根源见反向传播与自动微分)时,一步更新就把参数弹飞。梯度裁剪(gradient clipping) 把梯度的范数限制在阈值内:

if ‖∇L‖ > C:  ∇L ← C·∇L/‖∇L‖

实现上 PyTorch 用 torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)。它在 RNN、Transformer、GAN 训练里几乎必备。注意裁剪的是"梯度范数"而不是"损失值",别搞混。

七、batch size 与学习率的联动:线性缩放

经验规律(Goyal 等,2017,ImageNet 大规模训练):batch size 翻倍,学习率大致也应翻倍。理由:n 个样本的梯度是 n 个独立梯度之和,方差随 batch 增大而增大,步长应相应放大以保持"每 epoch 的有效步数"不变。

但这条规律只在临界 batch size 以下成立:超过某阈值后,大 batch 的梯度已经是全梯度的好近似,继续放大学习率会不稳定,反而需要更长的 warmup 或更小的峰值 LR。实践中大 batch 往往配合更多 warmup 与更高学习率。

工程记忆

小 batch(32–128)配 AdamW + warmup + 余弦退火是最省心的默认;大 batch(>1024)要记得按比例放大学习率并加长 warmup,否则泛化通常变差。

八、损失面几何直觉:鞍点与局部极小

高维损失面与低维直觉不同:局部极小在低维常见,高维里真正的"谷底"反而罕见,更常见的是鞍点(某些方向下坡、另一些上坡)。Dauphin 等 2014 年指出,鞍点周围梯度接近 0、但根本不是极小,朴素 SGD 会在那里"陷住"。

这正是自适应方法(二阶矩把每个方向的步长独立化)与动量能走出鞍点的原因:动量靠惯性冲过平坦区,自适应靠"逐方向步长"逃离梯度为 0 的退化方向。另一个有趣发现是:深度网络找到的"极小"之间性能差别很大,而动量/批大小等选择会系统性地影响最终泛化——这属于"优化与泛化的耦合",详见深度学习总体架构解剖

九、二阶方法简述

一阶方法只用梯度,二阶方法(牛顿法、拟牛顿、K-FAC 等)利用曲率信息(Hessian 矩阵):

θ ← θ − H⁻¹·∇L

理论上收敛更快、对病态条件数不敏感。但 Hessian 是参数量平方规模——十亿参数模型的 Hessian 有 10¹⁸ 个元素,存不下也求不动。工程上:

  • 牛顿法仅在小型问题或最终精调可行;
  • K-FAC 等近似方法在特定场景(如强化学习、大规模分布式训练)有应用;
  • 实用策略是"一阶方法 + 好的调度/归一化",把曲率问题交给初始化与归一化去缓解。

十、工程默认配方表

场景默认配方说明
通用小中规模 CV/NLPAdamW, lr≈3e-4~1e-3, warmup+余弦最稳、最省心
图像分类刷点SGD + momentum=0.9 + lr=0.1×batch/256 + step/余弦配合 BN,收敛指标常更好
大模型预训练(>1B)AdamW + warmup + 余弦 + 梯度裁剪 + BF16 混合精度配合 Adam betas=(0.9, 0.95)
GANAdam, lr 生成器/判别器分开(如 1e-4/4e-4),可加梯度惩罚训练不稳定,见VAE 与 GAN
强化学习Adam + 梯度裁剪 + 低 lr(1e-4~3e-4)RL 对超参数极敏感,见深度强化学习

配方的完整调参流程与"改哪个超参看哪个信号"的决策树见训练配方与调参

十一、权衡与取舍

权衡与取舍

SGD 的泛化 vs Adam 的稳定:实证上 SGD+动量常取得更好的最终泛化(尤其 CV),但需要精心调调度;Adam 几乎免调、鲁棒,适合快速迭代。折中方案:先用 Adam 把结构调通,最后用 SGD 精调,或直接 AdamW。

收敛速度 vs 泛化质量:大学习率+大 batch 收敛快但泛化略差;小学习率+小 batch 泛化好但慢。这是最典型的"快 vs 好"权衡。

自适应步长的便利 vs 隐式正则的丢失:Adam 把每个方向独立缩放,牺牲了 SGD 部分隐式正则,这也是"Adam 泛化差一点点"的机制解释之一。

显存 vs 优化效果:大 batch 显存压力小(每步更少),但收敛需要更多 epoch;梯度累积(gradient accumulation)可模拟大 batch 而不爆显存,但牺牲一定随机性。

优化器与调度是"训练配方"的核心,但永远记得:优化只能抵达损失面上已有的低点,损失函数与数据决定了这个面长什么样。先看损失函数与输出层数据与数据工程,再谈调优。训练失败的快速排查见调试与诊断

延伸阅读

参考资料