反向传播训练多层神经网络原理
BP神经网络训练流程
本文描述了采用反向传播算法的多层神经网络过程。为了说明这一过程,我们使用了具有两个输入和一个输出的三层神经网络,如下图所示:
每个神经元由两个单元组成。第一单元是加权系数和输入信号的乘积。第二个单元实现非线性函数,称为神经元激活函数。信号e为加法器输出信号,y = f(e)为非线性元件输出信号。信号y也是神经元的输出信号。
神经网络的教学需要训练数据集。训练数据集由输入信号(x1和x2)和相应的目标(期望输出)z组成。网络训练是一个迭代的过程。在每次迭代中,利用训练数据集的新数据对节点的权系数进行修正。修正算法如下: 在此阶段之后,我们可以确定每个网络层中每个神经元的输出信号值。下图说明了信号是如何在网络中传播的,符号w(xm)n表示网络输入xm与输入层神经元n之间连接的权值。符号yn表示神经元n的输出信号。
信号在隐层中的传播。符号wmn表示下一层神经元m的输出与n的输入之间连接的权值。
信号在输出层中的传播。
在下一步算法中,将网络y的输出信号与训练数据集中所需要的输出值(目标)进行比较,其差值称为输出层神经元的误差信号δ。
直接计算内部神经元的误差信号是不可能的,因为这些神经元的输出值是未知的。多年来,训练多人网络的有效方法一直是未知的。直到80年代中期,反向传播算法才被提出。其思想是将错误信号δ(在单个教学步骤中计算)传播回所有神经元,输出信号作为讨论神经元的输入。
权系数wmn用于将误差传播回来,等于计算输出值时使用的权系数wmn。只改变数据流的方向(信号依次从输出传播到输入)。这种技术适用于所有的网络层。如果传播的错误来自少数神经元,它们就会被加入。图示如下:
在计算每个神经元的误差信号时,可以修改每个神经元输入节点的权系数。式中,df(e)/de为神经元激活函数的导数(其权值经过修正)。
系数η影响网络教学速度。有一些技术可以选择这个参数。第一种方法是启动参数值较大的教学过程。在建立权重系数的同时,参数逐渐减小。第二种方法更为复杂,它以较小的参数值开始教学。在教学过程中,随着教学的推进,参数不断增加,而在教学的最后阶段又逐渐减少。以较低的参数值开始教学过程,可以确定权重系数符号。
参考文献
[1] http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html