概念界定

反向传播是利用链式法则高效计算神经网络中所有参数梯度的方法。它先执行前向计算得到 loss,再从 loss 出发沿计算图反向传播梯度。

背景与问题

神经网络由大量嵌套函数组成,每个参数都会影响最终 loss。直接手工推导每个参数的梯度既困难又低效。反向传播把复杂模型拆成局部运算,并通过链式法则组合局部梯度。

定义与记号

如果:

y = f(u), u = g(x)

则链式法则为:

dy/dx = dy/du · du/dx

在神经网络中,loss 对参数的梯度可以沿计算图逐层传回:

∂L/∂W = ∂L/∂y · ∂y/∂W

直观解释

前向传播负责计算“模型输出和 loss 是多少”,反向传播负责计算“每个参数应该如何改变才能降低 loss”。它不是新的优化目标,而是计算梯度的高效算法。

基本性质

  • 反向传播依赖前向过程中保存的中间激活。
  • 保存激活会消耗显存。
  • 梯度检查点通过重算部分前向来节省显存。
  • 深层网络中梯度可能消失或爆炸。
  • 自动微分框架会根据计算图自动执行反向传播。

示例

线性层:

y = xW
L = loss(y)

反向传播会计算:

∂L/∂W
∂L/∂x

其中 ∂L/∂W 用于更新权重,∂L/∂x 用于继续向前一层传播梯度。

常见误解

  • 误解:反向传播就是优化器。
    • 正确理解:反向传播计算梯度,优化器使用梯度更新参数。
  • 误解:反向传播不需要保存中间结果。
    • 正确理解:许多梯度计算依赖前向激活,因此训练显存远高于推理。
  • 误解:自动微分意味着不用理解反向传播。
    • 正确理解:理解反向传播有助于分析显存、梯度流和训练稳定性。

相关概念