您的位置:首页 > 理论基础 > 计算机网络

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

2015-10-08 22:45 405 查看

简介

神经网络中经典的感知器模型,请参考我写的这篇博客[ /article/8189247.html]

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

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

反向传播学习的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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: