使用反向传播算法(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的输出信号。
2
3
4

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

  信号传播通过输出层。
7

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

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

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

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

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

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

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值