Ch06 神经网络基础

梯度下降 (Gradient Descent)

一句话理解

梯度下降是神经网络训练的”导航系统”——沿着损失函数梯度的反方向走,每一步都让模型离最优解更近一点。2026 年,AdamW 是这个导航系统的默认选择。

零基础理解

你在大雾中下山,看不清整座山的地形,但能感觉到脚下的坡度。你每次都朝最陡的下坡方向迈一小步——虽然不一定走最短路径,但只要坡度在下降,终会到达山谷。梯度下降就是让模型”感觉”损失函数的坡度,朝损失减小的方向更新参数。

核心公式

  • :第 t 步的参数
  • :学习率 (Learning Rate),每一步的步长
  • :损失函数对参数的梯度(反向传播算出)

梯度下降变体

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

用全部训练数据计算一次梯度,然后更新一次参数。

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

每次只用一个样本计算梯度并更新。

小批量梯度下降 (Mini-batch SGD)

每次用 B 个样本(一个 batch)。2026 年深度学习默认使用此方案。

各变体对比

变体每次更新用多少数据梯度精度更新频率收敛稳定性内存占用实际使用
BGD全部 N 个精确极低(N 个样本才更新一次)稳定极高几乎不用
SGD1 个噪声大极高震荡极低在线学习
Mini-batchB 个(32-512)适中中较好适中2026 年默认

从 SGD 到 AdamW 的演化

1. SGD (朴素版)

θ = θ - lr * gradient

问题:学习率固定,收敛慢,容易震荡。

2. SGD + Momentum (带动量)

v = β * v - lr * gradient    # 动量积累
θ = θ + v                     # 用动量更新

直觉:把梯度想象成加速度,动量是速度。小球滚下山坡,惯性让它不会在峡谷中剧烈震荡。 通常取 0.9。

3. NAG (Nesterov Accelerated Gradient)

θ_lookahead = θ + β * v       # 先看一步
v = β * v - lr * ∇L(θ_lookahead)
θ = θ + v

在动量方向上”提前看一步”再计算梯度,比标准动量更”聪明”。

4. AdaGrad

G = G + gradient²             # 累积历史梯度平方和
θ = θ - lr * gradient / √(G + ε)

自适应学习率——频繁更新的参数学习率自动减小,不频繁的参数学习率保持较大。问题:G 单调递增,后期学习率趋近于 0。

5. RMSprop

G = β * G + (1-β) * gradient²  # 指数移动平均,非单调
θ = θ - lr * gradient / √(G + ε)

解决 AdaGrad 学习率归零问题,用指数移动平均替代累积和。

6. Adam (Adaptive Moment Estimation)

m = β1 * m + (1-β1) * gradient       # 一阶矩(动量)
v = β2 * v + (1-β2) * gradient²      # 二阶矩(自适应学习率)
m_hat = m / (1-β1^t)                 # 偏差修正
v_hat = v / (1-β2^t)
θ = θ - lr * m_hat / (√v_hat + ε)

Adam = Momentum + RMSprop。2014 年提出后迅速成为深度学习最常用的优化器。

7. AdamW (Adam with decoupled Weight Decay)

# AdamW = Adam 的更新方式,但权重衰减与梯度更新解耦
θ = θ - lr * (m_hat / (√v_hat + ε) + λ * θ)
#                                    ^^^^^^^^ 权重衰减加在参数上,而非梯度中

关键改进:Adam 原始实现中 L2 正则化与自适应学习率耦合,导致正则化效果被削弱。AdamW 将权重衰减(Weight Decay)与梯度更新解耦,直接对参数施加衰减。

优化器对比总表

优化器年份动量自适应学习率权重衰减默认参数2026 年状态
SGD1951无无可选lr=0.01教学/简单任务
SGD+Momentum1964有无可选lr=0.01, β=0.9CV 领域仍用
AdaGrad2011无有无lr=0.01稀疏特征场景
RMSprop2012无有无lr=0.001, β=0.9RNN 偶尔用
Adam2014有有L2(耦合)lr=0.001, β1=0.9, β2=0.999广泛使用
AdamW2017有有解耦lr=0.001, β1=0.9, β2=0.999, wd=0.012026 年默认

学习率 (Learning Rate)

学习率是最重要的超参数。太大则震荡甚至发散,太小则收敛太慢。

学习率调度策略

策略行为适用场景
常数 (Constant)固定不变几乎不用
阶梯衰减 (Step Decay)每 N 步 lr 乘以 0.1老式 CNN 训练
余弦退火 (Cosine Annealing)lr 按余弦曲线从大到小现代 Transformer 训练
预热 (Warmup)前 N 步从 0 线性增长到目标 lrLLM 训练标配
余弦退火 + 预热先预热再余弦衰减2026 年 LLM 训练标配
循环 (Cyclic)lr 周期性上下波动探索不同局部最优
自适应 (ReduceLROnPlateau)验证 loss 不再下降时降低 lr通用训练
lr
^
|     /\
|    /  \
|   /    \_____________
|  /                    \___
| /                          \___
+----------------------------------> steps
  预热  余弦退火

梯度下降的问题与应对

问题表现原因解决方案
局部最优停在鞍点或局部极小值损失曲面非凸SGD 噪声 + 动量可逃离
鞍点 (Saddle Point)梯度接近 0 但不是极值点高维空间鞍点远多于极值点动量/Adam 可穿过
病态曲率某一方向梯度极大另一方向极小参数尺度不一致自适应学习率(Adam)
震荡峡谷中来回震荡学习率过大或动量不足动量 + 自适应学习率
梯度消失/爆炸参数更新极慢或极快深层网络梯度传播问题归一化 + 残差连接

2026 年形势

结论说明
AdamW 是默认几乎所有 LLM(GPT/LLaMA/Qwen/DeepSeek)训练都用 AdamW
学习率预热不可或缺大模型训练初期不预热直接崩溃
余弦退火是标准从预热后线性/余弦衰减到接近 0
混合精度优化FP16 梯度 + FP32 优化器状态(Adam 需要)
分布式优化器ZeRO 将优化器状态分片到多 GPU

相关笔记

来源

关联15

知识图谱

局部图谱 · 点节点跳转