1、人工神经网络及其应用BP神经网络,2018/4/18,2,一、BP网络二、网络设计三、改进BP网络,内容安排,2018/4/18,3,2.1 BP网络简介2.2 网络模型2.3 学习规则2.4 图形解释2.5 网络训练,二、BP网络,2018/4/18,4,反向传播网络(Back-Propagation Network,简称BP网络)是将W-H学习规则一般化,对非线性可微分函数进行权值训练的多层网络 权值的调整采用反向传播(Back-propagation)的学习算法它是一种多层前向反馈神经网络,其神经元的变换函数是S型函数输出量为0到1之间的连续量,它可实现从输入到输出的任意的非线性映射,2
2、.1 BP网络简介,2018/4/18,5,2.1 BP网络简介,BP网络主要用于下述方面函数逼近:用输入矢量和相应的输出矢量训练一个网络逼近一个函数模式识别和分类:用一个特定的输出矢量将它与输入矢量联系起来;把输入矢量以所定义的合适方式进行分类;数据压缩:减少输出矢量维数以便于传输或存储具有较强泛化性能:使网络平滑地学习函数,使网络能够合理地响应被训练以外的输入 泛化性能只对被训练的输入输出对最大值范围内的数据有效,即网络具有内插值特性,不具有外插值性。超出最大训练值的输入必将产生大的输出误差,2018/4/18,6,2.2 网络模型,一个具有r个输入和一个隐含层的神经网络模型结构,2018
3、/4/18,7,2.2 网络模型,感知器和自适应线性元件的主要差别在激活函数上:前者是二值型的,后者是线性的BP网络具有一层或多层隐含层,除了在多层网络上与前面已介绍过的模型有不同外,其主要差别也表现在激活函数上。BP网络的激活函数必须是处处可微的,因此它不能采用二值型的阀值函数0,1或符号函数1,1BP网络经常使用的是S型的对数或正切激活函数和线性函数,2018/4/18,8,2.2 网络模型,BP网络特点输入和输出是并行的模拟量网络的输入输出关系是各层连接的权因子决定,没有固定的算法权因子通过学习信号调节。学习越多,网络越聪明隐含层越多,网络输出精度越高,且个别权因子的损坏不会对网络输出产
4、生大的影响只有当希望对网络的输出进行限制,如限制在0和1之间,那么在输出层应当包含S型激活函数在一般情况下,均是在隐含层采用S型激活函数,而输出层采用线性激活函数,2018/4/18,9,2.2 网络模型,S型函数具有非线性放大系数功能,可以把输入从负无穷大到正无穷大的信号,变换成-1到l之间输出对较大的输入信号,放大系数较小;而对较小的输入信号,放大系数则较大采用S型激活函数可以处理和逼近非线性输入/输出关系,2018/4/18,10,2.3 学习规则,BP算法属于算法,是一种监督式的学习算法主要思想对于q个输入学习样本:P1,P2,Pq,已知与其对应的输出样本为:T1,T2,Tq使网络输出
5、层的误差平方和达到最小用网络的实际输出A1,A2,Aq, 与目标矢量T1,T2,Tq之间的误差修改其权值,使Am与期望的Tm,(ml,q)尽可能接近,2018/4/18,11,2.3 学习规则,BP算法是由两部分组成,信息的正向传递与误差的反向传播正向传播过程中,输入信息从输入层经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态如果在输出层未得到期望的输出,则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通路反传回来修改各层神经元的权值直至达到期望目标,2018/4/18,12,2.3 学习规则,假设输入为P,输入神经元有r个,隐含层内有s1个神经
6、元,激活函数为F1,输出层内有s2个神经元,对应的激活函数为F2,输出为A,目标矢量为T,2018/4/18,13,2.3 学习规则,信息的正向传递隐含层中第i个神经元的输出输出层第k个神经元的输出定义误差函数,2018/4/18,14,2.3 学习规则,利用梯度下降法求权值变化及误差的反向传播输出层的权值变化其中同理可得,2018/4/18,15,2.3 学习规则,利用梯度下降法求权值变化及误差的反向传播隐含层权值变化其中同理可得,2018/4/18,16,2.3 学习规则,对于f1为对数S型激活函数,对于f2为线性激活函数,2018/4/18,17,2.4 误差反向传播,误差反向传播过程实
7、际上是通过计算输出层的误差ek,然后将其与输出层激活函数的一阶导数f2相乘来求得ki由于隐含层中没有直接给出目标矢量,所以利用输出层的ki反向传递来求出隐含层权值的变化量w2ki。然后计算同样通过将ei与该层激活函数的一阶导数f1相乘,而求得ij,以此求出前层权值的变化量w1ij如果前面还有隐含层,沿用上述同样方法依此类推,一直将输出误差ek逐层的反推算到第一层为止,2018/4/18,18,2.5 网络训练,训练BP网络,需要计算网络加权输入矢量以及网络输出和误差矢量,然后求误差平方和当所训练矢量的误差平方和小于误差目标,训练停止;否则在输出层计算误差变化,且采用反向传播学习规则来调整权值,
8、然后重复此过程网络完成训练后,对网络输入一个不是训练集合中的矢量,网络将以泛化方式给出输出结果,2018/4/18,19,三、网络设计,3.1 网络的层数3.2 隐含层神经元数3.3 初始权值的选取3.4 学习速率3.5 期望误差的选取3.6 应用举例3.7 局限性,2018/4/18,20,3.1 网络的层数,理论上已经证明:具有偏差和至少一个S型隐含层加上一个线性输出层的网络,能够逼近任何有理函数 增加层数主要可以进一步的降低误差,提高精度,但同时也使网络复杂化,从而增加了网络权值的训练时间。 一般情况下应优先考虑增加隐含层中神经元数 仅用具有非线性激活函数的单层网络来解决问题没有必要或效
9、果不好线性问题非线性问题,2018/4/18,21,3.2 隐含层神经元数,网络训练精度的提高,可以通过采用一个隐含层,而增加其神经元数的方法来获得。这在结构实现上,要比增加更多的隐含层简单得多定理:实现任意N个输入向量构成的任何布尔函数的前向网络所需权系数数目为在具体设计时,比较实际的做法是通过对不同神经元数进行训练对比,然后适当地加上一点余量,2018/4/18,22,3.3 初始权值的选取,一般取初始权值在(-1,1)之间的随机数威得罗等人在分析了两层网络是如何对一个函数进行训练后,提出一种选定初始权值的策略选择权值的量级为在MATLAB工具箱中可采用函数nwlog.m或nwtan.m来
10、初始化隐含层权值W1和B1。其方法仅使用在第一隐含层的初始值的选取上,后面层的初始值仍然采用随机取数,2018/4/18,23,3.4 学习速率,学习速率决定每一次循环训练中所产生的权值变化量大的学习速率可能导致系统的不稳定小的学习速率导致较长的训练时间,可能收敛很慢,不过能保证网络的误差值不跳出误差表面的低谷而最终趋于最小误差值所以在一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。学习速率的选取范围在0.01-0.8之间,2018/4/18,24,3.5 期望误差值选取,在设计网络的训练过程中,期望误差值也应当通过对比训练后确定一个合适的值这个所谓的“合适”,是相对于所需要的隐含层的
11、节点数来确定,因为较小的期望误差值是要靠增加隐含层的节点,以及训练时间来获得一般情况下,作为对比,可以同时对两个不同期望误差值的网络进行训练,最后通过综合因素的考虑来确定采用其中一个网络,2018/4/18,25,3.6 应用举例,求解函数逼近问题有21组单输入矢量和相对应的目标矢量,试设计神经网络来实现这对数组的函数关系P=-1:0.1:1T=-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
12、-0.2183 -0.3201测试集P2=-1:0.025:1,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; net=newff(-1,1,7,1,tansig,tansig) net.trainParam.epochs=3000; net=train(net,P,T); P2=-1:0.025:1; Y=sim(net,P2);
13、figure; plot(P,T,+,P2,Y,o),2018/4/18,26,2018/4/18,27,2018/4/18,28,net=newff(1,1,10,1,tansig,tansig,traingdx,learngd,msereg) net.trainParam.epochs=3000; net=train(net,P,T); P2=-1:0.025:1; Y=sim(net,P2); figure; plot(P,T,P2,Y,o),2018/4/18,29,2018/4/18,30,3.7 限制与不足,需要较长的训练时间 完全不能训练 选取较小的初始权值采用较小的学习速率,但
14、同时又增加了训练时间局部极小值 BP算法可以使网络权值收敛到一个解,但它并不能保证所求为误差超平面的全局最小解,很可能是一个局部极小解,2018/4/18,31,四、BP网络的改进,4.1 目标4.2 附加动量法4.3 误差函数改进 4.4 自适应学习速率,2018/4/18,32,4.1 目标,加快训练速度避免陷入局部极小值,2018/4/18,33,4.2 附加动量法,利用附加动量的作用则有可能滑过局部极小值修正网络权值时,不仅考虑误差在梯度上的作用,而且考虑在误差曲面上变化趋势的影响,其作用如同一个低通滤波器,它允许网络忽略网络上微小变化特性该方法是在反向传播法的基础上在每一个权值的变化
15、上加上一项正比于前次权值变化量的值,并根据反向传播法来产生新的权值变化,2018/4/18,34,4.2 附加动量法,带有附加动量因子的权值调节公式其中k为训练次数,mc为动量因子,一般取095左右附加动量法的实质是将最后一次权值变化的影响,通过一个动量因子来传递。当动量因子取值为零时,权值变化仅根据梯度下降法产生当动量因子取值为1时,新的权值变化则是设置为最后一次权值的变化,而依梯度法产生的变化部分则被忽略掉了 促使权值的调节向着误差曲面底部的平均方向变化,当网络权值进入误差曲面底部的平坦区时,i将变得很小,于是,wij(k+1)wij (k),从而防止了wij=0的出现,有助于使网络从误差
16、曲面的局部极小值中跳出,2018/4/18,35,4.2 附加动量法,在MATLAB工具箱中,带有动量因子的权值修正法是用函数learnbpm.m来实现的trainbpm.m可以训练一层直至三层的带有附加动量因子的反向传播网络下面是对单层网络使用函数trainbpm.m的情形:W,B,epochs,errorstrainbpm(W,B,F,P,T,TP),2018/4/18,36,4.3 误差函数改进,当ak趋向1时,E趋向一个常数,即处于E的平坦区, f(n)0,可能造成完全训练的麻痹现象当一个网络的误差曲面存在着平坦区时,可以选用别的误差函数f(tk, ak)来代替(tk-ak)2的形式,
17、只要其函数在ak=tk时能达到最小值,2018/4/18,37,4.3 误差函数改进,包穆(Baum)等人于1988年提出一种误差函数为不会产生不能完全训练的麻痹现象,2018/4/18,38,4.3 误差函数改进,与常规的误差函数的情况ij=f(n)(tk-ak)相比较,其中的f(n)项消失了当n增大,进入激活函数的平坦区,使f(n)0时,不会产生不能完全训练的麻痹现象但由于失去了f(n)对w的控制作用,过大的w又有可能导致网络过调或振荡 1989年,范尔曼(S.Fahlman)提出一种折中的方案,即取kf(n)+0.1(tk-ak)一方面恢复了f(n)的某些影响另一方面当|n|变大时,仍能
18、保持k有一定的大小,从而避免了麻痹现象的发生,2018/4/18,39,4.4 自适应学习速率,通常调节学习速率的准则是,检查权值的修正值是否真正降低了误差函数,如果确实如此,则说明所选取的学习速率值小了,可以对其增加一个量;否则可认为产生过调,应该减小学习速率的值一种自适应学习速率的调整公式,2018/4/18,40,4.4 自适应学习速率,MATLAB工具箱中带有自适应学习速率进行反向传播训练的函数为 trainbpa.m可训练直至三层网络。使用方法W, B, epochs, TEtrainbpa(W,B,F,P,T,TP)可以将动量法和自适应学习速率结合起来以利用两方面的优点。这个技术已
19、编入了函数trainbpx.m之中函数的调用和其他函数一样,只是需要更多的初始参数而已TPdisp_freq max_epoch error_goal lr 1r_inc 1r_dec mom_const err_ratio;W,B,epochs,error; lrtrainbpx(W,B,F,P,T,TP),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.21
20、83 -0.3201;s=3:10;res=1:8;for i=1:8net=newff(minmax(P),s(i),1,tansig,tansig) net.trainParam.epochs=2000; net.trainParam.goal=0.00001; net=train(net,P,T); y=sim(net,P); error=y-T; res(i)=norm(error);end P2=-1:0.025:1; Y=sim(net,P2); figure; plot(P,T,P2,Y,o)res = 1.1979 0.6250 0.6247 0.0173 0.0160 0.0
21、145 0.9155 0.0144,2018/4/18,41,net=newff(minmax(P),s(i),1,tansig,tansig,trainlm)res = 1.1979 0.6250 0.1043 0.0786 0.0257 0.4600 0.0143 0.4596,2018/4/18,42,2018/4/18,43,五、内容小结,内容安排一、内容回顾二、BP网络三、网络设计四、改进BP网络,2018/4/18,44,五、内容小结,反向传播法可以用来训练具有可微激活函数的多层前向网络,以进行函数逼近,模式分类等工作反向传播网络的结构不完全受所要解决的问题所限制。网络的输入神经元
22、数目及输出层神经元的数目是由问题的要求所决定输入和输出层之间的隐含层数以及每层的神经元数是由设计者来决定的已经证明,两层S型线性网络,如果S型层有足够的神经元,则能够训练出任意输入和输出之间的有理函数关系,2018/4/18,45,五、内容小结,反向传播法沿着误差表面的梯度下降,使网络误差最小,网络有可能陷入局部极小值附加动量法使反向传播减少了网络在误差表面陷入低谷的可能性并有助于减少训练时间太大的学习速率导致学习的不稳定,太小值又导致极长的训练时间。自适应学习速率通过在保证稳定训练的前提下,达到了合理的高速率,可以减少训练时间80-90的实际应用都是采用反向传播网络的。改进技术可以用来使反向
23、传播法更加容易实现并需要更少的训练时间,径向基函数RBF神经网络,径向基函数RBF神经网络是一个只有一个隐含层的三层前馈神经网络。它与前向网络相比最大的不同在于,隐含层的转换函数是局部响应的高斯函数,而以前的前向网络转换函数都是全局响应的函数。因此,如果要实现同一个功能,径向基网络的神经元个数可能要比前向BP网络的神经元个数多。但是,径向基网络所需要的训练时间却比前向BP网络少。由于局部响应的特点,径向基网络也能够以任意精度逼近任意连续函数。,2018/4/18,46,2018/4/18,47,径向基网络传递函数radbas是以权值向量和阈值向量之间的距离作为自变量的,其中距离dist是通过输
24、入向量和加权矩阵的行向量的乘积得到的。径向基网络传递函数的原型函数为:,对于单元输出表达式为 从径向基传输函数可以看出,只有在距离为0时,输出为1;对于给定的输入向量,径向基神经元根据各输入向量与神经元的权值的距离输出一个值,距离大的输入向量产生的输出值趋于0,距离小的输入向量的输出值趋于1,从而激活第二层线性神经元的输出权值。即隐层对输入信号的响应,只在函数的中央位置产生较大的输出,即局部响应,所以该网络具有很好的局部逼近能力。,2018/4/18,48,1)从函数逼近的观点看:若把网络看成是对未知函数的逼近,则任何函数都可以表示成一组基函数的加权和。在径向基网络中,相当于选择个隐层神经元的
25、传输函数,使之构成一组基函数逼近未知函数。2)从模式识别的观点看:总可以将低维空间非线性可分的问题映射到高维空间,使其在高维空间线性可分。只要隐层神经元的数目足够多,就可以使输入模式在隐层的高维输出空间线性可分。,2018/4/18,49,泛化回归神经网络GRNN(generalized regression NN),常用于函数逼近,它具有一个径向基网络层和一个特殊的线性网络层。其中nprod的方框实现LW与a的归一化点乘运算(以权值函数normprod完成)。,2018/4/18,50,概率神经网络PNN(probabilistic NN),常用于模式分类,它具有一个径向基网络层和一个竞争型
26、网络层。其中nprod的方框实现LW与a的归一化点乘运算(以权值函数normprod完成)。第二层神经元数等于分类模式数,其权值为目标向量T,无阈值向量。第二层神经元的传输函数为竞争型传输函数,选择那些距离加权值最大的,作为网络的输出,即对输入向量最可能的模式分类结果。,2018/4/18,51,clear all;p=-1:0.1:0.9;t=-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248 1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984; t1=
27、clock;net=newff(1,1,15,1,tansig,purelin,traingdx,learngdm);net.trainParam.epochs=2500;net.trainParam.goal=0.001;net.trainParam.show=10;net.trainParam.lr=0.05;net=train(net,p,t);datat=etime(clock,t1),2018/4/18,52,BP网络实现函数逼近,2018/4/18,53,时间为1.86秒。,2018/4/18,54,clear all;p=-1:0.1:0.9;t=-0.832 -0.423 -0
28、.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248 1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984; t1=clock;net=newrb(p,t,0.1,0.1,20,5);datat=etime(clock,t1)figure;hold on plot(p,t,*)i=-1:0.05:0.9r=sim(net,i);plot(i,r);hold off,2018/4/18,55,时间为0.343秒。,2018/4/18,56,完成上图分类。,clear all;p=0 0 0 1
29、 1 1 -1 -1 -1;0 1 -1 0 1 -1 0 1 -1;tc=1 1 2 2 1 1 1 2 1;t=ind2vec(tc);t1=clock;net=newpnn(p,t,0.7);datat=etime(clock,t1); p1=0 0 0 1 1 1 -1 -1 -1;0 1 -1 0 1 -1 0 1 -1;y=sim(net,p1);yc=vec2ind(y),2018/4/18,57,yc =1 1 2 2 1 1 1 2 1,竞争型神经网络,竞争型神经网络是基于无监督学习方法的神经网络的一种重要类型,它经常作为基本的网络形式,构成其它一些具有自组织能力的网络。生物
30、神经网络存在一种侧抑制的现象,即一个神经细胞兴奋后,通过它的分支会对周围其他神经细胞产生抑制,这种抑制使神经细胞之间出现竞争:在开始阶段,各神经元对相同的输入具有相同的响应机会,但产生的兴奋程度不同,其中兴奋最强的一个神经元对周围神经细胞的抑制作用也最强,兴奋程度最强的神经细胞战胜其它神经元的抑制,成为竞争的胜利者,并因此使得兴奋的程度得到进一步加强。,2018/4/18,58,2018/4/18,59,竞争型神经网络为单层网络,|ndist|的输出是输入向量p和权值向量IW距离的负数,用距离函数negdist计算。N1为输入向量p和输入权值向量距离的负数与阈值b1的和。如果所有的阈值向量为0
31、,则当输入向量p和输入权值向量相等时,n1为最大值0.对于n1中最大的元素,竞争层传递函数输出1,其余元素均为0.,对于模式样本本身具有较明显的分类特征,竞争型神经网络可以对其进行正确的分类,网络对同一类或相似的输入模式具有较稳定的输出响应。问题:1) 当学习模式样本杂乱无章,网络对输入模式的响应呈现振荡现象。2)权值和阈值调整过程中,学习率的选择在收敛速度和稳定性之间存在矛盾。在增加新的学习样本时,对权值和阈值可能需要做比前一次更大的调整。3)网络分类性能与权值和阈值的初始值、学习率、训练样本的顺序、训练时间的长短都有关系,目前没有有效的方法对各种因素的影响进行评判。4)以函数trainr进行网络训练,只能限定训练的最长时间或训练的最大次数,以此终止训练,对于分裂性能没有明确的评判指标。,2018/4/18,60,2018/4/18,61,p=-0.1961 0.1961 0.9806 0.9806 -0.5812 -0.8137; 0.9806 0.9806 0.1961 -0.1961 -0.8137 -0.5812;net=newc(-1 1;-1 1,3);net=train(net,p);p1=p(1,:);p2=p(2,:);plot(p1,p2,*);y=sim(net,p); yc=vec2ind(y),yc = 2 2 3 3 1 1,