




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3.3.2各种BP学习算法MATLAB仿真根据上面一节对BP神经网络的MATLAB设计,可以得出下面的通用的 MATLAB程序段,由于各种BP学习算法采用了不同的学习函数,所以只需要 更改学习函数即可。MATLAB程序段如下:x=-4:0.01:4;y1=sin(1/2)*pi*x)+sin(pi*x);%trainlm函数可以选择替换net=newff(minmax(x),1,15,1,tansig,tansig,purelin,trainlm);net.trainparam.epochs=2000;net.trainparam.goal=0.00001;net=train(net,x,y1
2、);y2=sim(net,x);err=y2-y1;res=norm(err);%暂停,按任意键继续Pause%绘图,原图(蓝色光滑线)和仿真效果图(红色+号点线)plot(x,y1);hold onplot(x,y2,r+);注意:由于各种不确定因素,可能对网络训练有不同程度的影响,产生不同 的效果。如图3-8。标准BP算法(traingd)jyjraiaiTLr vith THIFTC,匚营妄il 14i j lardn 1】?RarftomneeiB 0 1UT顷.Goal 域 1&-W5IQI I s I s 3Ejmimy wiHi I财ISCD邕1 叵胸Ella di!. Zj.a
3、r Imirt l-x-la liik*./ lirdn 1a2WQ EE#图3-8标准BP算法的训练过程以及结果(原图蓝色线,仿真图+号线)增加动量法(traingdm)如图3-9。:TmirUq *EiE TRili二-回区lil*i Edi ( Kiw ImxrL Lasix Juaktsp UjuLn IaLf&-Tic!8 -Ml-qhlE 三图3-9增加动量法的训练过程以及结果(原图蓝色线,仿真图+号线)L=心aum 芭W10W10HJ2DD 400舶 0 WO 1WM 1200 14Q0 TOO 1 勤 U 2000刘皿段师109Dp Trannj弹性BP算法(trainrp)如
4、图3-10乏.Einim vith HUlINRPw叵固Lili Ldi t i-n SeE IieJt Ivdctip tixdon tj+l-pP&rtoTTianEB k Q Q248Q3G. GgjI t; la-O0图 3-10弹性BP算法的训练过程以及结果(原图蓝色线,仿真图+号线)动量及自适应学习速率法(traingdx)如图3-11。Ei L+ Ek-t yj w Iirw*史匚eLk EklM liniir图3-11动量及自适应学习速率法的训练过程以及结果(原图蓝色线,仿真图+号线)共轭梯度法(traincgf)如图3-12。.-J-jEBiftint nth flUEirt
5、GF_ rnWil:IncM L Tc1e Qt-Ehiv)HLpy 口利* TRlIWWP巨回的I I图3-12共轭梯度法的训练过程以及结果(原图蓝色线,仿真图+号线)Levenberg-Marquardt 算法(trainlm)如图 3-13。图3-13 Levenberg-Marquardt算法的训练过程以及结果(原图蓝色线,仿真图+号线)3.3.3各种算法仿真结果比较与分析由上面的仿真结果可以得到下表的比较和下面的结论与分析:表3-2表3-2各种BP学习算法MATLAB仿真结果比较BP算法训练函数训练次数均方误差标准BP算法traingd20000.134968增加动量法traingd
6、m20000.108883弹性BP算法trainrp20000.0135652动量及自适应学习速率法trangdx20000.0761264共轭梯度法traincgf7690.00499915Levenberg-Marquardt 法trainlm610.0000098727结论与分析:从仿真结果可以看出,标准BP算法、增加动量发、弹性BP算法、动量及 自适应学习速率法的收敛速度都不如共轭梯度法和Levenberg-Marquardt法(L-M 算法)收敛速度明显的快。从仿真结果和均方误差综合来看,只有L-M算法达 到了目标误差,可见对高要求的误差来说,L-M算法的优势要明显的多,其余均 未达
7、到目标误差;从均方误差的效果来看,所仿真的BP算法的优劣(从优到劣) 顺序依次为L-M算法、共轭梯度法、弹性BP算法、动量及自适应学习速率法、 增加动量法、标准BP算法。从仿真效果图可以看出,L-M算法的效果最好,其次是共轭梯度法,其余均 有不同范围内的失真。从误差曲线来看,L-M算法达到了目标误差(较高的误差), 标准BP算法的误差曲线较粗,是因为较小范围振荡产生锯齿,在图形中由于间 距加大,图形不断重叠而成,收敛速度很慢;增加动量法、弹性BP算法、动量 及自适应学习速率法的误差曲线较为平滑,在刚开始收敛较快,在训练步数增加 的时候,曲线趋于水平,收敛速度比较慢;共轭梯度法和L-M算法的误差
8、曲线 变化较大且产生局部锯齿状,说明不是最优,仍需要进行优化,其中L-M算法 达到了目标误差。共轭梯度法在相邻迭代的正交方向搜索,综合误差曲线可知当 接近极值时会产生锯齿形振荡。再根据前面对各种BP改进算法的描述可知,弹性BP算法不需要进行搜索, 需要内存比较小,因此在一些大型网络中比较适用,但是需要很长的训练时间。 对收敛速度要求不高时也可使用动量及自适应学习速率法。在小型网络中,共轭 梯度法仅次于L-M算法,但是L-M算法需要更大的内存做临时存储,对于较大 复杂的网络和内存受限的设备来说不是很好的选择,但是对于小型网络来说却是 首要选择。对训练时间允许的条件下,共轭梯度法和弹性BP算法是对
9、复杂大型 网络较好的选择。其中共轭梯度法在训练的时候,训练次数为769次,均方误差为0.00499915,均 未达到所设定的要求,产生了“ Minimum step size reached, performance goal was not met的结果。可能意味着子区间的长度与计算机舍入误差相当,无法继续计 算了,原因可能是有奇点(无限小且不实际存在),另外也存在是初值问题,理 论上得知:共轭梯度法最大局限是依赖于初值,在有限的迭代次数内可能既不能 搜索到全局极值也不能搜索到局部极值。因此该算法适用于精度要求比较低的高 维网络之中。3.3.4调整初始权值和阈值的仿真在分析了初始权值设置影响
10、因素对 BP神经网络的影响,下面首先通过 MATLAB程序段一,通过随机设置权值初始化网络方式获取训练好的阈值和权 值,作为MATLAB程序段二的初始化值。由此进行仿真分析。如图3-14。MATLAB程序段一:x=-4:0.01:4;y1=sin(1/2)*pi*x)+sin(pi*x);net=newff(minmax(x),1,15,1,tansig,tansig,purelin,trainlm);net.trainparam.epochs=2000;net.trainparam.goal=0.00001;%初始化网络,用newff创建网络,其权值和阈值初始化函数的默认值是 initnw。
11、%initnw据Nguyen-Widrow规则初始化算法对网络层的权值和阈值进行初始 %化,该算法的初始化值,可以使网络层中每个神经元的作用范围近似地在 %网络层的输入空间均匀分布。与纯随机初始化权值和阈值的方法比较, %初始化算法有以下优点:神经元的浪费少(因为所有神经元都分布在输 %入空间内);网络的训练速度快(因为输入空间的每一个区域都有神经 %元);这里是用rands重新设置权值和阈值。net.layers1.initFcn=initnw;net.layers2.initFcn=initnw;net.inputWeights1,1.initFcn=rands;net.inputWeig
12、hts2,1.initFcn=rands;net.biases1,1.initFcn=rands;net.biases2,1.initFcn=rands;net=init(net);%查看初始化后的权值和阈值net.iw1,1net.b1net.lw2,1net.b2net=train(net,x,y1);%得出训练好的权值和阈值供MATLAB程序段二使用net.iw1,1net.b1net.lw2,1net.b2y2=sim(net,x);err=y2-y1;res=norm(err);pauseplot(x,y1);hold onplot(x,y2,r+);MATLAB程序段二:x=-4:
13、0.01:4;y1=sin(1/2)*pi*x)+sin(pi*x);net=newff(minmax(x),1,15,1,tansig,tansig,purelin,trainlm);net.trainparam.epochs=2000;net.trainparam.goal=0.00001;%从程序段一得出的数据net.iw1,1=-0.3740;net.b1=-0.1930;net.lw2,1=-20.7192;19.6478;10.9678;-9.4500;21.3555;6.7648;-20.7057;-6.10 23;-9.4889;-12.7880;-15.5183;-13.96
14、43;-21.2201;29.9987;-15.3738;net.b2=21.2768;-16.9303;-7.9953;4.8688;-6.6081;-1.3465;-0.8528;-1.2791;-4 .7658;-15.4970;-9.2069;-10.5259;-20.1442;3.5287;-13.6953;net=train(net,x,y1);y2=sim(net,x);err=y2-y1;res=norm(err);pauseplot(x,y1);hold onplot(x,y2,r+);i L* EhE 3;*b riurl: Ja 9 9-7&12a-DDS GcasA m
15、 14-005isL TftiiHLJI|CIE)lli Idi L U1154ft Twls *li;理,5 相g UpiFmisnce 岭 9 3713fl-0DE Gnsi IB 1 iM51/I 214J& JO IM m 140160|岫ri巧|1伊曰m底(a)随机设置权值误差曲线图(b)获取训练好的阈值和权值误差曲线图图3-14两程序段运行后误差曲线图从上面的仿真结果看,第一个程序用随机的初始权值和阈值达到目标误差完 成训练需要264个回合,而选用已训练好的权值和阈值仅用167个回合就完成了 训练,因此选择合适的初始化权值和阈值将加速网络的训练,大大提高了学习的 收敛速度。因此关于
16、设置网络初始权值和阈值的优化方法是一个值得研究的问题。 3.3.5其他影响因素仿真在算法选择上,在下面的仿真中将使用L-M算法测试其他影响因素,比如 通过选择不同的激活函数、修改学习步长和目标误差等观察对仿真曲线的影响程 度。如果将输入层激活函数设置为 purelin,x=-4:0.1:4,epochs=1000,goal=0.001, 其余不变则会产生如下结果:经过多次反复实验,有时不能达到目标误差,有时 又很快达到目标误差,且仿真效果会产生不同程度的失真或有时效果很好。如果 将输入层激活函数设为tansig,则学习很快收敛且达到目标误差,仿真效果很好, 且多次仿真结果比较稳定,明显要比输入
17、层激活函数设为purelin要好。如果将 这三层神经元的激活函数都设置为tansig的话,在多次试验中,训练回合数为 1000,均未达到目标误差0.001的要求。3.4 BP神经网络在样本分类中的应用3.4.1问题的提出这是一个用BP神经网络来将不同的混合在一起的数据或者样本进行分类的 例子。利用上述研究的结果,采用15个隐层节点。我们先自己随机的输入两个 样本:%产生训练样本与测试样本,每一列为一个样本P1 = rand(3,5),rand(3,5)+1,rand(3,5)+2;T1 = repmat(1;0;0,1,5),repmat(0;1;0,1,5),repmat(0;0;1,1,5
18、);P2 = rand(3,5),rand(3,5)+1,rand(3,5)+2;T2 = repmat(1;0;0,1,5),repmat(0;1;0,1,5),repmat(0;0;1,1,5);%然后再将样本归一化处理,这样有利于我们简便、准确、定量结果。PN1,minp,maxp = premnmx(P1);PN2 = tramnmx(P2,minp,maxp);%第三部则是设置网络参数NodeNum = 15; %隐层节点数TypeNum = 3; % 输出维数TF1 = tansig;TF2 = purelin; % 判别函数(缺省值)%TF1 = tansig;TF2 = log
19、sig;%TF1 = logsig;TF2 = purelin;%TF1 = tansig;TF2 = tansig;%TF1 = logsig;TF2 = logsig;%TF1 = purelin;TF2 = purelin;3.4.2基于BP神经网络的样本分类%一切工作准备就绪后我们就可以开始训练网络了:net = newff(minmax(PN1),NodeNum TypeNum,TF1 TF2);指定训练参数,我们可以选择不同的算法来进行测试做比较:% net.trainFcn = traingd; % 梯度下降算法% net.trainFcn = traingdm; % 动量梯度下
20、降算法% net.trainFcn = traingda; %变学习率梯度下降算法% net.trainFcn = traingdx; %变学习率动量梯度下降算法% (大型网络的首选算法-模式识别)% net.trainFcn = trainrp; % RPROP(弹性 BP)算法,内存需求最小%共轭梯度算法% net.trainFcn = traincgf; % Fletcher-Reeves 修正算法% net.trainFcn = traincgp; % Polak-Ribiere 修正算法,内存需求比 Fletcher-Reeves 修正算法略大% net.trainFcn = tra
21、incgb; % Powell-Beal 复位算法,内存需求比 Polak-Ribiere 修正 算法略大% (大型网络的首选算法-函数拟合,模式识别)% net.trainFcn = trainscg;% Scaled Conjugate Gradient 算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多% net.trainFcn = trainbfg; % Quasi-Newton Algorithms - BFGS Algorithm,计算量 和内存需求均比共轭梯度算法大,但收敛比较快% net.trainFcn = trainoss; % On
22、e Step Secant Algorithm,计算量和内存需求均比BFGS算法小,比共轭梯度算法略大% (中小型网络的首选算法-函数拟合,模式识别)net.trainFcn = trainlm; % Levenberg-Marquardt 算法,内存需求最大,收敛速度最快% net.trainFcn = trainbr; % 贝叶斯正则化算法% 有代表性的五种算法为:traingdx,trainrp,trainscg,trainoss, trainlmnet.trainParam.show = 1; % 训练显示间隔net.trainParam.lr = 0.3; % 学习步长 -train
23、gd,traingdmnet.trainParam.mc = 0.95; % 动量项系数 -traingdm,traingdxnet.trainParam.mem_reduc = 10; % 分块计算 Hessian 矩阵(仅对Levenberg-Marquardt 算法有效)net.trainParam.epochs = 1000; % 最大训练次数net.trainParam.goal = 1e-8; %最小均方误差net.trainParam.min_grad = 1e-20; %最小梯度net.trainParam.time = inf; %最大训练时间%训练与测试net = trai
24、n(net,PN1,T1); % 训练%测试Y1 = sim(net,PN1); %训练样本实际输出Y2 = sim(net,PN2); %一切工作准备就绪后我们就可以开始训练网络了:net = newff(minmax(PN1),NodeNum TypeNum,TF1 TF2);指定训练参数,我们可以选择不同的算法来进行测试做比较:% net.trainFcn = traingd; % 梯度下降算法% net.trainFcn = traingdm; % 动量梯度下降算法% net.trainFcn = traingda; %变学习率梯度下降算法% net.trainFcn = traing
25、dx; %变学习率动量梯度下降算法% (大型网络的首选算法-模式识别)% net.trainFcn = trainrp; % RPROP(弹性 BP)算法,内存需求最小%共轭梯度算法% net.trainFcn = traincgf; % Fletcher-Reeves 修正算法% net.trainFcn = traincgp; % Polak-Ribiere 修正算法,内存需求比 Fletcher-Reeves 修正算法略大% net.trainFcn = traincgb; % Powell-Beal 复位算法,内存需求比 Polak-Ribiere 修正算法略大% (大型网络的首选算法
26、-函数拟合,模式识别)% net.trainFcn = trainscg;% Scaled Conjugate Gradient 算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多% net.trainFcn = trainbfg;% Quasi-Newton Algorithms - BFGS Algorithm,计算量 和内存需求均比共轭梯度算法大,但收敛比较快% net.trainFcn = trainoss; % One Step Secant Algorithm,计算量和内存需求均比BFGS算法小,比共轭梯度算法略大% (中小型网络的首选算法-函
27、数拟合,模式识别)net.trainFcn = trainlm; % Levenberg-Marquardt 算法,内存需求最大,收敛速度最快% net.trainFcn = trainbr; % 贝叶斯正则化算法% 有代表性的五种算法为:traingdx,trainrp,trainscg,trainoss,trainlmnet.trainParam.show = 1; % 训练显示间隔net.trainParam.lr = 0.3; % 学习步长 -traingd,traingdmnet.trainParam.mc = 0.95; % 动量项系数 -traingdm,traingdxnet.
28、trainParam.mem_reduc = 10; % 分块计算 Hessian 矩阵(仅对Levenberg-Marquardt 算法有效)net.trainParam.epochs = 1000; % 最大训练次数net.trainParam.goal = 1e-8; %最小均方误差net.trainParam.min_grad = 1e-20; %最小梯度net.trainParam.time = inf; %最大训练时间%训练与测试net = train(net,PN1,T1); % 训练%测试Y1 = sim(net,PN1); %训练样本实际输出Y2 = sim(net,PN2)
29、; %测试样本实际输出Y1 = full(compet(Y1); Y2 = full(compet(Y2); % 竞争输出测试结果(Levenberg-Marquardt 算法):训练输出结果如图3-15,测试输出结果如图3-16。图3-15训练样本竞争输出结果图3-16测试样本竞争输出结果步骤5:结果统计Result = sum(abs(T1-Y1) % 正确分类显示为 1Percentl = sum(Result)/length(Result) % 训练样本正确分类率Result = sum(abs(T2-Y2) % 正确分类显示为 1Percent2 = sum(Result)/leng
30、th(Result) % 测试样本正确分类率参考文献王强.利用人工神经网络实现函数逼J.计算机仿真,2002, (05): 2260.王美玲.利用于非线性函数逼近的小波神经网络算法仿真J.北京理工大学学报,2002, (03): 1027.郝昕玉,姬长英.非线性系统的神经-模糊建模方法的研究J.江西农业学报,2008, (9):1229.孙帆,施学勤.基于MATLAB的BP神经网络设计J.计算机与数学工程,2007,35(8): 5570.张葛祥,李娜.MATLAB仿真技术与应用M.北京:清华大学出版社,2003: 1-9.余华,吴文全,曹亮.BP神经网络的改进算法及其应用J.电脑知识与技术,
31、2009, 5(19): 5256-5258.苏高利,邓芳萍.论基于MATLAB语言的BP神经网络的改进算法J.科技通报,2003,19: 130-135.冯蓉,杨建华.基于BP神经网络的函数逼近的MATLAB实现J.榆林学院学报,2007,:20-22.韩力群.人工神经网络理论设计及应用M.北京:化工工业社,2002: 5-15.蒋良孝,李超群基于BP神经网络的函数逼近及其datlab实现J.微型机与应用2004,1: 52-53.郑君里,杨行峻.人工神经网络M.北京:高等教育出版社,1992,5:15-30.郝中华.B P神经网络的非线性思想J.洛阳师范学院报,2008, 3(4):23-57.巨军让,卓戎.B P神经网络在Matlab中的方便实现J.新疆石油学院学报,2008, 2(1):113-221.蒋宗礼.人工神经网络导论M.高等教育出版社,2001:15-90.闻新,周露,王丹力,熊晓英.MATLAB神经网络应用设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海南省省直辖县级行政单位文昌市文昌中学2024-2025学年高三第五次月考(4月)化学试题
- 2025年员工三级安全培训考试试题及答案(夺冠)
- 25年企业主要负责人安全培训考试试题【考点提分】
- 2025新员工入职安全培训考试试题附完整答案(必刷)
- 2025生产经营单位安全培训考试试题含下载答案可打印
- 2025年部门安全培训考试试题及完整答案【历年真题】
- 25年公司安全管理员安全培训考试试题满分必刷
- 2025年各个班组安全培训考试试题答案预热题
- 喀什职业技术学院《生物医学检验技术》2023-2024学年第二学期期末试卷
- 江苏省徐州市重点中学2025届高三年级第二次校模拟考试生物试题含解析
- GB/T 9775-2008纸面石膏板
- GB/T 12604.4-2005无损检测术语声发射检测
- GB/T 1229-2006钢结构用高强度大六角螺母
- 多中心结直肠癌临床研究生物样本库信息系统的建设与管理
- 消防管道支架制作安装标准2017.喷淋
- 曲柄连杆机构拆装教学教材课件
- 合格供应商年度评审计划
- 培训考试汇总金属胶接工艺简介
- Q-RJ 557-2017 航天型号产品禁(限)用工艺目录(公开)
- ZGM95G-1型中速辊式磨煤机使用和维护说明书
- SZ系列GPS标准时间同步钟使用说明
评论
0/150
提交评论