返回首页

反向传播(Backpropagation)入门:神经网络是怎么“从错误中学习”的

2026年10月8日 13:31来源: 润百AI0 条留言技术教程

一个朴素的困惑

神经网络里有成千上万个参数,训练时每一个都要被调整。问题来了:我们只看到最后输出的那一个误差值,怎么知道是哪个参数、往哪个方向、该改多少?反向传播(Backpropagation)就是解决这个问题的方法,它也是深度学习能真正跑起来的关键。

核心思想:链式法则

反向传播本质上是微积分里链式法则(chain rule)的高效实现。把网络看成一连串函数的嵌套:输入经过一层层变换得到输出,输出再算出一个损失。要问损失对某个参数的导数是多少,就沿着这条计算链一层层往回乘。前向传播算出预测和损失,反向传播则把误差信号从输出层逐层传回输入层,顺路算出每一层的梯度。

为什么它这么快

如果对每个参数单独求一次导,成本高得离谱。反向传播的巧妙之处在于复用:中间结果(每一层的激活值、梯度)只算一次就被多个下游参数共享。这让计算一次完整梯度的代价,与做一次前向传播的量级相当——正是这种效率,让拥有数十亿参数的大模型在工程上变得可行。

一次训练循环长什么样

  • 前向传播:数据流经网络,得到预测值。
  • 计算损失:用损失函数衡量预测与真实标签的差距。
  • 反向传播:从损失出发,逐层回传并求出每个参数的梯度。
  • 参数更新:优化器(如 SGD、Adam)按梯度方向微调参数。
  • 重复:下一批数据再来一遍,直到损失收敛。

容易踩的坑

深层网络里梯度要做很多次连乘,若每层的导数都偏小,梯度会一路衰减到接近零,这就是梯度消失(vanishing gradient);反之若偏大则会爆炸(exploding gradient)。ReLU 类激活函数、残差连接(ResNet)、批归一化(BatchNorm)、梯度裁剪(gradient clipping)都是为缓解这一问题而生的实用手段。

小结

反向传播不是某种魔法,而是把链式法则组织得足够聪明的工程化实现。它让网络能够从错误中逐层归因,把责任精确分摊到每个参数上——这也正是“从错误中学习”这句话在深度学习里的字面含义。

【参考来源】综合整理自公开发布的行业信息(Ian Goodfellow 等《Deep Learning》,MIT Press;Stanford CS231n 课程讲义;3Blue1Brown 神经网络系列)。

机器学习
留言讨论

留言 (0)

暂无留言,来写第一条吧

发表留言