分享

神经网络的反向传播BP算法

 黑尘子 2017-02-23

简介

神经网络中经典的感知器模型,请参考我写的这篇博客[ http://blog.csdn.net/ws_20100/article/details/48929383]

本篇博客是在感知器模型之后,讨论由1986年由RumelhartMcCelland提出的反向传播学习算法

------------------------------------------------------------------------------------------------------------------

反向传播学习的BP算法

对于感知器模型,最初只能解决两层神经网络的学习训练问题,对于多层网络(例如三层),便不能确定中间层的参数该如何调整。直到1986年,Rumelhart和McCelland等人提出了基于反向传播的学习算法,用于前馈多层神经网络的学习训练。由于“反向传播”的英文叫做Back-Propagation,所以这个算法也常常被学者简称为BP算法。后来,人们对BP算法不断改进,以加快其训练速度,产生了很多版本的BP算法,例如Levenberg-Marquatdt算法等等。


1.)BP算法原理

如下图,是一个多层神经网络的示意图,网络相邻层之间的单元采用全连接方法连接。

每个单元的输入用U表示,输出用X表示,权值用W表示。

式一:第k层第i个神经元的输出,是由该神经元的输入经过激活函数(Activition Function)得到:


式二:第k层第i个神经元的输入,是由上一层神经元的输出和权值向量内积得到:


式三:第m层(最终输出层)第i个神经元输出的误差计算公式,采用LMS方式计算


以下的数学表示中的求导运算,均是由这三个基本公式推导而来。


2.)BP算法的步骤

反向传播算法分为两步进行:

      正向传播输入的样本从输入层经过隐单元一层一层进行处理,通过所有的隐层之后,传输出层。

      反向传播把误差信号按原来正向传播的通路反向传回,并对每个隐层的各个神经元的权系数进行修改,使误差信号趋向最小。


3.)BP算法的数学表示

BP算法的实质是,求取误差函数最小值问题

(1)而采用的方法是非线性规划中的最速下降法,按照误差函数的负梯度方向修改权系数。即



所以有,


(2)由于误差的梯度,仅仅是“记为”符号,并未给出明确计算公式:


所以,我们将求取上式中第k层第i个单元的误差梯度:


这需要分类讨论:

1.当第k层为输出层(k=m)时,


2.当第k层不是输出层(k<m)时,


(3)所以最终的权系数修改公式:


其中,


(4)有时,为了加快收敛速度,也考虑上一次权值的修改量:


------------------------------------------------------------------------------------------------------------------

总结

Back Propagation Algorithm,后向传播算法,可以解决多层神经网络的训练问题。但是经过多年的研究显示也存在着很多瓶颈,比如学习速度过慢,学习率难以确定,可能进入局部极小点,以及过拟合问题等等。


如有任何疑问,欢迎一起讨论。

如要转载本文,请注明出处:http://blog.csdn.net/ws_20100/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多