资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,人工神经网络及其应用,第,6,章,BP,神经网络,1,一、,内容回顾,二、,BP,网络,三、网络设计,四、改进,BP,网络,五、内容小结,内容安排,2,一、内容回顾,感知机,自适应线性元件,3,一、内容回顾,感知机,感知机简介,神经元模型,网络结构,功能解释,学习和训练,局限性,自适应线性元件,4,一、内容回顾,感知机,自适应线性元件,Adline,简介,网络结构,网络学习,网络训练,5,2.1,BP,网络简介,2.2,网络模型,2.3,学习规则,2.4,图形解释,2.5,网络训练,二、,BP,网络,6,反向传播网络,(Back-Propagation Network,,,简称,BP,网络,),是将,W-H,学习规则一般化,,对,非线性可微分函数,进行权值训练的多层网络,权值的调整采用,反向传播,(Back-propagation,),的学习算法,它是一种,多层前向反馈神经网络,,其神经元的变换函数是,S,型函数,输出量为,0,到,1,之间,的,连续量,,它可实现从输入到输出的,任意的非线性映射,2.1 BP神经网络,7,BP,网络主要用于下述方面,函数逼近,:用输入矢量和相应的输出矢量训练一个网络逼近一个函数,模式识别和分类,:用,一个特定的输出矢量将它与输入矢量联系起来,;把输入矢量以所定义的合适方式进行分类;,数据压缩,:减少输出矢量维数以便于传输或存储,具有较强泛化性能:使网络平滑地学习函数,使网络能够合理地响应被训练以外的输入,泛化性能只对被训练的输入输出在最大值范围内的数据有效,即,网络具有内插值特性,不具有外插值性,。超出最大训练值的输入必将产生大的输出误差,2.1 BP神经网络,8,2.2,网络模型,一个具有,r,个,输入,和一个,隐含层,的神经网络模型结构,9,感知器,和,自适应线性元件,的主要差别在激活函数上:前者是二值型的,后者是线性的,BP,网络具有,一层或多层隐含层,,除了在多层网络上与前面已介绍过的模型有不同外,其主要差别也表现在激活函数上。,BP,网络的,激活函数必须是处处可微的,,因此它不能采用二值型的阀值函数,0,,,1,或符号函数,1,,,1,BP,网络经常使用的是,S,型,的对数或正切激活函数和线性函数,2.1 网络模型,10,BP,网络特点,输入和输出是并行的模拟量,网络的输入输出关系由各层连接的权因子决定,没有固定的算法,权因子通过学习信号调节。学习越多,网络越聪明,隐含层越多,网络输出精度越高,且个别权因子的损坏不会对网络输出产生大的影响,只有当希望对网络的输出进行限制,如限制在,0,和,1,之间,那么在,输出层,应当包含,S,型激活函数,在,一般情况,下,均是在,隐含层采用,S,型激活函数,,而,输出层采用线性激活函数,2.1 网络模型,11,S,型函数具有非线性放大系数功能,可以把输入从负无穷大到正无穷大的信号,变换成,-1,到,l,之间输出,对较大的输入信号,放大系数较小;而对较小的输入信号,放大系数则较大,采用,S,型激活函数可以处理和逼近非线性输入,/,输出关系,2.1 网络模型,12,2.3,学习规则,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,m,与期望的,T,m,(,m,l,q,),尽可能接近,13,BP,算法是由两部分组成,信息的,正向传递与误差的反向传播,正向传播,过程中,输入信息从输入层经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态,如果在输出层未得到期望的输出,则计算输出层的误差变化值,然后转向,反向传播,,通过网络将误差信号沿原来的连接通路,反传回,来修改各层神经元的权值直至达到期望目标,2.3学习规则,14,假设,输入,为,P,,,输入神经元,有,r,个,,隐含层,内有,s1,个神经元,激活函数为,F1,,,输出层,内有,s2,个神经元,对应的激活函数为,F2,,输出为,A,,目标矢量为,T,2.3学习规则,.,.,.,15,信息的正向传递,隐含层中第,i,个神经元的输出,输出层第,k,个神经元的输出,定义误差函数,2.3学习规则,16,2.3,学习规则,利用梯度下降法求权值变化及误差的反向传播,输出层的权值变化,其中,同理可得,17,2.3,学习规则,利用梯度下降法求权值变化及误差的反向传播,输入到隐含层权值变化,其中,同理可得,18,对于,f1,为对数,S,型激活函数:,对于,f2,为线性激活函数,2.3学习规则,19,2.4,误差反向传播图形解释,误差反向传播过程实际上是通过计算,输出层的误差,e,k,,然后将其与输出层激活函数的,一阶导数,f2,相乘,来求得,ki,由于隐含层中没有直接给出目标矢量,所以利用输出层的,ki,反向传递来求出隐含层权值的变化量,w2,ki,。然后计算,同样通过将,e,i,与该层激活函数的一阶导数,f1,相乘,而求得,ij,,以此求出前层权值的变化量,w1,ij,如果前面还有隐含层,沿用上述同样方法依此类推,一直将输出误差,e,k,逐层的反推算到第一层为止,20,2.4,误差反向传播图形解释,21,2.5,网络训练,训练,BP,网络,需要计算网络加权输入矢量以及网络输出和,误差矢量,,然后,求误差平方和,当所训练矢量的误差平方和,小于误差目标,,,训练停止,;否则在输出层计算误差变化,且采用,反向传播学习规则来调整权值,,然后重复此过程,网络完成训练后,对网络输入一个不是训练集合中的矢量,网络将以泛化方式给出输出结果,22,2.5,网络训练,为了能够较好地掌握,BP,网络的训练过程,我们用两层网络为例来叙述,BP,网络的训练步骤,初始化:用小的随机数初始化每一层的权值,W,和偏差,B,,保证网络不被,大的加权输入饱和,期望误差最小值:,error_goal,最大循环次数:,max_epoch,修正权值的学习速率:,lr,一般情况下,lr,0.l,0.8,23,2.5,网络训练,变量表达:计算网络各层输出矢量,A1,和,A2,以及网络误差,E,A1,tansig(W1*P,,,B1),;,A2,purelin(W2*A1,,,B2),;,E,T-A,;,权值修正:计算各层反传的误差变化,D2,和,D1,并计算各层权值的修正值以及新权值:,D2,deltalin(A2,,,E),;,D1,deltatan(A1,,,D2,,,W2),;,dWl,,,dBl,learnbp(P,,,D1,,,lr),;,dW2,,,dB2,1earnbp(A1,,,D2,,,1r),;,W1,W1,十,dW1,;,B1,B1,十,dBl,;,W2,W2,十,dW2,;,B2,B2,十,dB2,24,2.5,网络训练,计算权值修正后误差平方和,SSE,sumsqr(T-purelin(W2*tansig(W1*P,,,B1),,,B2),检查:,SSE,是否小于,err_goal,。若是,训练结束;否则继续,以上所有的学习规则与训练的全过程,可以用函数,trainbp.m,来完成,它的使用只需定义有关参数:显示间隔次数,最大循环次数,目标误差,以及学习速率。调用后返回训练后权值,循环总数和最终误差,TP,disp_freq max_epoch err_goal 1r,W,,,B,,,epochs,,,errors,trainbp(W,,,B,,,F,,,P,,,T,,,TP),25,三、网络设计,3.1,网络的层数,3.2,隐含层神经元数,3.3,初始权值的选取,3.4,学习速率,3.5,期望误差的选取,3.6,应用举例,3.7,局限性,26,3.1,网络的层数,理论上已经证明:具有偏差和至少一个,S,型隐含层加上一个线性输出层的网络,能够逼近任何有理函数。,定理,:,增加层数主要可以进一步的降低误差,提高精度,但同时也使网络复杂化,从而增加了网络权值的训练时间。,一般情况下应优先考虑增加隐含层中神经元数,仅用具有非线性激活函数的单层网络来解决问题没有必要或效果不好,线性问题,非线性问题,27,3.2,隐含层神经元数,网络训练精度的提高,可以通过采用一个隐含层,而增加其神经元数的方法来获得。这在结构实现上,要比增加更多的隐含层简单得多,定理:,实现任意,N,个输入向量构成的任何布尔函数的前向网络所需权系数数目为,在具体设计时,比较实际的做法是通过对不同神经元数进行训练对比,去掉不起作用的隐单元,然后适当地加上一点余量,28,隐含层神经元数,输入,r,维,输出,s,2,维,样本数,q,下,隐单元数,s1:,29,3.3,初始权值的选取,一般取初始权值在,(-1,,,1),之间的随机数,威得罗等人在分析了两层网络是如何对一个函数进行训练后,提出一种选定初始权值的策略,选择权值的量级为,在,MATLAB,工具箱中可采用函数,nwlog.m,或,nwtan.m,来初始化隐含层权值,W1,和,B1,。,其方法仅使用在第一隐含层的初始值的选取上,后面层的初始值仍然采用随机取数,30,3.4,学习速率,学习速率决定每一次循环训练中所产生的权值变化量,大的学习速率可能导致系统的不稳定,小的学习速率导致较长的训练时间,可能收敛很慢,不过能保证网络的误差值不跳出误差表面的低谷而最终趋于最小误差值,所以在一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。,学习速率,的选取范围在,0.1-0.8,之间,31,3.5,期望误差值选取,在设计网络的训练过程中,期望误差值也应当通过对比训练后确定一个合适的值,这个所谓的“合适”,是相对于所需要的隐含层的节点数来确定,因为较小的期望误差值是要靠增加隐含层的节点,以及训练时间来获得,一般情况下,作为对比,可以同时对两个不同期望误差值的网络进行训练,最后通过综合因素的考虑来确定采用其中一个网络,32,3.6,应用举例,求解函数逼近问题,有,21,组单输入矢量和相对应的目标矢量,试设计神经网络来实现这对数组的函数关系,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,测试集,P2=-1:0.025:1,33,网络设计:输入输出单元个数均为,1.,隐含层神经元个数在,3,8,之间。用可变的隐含层神经元个数,通过误差对比,确定最佳个数,并检验对网络性能的影响。代码:,s=3:8;,res=1:6;,for i=1:6,net=newff(minmax(P),s(i),1,tansig,logsig,traingdx);,net.trainParam.epochs=2000;,net.trainParam.goal=0.0001;,net=train(net,P,T);,y=sim(net,P);,error=y-T;,res(i)=norm(error);,end,res=,1.5812 1.9270 1.5580 1.9270 1.5803 1.4449,隐层,输出层,训练函数,也可选:,trainlm或,traingd,34,网络训练误差,个数,3,4,5,6,7,8,9,10,网络误差,1.0412,0.7297,0.1767,0.1449,0.1807,0.1442,0.1449,0.1621,好,35,3.6,应用举例(,contd),目标矢量相对于输入矢量的图形,初始网络的输出曲线,36,3.6,应用举例(,contd),训练,1000,次,2000,次,37,3.6,应用举例(,contd),训练,3000,次,5000,次,38,3.7,限制与不足,需要较长的训练时间,完全不能训练,选取较小的初始权值,采用较小的学习速率,但同时又增加了训练时间,局部极小值,BP,算法可以使网络权值收敛到一个解,但它并不能保证所求为误差超平面的全局最小解,很可能是一个局部极小解,39,四、,BP,网络的改进,4.1,目标,4.2,附加动量法,4.3,误差函数改进,4.4,自适应学习速率,40,4.1,目标,加快训练速度,避免陷入局部极小值,41,4.2,附加动量法,利用附加动量的作用则有可能滑过局部极小值,修正网络权值时,不仅考虑误差在梯度上的作用,而且考虑在误差曲面上变化趋势的影响,其作用如同一个低通滤波器,它允许网络忽略网络上微小变化特性,该方法是在反向传播法的基础上在每一个权值的变化上加上一项,正比于前次权值变化量的值,,并根据反向传播法来产生新的权值变化,42,4.2,附加动量法,带有附加,动量因子,的权值调节公式,其中,k,为训练次数,,mc,为动量因子,一般取,0,95,左右,附加动量法的,实质,是将最后一次权值变化的影响,通过一个动量因子来传递。,当动量因子取值为,0,时,权值变化仅根据梯度下降法产生,当动量因子取值为,1,时,新的权值变化则是设置为最后一次权值的变化,而依梯度法产生的变化部分则被忽略掉了,促使权值的调节向着误差曲面底部的平均方向变化,当网络权值进入误差曲面底部的平坦区时,,i,将变得很小,于是,,w,ij,(k+1)w,ij,(k),,,从而防止了,w,ij,=0,的出现,有助于使网络从,误差曲面的局部极小值,中,跳出,43,4.2,附加动量法,在,MATLAB,工具箱中,带有动量因子的权值修正法是用函数,learnbpm.m,来实现的,trainbpm.m,可以训练一层直至三层的带有附加动量因子的反向传播网络,下面是对单层网络使用函数,trainbpm.m,的情形:,W,,,B,,,epochs,,,errors,trainbpm(W,,,B,,,F,,,P,,,T,,,TP),44,4.3,误差函数改进,LMS,误差:,当,a,k,趋向,1,时,,E,趋向一个常数,即处于,E,的平坦区,,f(n)0,,,可能造成完全训练的,麻痹现象,当一个网络的误差曲面存在着平坦区时,可以选用别的误差函数,f(t,k,a,k,),来代替,(t,k,-a,k,),2,的形式,,只要其函数,在,a,k,=,t,k,时,能达到最小值,45,4.3,误差函数改进,包穆,(Baum),等人于,1988,年提出一种误差函数为,不会产生,不能完全训练的麻痹现象,46,4.3,误差函数改进,与常规的误差函数的情况,ij,=,f(n)(t,k,-a,k,),相比较,其中的,f(n),项消失了,当,n,增大,进入激活函数的平坦区,使,f(n)0,时,不会产生不能完全训练的麻痹现象,但由于失去了,f(n),对,w,的控制作用,过大的,w,又有可能导致网络过调或振荡,1989,年,范尔曼,(,S.Fahlman,),提出一种折中的方案,即取,k,f(n)+0.1(t,k,-a,k,),一方面恢复了,f(n),的某些影响,另一方面当,|n|,变大时,仍能保持,k,有一定的大小,从而避免了麻痹现象的发生,47,4.4,自适应学习速率,通常调节学习速率的准则是,检查权值的修正值是否真正降低了误差函数,如果确实如此,则说明所选取的学习速率值小了,可以对其增加一个量;否则可认为产生,过调,,应该,减小学习速率的值,一种自适应学习速率的调整公式,48,4.4,自适应学习速率,MATLAB,工具箱中带有自适应学习速率进行反向传播训练的函数为,trainbpa.m,可训练直至三层网络。,使用方法,W,B,epochs,TE,trainbpa(W,B,F,P,T,TP),可以将动量法和自适应学习速率结合起来以利用两方面的优点。这个技术已编入函数,trainbpx.m,之中,函数的调用和其他函数一样,只是需要更多的初始参数而已,TP,disp_freq,max_epoch error_goal,lr,1r_inc 1r_dec mom_const err_ratio,;,W,B,epochs,error,;,lr,trainbpx(W,B,F,P,T,TP,),49,五、内容小结,内容安排,一、内容回顾,二、,BP,网络,三、网络设计,四、改进,BP,网络,50,五、内容小结,反向传播法可以用来训练具有可微激活函数的多层前向网络,以进行函数逼近,模式分类等工作,反向传播网络的结构不完全受所要解决的问题所限制。,网络的输入神经元数目及输出层神经元的数目是由问题的要求所决定,输入和输出层之间的隐含层数以及每层的神经元数是由设计者来决定的,已经证明,两层,S,型线性网络,如果,S,型层有足够的神经元,则能够训练出任意输入和输出之间的有理函数关系,51,五、内容小结,反向传播法沿着误差表面的梯度下降,使网络误差最小,网络有可能陷入局部极小值,附加动量法使反向传播减少了网络在误差表面陷入低谷的可能性并有助于减少训练时间,太大的学习速率导致学习的不稳定,太小值又导致极长的训练时间。自适应学习速率通过在保证稳定训练的前提下,达到了合理的高速率,可以减少训练时间,80,-90,的实际应用都是采用反向传播网络的。改进技术可以用来使反向传播法更加容易实现并需要更少的训练时间,52,下次讲课内容,反馈网络,Hopfield,网络,53,作业,用,BP,神经网络对一个简单的,非线性神经元,进行训练。,输入矢量,p=-3 2,目标矢量,t=0.4 0.8,54,55,径向基函数神经网络,径向基函数(,Radial Basis Function,,简称,RBF,)神经网络是一种三层前向神经网络。,RBF,神经网络只有一个隐层,隐层单元的,转移函数采用径向基函数,,以对输入层的激励产生局部化响应,即仅当输入落在输入空间中某一指定的小范围内时,隐层单元才会作出有意义的非零响应。输出节点对各隐层单元的输出求加权和。输入单元和隐层单元的连接权值固定为,1,,只有隐层单元和输出单元的连接权值可调。,RBF,训练速度快,具有很好的通用性。,56,径向基函数神经网络(,RBF),其,输出是由隐节点基函数的,线性组合,计算得到,。隐节点的基函数只对输入空间中的一个很小区域产生非零响应。隐层神经元将输入空间映射到一个新的空间,输出层在该空间中实现线性组合。,径向基函数网络是一种两层前向网络,如图所示,:,57,径向基函数常采用高斯函数作为非线性映射函数,不失一般性,对于,单个输出,的,RBF,网络来说,其第,k,个隐单元对应的输出为:,-,欧几里德范数,-,第,i,个输入向量,-,第,k,个隐层节点的中心,-,第,k,个隐层节点的宽度,整个网络的输出方程为,:,其中,-,输出空间与第个隐层节点的连接权,-,隐层节点的总个数,58,
展开阅读全文