反向传播是一种用于计算神经网络的损失相对于每个权重如何变化的算法,它通过微积分中的链式法则沿网络各层向后传播。这一机制使得利用梯度下降训练深度网络在计算上变得可行,因为它能在与单次前向传播大致相同的时间内计算出更新所需的全部梯度,而无需对每个权重分别进行昂贵的计算。
历史
反向传播背后的数学技术,即反向模式自动微分,自20世纪60年代起就以多种形式被描述,保罗·韦博斯在其1974年的哈佛博士论文中明确将其应用于神经网络,但当时这项工作在很大程度上未被注意。反向传播进入主流人工智能研究领域,是在1986年戴维·鲁梅尔哈特、杰弗里·辛顿和罗纳德·威廉姆斯发表于《自然》杂志的论文《通过反向传播误差学习表征》之后,该论文证明该方法能训练多层网络发现有用的内部表征,直接回应了马文·明斯基和西摩·帕珀特二十年前指出的单层感知机的局限性。这篇1986年的论文被广泛认为帮助结束了第二次人工智能寒冬,并在20世纪80年代末至90年代重新激发了人们对联结主义人工智能方法的兴趣。
工作原理
网络的前向传播根据当前输入和权重计算输出及损失函数值。随后,反向传播从该损失开始向后工作,利用链式法则逐层计算每个权重对误差的贡献程度,在一次反向传播中为网络中的每个参数生成梯度。这些梯度随后由优化器(通常是梯度下降的变体)使用,以朝减少损失的方向微调每个权重。这种反向计算的高效性,,正式而言是反向模式自动微分的一个实例,,使得训练拥有数十亿参数的网络成为可能;而朴素的数值方法若独立重新计算每个梯度,在此规模下在计算上是不可行的。
采用与局限
尽管在1986年得到推广,反向传播并未立即占据主导地位:在整个20世纪90年代和21世纪初,使用反向传播训练的深度网络在层数较多时面临梯度消失和梯度爆炸问题,这限制了实际可用的深度,并导致人们偏好较浅的模型以及支持向量机等替代方法。架构上的修复措施,包括长短期记忆网络中的门控机制、谨慎的权重初始化,以及后来的残差连接和归一化层,逐步解决了这些问题,使得非常深的网络成为可能,包括卷积神经网络以及最终定义现代深度学习的Transformer。反向传播本身也受到了科学界的批评,最突出的是杰弗里·辛顿在后来几年中的观点,认为其在生物学上缺乏合理性,因为大脑没有已知的机制来实现该算法所需的精确、对称的反向误差信号,这推动了关于更符合生物 plausibility 的替代学习规则的持续研究,但这些规则迄今未能匹配其实际性能。
意义
反向传播至今仍是神经网络在各领域近乎通用的训练方法,从计算机视觉到自然语言处理,每一个主要的深度学习框架,包括PyTorch和TensorFlow,都围绕实现其规模化应用的自动微分引擎构建。