标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用.ppt

上传人:文库蛋蛋多 文档编号:2833835 上传时间:2023-02-26 格式:PPT 页数:62 大小:1.66MB
返回 下载 相关 举报
标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用.ppt_第1页
第1页 / 共62页
标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用.ppt_第2页
第2页 / 共62页
标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用.ppt_第3页
第3页 / 共62页
标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用.ppt_第4页
第4页 / 共62页
标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用.ppt_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用.ppt》由会员分享,可在线阅读,更多相关《标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用.ppt(62页珍藏版)》请在三一办公上搜索。

1、BP网络,主要内容,4.1 BP网络简介4.2 BP网络模型4.3 BP学习算法4.4 BP网络的MATLAB仿真程序设计,4.1 BP网络简介,1、BP算法的出现1974年,Werbos在其博士论文中提出了第一个适合多层网络的学习算法,但是没有受到重视。20世纪80年代中期,美国加利福尼亚的PDP小组的Rumelhart、Hinton和Williams1986年独立地给出了BP算法清楚而简单的描述,并将其用于神经网络的研究,才使之成为迄今为止最著名的多层网络学习算法-BP算法,由此算法训练的神经网络,称之为BP神经网络。2、弱点:训练速度非常慢、局部极小点的逃离问题、算法不一定收敛。3、优点

2、:广泛的适应性和有效性。,4、应用BP网络主要用于下述方面函数逼近:用输入矢量和相应的输出矢量训练一个网络逼近一个函数模式识别和分类:用一个特定的输出矢量将它与输入矢量联系起来;数据压缩:减少输出矢量维数以便于传输或存储,4.2 网络模型,4.2 网络模型,感知器和自适应线性元件的主要差别在激活函数上:前者是二值型的,后者是线性的BP网络具有一层或多层隐含层,除了在多层网络上与前面已介绍过的模型有不同外,其主要差别也表现在激活函数上。BP网络的激活函数必须是处处可微的,因此它不能采用二值型的阀值函数0,1或符号函数1,1BP网络经常使用的激活函数是S型函数,包括对数(logsig)或正切激活函

3、数(tansig);或者线性函数(purelin),S型函数的表达式(1)logsig(net)=a+b/(1+exp(-d*net)a,b,d为常数。它的饱和值为a和a+b。最简单形式为:logsig(net)=1/(1+exp(-net)函数的饱和值为0和1。(2)tansig(net)=(1-exp(-net)/(1+exp(-net)S型函数的图像,a+b,net,a,c=a+b/2,0,S型函数的优点S型函数具有非线性放大系数功能,可以把输入从负无穷大到正无穷大的信号,变换成-1到l之间输出对较大的输入信号,放大系数较小;而对较小的输入信号,放大系数则较大采用S型激活函数可以处理和逼

4、近非线性输入/输出关系,4.3 BP学习算法,4.3.1 简单介绍BP算法属于算法,是一种监督式的学习算法主要思想对于q个输入学习样本:P1,P2,Pq,已知与其对应的输出样本为:T1,T2,Tq使网络输出层的误差平方和达到最小用网络的实际输出A1,A2,Aq,与目标矢量T1,T2,Tq之间的误差修改其权值,使Am与期望的Tm,(ml,q)尽可能接近,4.3 BP学习算法,BP算法是由两部分组成,信息的正向传递与误差的反向传播正向传播过程中,输入信息从输入层经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态如果在输出层未得到期望的输出,则计算输出层的误差变化值,然后转向反向

5、传播,通过网络将误差信号沿原来的连接通路反传回来修改各层神经元的权值直至达到期望目标,2023/2/26,12,4.3 BP学习算法,假设输入为P,输入神经元有r个,隐含层内有s1个神经元,激活函数为F1,输出层内有s2个神经元,对应的激活函数为F2,输出为A,目标矢量为T,2023/2/26,13,4.3 BP学习算法,信息的正向传递隐含层中第i个神经元的输出输出层第k个神经元的输出定义误差函数,2023/2/26,14,利用梯度下降法求权值变化及误差的反向传播输出层的权值变化其中同理可得,2023/2/26,15,4.3 BP学习算法,利用梯度下降法求权值变化及误差的反向传播隐含层权值变化

6、其中同理可得,2023/2/26,16,4.3 BP学习算法,对于f1为对数S型激活函数,对于f2为线性激活函数,2023/2/26,17,4.3 BP学习算法,误差反向传播过程实际上是通过计算输出层的误差ek,然后将其与输出层激活函数的一阶导数f2相乘来求得ki由于隐含层中没有直接给出目标矢量,所以利用输出层的ki反向传递来求出隐含层权值的变化量w2ki。然后计算同样通过将ei与该层激活函数的一阶导数f1相乘,而求得ij,以此求出前层权值的变化量w1ij如果前面还有隐含层,沿用上述同样方法依此类推,一直将输出误差ek逐层的反推算到第一层为止,2023/2/26,18,误差反向传播图形解释,2

7、023/2/26,19,4.3.2网络训练训练BP网络,需要计算网络加权输入矢量以及网络输出和误差矢量,然后求误差平方和当所训练矢量的误差平方和小于误差目标,训练停止;否则在输出层计算误差变化,且采用反向传播学习规则来调整权值,然后重复此过程网络完成训练后,对网络输入一个不是训练集合中的矢量,网络将以泛化方式给出输出结果,4.3 BP学习算法,2023/2/26,20,为了能够较好地掌握BP网络的训练过程,我们用两层网络为例来叙述BP网络的训练步骤初始化:用小的随机数初始化每一层的权值W和偏差B,保证网络不被大的加权输入饱和期望误差最小值error_goal最大循环次数max_epoch修正权

8、值的学习速率1r,一般情况下k0.0l,0.7,2023/2/26,21,变量表达:计算网络各层输出矢量A1和A2以及网络误差EA1tansig(W1*P,B1);A2purelin(W2*A1,B2);ET-A;权值修正:计算各层反传的误差变化D2和D1并计算各层权值的修正值以及新权值:D2deltalin(A2,E);D1deltatan(A1,D2,W2);dWl,dBllearnbp(P,D1,lr);dW2,dB21earnbp(A1,D2,1r);W1W1十dW1;B1B1十dBl;W2W2十dW2;B2B2十dB2,2023/2/26,22,4.3 BP学习算法,4.3.3 网络

9、设计 网络的层数 隐含层神经元数 初始权值的选取 学习速率 期望误差的选取,2023/2/26,23,网络的层数,理论上已经证明:具有偏差和至少一个S型隐含层加上一个线性输出层的网络,能够逼近任何有理函数 定理:增加层数主要可以进一步的降低误差,提高精度,但同时也使网络复杂化,从而增加了网络权值的训练时间。一般情况下应优先考虑增加隐含层中神经元数 仅用具有非线性激活函数的单层网络来解决问题没有必要或效果不好线性问题非线性问题,2023/2/26,24,隐含层神经元数,网络训练精度的提高,可以通过采用一个隐含层,而增加其神经元数的方法来获得。这在结构实现上,要比增加更多的隐含层简单得多在具体设计

10、时,比较实际的做法是通过对不同神经元数进行训练对比,然后适当地加上一点余量,2023/2/26,25,初始权值的选取,一般取初始权值在(-1,1)之间的随机数威得罗等人在分析了两层网络是如何对一个函数进行训练后,提出一种选定初始权值的策略选择权值的量级为在MATLAB工具箱中可采用函数nwlog.m或nwtan.m来初始化隐含层权值W1和B1。其方法仅使用在第一隐含层的初始值的选取上,后面层的初始值仍然采用随机取数,2023/2/26,26,学习速率,学习速率决定每一次循环训练中所产生的权值变化量大的学习速率可能导致系统的不稳定小的学习速率导致较长的训练时间,可能收敛很慢,不过能保证网络的误差

11、值不跳出误差表面的低谷而最终趋于最小误差值所以在一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。学习速率的选取范围在0.01-0.8之间,2023/2/26,27,期望误差值选取,在设计网络的训练过程中,期望误差值也应当通过对比训练后确定一个合适的值这个所谓的“合适”,是相对于所需要的隐含层的节点数来确定,因为较小的期望误差值是要靠增加隐含层的节点,以及训练时间来获得一般情况下,作为对比,可以同时对两个不同期望误差值的网络进行训练,最后通过综合因素的考虑来确定采用其中一个网络,4.4 BP网络的MATLAB仿真程序设计,4.4.1Matlab中BP网络的重要函数和基本功能 1、newf

12、f()功能 创建一个前向BP网络 格式 net=newff(PR,S1 S2 SN1,TF1 TF2 TFN1,BTF,BLF,PF)说明 net为创建的新BP网络 S1 S2 SN1为隐含层和输出层的神 经元个数,TF1 TF2 TFN1表示网络隐含层和输出层的传输函数,默认为tansig;BTF表示网络的训练函数默认traindm(动量BP算法进行修正);BLF表示网络的学习函数默认learndm;PF表示网络的性能函数,默认是mse,2、tansig()功能 正切sigmoid激活函数 格式 a=tansig(n)说明 正切Sigmoid函数把神经元的输入范围从R映射到(-1,1)3、l

13、ogsig()功能 对数sigmoid激活函数 格式 a=logsig(n)说明 对数Sigmoid函数把神经元的输入范围从R映射到(-1,1),4.4.2应用举例,1、用BP神经网络实现两类模式分类p=1-1-2-4;2 1 1 0;t=0 1 1 0;%创建BP网络和定义训练函数及参数NodeNum=8;%隐含层节点数TypeNum=1;%输出维数Epochs=1000;%训练次数TF1=logsig;TF2=logsig;,net=newff(minmax(p),NodeNum,TypeNum,TF1,TF2,trainlm);net.trainParam.epochs=Epochs;n

14、et.trainParam.goal=1e-5;net=train(net,p,t);p_test=1-1-2-4;2 0 1 0;t_test=0 0 1 0;x=sim(net,p_test);%测试,输出为预测值x=x0.5输出结果;x=0 0 1 0,4.4.2应用举例,2、求解函数逼近问题例4-2下面是单输入矢量和相对应的目标矢 量,试设计神经网络来实现这对数组的 函数关系 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

15、.396 0.3449 0.1816 0.0312-0.2183-0.3201;,%输入向量P和目标向量TP=-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-0.2183-0.3201;R,Q=size(P);S2,Q=size(T);S1=5;W1,B1=rands(S1,R);W2,B2=rands(S2,S1);,net=newff(minmax(P),5,1,tansig,pur

16、elin,traingd);net.trainParam.epochs=7000;net.performFcn=sse;net.trainParam.goal=0.02;net,tr=train(net,P,T);Y=sim(net,P);plot(P,T,P,Y,o),训练1000次的结果,训练次3000次的结果,训练7366次的结果,训练结束后的网络误差记录,2023/2/26,41,限制与不足需要较长的训练时间 完全不能训练 选取较小的初始权值采用较小的学习速率,但同时又增加了训练时间局部极小值 BP算法可以使网络权值收敛到一个解,但它并不能保证所求为误差超平面的全局最小解,很可能是一个

17、局部极小解,标准的BP 算法虽然原理简单,实现方便,但由于训练过程中为一较小的常数,因而存在收敛速度慢和局部极小的问题。对于复杂问题,训练过程需迭代几千、几万次才能收敛到期望的精度。因此,标准的BP 网络在很大程度上表现出它的不实用性,特别是对实时性很强的系统。为此就有了各种改进算法。,附加动量法,附加动量法使网络在修正权值时不仅考虑误差在梯度上的作用,而且考虑在误差曲面上变化趋势的影响;其中k为训练次数,mc为动量因子,一般取0.95左右;附加动量法的实质是将最后一次权值变化的影响通过一个动量因子来传递。,当动量因子的取值为零时,权值的变化仅是根据梯度下降法产生的。当动量因子的取值为1时,新

18、的权值变化为最后一次权值的变化,而依梯度法产生的变化部分则被忽略掉了。为此当增加了动量项后,促使权值的调节向着误差曲面底部的平均方向变化。可在一定程度上解决局部极小问题,但收敛速度仍然很慢。,附加动量法的应用,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-0.2183-0.3201;R,Q=size(P);S2,Q=size(T);S1=5;W1,B1=rands(S1,R);W2

19、,B2=rands(S2,S1);,net=newff(minmax(P),5,1,tansig,purelin,traingdx);net.trainParam.epochs=700;net.trainParam.mc=0.95;net.trainParam.lr=0.05;net.performFcn=sse;net.trainParam.goal=0.02;net,tr=train(net,P,T);Y=sim(net,P);plot(P,T,P,Y,o),采用动量法时的训练误差记录,自适应学习率调整法,在BP算法中,网络权值的调整取决于学习速率和梯度。在标准BP 算法中,学习速率是不变

20、的。而在自适应学习率调整法中,通常学习速率的调整准则是:检查权值的修正是否真正降低了误差函数,如果确实如此,则说明所选的学习率小了,可对其增加一个量;若不是则说明产生了过调,那么就应减小学习速率的值。,通过调整学习率(K),从而可得到比标准的BP算法更快的收敛速度。因此,将附加动量法和自适应学习率调整法两种策略结合起来,既可有效地抑制网络陷入局部极小,又有利于缩短学习时间。但上述两种改进方法都是在标准梯度下降法基础上发展起来的,它们只利用了目标函数对网络权值和阈值的一阶导数信息。因此,当用于较复杂的问题时,也还存在收敛速度不够快的问题。,自适应学习速率应用,P=-1:0.1:1T=-0.96-

21、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;R,Q=size(P);S2,Q=size(T);S1=5;W1,B1=rands(S1,R);W2,B2=rands(S2,S1);,net=newff(minmax(P),5,1,tansig,purelin,traingdx);net.trainParam.epochs=1000;%最大训练次数net.trainParam.lr=0.05

22、;%学习速率net.trainParam.lr_inc=1.05;%递增乘因子net.trainParam.lr_dec=0.7;%递减乘因子net.performFcn=sse;net.trainParam.goal=0;%期望误差最小值net,tr=train(net,P,T);Y=sim(net,P);plot(P,T,P,Y,o),例4-2 下表为某药品的销售情况,现构建一个三层的BP神经网络对药品的销售进行预测:输入层有3个结点,隐含层结点数为5个,隐含层的激活函数为tansig;输出层结点数为1,输出层的激活函数为logsig,并利用此网络,对药品的销售量进行预测,预测的方法为滚动

23、预测方式,即前三个月的预测第四个月的。,归一化就是要把数据统一到你想要的区间内a,b因为一般我们都是在区间0 1或-1 1效果比较好 所以就是归一化比较简单通用的公式:y=(x-min)/(max-min)归一到0 1y=(x-mean(x)/(max-min)归一到-1 1,%以每三个月的销售量经归一化处理后作为输入P=0.5152 0.8173 1.0000;0.8173 1.0000 0.7308;1.0000 0.7308 0.1390;0.7308 0.1390 0.1087;0.1390 0.1087 0.3520;0.1087 0.3520 0.0000;%以第四个月的销售量归一

24、化处理后作为目标向量T=0.7308 0.1390 0.1087 0.3520 0.0000 0.3761;,%创建一个BP网络,每一个输入向量的取值范围为【0,1】%隐含层有五个神经元,输出层有一个神经元,隐含层的%激活函数为tansig,输出层的激活函数为logsig,训练函数为梯度下降函数net=newff(0 1;0 1;0 1,5,1,tansig,logsig,traingd);net.trainParam.epochs=15000;net.trainParam.goal=0.01;%设置学习速率为0.1LP.lr=0.1;net=train(net,P,T);,训练结果:TRAI

25、NGD,Epoch 4650/15000,MSE 0.0100545/0.01,Gradient 0.0116063/1e-010TRAINGD,Epoch 4675/15000,MSE 0.010021/0.01,Gradient 0.0115691/1e-010TRAINGD,Epoch 4691/15000,MSE 0.00999959/0.01,Gradient 0.0115454/1e-010TRAINGD,Performance goal met.,训练函数为traingd(最速下降BP算法的训练函数),训练函数为traingdm(动量BP算法的训练函数),训练函数为traingdx(学习速率可变的动量BP算法的训练函数),练习4-1设计一个BP神经网络对曲线拟合。已知输入向量为 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)适用不同的传递函数和训练函数,对达到同一误差的训练次数进行对比,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号