核心要点

  • 前向是从输入逐层算 z=Wx+b 加激活,最终得到预测和损失,并缓存中间激活供反向使用

  • 反向用链式法则从 loss 出发回传,求的是每个参数的偏导 ∂L/∂W、∂L/∂b,而不是更新输入

  • 一个训练 step 顺序固定:前向算 loss → 反向算梯度 → 优化器按梯度更新;推理只需前向

  • 反向之所以高效,是因为复用了前向缓存的中间值,避免对每个参数重复完整前向

简要回答

前向传播(Forward Propagation):数据从输入层流向输出层;每层执行 z = Wx + b,再经激活函数 σ(z)

标准回答

前向传播(Forward Propagation):数据从输入层流向输出层。每层执行 z = Wx + b,再经激活函数 σ(z)。最终得到预测 ŷ,与真实标签计算 损失函数 L(如交叉熵MSE)。

反向传播(Backpropagation):训练的关键。利用链式法则,从 L 出发向输入方向计算每个参数对损失的偏导数 ∂L/∂W、∂L/∂b。例如两层网络:∂L/∂W₁ = (∂L/∂ŷ)(∂ŷ/∂h)(∂h/∂W₁)。

训练循环

  1. 前向 → 得 loss
  2. 反向 → 得各层梯度
  3. 优化器(SGD/Adam)沿梯度反方向更新参数

反向传播 使 深度学习 能从海量数据端到端学习层次特征,而非手工设计。现代框架(PyTorchTensorFlow)自动完成微分,开发者只需定义前向与 loss。

阶段 方向 产出
前向 输入→输出 预测、loss
反向 loss→参数 .grad 梯度

常见误区

⚠️ 常见踩坑

把反向传播说成「从输出传回输入更新输入」——实际更新的是权重;混淆前向中的激活值与反向中的梯度符号。

追问

追问 1反向传播和梯度下降是一回事吗?

不是。反向传播是计算梯度的算法(链式法则);梯度下降用梯度更新参数的优化方法。前者求方向,后者沿方向走一步,二者配合完成训练。

追问 2为什么激活函数必须可微?

反向传播需要对激活求导以继续链式传递。ReLU 在 0 点不可微但实践中用次梯度;阶跃函数不可微,无法有效训练深层网络。

追问 3前向和反向的计算量谁更大?

通常反向略贵(需存中间激活并多一次遍历),但同量级。推理只需前向;训练两者都要。混合精度、梯度检查点等可权衡显存与速度。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。

🛠️ AI 工具

  • Pytorch

    Meta 开源的深度学习框架,100K+ stars。以动态计算图和 Pythonic 风格著称,在学术界和工业界都有广泛应用,支持分布式训练、移动端部署和 ONNX 导出

  • Tensorflow

    全球最流行的机器学习框架之一,195K+ stars。Google 开源的端到端 ML 平台,支持 TensorFlow、Keras 等多种 API,覆盖深度学习、强化学习、移动端部署等全场景,是 AI 工程师的必备工具