反向传播算法推导过程

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

参考博客

1. 变量定义

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

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

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

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

你可能感兴趣的:(智能优化算法)