预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共37页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第06讲反向传播网络反向传播网络(Back—PropagationNetwork,简称BP网络)是将W—H学习规则一般化,对非线性可微分函数进行权值训练的多层网络。 BP网络是一种多层前向反馈神经网络,其神经元的变换函数是S型函数,因此输出量为0到1之间的连续量,它可以实现从输入到输出的任意的非线性映射。 由于其权值的调整采用反向传播(Backpropagation)的学习算法,因此被称为BP网络。BP网络主要用于: 1)函数逼近:用输入矢量和相应的输出矢量训练一个网络逼近—个函数; 2)模式识别:用一个特定的输出矢量将它与输入矢量联系起来; 3)分类:把输入矢量以所定义的合适方式进行分类; 4)数据压缩:减少输出矢量维数以便于传输或存储。感知器和自适应线性元件的主要差别在激活函数上:前者是二值型的,后者是线性的。 BP网络具有一层或多层隐含层,除了在多层网络上与前面已介绍过的模型有不同外,其主要差别也表现在激活函数上。 BP网络的激活函数必须是处处可微的,所以它就不能采用二值型的阀值函数{0,1}或符号函数{—1,1},BP网络经常使用的是S型的对数或正切激活函数和线性函数。图6.2BP网络S型激活函数只有当希望对网络的输出进行限制,如限制在0和1之间,那么在输出层应当包含S型激活函数,在一般情况下,均是在隐含层采用S型激活函数,而输出层采用线性激活函数。 BP网络的特点: 1、输入和输出是并行的模拟量; 2、网络的输入输出关系是各层连接的权因子决定,没有固定的算法; 3、权因子是通过学习信号调节的,这样学习越多,网络越聪明; 4、隐含层越多,网络输出精度越高,且个别权因子的损坏不会对网络输出产生大的影响6.2BP学习规则BP算法是由两部分组成:信息的正向传递与误差的反向传播。 在正向传播过程中,输入信息从输入经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态。 如果在输出层没有得到期望的输出,则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通路反传回来修改各层神经元的权值直至达到期望目标。图6.3具有一个隐含层的简化网络图6.2.1信息的正向传递 1)隐含层中第i个神经元的输出为:6.2.2利用梯度下降法求权值变化及误差的反向传播(2)隐含层权值变化通过MATLAB的实现过程: 1)对于(6.1)式所表示的隐含层输出,若采用对数S型激活函数,则用函数logsig.m;若采用双曲正切S型激活函数,则用函数tansig.m; 2)对于(6.2)式所表示的输出层输出,若采用线性激活函数有purelin.m与之对应; 3)对于(6.3)式所表示的误差函数,可用函数sumsqr.m求之; 4)有learnbp.m函数专门求(6.4)、(6.7)、(6.8)和(6.10)式所表示的输出层以及隐含层中权值与偏差的变化量; 5)由(6.5)和(6.9)式所表示的误差的变化有函数deltalin.m、deltatan.m、deltalog.m来解决。它们分别用于线性层、双曲正切层和对数层。6.2.3误差反向传播的流程图与图形解释图6.4误差反向传播法的图形解释6.3BP网络的训练过程为了能够较好地掌握BP网络的训练过程,我们用两层网络为例来叙述BP网络的训练步骤。 1)用小的随机数对每一层的权值W和偏差B初始化,以保证网络不被大的加权输入饱和;并进行以下参数的设定或初始化: a)期望误差最小值error_goal; b)最大循环次数max_epoch; c)修正权值的学习速率1r,一般情况下k=0.0l~0.7; d)从1开始的循环训练:forepoch=1:max_epoch;2)计算网络各层输出矢量A1和A2以及网络误差E: A1=tansig(W1*P,B1); A2=purelin(W2*A1,B2); E=T-A; 3)计算各层反传的误差变化D2和D1并计算各层权值的修正值以及新权值: D2=deltalin(A2,E); D1=deltatan(A1,D2,W2); [dlWl,dBl]=learnbp(P,D1,lr); [dW2,dB2]=1earnbp(A1,D2,1r); W1=W1十dW1;B1=B1十dBl; W2=W2十dW2;B2=B2十dB2;4)再次计算权值修正后误差平方和: SSE=sumsqr(T-purelin(W2*tansig(W1*P,B1),B2)); 5)检查SSE是否小于err_goal,若是,训练结束;否则继续。 以上所有的学习规则与训练的全过程,仍然可以用函数trainbp.m来完成。它的使用同样只需要定义有关参数:显示间隔次数,最大循环次数,目标误差,以及学习速率,而调用后返回训练后权值,循环总数和最终误