Skip to content

导论:下山之艺 —— 优化器的本质 ​

如果说损失函数 L(θ) 定义了深度学习问题的“地形”,即一个位于高维参数空间 Θ 上的非凸、崎岖不平的曲面,那么优化器(Optimizer) 就是在地形上寻找最低谷(全局最优或可接受的局部最优)的登山策略。

优化器的核心任务不是简单的“求导”,而是利用梯度信息 ∇θL 对参数 θ 进行高效、稳定的迭代更新。其数学基础扎根于数值优化(Numerical Optimization),但其现实困境远超经典凸优化的范畴:参数动辄千亿,数据噪声极大,地形布满鞍点(Saddle Points)和平台区(Plateaus)。

优化器的演进史,是一部从“盲目跟随梯度”(SGD)到“自适应地形曲率”(Adam),再到“兼顾泛化性能与平坦极小值”(SAM/SWATS)的探索史。理解优化器,就是理解如何将生硬的梯度下降转化为精准的智能导航。


第一部分:基石算法 —— 梯度下降的三种形态 ​

1.1 批量梯度下降(Batch Gradient Descent, BGD) ​

使用全部训练样本计算损失梯度:

θ=θ−η⋅1N∑i=1N∇θLi(θ)

致命缺陷:每步需遍历全部数据,当 N 达数百万时,一次更新耗时极长,几乎无法用于深度学习。

1.2 随机梯度下降(Stochastic Gradient Descent, SGD) ​

每次迭代仅使用一个随机样本计算梯度:

θ=θ−η⋅∇θLi(θ)

优势:梯度中包含大量噪声,这种噪声恰恰能帮助模型逃离尖锐的局部极小值和鞍点。 劣势:方差极大,损失曲线剧烈震荡,收敛后精度较低。

1.3 小批量随机梯度下降(Mini-batch SGD)—— 现代工业标准 ​

每次迭代使用一个固定大小的 Batch(如 256 或 4096):

θ=θ−η⋅1B∑i∈B∇θLi(θ)

Mini-batch 完美利用了 GPU 的矩阵并行算力,在梯度估计的方差和计算效率之间取得了最佳平衡。几乎所有的深度学习优化器都是在此基础上的变体。


第二部分:动量法 —— 利用惯性穿越峡谷 ​

SGD 在狭长的“峡谷”(一个方向曲率极大,另一个方向曲率极小)地形中会表现出离谱的锯齿状震荡,收敛极慢。

2.1 标准动量(Momentum, Polyak, 1964) ​

引入一个速度向量(Velocity)v,相当于物理中的惯性:

vt=μvt−1−η⋅∇L(θt−1)θt=θt−1+vt

其中 μ∈[0.9,0.99] 是动量衰减系数。这种设计在梯度方向持续一致时加速(累加同向梯度);在梯度方向频繁反转时减速(震荡抵消),极大地平滑了更新轨迹。

2.2 Nesterov 加速梯度(NAG, Nesterov, 1983) ​

NAG 是一个前瞻性的动量法。它在当前速度基础上“瞄一眼”未来的位置,再计算梯度:

vt=μvt−1−η⋅∇L(θt−1+μvt−1)θt=θt−1+vt

几何意义:NAG 在到达陡坡底部之前就提前减速,防止动量冲过头(越过最优点)。在凸优化中,NAG 具有比标准动量更好的收敛界(Regret Bound)。


第三部分:自适应学习率 —— 为每个参数定制步长 ​

SGD 给所有参数分配相同的全局学习率 η,但现实中参数的出现频率和尺度天差地别(如词嵌入中的稀有词 vs 常见词)。自适应方法通过累积历史梯度信息为每个参数动态调整学习率。

3.1 AdaGrad(Duchi et al., 2011)—— 稀疏数据的王者 ​

AdaGrad 对每个参数 i 累积其历史梯度平方和,用于缩放学习率:

Gt,i=∑τ=1tgτ,i2,θt+1,i=θt,i−ηGt,i+ϵ⋅gt,i

优势:频繁出现的特征(如常见词)累积梯度平方大,学习率自动变小;稀疏特征累积小,学习率相对变大,非常适合处理稀疏数据(如 NLP 词袋模型)。 致命缺陷:G 随训练单调递增,学习率最终逼近 0,导致网络丧失学习能力(过于激进的衰减)。

3.2 RMSProp(Hinton, 2012)—— 引入指数衰减救场 ​

RMSProp 使用指数移动平均(EMA) 替代 AdaGrad 的粗暴累加,解决“学习率骤死”问题:

E[g2]t=βE[g2]t−1+(1−β)gt2,θt+1=θt−ηE[g2]t+ϵgt

β 通常设为 0.9。RMSProp 在非凸深度网络上表现极其稳健。

3.3 Adam(Kingma & Ba, 2015)—— 动量 + RMSProp 的完美联姻 ​

Adam(Adaptive Moment Estimation)融合了动量的一阶矩(均值)和 RMSProp 的二阶矩(方差),并引入了**偏差修正(Bias Correction)**机制,是目前最流行、最鲁棒的通用优化器。

更新公式:

gt=∇θL(θt−1)mt=β1mt−1+(1−β1)gt(一阶矩估计,类似动量)vt=β2vt−1+(1−β2)gt2(二阶矩估计,类似RMSProp)

由于 m0,v0 初始为零向量,在初始步长时会偏向 0,因此需要进行偏差修正:

m^t=mt1−β1t,v^t=vt1−β2t

最终更新:

θt=θt−1−η⋅m^tv^t+ϵ

超参数推荐:η=1e−3,β1=0.9,β2=0.999,ϵ=1e−8。


第四部分:AdamW —— 解耦权重衰减(Decoupled Weight Decay) ​

这是现代大模型(如 GPT、LLaMA)训练中最关键的一次修正。

在经典 SGD 中,L2 正则化(权重衰减)等价于在梯度中加上 λθ。但在 Adam 中,由于自适应学习率的存在,L2 正则化的惩罚力度会被 v^t 缩放,导致对频繁出现特征的惩罚小,对稀疏特征的惩罚大,完全违背了正则化的初衷。

AdamW(Loshchilov & Hutter, 2017) 强制将权重衰减与损失函数的梯度计算解耦:

θt=θt−1−η(m^tv^t+ϵ+λθt−1)

即无论自适应学习率如何变化,权重衰减都独立且固定地作用于参数本身。这一改动微乎其微,却奇迹般地极大提升了 Transformer 的泛化能力。现在所有主流大模型预训练,默认使用 AdamW。


第五部分:泛化之谜 —— SGD 为何比 Adam 更“能打” ​

令人困惑的是,在图像分类(如 ImageNet)等任务上,使用 SGD + Momentum(带适当学习率退火)往往比 Adam 取得更高的测试准确率。

尖锐 vs 平坦极小值(Sharp vs Flat Minima):

  • Adam 因其自适应缩放特性,倾向于寻找损失地形中“尖锐”的极小值(因为在大梯度方向上步长被压缩),这种极小值在测试集分布轻微偏移时极易崩盘(泛化差)。
  • SGD 更新中的固有噪声使其倾向于“漫游”到地形中更“平坦”(Flat)的盆地。平坦盆地的 Hessian 特征值较小,对参数扰动不敏感,因此泛化性强。

工程对策:

  • SWATS(Switching Adam to SGD):训练前期用 Adam 快速收敛,后期切换为 SGD 精调。
  • SAM(Sharpness-Aware Minimization):不是寻找最低的损失点,而是寻找损失值低且邻域平坦的点(最小化邻域内的最大损失)。

第六部分:现代大模型专用优化器 —— LAMB & LARS ​

当 Batch Size 增大到 8192、16384 甚至 1M 时,梯度噪声急剧降低,AdamW 的更新会出现“塌缩”现象。

  • LARS(Layer-wise Adaptive Rate Scaling):针对每一层独立计算学习率缩放系数,使超大 Batch 训练成为可能(如谷歌在 ImageNet 上 Batch=64K)。
  • LAMB(Layer-wise Adaptive Moments optimizer for Batching):目前训练 BERT 和 GPT 的大规模分布式集群(如 TPU Pod)的绝对主力。它结合了 Adam 的自适应矩估计和 LARS 的分层自适应缩放,使得在大 Batch(> 64K)下依然保持与 Baseline 相同的精度。

第七部分:学习率调度器(Scheduler)—— 优化器的“变速箱” ​

优化器负责“踩油门”,调度器负责“换挡”。没有合适的学习率衰减策略,模型将永远在最优解附近震荡而无法收敛。

  • 阶梯式衰减(Step Decay):每隔固定 epoch,η 乘以 0.1。
  • 余弦退火(Cosine Annealing):ηt=ηmin+12(ηmax−ηmin)(1+cos⁡(tTπ))。平滑衰减,在 Transformer 训练中效果优于阶梯衰减。
  • 预热(Warmup):训练初期(如前 2% 步数),η 从 0 线性增加到目标最大值。原因:初始时 Adam/AdamW 的方差估计 v^t 极不准确,预热防止早期步长过大导致梯度爆炸。这是大模型训练必须的启动步骤。

第八部分:梯度裁剪(Gradient Clipping)—— 防止爆炸的保险丝 ​

当梯度范数超过阈值 C 时,执行归一化缩放:

if ∥g∥>C,g←C∥g∥⋅g

这是处理 RNN 梯度爆炸的传统手段,在现代大模型中,它仍是训练稳定性(防止 Loss Spike)的最后一道物理防线。


结语:优化器的选择哲学 ​

场景推荐优化器理由
CV / ImageNet 分类SGD + Momentum泛化性最强,能找到更平坦的极小值。
NLP / Transformer 预训练AdamW极其稳健,对超参数不敏感,配合 Warmup。
超大 Batch 分布式训练LAMB / LARS在 Batch Size > 8192 时保持精度不崩。
稀疏数据 / 推荐系统AdaGrad / Adam能自适应调整稀有特征的学习率。
RL / 策略梯度Adam处理极噪的梯度信号表现优异。

优化器从来不是孤立的技术,而是与模型架构、数据规模和算力预算紧密耦合的底层系统。在千亿参数的轰鸣中,AdamW 凭借其简单稳定的数学形式,成为了工业界的“万用底座”;但追求极致泛化的人工智能研究者,至今仍在 SGD 与自适应方法之间寻找微妙的平衡。

归根结底,所有优化器都是在回答同一个核心问题:“面对未知、高维且充满噪声的损失地形,我们该如何尽可能稳健地迈出下一步?” 这个问题的答案,将随着模型规模的不断膨胀,持续演进。