反向传播网络
反向传播网络(Back-Propagation Network,简称BP网络)是对非线性可微分函数进行权值训练的多层前向网络。在人工神经网络的实现应用过程中,80%-90%的采用BP网络或它的变化形式
1.反向传播网络的模型与结构
BP网络是前向网络的核心内容,体现了神经网络的最精华的一部分。一个具有r个输入和一个隐含层的神经网络模型结构如图所示
在人们掌握反向传播网络设计之前,感知器和自适应线性元件都只能适应于单层的网络模型训练,二者的差别主要在激活函数上,前者是二值型的,后者是线性的。反向传播网络具有一个或多个隐含层,除了在多层网络结构上与之前介绍的模型有不同外,其主要差别在激活函数上。反向传播网络要求激活函数是处处可微的,所以其就不可以采用二值型阈值函数{0,1}或有符号函数{-1,1},反向传播网络经常使用的是S型激活函数,此激活函数常用对数或双曲正切等一类S形状的曲线表示,如对数S型激活函数关系为:
双曲正切S型激活函数输入输出函数关系为:
下图是是对数S型激活函数和带有偏差的双曲正切S型激活函数的图形
2.BP算法(误差反向传播法:Back-Propergation)
设输入为P,输入神经元有r个,隐含层内有s1个神经元,激活函数为F1,输出层内有s2个神经元,对应的激活函数为F2,输出为A,目标矢量为T 。
2.1信息的正向传递
(1) 隐含层中第i个神经元的输出为:
(2) 输出层第k个神经元的输出为:
(3) 定义误差函数为:
2.2利用梯度下降法求权值变化及误差的反向传播
(1) 输出层的权值变化
对从第i个输入到第k个输出的权值有:
其中:
同理可得:
(2) 隐含层权值变化
对从第j个输入到第i个输出的权值,有:
其中:
同理可得:
2.3误差反向传播的流程
3.BP网络的设计
在进行BP网络的设计时,一般应从网络的层数、每层网络中的神经元个数和激活函数、初始值以及学习速率等几个方面考虑。下面讨论一下各自速率选区的原则。
3.1网络的层数
理论上已经证明:具有偏差和至少一个S型隐含层加上一个线性输出层的网络,能够逼近任何有理函数。增加层数可以进一步降低误差提高精度,但同时也使网络复杂化,从而增加了网络权值的训练时间。而误差精度的提高也可以通过增加隐含层神经元的数目来获得,其训练效果也比增加层数更容易观察和调整。
考虑两个单元输入的联想问题。其输入和输出矢量分别为:
P= [ 3 2 ], T = [ 0.4 0.8]
当采用含有一个对数S 型单层网络求解时,可求得解为:
w= 0.3350
b= 0.5497
此时所达到的误差平方和err_goal < 0.001 。若将这个误差转换成输出误差时,其绝对误差约为 0.02
若采用自适应线性网络来实现此联想,得解为:
w= 0.08
b= 0.64
此网络误差为:e = T Y = 0 。
3.2隐含层的神经元数
网络训练精度的提高可以通过采用增加隐含层神经元的数目来提高,其在结构实现上要比增加神经元层数要简单的多。具体的数是多少要综合考虑精度和复杂度的要求。
用两层BP网络实现“异或”功能。
3.3初始权值的选取
较好的初始值时的训练效果的观察。以前面的实例为例,当改用下列初始值:net = initnw(net,1);在这个初始值函数下,获得的一组初始值为:
W1 = [7 ; 7 ;7 ; 7 ; 7];B1 = [7.0000; 3.5000; 0; 3.5000; 7.0000];
W2 = [0.2698 0.2135 0.1831 0.7605 0.9237];B2 = [0.0828];
重新训练网络后,相对于原先随机初始值时的6801 次的训练,仅用了 410 次,就达到了同样的目标误差。这比标准的反向传播法的训练次数少了 15 倍。
3.4学习速率的影响
观察不同学习速率的影响
4.BP网络的应用
1.函数逼近:用输入矢量和相应的输出矢量训练一个网络逼近一个函数;
2.模式识别:用一个特定的输出矢量将它与输入矢量联系起来;
3.分类:把输入矢量以所定义的合适方式进行分类;
4.数据压缩:减少输出矢量维数以便于传输或存储。
5.BP网络的限制与不足
1.需要较长的训练时间
2.某些情况下完全不能训练
3.可能陷入局部极小值