站点标志Map the AI
  • 每日短课
  • AI 新闻
  • 学习轨道
  • 主题
  • 我的路径
  • 路线图

反向传播

反向传播是网络高效算出每个权重梯度的方式:把链式法则从后往前用在各层上,边算边复用。

本页目录
  • 问题:跨层的责任归属
  • 把链式法则用起来
  • 为什么是「反向」,为什么快
  • 前向负责存,反向负责用
  • 梯度消失与梯度爆炸
  • 不用你手算的部分
  • 要点回顾
机器学习基础2 / 17

先读这些

  • 梯度下降

有帮助,但非必需

  • 前向传播

对各级别的必要程度

各目标级别的推荐分
新手45 分中的 4 分
进阶45 分中的 4 分
专家35 分中的 3 分

主线上的下一篇

过拟合与泛化

主题

AI 如何工作

梯度下降需要梯度——也就是损失对每个权重的斜率。在一个权重几十亿、层数几十层的网络里,怎么高效地把梯度算出来,并不显然。做这件事的算法就是反向传播(backpropagation)。没有它,训练深网络在算力上是没指望的;有了它,梯度的开销大约只相当于一次前向传播。

问题:跨层的责任归属

损失是在最末端量的,此时输入已经穿过每一层。但第一层里的某个权重也影响了这个损失——它的作用一路向前波及了中间所有层。

反向传播要回答的问题是:每一个权重,不管埋得多深,对最终的误差贡献了多少?第一层的权重,影响是间接的,被下游的一切过滤过。你没法直接从损失上读出它的作用。只能沿着计算链,把责任从后往前追。

把链式法则用起来

工具是微积分里的链式法则(chain rule)。非正式地说:如果 A 影响 B、B 影响 C,那么 A 对 C 的作用,等于 A 对 B 的作用乘以 B 对 C 的作用。链上的影响是相乘的。

网络恰好就是这样的链。权重 → 加权和 → 激活值 → 下一层 → …… → 损失。要找出某个深层的权重如何影响损失,就把从这个权重到损失这条路径上的局部影响连乘起来。

每个局部影响都很好算——每一步都是一个斜率已知的基本运算。链式法则把这些简单的局部斜率,缝成一个埋在网络深处的权重的完整斜率。反向传播本质上,就是把链式法则系统性地一次用在所有权重上。

为什么是「反向」,为什么快

让它高效的关键在这里。如果从零开始单独算每个权重的梯度,各自向前追自己的路径,就会重复大量共同的工作——相邻权重的路径到损失那一头,大半是重合的。

反向传播则从损失往回走,一次一层,带着一个中间量:损失对该层输出的变化有多敏感。就叫它误差信号。

  • 从输出端开始。算出损失对最后一层输出的敏感度——这一步可以直接从损失函数得到。
  • 往回退一层。用链式法则把它换成损失对该层输出的敏感度,以及对该层权重的敏感度。这一层的权重梯度就出来了。
  • 把误差信号再往回传给上一层。重复。

每一层都复用后一层已经算好的误差信号。没有任何东西被重算。这种复用就是为什么不管有多少权重,整个反向过程的成本大约只等于一次前向。大网络之所以训得动,全靠这份效率。

前向负责存,反向负责用

两次传播是搭档。前向传播时,网络计算并记住每一层的中间值——每个神经元的输入和输出。反向传播需要这些确切的值来算局部斜率。

这就是训练模型比跑模型吃内存得多的原因。推理可以在下一层消费完之后就把每层的输出丢掉。训练不行——它必须把前向传播的每一个中间值都留着,直到反向传播走回来用到它。当你读到「训练一个模型需要几倍于运行它的内存」时,这些存储就是主要原因之一。

梯度消失与梯度爆炸

因为反向传播要沿链连乘很多局部斜率,一个毛病就直接跟出来了。如果这些斜率一直小于 1,它们的乘积在往回穿过很多层时会缩向零——这就是梯度消失(vanishing gradient)。靠前的层几乎收不到信号,学不动了。如果斜率一直大于 1,乘积会爆炸,训练跟着失稳。

这不是抽象的担忧;好几个核心设计选择就是为了它才存在的。ReLU被采用,部分原因就是它对活跃的神经元不压缩信号。Transformer 里的归一化层和残差连接,主要作用就是给梯度一条干净的、能穿过极深网络往回走的路。一旦把反向传播看成一条长长的乘法链,深网络为什么需要这些技巧就一目了然了。

不用你手算的部分

现代框架通过*自动微分(automatic differentiation)*把这一切都自动算了。你定义前向计算;框架记录下运算过程,然后替你跑反向传播,一步步套用链式法则。你几乎永远不需要手推梯度。

但搞懂这层抽象底下发生了什么,收益是持续不断的。它解释了训练为什么吃内存、网络深了为什么会有梯度问题、激活函数和归一化的选择为什么重要,以及为什么「损失不降了」这种 bug 常常追到梯度消失或爆炸上。每一次预训练和微调,底下运转的都是反向传播这台安静的发动机。

要点回顾

  • 反向传播靠把链式法则从后往前用在各层上,算出每个权重的梯度。
  • 从后往前走、复用每层的误差信号,使完整梯度的成本约等于一次前向传播——深网络因此才训得动。
  • 前向传播必须存下中间值供反向使用,所以训练比推理吃内存得多。
  • 连乘很多斜率会导致梯度消失或爆炸,ReLU、归一化和残差连接都是为此而来。
  • 框架通过自动微分自动完成这些,但懂机制才能解释训练中许多实际现象。

下一篇: 过拟合与泛化 —— 为什么一个把训练数据学得太好的模型,仍然可能失败。

本页目录

  • 问题:跨层的责任归属
  • 把链式法则用起来
  • 为什么是「反向」,为什么快
  • 前向负责存,反向负责用
  • 梯度消失与梯度爆炸
  • 不用你手算的部分
  • 要点回顾
站点标志Map the AI

AI 不断向前,学习有路可循。

地图
  • 学习轨道
  • 主题
  • 我的路径
  • 路线图
公司
  • 关于我们
  • 联系我们
法律
  • Cookie 政策
  • 隐私政策
  • 服务条款
© 2026 Map the AI。由 NeatSeed LLC 运营。保留所有权利。