您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用(1)
第四章BP网络主要内容4.1BP网络简介4.2BP网络模型4.3BP学习算法4.4BP网络的MATLAB仿真程序设计4.1BP网络简介1、BP算法的出现1974年,Werbos在其博士论文中提出了第一个适合多层网络的学习算法,但是没有受到重视。20世纪80年代中期,美国加利福尼亚的PDP小组的Rumelhart、Hinton和Williams1986年独立地给出了BP算法清楚而简单的描述,并将其用于神经网络的研究,才使之成为迄今为止最著名的多层网络学习算法---BP算法,由此算法训练的神经网络,称之为BP神经网络。2、弱点:训练速度非常慢、局部极小点的逃离问题、算法不一定收敛。3、优点:广泛的适应性和有效性。4、应用BP网络主要用于下述方面函数逼近:用输入矢量和相应的输出矢量训练一个网络逼近一个函数模式识别和分类:用一个特定的输出矢量将它与输入矢量联系起来;数据压缩:减少输出矢量维数以便于传输或存储4.2网络模型x1o1输出层隐藏层输入层x2o2omxn…………………4.2网络模型感知器和自适应线性元件的主要差别在激活函数上:前者是二值型的,后者是线性的BP网络具有一层或多层隐含层,除了在多层网络上与前面已介绍过的模型有不同外,其主要差别也表现在激活函数上。BP网络的激活函数必须是处处可微的,因此它不能采用二值型的阀值函数{0,1}或符号函数{-1,1}BP网络经常使用的激活函数是S型函数,包括对数(logsig)或正切激活函数(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+bnetac=a+b/20S型函数的优点S型函数具有非线性放大系数功能,可以把输入从负无穷大到正无穷大的信号,变换成-1到l之间输出对较大的输入信号,放大系数较小;而对较小的输入信号,放大系数则较大采用S型激活函数可以处理和逼近非线性输入/输出关系4.3BP学习算法4.3.1简单介绍BP算法属于δ算法,是一种监督式的学习算法主要思想对于q个输入学习样本:P1,P2,…,Pq,已知与其对应的输出样本为:T1,T2,…,Tq使网络输出层的误差平方和达到最小用网络的实际输出A1,A2,…,Aq,与目标矢量T1,T2,…,Tq之间的误差修改其权值,使Am与期望的Tm,(m=l,…,q)尽可能接近4.3BP学习算法BP算法是由两部分组成,信息的正向传递与误差的反向传播正向传播过程中,输入信息从输入层经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态如果在输出层未得到期望的输出,则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通路反传回来修改各层神经元的权值直至达到期望目标2020/7/17124.3BP学习算法假设输入为P,输入神经元有r个,隐含层内有s1个神经元,激活函数为F1,输出层内有s2个神经元,对应的激活函数为F2,输出为A,目标矢量为T2020/7/17134.3BP学习算法信息的正向传递隐含层中第i个神经元的输出输出层第k个神经元的输出定义误差函数2020/7/1714利用梯度下降法求权值变化及误差的反向传播输出层的权值变化其中同理可得2020/7/17154.3BP学习算法利用梯度下降法求权值变化及误差的反向传播隐含层权值变化其中同理可得2020/7/17164.3BP学习算法对于f1为对数S型激活函数,对于f2为线性激活函数2020/7/17174.3BP学习算法误差反向传播过程实际上是通过计算输出层的误差ek,然后将其与输出层激活函数的一阶导数f2’相乘来求得δki由于隐含层中没有直接给出目标矢量,所以利用输出层的δki反向传递来求出隐含层权值的变化量Δw2ki。然后计算同样通过将ei与该层激活函数的一阶导数f1’相乘,而求得δij,以此求出前层权值的变化量Δw1ij如果前面还有隐含层,沿用上述同样方法依此类推,一直将输出误差ek逐层的反推算到第一层为止2020/7/1718误差反向传播图形解释2020/7/17194.3.2网络训练训练BP网络,需要计算网络加权输入矢量以及网络输出和误差矢量,然后求误差平方和当所训练矢量的误差平方和小于误差目标,训练停止;否则在输出层计算误差变化,且采用反向传播学习规则来调整权值,然后重复此过程网络完成训练后,对网络输入一个不是训练集合中的矢量,网络将以泛化方式给出输出结果4.3BP学习算法2020/7/1720为了能够较好地掌握BP网络的训练过程,我们用两层网络为例来叙述BP网络的训练步骤初始化:用小的随机数初始化每一层的权值W和偏差B,保证网络不被大的加权输入饱和期望误差最小值error_goal最大循环次数max_epoch修正权值的学习速率1r,一般情况下k=0.0l,0.72020/7/1721变量表达:计算网络各层输出矢量A1和A2以及网络误差EA1=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十dB22020/7/17224.3BP学习算法4.3.3网络设计网络的层数隐含层神经元数初始权值的选取学习速率期望误差的选取2020/7/1723网络的层数理论上已经证明:具有偏差和至少一个S型隐含层加上一个线性输出层的网络,能够逼近任何有理函数定理:增加层数主要可以进一步的降低误差,提高精度,但同时也使网络复杂化,从而增加了网络权值的训练时间。一般情况下应优先考虑增加隐含层中神经元数仅用具有非线性激活函数的单层网络来解决问题没有必要或效果不好线性问题非线性问题2020/7/1724隐含层神经元数网络训练精度的提高,可以通过采用一个隐含层,而增加其神经元数的方法来获得。这在结构实现上,要比增加更多的隐含层简单得多在具体设计时,比较实际的做法是通过对不同神经元数进行训练对比,然后适当地加上一点余量2020/7/1725初始权值的选取一般取初始权值在(-1,1)之间的随机数威得罗等人在分析了两层网络是如何对一个函数进行训练后,提出一种选定初始权值的策略选择权值的量级为在MATLAB工具箱中可采用函数nwlog.m或nwtan.m来初始化隐含层权值W1和B1。其方法仅使用在第一隐含层的初始值的选取上,后面层的初始值仍然采用随机取数2020/7/1726学习速率学习速率决定每一次循环训练中所产生的权值变化量大的学习速率可能导致系统的不稳定小的学习速率导致较长的训练时间,可能收敛很慢,不过能保证网络的误差值不跳出误差表面的低谷而最终趋于最小误差值所以在一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。学习速率的选取范围在0.01-0.8之间2020/7/1727期望误差值选取在设计网络的训练过程中,期望误差值也应当通过对比训练后确定一个合适的值这个所谓的“合适”,是相对于所需要的隐含层的节点数来确定,因为较小的期望误差值是要靠增加隐含层的节点,以及训练时间来获得一般情况下,作为对比,可以同时对两个不同期望误差值的网络进行训练,最后通过综合因素的考虑来确定采用其中一个网络4.4BP网络的MATLAB仿真程序设计4.4.1Matlab中BP网络的重要函数和基本功能1、newff()功能创建一个前向BP网络格式net=newff(PR,[S1S2…SN1],{TF1TF2…TFN1},BTF,BLF,PF)说明net为创建的新BP网络S1S2…SN1为隐含层和输出层的神经元个数TF1TF2…TFN1表示网络隐含层和输出层的传输函数,默认为‘tansig’;BTF表示网络的训练函数默认‘traindm’(动量BP算法进行修正);BLF表示网络的学习函数默认‘learndm’;PF表示网络的性能函数,默认是‘mse’2、tansig()功能正切sigmoid激活函数格式a=tansig(n)说明正切Sigmoid函数把神经元的输入范围从R映射到(-1,1)3、logsig()功能对数sigmoid激活函数格式a=logsig(n)说明对数Sigmoid函数把神经元的输入范围从R映射到(-1,1)4.4.2应用举例1、用BP神经网络实现两类模式分类p=[1-1-2-4;2110];t=[0110];%创建BP网络和定义训练函数及参数NodeNum=8;%隐含层节点数TypeNum=1;%输出维数Epochs=1000;%训练次数TF1='logsig';TF2='logsig';net=newff(minmax(p),[NodeNum,TypeNum],{TF1,TF2},'trainlm');net.trainParam.epochs=Epochs;net.trainParam.goal=1e-5;net=train(net,p,t);p_test=[1-1-2-4;2010];t_test=[0010];x=sim(net,p_test);%测试,输出为预测值x=x0.5输出结果;x=001000.511.522.533.544.5510-610-510-410-310-210-11005EpochsTraining-BlueGoal-BlackPerformanceis3.1775e-006,Goalis1e-0054.4.2应用举例2、求解函数逼近问题例4-2下面是单输入矢量和相对应的目标矢量,试设计神经网络来实现这对数组的函数关系P=-1:0.1:1T=[-0.96-0.577-0.07290.3770.6410.660.4610.1336-0.201-0.434-0.5-0.393–0.16470.09880.30720.3960.34490.1816–0.0312-0.2183-0.3201];%输入向量P和目标向量TP=-1:0.1:1T=[-0.96-0.577-0.07290.3770.6410.660.4610.1336-0.201-0.434-0.5-0.393-0.16470.09880.30720.3960.34490.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'},'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’)-1-0.8-0.6-0.4-0.200.20.40.60.81-1-0.8-0.6-0.4-0.200.20.40.60.8训练1000次的结果-1-0.8-0.6-0.4-0.200.20.40.60.81-1-0.8-0.6-0.4-0.200.20.40.60.8训练次3000次的结果-1-0.8-0.6-0.4-0.200.20.40.60.81-1-0.8-0.6-0.4-0.200.20.40.60.8训练7366次的结果0100020003000400050006000700010
本文标题:标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用(1)
链接地址:https://www.777doc.com/doc-6572490 .html