反向传播是使神经网络训练成为可能的算法。没有一种高效的方式为数十亿个参数计算梯度,梯度下降将在计算上不可行。你使用的每个模型——从小型分类器到400B的LLM——都是使用反向传播训练的。它是深度学习中最重要的单一算法。
前向传播:输入通过网络流动,每一层应用其变换,最终层产生预测。损失函数计算预测的错误程度。反向传播:从损失开始,反向传播使用链式法则计算每个权重的∂loss/∂weight:∂loss/∂w = ∂loss/∂output · ∂output/∂hidden · ∂hidden/∂w。每一层接收来自上层的梯度并将自己的梯度传递给下层。
朴素地为每个权重独立计算梯度需要每个权重一次单独的前向传播——对数十亿参数来说不可能昂贵。反向传播重用中间结果:每层的梯度只计算一次并与该层所有权重共享。反向传播的计算成本大约是前向传播的2倍,意味着一次训练步骤(前向+反向+更新)的总成本约为单次前向传播的3倍。
现代深度学习框架(PyTorch、JAX)通过自动微分(autograd)实现反向传播。你定义前向计算,框架自动构建反向计算图并计算梯度。这意味着你永远不需要手动推导梯度——你定义模型架构和损失,调用loss.backward(),框架处理其余部分。这种自动化使快速的架构实验成为可能。