反向传播是由20世纪60年代美国计算机学家H.J.凯利[注]提出的控制理论和1961年美国计算机学家A.E.布赖森[注]提出的理论衍生而来的。这一方法及其在神经网络中的普遍使用是在美国认知心理学家D.E.鲁梅尔哈特[注]等人于1986年提出的。卷积神经网络体系结构的发明者法籍华裔学者杨立昆[注]在1987年的博士论文中提出了神经网络的反向传播学习算法的现代形式。
一种与最优化方法结合使用的,通过逐层计算损失函数相对于神经网络权值参数的梯度,来训练人工神经网络的快速计算偏导数的方法。
反向传播是由20世纪60年代美国计算机学家H.J.凯利[注]提出的控制理论和1961年美国计算机学家A.E.布赖森[注]提出的理论衍生而来的。这一方法及其在神经网络中的普遍使用是在美国认知心理学家D.E.鲁梅尔哈特[注]等人于1986年提出的。卷积神经网络体系结构的发明者法籍华裔学者杨立昆[注]在1987年的博士论文中提出了神经网络的反向传播学习算法的现代形式。
在一个多层神经网络中,两层神经元之间的权值是深度学习需要学习的参数。有了学习准则和训练样本,网络参数可以通过梯度下降法进行学习,梯度下降法需要计算损失函数对参数的偏导数。如果通过链式法则逐一对每个参数进行求偏导比较低效,因此,在神经网络的训练经常使用反向传播算法来高效地计算梯度。反向传播算法的含义是:第1层的一个神经元的误差项是所有与该神经元相连的第层的神经元的误差项的权重和,然后,再乘上该神经元激活函数的梯度。
给定一个样本,假设一个多层神经网络的损失函数为
。不是一般性,首先对第
层的参数
。根据链式法则:
上述两个等式的右边第二项都是损失函数关于第层神经元
的偏导数,可以一次计算得到。因此,需要分别计算
,
和
。
①计算偏导数。注意到,
,因此有:
式中为权重矩阵
的第
行;
为第
个元素为
,其余为0的行向量。
②计算偏导数。注意到
,因此:
为的单位矩阵。
③计算偏导数,表示第
层神经元对最终损失的影响,同时反映了最终损失对第
层神经元的敏感程度,因此一般称为第
神经元的误差项,记为
:
注意到,,因此有:
根据,其中
为按位计算的函数,因此有:
因此,根据链式法则,可以表示为:
通过上一步的公式推导可以看出,第1层的误差项可以通过第层的误差项计算得到,这就是误差的反向传播。
在得到三个偏导数之后,可以得到关于第
层权重
的梯度为:
同理,关于第
层偏置
的梯度为:
在实践中,通常将反向传播算法和随机梯度下降算法进行结合使用,并且经常用于训练人工神经网络。反向传播网络在各个领域都有广泛的应用,例如字符识别、语音识别、人脸识别等。
训练神经网络的目标是优化损失函数,使得损失函数找到一个全局最小值或者局部最小值。不管使用何种梯度下降算法,都需要先算出各个参数的梯度。反向传播的作用就是快速算出所有参数的偏导数。因此,作为一种快速计算导数的技巧,反向传播不仅在深度学习中广泛应用,而且还用在各种各样的数值计算情境中。此外,反向传播的原理展示了损失函数关于参数的导数在复杂模型中是如何流动的,因此对于解决模型优化过程中可能出现的问题(梯度消失、梯度爆炸等)有十分重要的启发意义。