为了账号安全,请及时绑定邮箱和手机立即绑定

使用反向传播训练多层感知器的原理

关键词:反向传播,backprop,多层感知器(MLP)

本文是一篇译文。

原文来源:http://home.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html

本文介绍使用反向传播训练多层感知器的原理。这里使用包含两个输入和一个输出的三层神经网络说明训练过程,如下图所示:

https://img1.sycdn.imooc.com//5d53743e00013e4007250307.jpg

img01.gif

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

https://img1.sycdn.imooc.com//5d5374420001972906310416.jpg

img01b.gif

我们需要训练数据集来训练神经网络。训练数据集包括输入信号(x1 和 x2)及对应的目标(期望输出)y。神经网络训练是一个迭代过程。每次迭代过程都将使用训练集的新数据修改节点的权重。修改节点权重使用的算法为:每次训练都从训练集的两个输入信号开始;完成这一步之后,我们可以确定每个网络层的每个神经元的输出。下图说明了信号如何在网络中传播,符号 w_{(xm)n} 表示网络输入 x_m与输入层的神经元 n 之间连接的权重。符号 y_n表示神经元n的输出信号。

https://img1.sycdn.imooc.com//5d5374460001611707260310.jpg

img02.gif


https://img1.sycdn.imooc.com//5d53744a000176e206930274.jpg

img03.gif


https://img1.sycdn.imooc.com//5d53744d0001320a07030301.jpg

img04.gif

隐藏层的信号传播,符号w_{mn}表示神经元 m 的输出与下一层神经元 n 的输入的连接的权重:

https://img1.sycdn.imooc.com//5d53745100016e5207210307.jpg

img05.gif


https://img1.sycdn.imooc.com//5d5374550001bb4e07110289.jpg

img06.gif


输出层的信号传播:

https://img1.sycdn.imooc.com//5d5374580001c93f07100283.jpg

img07.gif


下一个算法步骤中,网络信号 y 期望的输出值(训练集中的目标)进行比较。这两个值的差称为输出层神经网络的误差信号 d 。

https://img1.sycdn.imooc.com//5d53745c0001a2e007350293.jpg

img08.gif

由于不知道内层神经元的输出值,我们无法计算内层神经元的误差信号。训练多层神经网络的有效方法在很多年都是个未解之谜。直到 80 年代中期才有了反向传播算法。反向传播算法的思想是将误差信号 d 反向传入所有神经元,上面过程中神经元的输出变成了输入。

https://img1.sycdn.imooc.com//5d53746000015e2807290320.jpg

img09.gif

https://img1.sycdn.imooc.com//5d5374b2000189ab07350312.jpg

img10.gif

反向传输信号的权重系数 w_{mn}与计算输出的权重的值是一样的,只是数据流的方向发生了变化(信号由输出依次传向输入)。将其应用到所有网络层。如下图所示:

https://img1.sycdn.imooc.com//5d5374b50001564e08050347.jpg

img11.gif


https://img1.sycdn.imooc.com//5d5374b9000107d207290356.jpg

img12.gif

https://img1.sycdn.imooc.com//5d5374bd0001416c07450343.jpg

img13.gif

计算完每个神经元的误差信号后,每个神经元的权重系数将发生变化。下面的公式中df(e)/de表示神经激活函数的导数(权重将发生变化)。

https://img1.sycdn.imooc.com//5d5374c000010e6a07520415.jpg

img14.gif


https://img1.sycdn.imooc.com//5d5374c40001843c07240422.jpg

img15.gif

https://img1.sycdn.imooc.com//5d5374c80001ebbd07550453.jpg

img16.gif

https://img1.sycdn.imooc.com//5d5374cb0001c4d107630487.jpg

img17.gif

https://img1.sycdn.imooc.com//5d5374cf00011c6f07730457.jpg

img18.gif

https://img1.sycdn.imooc.com//5d5374d200012dcc07680408.jpg

img19.gif

系数 \eta影响网络训练速度。有几种技术可以用于确定这个系数。第一种方法使用很大的值作为系数开始学习,在建立权重系数的同时缩小系数。第二种方法(更复杂)使用较小的值作为系数开始学习,在学习过程中,开始时增大系数,当慢慢接近结果时减少系数。使用较小的系数的训练过程有助于确定权重系数的正负。

参考:

Ryszard Tadeusiewcz "Sieci neuronowe", Kraków 1992



作者:学以致用123
链接:https://www.jianshu.com/p/3a65213e68a8


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消