是什么
神经网络由许多简单的单元(unit)通过连接组成。每条连接带有一个数字,称为权重(weight),它决定一个单元对另一个单元的影响有多大。学习就是找到一组权重,使网络对所见样例给出正确的输出。反向传播是训练多层神经网络的学习方法,多层网络在输入和输出之间有隐藏层。这一名称指的是把输出误差从后往前传回网络。该方法由大卫·鲁梅尔哈特(David Rumelhart)、杰弗里·辛顿(Geoffrey Hinton)和罗纳德·威廉姆斯(Ronald Williams)提出,发表在1986年10月9日的《Nature》上。[1]
目标是反复调整权重,缩小网络实际输出与期望输出之间的差距。在1986年的论文中,这一差距的度量是所有样例和所有输出单元上差值平方和的一半。[1]
怎么工作
设想网络给出的猜测偏大。每个权重都会影响这个猜测。方法要算出每个权重对误差各自起了多大作用,然后把每个权重朝着减小误差的方向微调一点。对大量样例重复这一过程,网络就会逐步改善。
整个过程分两步。前向传播(forward pass)从输入层开始,逐层计算每一层的状态。反向传播(backward pass)则从输出单元出发,利用链式法则(chain rule)把误差的导数逐层传回网络。链式法则是微积分中的规则,用于处理一连串环节相连的量:每一步的影响依次相乘。反向传播结束后,每个权重都有一个偏导数,表示该权重变化一点点时误差会怎样变化。[1]
接着是梯度下降(gradient descent):每个权重的调整量与该导数的负值成正比。可以把误差想象成地形的海拔,权重的每次调整都让下山的一步更低。1986年的论文还加入了一个加速项,复用上一次权重变化的一部分,这一做法后来常被称为动量(momentum)。[1]
从哪来
论文的核心主张是:隐藏单元(既不是输入也不是输出的单元)会自己学会表示任务中的重要特征。作者把这一点与更早的感知机收敛过程(perceptron-convergence procedure)相对比,后者缺乏创造有用新特征的能力。[1]
这一方法也不是某一个人的独创。论文指出,大卫·帕克(David Parker)和杨立昆(Yann Le Cun)也各自独立发现了它的变体;论文还说明,通过把循环网络展开成等价的分层网络,这一方法同样可以训练循环网络。[1]
今天用在哪里
ACM 2018年图灵奖的颁奖词称,反向传播算法在今天的大多数神经网络中是标准做法。颁奖词还认为,杨立昆与莱昂·博图(Léon Bottou)提出了一个想法,并已被现代深度学习软件普遍采用:把学习系统构建为由模块组成的网络,并通过自动微分进行反向传播训练。[3]
实践中,大多数训练使用随机梯度下降(stochastic gradient descent),即每看一个样例就更新一次权重,而不是对整个训练集取平均。杨立昆与同事在1989年报告称,在大型且有大量重复的数据集上,这种方法收敛得比“真实”梯度快得多。[2]
局限
误差曲面上可能存在局部极小值(local minima),因此梯度下降不能保证找到最优的权重。1986年的作者注意到了这一点,但他们发现自己的网络很少陷入糟糕的局部极小值。[1]
此外还有一些实际限制:训练通常需要大量带标注的样例和可观的计算资源,网络学到的东西也取决于样例本身。
注释与来源
- Learning representations by back-propagating errorshttps://www.nature.com/articles/323533a0
- Backpropagation Applied to Handwritten Zip Code Recognition (PDF)http://yann.lecun.com/exdb/publis/pdf/lecun-89e.pdf
- Fathers of the Deep Learning Revolution Receive ACM A.M. Turing Awardhttps://web.archive.org/web/2024/https://awards.acm.org/about/2018-turing
引用本页: 反向传播与梯度下降. TellWorld, https://www.tellworld.net/zh/learn/backpropagation. 更新于 2026-11-07