xindoo is
always here

使用反向传播算法(back propagation)训练多层神经网络

  本文翻译自http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html,大概介绍下反向传播的基本原理。

  本文旨在描述反向传播算法在多层神经网络训练中的过程,为了直观描述此过程,我们用到了包含两个输入和一个输出的三层神经网络,如下图所示:
  
1

  每个神经元由两个单元组成。第一单元把权重和输入信号的积相加,第二单元是被称为神经元激活函数的非线性函数。信号e是第一单元的输出信号,而y=f(e)是非线性函数的输出信号。信号y也是神经元的输出信号。
1b

  我们需要训练数据集来训练神经网络,训练数据包含输入信号(x1x2)和相应的目标结果z组成。神经网络训练是个迭代的过程。在每次迭代中,每个节点的权重系数根据训练数据做出修正.
  修正算法描述如下:每步训练都是从训练数据集中取两个输入信号开始,此阶段结束后,我们就可以确定每层神经网络中每个神经元的输出信号。下图展示了信号如何在神经网络中传播,符号w(xm)表示网络中输入值xm和神经元n之间连接的权重,yn表示神经元n的输出信号。
234

  信号的传播通过隐藏层。符号wmn表示输出神经元m和下一层输入神经元n之间链接的权重。
56

  信号传播通过输出层。
7

  在算法下一步中,神经网络的输出信号y会和来自训练集中的预期输出值(目标值)做比较, 其差值被称为输出神经元的误差信号d
8

  我们不可能直接计算出内部神经元的误差信号,因为那些神经元的输出值是未知的。多年以来,我们一直没找到有效的多层神经网络的训练方法,只有上个世纪80年代的反向传播算法独树一帜。其思想是把训练误差 d 传递给那些处理输入信号得到输出信号的神经元。
910

  权重系数wmn 被用来反向传递误差值,只从数据流方向传递误差(误差从接受信号的节点传递给产生信号的节点),此方法适用于所有的神经元节点。如果误差来自多个神经元,则该节点收到的所有误差做累加。 过程如下图所示。
111213

  当每个神经元的误差被计算完成后, 每个输入节点的神经元权值系数可能被调整。我们用公式df(e)/e 表示神经元激活函数的导数(用来修改权重系数)。
141516171819

  系数h 表示神经网络的学习速率。有几种选择参数的方法, 第一种,初始较大的参数值,当权重关系逐渐建立起来的时候参数也会逐渐减小。第二种稍微复杂些,从小参数开始训练,训练过程中随着训练进度参数逐渐增大,然后在最终阶段减小。从小参数开始训练可以确定权重系数的符号。

References
Ryszard Tadeusiewcz “Sieci neuronowe”, Kraków 1992

打赏
未经允许不得转载:XINDOO » 使用反向传播算法(back propagation)训练多层神经网络
分享到: 更多 (0)

评论 抢沙发

xindoo

联系我联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏