《函数逼近基于matlab的bp神经网络应用21》由会员分享,可在线阅读,更多相关《函数逼近基于matlab的bp神经网络应用21(6页珍藏版)》请在金锄头文库上搜索。
1、1BP 神经网络逼近非线性函数1. BP 网络在函数逼近中的应用网络在函数逼近中的应用1.1 问题的提出BP 网络由很强的映射能力,主要用于模式识别分类、函数逼近、函数压缩等。下面将通过实例来说明 BP 网络在函数逼近方面的应用。要求设计一个BP网络,逼近以下函数:g(x)=1+sin(k*pi/4*x),实现对该非线性函数的逼近。其中,分别令k=1,2,4进行仿真,通过调节参数(如隐藏层节点个数等)得出信号的频率与隐层节点之间,隐层节点与函数逼近能力之间的关系。1.2 基于BP神经网络逼近函数步骤 1:假设频率参数 k=1,绘制要逼近的非线性函数的曲线。函数的曲线如图 3.2 所示k=1;p
2、=-1:.05:8;t=1+sin(k*pi/4*p);plot(p,t,-);title(要逼近的非线性函数);xlabel(时间);ylabel(非线性函数);图 1 要逼近的非线性函数曲线2步骤 2:网络的建立应用 newff()函数建立 BP 网络结构。 隐层神经元数目 n 可以改变, 暂设为 n=3, 输出层有一个神经元。选择隐层和输出层神经元传递函数分别为 tansig 函数和 purelin 函数,网络训练的算法采用 Levenberg Marquardt 算法 trainlm。n=3;net = newff(minmax(p),n,1,tansig purelin,trainl
3、m);对于初始网络,可以应用 sim()函数观察网络输出。y1=sim(net,p);figure;plot(p,t,-,p,y1,:)title(未训练网络的输出结果);xlabel(时间);ylabel(仿真输出-原函数-);同时绘制网络输出曲线,并与原函数相比较,结果如图 2 所示。图 2 未训练网络的输出结果其中 “” 代表要逼近的非线性函数曲线;“” 代表未经训练的函数曲线;因为使用 newff( )函数建立函数网络时,权值和阈值的初始化是随机的,所以网络输出结构很差,根本达不到函数逼近的目的,每次运行的结果也有时不同。步骤 3:网络训练3应用 train()函数对网络进行训练之前,
4、需要预先设置网络训练参数。将训练时间设置为 50,训练精度设置为 0.01,其余参数使用缺省值。训练后得到的误差变化过程如图 3 所示。图 3 训练过程net.trainParam.epochs=50; (网络训练时间设置为 50)net.trainParam.goal=0.01;(网络训练精度设置为 0.01)net=train(net,p,t);(开始训练网络)TRAINLM-calcjx, Epoch 0/50, MSE 9.27774/0.01, Gradient 13.3122/1e-010TRAINLM-calcjx, Epoch 3/50, MSE 0.00127047/0.01
5、, Gradient 0.0337555/1e-010TRAINLM, Performance goal met.从以上结果可以看出,网络训练速度很快,经过一次循环跌送过程就达到了要求的精度 0.01。步骤 4: 网络测试对于训练好的网络进行仿真:y2=sim(net,p);figure;plot(p,t,-,p,y1,:,p,y2, -)title(训练后网络的输出结果);xlabel(时间);ylabel(仿真输出);绘制网络输出曲线,并与原始非线性函数曲线以及未训练网络的输出结果曲线相比较,比较出来的结果如图 4 所示。4图 4 训练后网络的输出结果其中 “” 代表要逼近的非线性函数曲线
6、;“” 代表未经训练的函数曲线;“” 代表经过训练的函数曲线;从图中可以看出,得到的曲线和原始的非线性函数曲线很接近。这说明经过训练后,BP 网络对非线性函数的逼近效果比较好。1.3 不同频率下的逼近效果改变非线性函数的频率和 BP 函数隐层神经元的数目,对于函数逼近的效果有一定的影响。网络非线性程度越高,对于 BP 网络的要求越高,则相同的网络逼近效果要差一些;隐层神经元的数目对于网络逼近效果也有一定影响,一般来说隐层神经元数目越多,则 BP 网络逼近非线性函数的能力越强。下面通过改变频率参数和非线性函数的隐层神经元数目来加以比较证明。(1)频率参数设为 k=2,当隐层神经元数目分别取 n=
7、3、n=6 时,得到了训练后的网络输出结果如图 5,6 所示。5图 5 当 n=3 时训练后网络的输出结果图 6 当 n=6 时训练后网络的输出结果其中 “” 代表要逼近的非线性函数曲线;“” 代表未经训练的函数曲线;“” 代表经过训练的函数曲线;(2)频率参数设为 k=4,当隐层神经元数目分别取 n=6、n=8 时,得到了训练后的网络输出结果如图 7,8 所示。图 7 当 n=6 时训练后网络的输出结果图 8当 n=8 时训练后网络的输出结果其中 “” 代表要逼近的非线性函数曲线;“ ” 代表未经训练的函数曲线;“” 代表经过训练的函数曲线;(2)频率参数设为 k=8,当隐层神经元数目分别取
8、 n=10、n=15 时,得到了训练后的网络输出结果如图9,10 所示。6图 9 当 n=10 时训练后网络的输出结果图 10 当 n=15 时训练后网络的输出结果其中 “” 代表要逼近的非线性函数曲线;“ ” 代表未经训练的函数曲线;“” 代表经过训练的函数曲线;1.4讨论通过上述仿真结果可知,当 k=1,n=3 时;k=2,n=6 时; k=4,n=8 时;k=8,n=15 时,BP 神经网络分别对函数取得了较好的逼近效果。由此可见,n 取不同的值对函数逼近的效果有很大的影响。改变 BP网络隐层神经元的数目,可以改变 BP 神经网络对于函数的逼近效果。隐层神经元数目越多,则 BP 网络逼近非线性函数的能力越强。