资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第06讲 反向传播网络,反向传播网络(,BackPropagation Network,,简称,BP,网络)是将,WH,学习规则一般化,对非线性可微分函数进行权值训练的多层网络。,BP,网络是一种多层前向反馈神经网络,其神经元的变换函数是,S,型函数,因此输出量为0到1之间的连续量,它可以实现从输入到输出的任意的非线性映射。,由于其权值的调整采用反向传播(,Backpropagation),的学习算法,因此被称为,BP,网络。,BP,网络主要用于:,1)函数逼近:用输入矢量和相应的输出矢量训练一个网络逼近个函数;,2)模式识别:用一个特定的输出矢量将它与输入矢量联系起来;,3)分类:把输入矢量以所定义的合适方式进行分类;,4)数据压缩:减少输出矢量维数以便于传输或存储。,61,BP,网络模型与结构,一个具有,r,个输入和一个隐含层的神经网络模型结构,感知器和自适应线性元件的主要差别在激活函数上:前者是二值型的,后者是线性的。,BP,网络具有一层或多层隐含层,除了在多层网络上与前面已介绍过的模型有不同外,其主要差别也表现在激活函数上。,BP,网络的激活函数必须是处处可微的,所以它就不能采用二值型的阀值函数0,1或符号函数1,1,,BP,网络经常使用的是,S,型的对数或正切激活函数和线性函数。,图6.2,BP,网络,S,型激活函数,因为,S,型函数具有非线性放大系数功能,它可以把输入从负无穷大到正无穷大的信号,变换成-1到,l,之间输出,对较大的输入信号,放大系数较小;而对较小的输入信号,放大系数则较大,所以采用,S,型激活函数可以去处理和逼近非线性的输入/输出关系。,只有当希望对网络的输出进行限制,如限制在0和1之间,那么在输出层应当包含,S,型激活函数,在一般情况下,均是在隐含层采用,S,型激活函数,而输出层采用线性激活函数。,BP,网络的特点:,1、输入和输出是并行的模拟量;,2、网络的输入输出关系是各层连接的权因子决定,没有固定的算法;,3、权因子是通过学习信号调节的,这样学习越多,网络越聪明;,4、隐含层越多,网络输出精度越高,且个别权因子的损坏不会对网络输出产生大的影响,62,BP,学习规则,BP,算法属于,算法,是一种监督式的学习算法。,其主要思想为:对于,q,个输入学习样本:,P,1,,P,2,,P,q,,,已知与其对应的输出样本为:,T,1,,T,2,,T,q,。,学习的目的是用网络的实际输出,A,1,,A,2,,A,q,,,与目标矢量,T,1,,T,2,,T,q,,,之间的误差来修改其权值,使,A,l,,(ll,2,q),与期望的,T,l,尽可能地接近;即:使网络输出层的误差平方和达到最小。,BP,算法是由两部分组成:信息的正向传递与误差的反向传播。,在正向传播过程中,输入信息从输入经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态。,如果在输出层没有得到期望的输出,则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通路反传回来修改各层神经元的权值直至达到期望目标。,图63 具有一个隐含层的简化网络图,设输入为,P,,输入神经元有,r,个,隐含层内有,s1,个神经元,激活函数为,F1,,输出层内有,s2,个神经元,对应的激活函数为,F2,,输出为,A,,目标矢量为,T。,621信息的正向传递,1)隐含层中第,i,个神经元的输出为:,2)输出层第,k,个神经元的输出为:,3)定义误差函数为:,(6.1),(6.2),(6.3),622利用梯度下降法求权值变化及误差的反向传播,(1)输出层的权值变化,对从第,i,个输入到第,k,个输出的权值有:,其中:,同理可得:,(6.4),(6.5)(6.6),(6.7),(2)隐含层权值变化,对从第,j,个输入到第,i,个输出的权值,有:,其中:,同理可得:,(6.8),(6.9),(6.10),通过,MATLAB,的实现过程:,1)对于(61)式所表示的隐含层输出,若采用对数,S,型激活函数,则用函数,logsig.m;,若采用双曲正切,S,型激活函数,则用函数,tansig.m;,2),对于(62)式所表示的输出层输出,若采用线性激活函数有,purelin.m,与之对应;,3)对于(63)式所表示的误差函数,可用函数,sumsqr.m,求之;,4)有,learnbp.m,函数专门求(64)、(67)、(68)和(610)式所表示的输出层以及隐含层中权值与偏差的变化量;,5)由(6.5)和(6.9)式所表示的误差的变化有函数,deltalin.m、deltatan.m、deltalog.m,来解决。它们分别用于线性层、双曲正切层和对数层。,623 误差反向传播的流程图与图形解释,误差反向传播过程实际上是通过计算输出层的误差,e,k,,,然后将其与输出层激活函数的一阶导数,f2,相乘来求得,ki,。,由于隐含层中没有直接给出目标矢量,所以利用输出层的,ki,反向传递来求出隐含层权值的变化量,w2,ki,。,然后计算,并同样通过将,e,i,与该层激活函数的一阶导数,f1,相乘,而求得,ij,,,以此求出前层权值的变化量,w1,ij,。,如果前面还有隐含层,沿用上述同样方法依此类推,一直将输出误差,e,k,一层一层的反推算到第一层为止。,图64 误差反向传播法的图形解释,6.3,BP,网络的训练过程,为了训练一个,BP,网络,需要计算网络加权输入矢量以及网络输出和误差矢量,然后求得误差平方和。,当所训练矢量的误差平方和小于误差目标,训练则停止,否则在输出层计算误差变化,且采用反向传播学习规则来调整权值,并重复此过程。,当网络完成训练后,对网络输入一个不是训练集合中的矢量,网络将以泛化方式给出输出结果。,为了能够较好地掌握,BP,网络的训练过程,我们用两层网络为例来叙述,BP,网络的训练步骤。,1)用小的随机数对每一层的权值,W,和偏差,B,初始化,以保证网络不被大的加权输入饱和;并进行以下参数的设定或初始化:,a),期望误差最小值,error_goal;,b),最大循环次数,max_epoch;,c),修正权值的学习速率1,r,,一般情况下,k00l07;,d),从1开始的循环训练:,for epoch1:max_epoch;,2)计算网络各层输出矢量,A1,和,A2,以及网络误差,E:,A1tansig(W1*P,B1);,A2purelin(W2*A1,B2);,ET-A;,3)计算各层反传的误差变化,D2,和,D1,并计算各层权值的修正值以及新权值:,D2deltalin(A2,E);,D1deltatan(A1,D2,W2);,dlWl,dBllearnbp(P,D1,lr);,dW2,dB21earnbp(A1,D2,1r);,W1W1,十,dW1;B1B1,十,dBl;,W2W2,十,dW2;B2B2,十,dB2;,4)再次计算权值修正后误差平方和:,SSEsumsqr(T-purelin(W2*tansig(W1*P,B1),B2);,5),检查,SSE,是否小于,err_goal,,若是,训练结束;否则继续。,以上所有的学习规则与训练的全过程,仍然可以用函数,trainbp.m,来完成。它的使用同样只需要定义有关参数:显示间隔次数,最大循环次数,目标误差,以及学习速率,而调用后返回训练后权值,循环总数和最终误差:,TPdisp_freq max_epoch err_goal 1r;,W,B,epochs,errorstrainbp(W,B,F,P,T,TP);,例61用于函数逼近的,BP,网络的设计。,P=-1:0.1:1;,T=-0.96 0.577 -0.0729 0.377 0.641 0.66 0.461 0.1336 -0.201 -0.434 -0.5 -0.393 -0.1647 0.0988 0.3072 0.396 0.3449 0.1816 -0.0312 -0.2183 -0.3201;,比较,trainbpx,和,trainbp,的速度差别。,exc4.m,泛化性能:使网络平滑地学习函数,使网络能够合理地响应被训练以外的输入。,要注意的是,泛化性能只对被训练的输入输出对最大值范围内的数据有效,即网络具有内插值特性,不具有外插值性。超出最大训练值的输入必将产生大的输出误差。,64,BP,网络的设计,641网络的层数,理论上已经证明:具有偏差和至少一个,S,型隐含层加上一个线性输出层的网络,能够逼近任何有理函数。,增加层数主要可以更进一步的降低误差,提高精度,但同时也使网络复杂化,从而增加了网络权值的训练时间。,一般情况下,应优先考虑增加隐含层中的神经元数。,能不能仅用具有非线性激活函数的单层网络来解决问题呢?结论是:没有必要或效果不好。,642 隐含层的神经元数,网络训练精度的提高,可以通过采用一个隐含层,而增加其神经元数的方法来获得。这在结构实现上,要比增加更多的隐含层要简单得多。,在具体设计时,比较实际的做法是通过对不同神经元数进行训练对比,然后适当地加上一点余量。,643初始权值的选取,一般取初始权值在(1,1)之间的随机数。,威得罗等人在分析了两层网络是如何对一个函数进行训练后,提出一种选定初始权值的策略。,在,MATLAB,工具箱中可采用函数,nwlog.m,或,nwtan.m,来初始化隐含层权值,W1,和,B1。,其方法仅需要使用在第一隐含层的初始值的选取上,后面层的初始值仍然采用随机取数。,644 学习速率,学习速率决定每一次循环训练中所产生的权值变化量。,大的学习速率可能导致系统的不稳定。,小的学习速率导致较长的训练时间,可能收敛很慢,不过能保证网络的误差值不跳出误差表面的低谷而最终趋于最小误差值。,所以在一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。学习速率的选取范围在00108之间。,645 期望误差的选取,在设计网络的训练过程中,期望误差值也应当通过对比训练后确定一个合适的值。,这个所谓的“合适”,是相对于所需要的隐含层的节点数来确定,因为较小的期望误差值是要靠增加隐含层的节点,以及训练时间来获得的。,一般情况下,作为对比,可以同时对两个不同期望误差值的网络进行训练,最后通过综合因素的考虑来确定采用其中一个网络。,65 限制与不足,(1)需要较长的训练时间,(2)完全不能训练,通常为了避免这种现象的发生,一是选取较小的初始权值,二是采用较小的学习速率,但这又增加了训练时间。,(3)局部极小值,BP,算法可以使网络权值收敛到一个解,但它并不能保证所求为误差超平面的全局最小解,很可能是一个局部极小解。,66 反向传播法的改进方法,主要目标是为了加快训练速度,避免陷入局部极小值。,661 附加动量法,附加动量法使网络在修正其权值时,不仅考虑误差在梯度上的作用,而且考虑在误差曲面上变化趋势的影响,其作用如同一个低通滤波器,它允许网络忽略网络上的微小变化特性。,利用附加动量的作用则有可能滑过局部极小值。,该方法是在反向传播法的基础上在每一个权值的变化上加上一项正比于前次权值变化量的值,并根据反向传播法来产生新的权值变化。,带有附加动量因子的权值调节公式为:,其中,k,为训练次数,,mc,为动量因子,一般取095左右。,附加动量法的实质是将最后一次权值变化的影响,通过一个动量因子来传递。当动量因子取值为零时,权值的变化仅是根据梯度下降法产生;当动量因子取值为1时,新的权值变化则是设置为最后一次权值的变化,而依梯度法产生的变化部分则被忽略掉了。,在,MATLAB,工具箱中,带有动量因子的权值修正法是用函数,learnbpm.m,来实现的。,trainbpm.m,可以训练一层直至三层的带有附加动量因子的反向传播网络。,下面是对单层网络使用函数,trainbpm.m,的情形:,W,B,epochs,errorstrainbpm(W,B,F,P,T,TP);,662 误差函数的改进
展开阅读全文