前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用反向传播算法(back propagation)训练多层神经网络

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

作者头像
xindoo
发布2021-01-22 11:45:19
5900
发布2021-01-22 11:45:19
举报
文章被收录于专栏:XINDOO的专栏XINDOO的专栏

  本文翻译自http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html,大概介绍下反向传播的基本原理。   本文旨在描述反向传播算法在多层神经网络训练中的过程,为了直观描述此过程,我们用到了包含两个输入和一个输出的三层神经网络,如下图所示:

1
1

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

1b
1b

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

2
2
3
3
4
4

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

5
5
6
6

  信号传播通过输出层。

7
7

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

8
8

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

9
9
10
10

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

11
11
12
12
13
13

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

14
14
15
15
16
16
17
17
18
18
19
19

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

References Ryszard Tadeusiewcz "Sieci neuronowe", Kraków 1992

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档