反向传播算法推导过程

原理部分参考李宏毅机器学习PPT,以下推导过程详细且易理解。

参考博客

1. 变量定义

                                                        反向传播算法推导过程
 
        上图是一个三层人工神经网络,layer1至layer3分别是输入层、隐藏层和输出层。如图,先定义一些变量:
        反向传播算法推导过程表示第反向传播算法推导过程层的第反向传播算法推导过程个神经元连接到第反向传播算法推导过程层的第反向传播算法推导过程个神经元的权重;
        反向传播算法推导过程表示第反向传播算法推导过程层的第反向传播算法推导过程个神经元的偏置;
        反向传播算法推导过程表示第反向传播算法推导过程层的第反向传播算法推导过程个神经元的输入,即:
                                                                    反向传播算法推导过程
        反向传播算法推导过程表示第反向传播算法推导过程层的第反向传播算法推导过程个神经元的输出,即:
                                                                    反向传播算法推导过程
        其中反向传播算法推导过程表示**函数。

 2. 代价函数
        代价函数被用来计算ANN输出值与实际值之间的误差。常用的代价函数是二次代价函数(Quadratic cost function):
                                                    反向传播算法推导过程
        其中,反向传播算法推导过程表示输入的样本,反向传播算法推导过程表示实际的分类,反向传播算法推导过程表示预测的输出,反向传播算法推导过程表示神经网络的最大层数。

 3. 公式及其推导
        本节将介绍反向传播算法用到的4个公式,并进行推导。如果不想了解公式推导过程,请直接看第4节的算法步骤。
        首先,将第反向传播算法推导过程层第反向传播算法推导过程个神经元中产生的错误(即实际值与预测值之间的误差)定义为:

                                                                反向传播算法推导过程
 
 
        本文将以一个输入样本为例进行说明,此时代价函数表示为:
                                                            反向传播算法推导过程
 
公式1(计算最后一层神经网络产生的错误):
 
                                                                    反向传播算法推导过程
 
        其中,反向传播算法推导过程表示Hadamard乘积,用于矩阵或向量之间点对点的乘法运算。公式1的推导过程如下:
                                                        反向传播算法推导过程
 
 
公式2(由后往前,计算每一层神经网络产生的错误):
 
                                                                反向传播算法推导过程
 
        推导过程:
                                                反向传播算法推导过程
 
 
公式3(计算权重的梯度):
 
                                                                        反向传播算法推导过程
 
        推导过程:
                                                反向传播算法推导过程
 
 
公式4(计算偏置的梯度):
 
                                                                                反向传播算法推导过程
 
        推导过程:
                                                    反向传播算法推导过程
 
 
4. 反向传播算法伪代码
 
  • 输入训练集
 
  • 对于训练集中的每个样本x,设置输入层(Input layer)对应的**值反向传播算法推导过程
    • 前向传播:
                                反向传播算法推导过程, 反向传播算法推导过程
  • 计算输出层产生的错误:
                                反向传播算法推导过程
  • 反向传播错误:
                                反向传播算法推导过程
 
  • 使用梯度下降(gradient descent),训练参数:
 
                                                     反向传播算法推导过程
 
                                                    反向传播算法推导过程