反向传播训练多层神经网络的原理

该项目采用反向传播算法描述了多层神经网络的教学过程。为了说明这个过程,使用了具有两个输入和一个输出的三层神经网络,如下图所示: 

 

 每个神经元由两个单元组成。第一单元添加权重系数和输入信号的乘积。第二个单元实现非线性功能,称为神经元激活功能。信号e是加法器输出信号,y = f(e)是非线性元件的输出信号。信号y也是神经元的输出信号。 

 

为了教授神经网络,我们需要训练数据集。训练数据集由分配有相应目标(期望输出)z的输入信号(x 1和 x 2)组成。网络培训是一个迭代过程。在每次迭代中,使用来自训练数据集的新数据来修改节点的权重系数。使用下面描述的算法计算修改:每个教学步骤从强制来自训练集的两个输入信号开始。在此阶段之后,我们可以确定每个网络层中每个神经元的输出信号值。下面的图片说明了信号如何通过网络传播,符号(xm)n 表示网络输入之间的连接权重x m和输入层中的神经元n。符号y n 表示神经元n的输出信号。  

 

 

 

通过隐藏层传播信号。符号瓦特MN代表的神经元输出之间的连接权重 和神经元的输入Ñ中下一层。  

 

 

 通过输出层传播信号。 

 

在下一个算法步骤中,将网络y的输出信号与在训练数据集中找到的期望输出值(目标)进行比较。该差异被称为输出层神经元的误差信号d。 
 

不可能直接计算内部神经元的误差信号,因为这些神经元的输出值是未知的。多年来,培训多人游戏网络的有效方法尚不得而知。仅在八十年代中期才开发出反向传播算法。这个想法是将误差信号d(在单个教学步骤中计算)传播回所有神经元,输出信号被输入用于讨论的神经元。  

 

 

权重系数瓦特MN用来传播错误背面都等于该计算的输出值时使用。仅改变数据流的方向(信号从输出一个接一个地传播到输入)。该技术用于所有网络层。如果传播的错误来自少数神经元,则会添加它们。图示如下: 

 

 

 

 当计算每个神经元的误差信号时,可以修改每个神经元输入节点的权重系数。在下面的公式中, df(e)/ de表示神经元激活函数的导数(其权重被修改)。 

 

 

 

 

 

 

系数h影响网络教学速度。有几种技术可以选择此参数。第一种方法是以较大的参数值开始教学过程。在建立权重系数的同时,参数逐渐减小。第二种更复杂的方法是以较小的参数值开始教学。在教学过程中,当教学进行时参数增加,然后在最后阶段再次减少。以低参数值开始教学过程使得能够确定权重系数符号。

引自http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html 

你可能感兴趣的:(深度学习)