各种BP学习算法MATLAB仿真.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
各种BP学习算法MATLAB仿真

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); y2=sim(net,x); err=y2-y1; res=norm(err); %暂停,按任意键继续 Pause %绘图,原图(蓝色光滑线)和仿真效果图(红色+号点线) plot(x,y1); hold on plot(x,y2,r+); 注意:由于各种不确定因素,可能对网络训练有不同程度的影响,产生不同的效果。如图3-8。 标准BP算法(traingd) 图3-8 标准BP算法的训练过程以及结果(原图蓝色线,仿真图+号线) 增加动量法(traingdm) 如图3-9。 图3-9 增加动量法的训练过程以及结果(原图蓝色线,仿真图+号线) 弹性BP算法(trainrp)如图3-10 图3-10 弹性BP算法的训练过程以及结果(原图蓝色线,仿真图+号线) 动量及自适应学习速率法(traingdx)如图3-11。 图3-11 动量及自适应学习速率法的训练过程以及结果(原图蓝色线,仿真图+号线) 共轭梯度法 (traincgf)如图3-12。 图3-12 共轭梯度法的训练过程以及结果(原图蓝色线,仿真图+号线) Levenberg-Marquardt算法(trainlm)如图3-13。 图3-13 Levenberg-Marquardt算法的训练过程以及结果(原图蓝色线,仿真图+号线) 3.3.3 各种算法仿真结果比较与分析 由上面的仿真结果可以得到下表的比较和下面的结论与分析:表3-2 表3-2各种BP学习算法MATLAB仿真结果比较 BP算法训练函数训练次数均方误差标准BP算法traingd20000.134968增加动量法traingdm20000.108883弹性BP算法trainrp20000.0135652动量及自适应学习速率法trangdx20000.0761264共轭梯度法traincgf7690Levenberg-Marquardt法trainlm610.0000098727 结论与分析: 从仿真结果可以看出,标准BP算法、增加动量发、弹性BP算法、动量及自适应学习速率法的收敛速度都不如共轭梯度法和Levenberg-Marquardt法(L-M算法)收敛速度明显的快。从仿真结果和均方误差综合来看,只有L-M算法达到了目标误差,可见对高要求的误差来说,L-M算法的优势要明显的多,其余均未达到目标误差;从均方误差的效果来看,所仿真的BP算法的优劣(从优到劣)顺序依次为L-M算法、共轭梯度法、弹性BP算法、动量及自适应学习速率法、增加动量法、标准BP算法。 从仿真效果图可以看出,L-M算法的效果最好,其次是共轭梯度法,其余均有不同范围内的失真。从误差曲线来看,L-M算法达到了目标误差(较高的误差),标准BP算法的误差曲线较粗,是因为较小范围振荡产生锯齿,在图形中由于间距加大,图形不断重叠而成,收敛速度很慢;增加动量法、弹性BP算法、动量及自适应学习速率法的误差曲线较为平滑,在刚开始收敛较快,在训练步数增加的时候,曲线趋于水平,收敛速度比较慢;共轭梯度法和L-M算法的误差曲线变化较大且产生局部锯齿状,说明不是最优,仍需要进行优化,其中L-M算法达到了目标误差。共轭梯度法在相邻迭代的正交方向搜索,综合误差曲线可知当接近极值时会产生锯齿形振荡。 再根据前面对各种BP改进算法的描述可知,弹性BP算法不需要进行搜索,需要内存比较小,因此在一些大型网络中比较适用,但是需要很长的训练时间。对收敛速度要求不高时也可使用动量及自适应学习速率法。在小型网络中,共轭梯度法仅次于L-M算法,但是L-M算法需要更大的内存做临时存储,对于较大复杂的网络和内存受限的设备来说不是很好的选择,但是对于小型网络来说却是首要选择。对训练时间允许的条件下,共轭梯度法和弹性BP算法是对复杂大型网络较好的选择。 其中共轭梯度法在训练的时候,训练次数为769次,均方误差为0均未达到所设定的要求,产生了

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档