反向传播算法(Backpropagation)是目前用来训练人工神经网络(Artificial Neural Network,ANN)的最常用且最有效的算法。其主要思想是:
反向传播算法的思想比较容易理解,但具体的公式则要一步步推导,因此本文着重介绍公式的推导过程。
上图是一个三层人工神经网络,layer1至layer3分别是输入层、隐藏层和输出层。如图,先定义一些变量:
表示第
层的第
个神经元连接到第
层的第
个神经元的权重;
表示第
层的第
个神经元的偏置;
表示第
层的第
个神经元的输入,即:
表示第
层的第
个神经元的输出,即:
其中
表示激活函数。
代价函数被用来计算ANN输出值与实际值之间的误差。常用的代价函数是二次代价函数(Quadratic cost function):
其中,x表示输入的样本,y表示实际的分类,a^L表示预测的输出,L表示神经网络的最大层数。
本节将介绍反向传播算法用到的4个公式,并进行推导。如果不想了解公式推导过程,请直接看第4节的算法步骤。
首先,将第
层第
个神经元中产生的错误(即实际值与预测值之间的误差)定义为:
本文将以一个输入样本为例进行说明,此时代价函数表示为:
公式1(计算最后一层神经网络产生的错误):
其中,
表示Hadamard乘积,用于矩阵或向量之间点对点的乘法运算。公式1的推导过程如下:
公式2(由后往前,计算每一层神经网络产生的错误):
推导过程:
公式3(计算权重的梯度):
推导过程:
公式4(计算偏置的梯度):
推导过程:
: