反向传播算法与自动微分实用指南

1 核心概念

反向传播(Backpropagation)是以链式法则为基础的高效梯度计算方法,通常在计算图上以反向模式自动微分实现,用于最小化损失函数并更新模型参数。

2 从链式法则到计算图

给定复合函数 y = f(g(h(x))),有 dy/dx = (dy/df)*(df/dg)*(dg/dh)*(dh/dx)。在计算图里,自顶向下记录前向中间量,自底向上累积局部梯度乘积即可得到全局梯度。

2.1 局部梯度与反向累计

每个结点 i 维护 ∂L/∂z_i,其父结点 j 仅需 ∂z_i/∂z_j,从输出层把 ∂L/∂z_out=1 反向乘到输入层即可。

3 反向模式自动微分

目标是高效计算标量损失 L(θ) 对大量参数 θ 的梯度。反向模式通过一次反向传播就能得到所有参数的梯度,本质是向量-雅可比积(VJP)的系统化应用。

3.1 VJP 与 JVP

VJP(向量乘雅可比)适合标量输出多参数输入;JVP(雅可比乘向量)适合多输出少参数场景。深度学习训练通常使用 VJP(即反向模式)。

4 数值梯度检验

用中心差分近似 ∂L/∂θ ≈ (L(θ+ε) - L(θ-ε)) / (2ε) 检验实现是否正确。选择合适 ε(如 1e-4)并在小模型上抽查。

5 训练稳定性与实用技巧

  • 参数初始化:Xavier/He 初始化匹配激活分布;
  • 归一化:BatchNorm/LayerNorm 缓解梯度消失/爆炸;
  • 梯度裁剪:限制范数,避免 RNN 等序列梯度爆炸;
  • 学习率计划:Warmup + 余弦退火/多段下降;
  • 数值稳定:log-sum-exp、稳定的 softmax 交叉熵;

6 小结

反向传播就是在计算图上利用链式法则做一次高效的 VJP 聚合。理解局部梯度、缓存前向中间量、以及数值校验与稳定性技巧,是写对写快的关键。