前向传播:算出答案
数据从输入层出发,逐层做「加权求和 + 激活」,一直传到输出层,得到一个预测值。这一步没有学习,只是计算。
然后拿预测值和真实标签比较,算出一个损失值——这个数字代表「错得有多离谱」。
反向传播:分摊责任
现在的问题是:网络里有几百万甚至几千亿个参数,每一个都该往哪个方向调、调多少?
反向传播的答案是:从损失出发,沿着计算图倒着走,用链式法则算出「损失对每个参数的偏导数」。这个偏导数告诉你:这个参数稍微增大一点,损失会变大还是变小。
反向传播没有任何「智能」成分,它就是链式法则的一次高效应用。它的精妙之处在于复用中间结果——从输出层往回算,每一层的梯度都能用到上一层的计算结果,避免重复计算。这才是它让深度网络可训练的原因。
梯度消失与梯度爆炸
链式法则意味着梯度是一串乘积。当网络很深时:
- 如果每一层的梯度都小于 1,连乘几十次后趋近于 0 → 梯度消失,浅层几乎学不到东西。
- 如果每一层的梯度都大于 1,连乘后变成天文数字 → 梯度爆炸,训练直接发散。
这两个问题曾是深度网络难以训练的主要原因。后来的一系列改进——更合适的激活函数(ReLU 替代 Sigmoid)、批归一化、残差连接——本质上都在做同一件事:让梯度在深层网络里保持在一个健康的量级。
为什么这个机制重要
因为它决定了三件事:① 训练能不能收敛(梯度是否稳定)、② 训练要多久(每次迭代要算一遍完整的前向 + 反向)、③ 模型能有多深(梯度能不能传到底层)。
理解了这一点,就能理解为什么现代大模型的训练框架里,很多工程细节都在处理「梯度的通信和同步」——因为在分布式训练中,反向传播意味着大量的跨设备通信。
要点回顾
- 训练循环 = 前向传播(算预测)+ 反向传播(算梯度)。
- 反向传播就是链式法则的高效应用,没有智能成分,但能复用中间结果。
- 梯度是一串乘积,连乘会导致消失或爆炸——这是深层网络难训练的根本原因。
- ReLU、批归一化、残差连接等手段,本质上都是为了让梯度保持在健康量级。
- 分布式训练中,反向传播意味着大量跨设备通信,这是工程难点所在。