BP神经网络逼近非线性函数_第1页
BP神经网络逼近非线性函数_第2页
BP神经网络逼近非线性函数_第3页
BP神经网络逼近非线性函数_第4页
BP神经网络逼近非线性函数_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、应用BP神经网络逼近非线性函一、实验要求1、逼近的非线性函数选取为 y=sin(x i)+cos(x 2),其中有两个自变量即 xi,X2,一个因变 量即v。2、逼近误差5%即:应用测试数据对网络进行测试时,神经网络的输出与期望值的最 大误差的绝对值小于期望值的5%3、学习方法为经典的 BP算法或改进形式的 BP算法,鼓励采用改进形式的 BP算法。4、不允许采用 matlab中现有的关于神经网络建立、学习、仿真的任何函数及命令。二、实验基本原理神经网络概述BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传播,误差反向传播。在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层

2、。每一层的神经元状态只影响下一层神经元状态。 如果输出层得不到期望输出,则转入反向传播,根据预判误 差调整网络权值和阈值,从而使 BP神经网络预测输出不断逼近期望输出。 BP神经网络的拓 扑结构如图所示。BP神经网络预测前首先要训练网络,通过训练使网络具有联想记忆和预测能力。BP神经网络的训练过程包括以下几个步骤。步骤1:网络初始化。根据系统输入输出序列(X,Y)确定网络输入层节点数 n、隐含层节 点数l、输出层节点数 m,初始化输入层、隐含层和输出层神经元之间的连接权值co j , Wjk, 初始化隐含层阈值 a,输出层阈值b,给定学习速率和神经元激励函数。步骤2:隐含层输出计算。根据输入变

3、量X,输入层和隐含层间连接权值coij以及隐含层阈值a,计算隐含层输出 HonHj f(jXi aj) j=1,2, .,Ii 1般选取为式中,I为隐含层节点数,f为隐含层激励函数,该函数有多种形式,f(x)步骤3:输出层输出计算。根据隐含层输出H,连接权值co jk和阈值b,计算BP神经网络预测输出O。jk bkk=1,2,mlOk Hjj 1步骤4:误差计算。根据网络预测输出O和期望输出Y,计算网络预测误差e。步骤5:权值更新。步骤6:阈值更新。ekYkOk根据网络预测误差ij Hj(1jk根据网络预测误差aj aj Hj(1bkbkekk=1,2,me更新网络连接权值3 jmHj)x(i

4、)jkeki=1,2,k 1j=1,2,e更新网络节点阈值 amH j )jk ekk 1k=1,2,CO jk,n j=1,2,l k=1,2,boj=1,2,,l,mJ,m2。步骤7:判断算法迭代是否结束,若没有结束,返回步骤附加动量法经典BP神经网络采用梯度修正法作为权值和阈值的学习算法,从网络预测误差的负梯 度方向修正权值和阈值,没有考虑以前经验的积累,学习过程收敛缓慢。对于这个问题,可以采用附加动量法来解决,带附加动量的算法学习公式为(k) (k 1)(k) a (k 1) (k 2)式中,co (k) , co (k-1) , co (k-2)分别为k, k-1 , k-2时刻的权

5、值;a为动量学习率,一般 取值为。程序流程图开好三、程序简述本次实验选择逼近的非线性函数为y=sin(x i)+cos(x 2)。程序首先创建用于神将网路训练的样本数据,取在区间,之间均匀分布的数值,由于有两个自变量,所以一共产生361组输入输出数据。其次确定神经网络的训练参数,比如隐含层节点数、学习速率、学习目标、 隐含层和输出层的权值阈值等,其中隐含层节点数在参考相关资料后确定为9,这样不仅在训练结束后可以获得较小的误差,而且也不会使训练次数过大从而耗时较长;程序中隐含层和输出层的权值阈值是采取随机产生的方法获得的,并且之后的修改方法采用了附加动量法,减少训练次数加快网络收敛。由于 mat

6、lab可以采用矩阵运算的形式,所以输入输出数据和 网络权值阈值构建生成相应的矩阵,这样可以在全部数据遍历一次之后再进行权值阈值修改,同样可以缩短网络训练时间。最后,根据修正后的权值阈值就输入数据预测网路输出,和期望输出数据进行比较,计算输出误差,直至训练结束根据训练结果画出相应图像。最初程序中神经网络训练只有当最大预测误差小于5%之后才停止,实际情况中,当输出接近0时只要有微小的变化就会产生较大的误差,这样不仅导致网络训练次数增加耗时长,还会使网络收敛速度变慢;在经过查询相关资料之后,训练结束条件除了最大预测误差小于 5诙外,还增加了目标函数,目标函数是取所有误差的平方和,当目标函数的计算值小

7、于预期目标时同样也会停止训练,此时默认训练已达目标。 在实际检验过程中发现,加入目标函数后不仅可以有效地改善收敛速度慢耗时长的问题,同时各个坐标点的预测误差也在期望值之内,达到了实验要求。四、实验结果由于程序中权值阈值的取值是随机的,所以取其中一次的结果展示。最大训练次数为 15329,训练结束后的最大误差为。File Edit Mew Insert T a altDf sktcip Wlrdi&w H*lpu Tk : 、*”?与 a * cl 3 I o图1非线性函数图像图2网络图XI Edit View In&erl Tod 弓 DeskTop wlrdcwv 口_ LZ? dl 捻 I

8、 区 、。p | Hz) n图 3 误差曲线程序:clcclear%创建输入数据,产生361 组输入输出数据row = 1;for i=:for j=:input(row,1) = i;input(row,2) = j;output(row,1) = sin(input(row,1) + cos(input(row,2);row = row+1;endend%神经网络结构inputnum = 2;%输入层节点数hiddennum = 9;%隐含层节点数outputnum = 1;%输出层节点数%网络参数learnSpeed = ;%学习率learnGoal = ; % 目标%隐含层及输出层的权

9、值和阈值w1 = *rand(hiddennum,inputnum);b1 = *rand(hiddennum,1);w2 = *rand(outputnum,hiddennum);b2 = *rand(outputnum,1);%取训练数据和预测数据%采用全部样本遍历一次后再进行权值阈值调整%调整采用附加动量法, 加快收敛速度,减少遍历次数input_train = input ones(361,1);output_train = output;HH = w1 b1;OO = w2 b2;collectHH = ;collectOO = ;卿训练数据训练BP神经网络aimJ = 0;max_

10、rate=100; % 初始化最大样本误差trainNum = 0; % 初始化训练次数while(max_ratelearnGoal)collectHiddenOut = logsig(HH*input_train); %计算隐含层输出hiddenOut = collectHiddenOut ones(361,1);networkOut = OO*hiddenOut; % 计算网络输出error = output_train-networkOut; %计算误差% 利用目标函数,判断是否结束循环aimJ = sumsqr(error)if (aimJlearnGoal)break;end% 统

11、计训练次数trainNum = trainNum+1;% 权值阈值调整因子factor2 = error;factor1 = w2*factor2.*collectHiddenOut.*(1-collectHiddenOut);% 调整权值和阈值调节量dHH = factor1*input_train;dOO = factor2*hiddenOut;% 权值阈值调整if (trainNum3)HH = HH + learnSpeed*dHH;OO = OO + learnSpeed*dOO;collectHH = collectHH HH;collectOO = collectOO OO;w1

12、 = HH(:,1:inputnum);b1 = HH(:,1+inputnum);w2 = OO(:,1:hiddennum);b2 = OO(:,1+hiddennum);else% 附加动量法HH=HH+learnSpeed*dHH+*(collectHH(:,(trainNum-2)*3+1):(trainNum-2)*3+3)-collectHH(:,(trainNum-3)* 3+1):(trainNum-3)*3+3);OO=OO+learnSpeed*dOO+*(collectOO(1,(trainNum-2)*10+1):(trainNum-2)*10+10)-collect

13、OO(1,(trainNum- 3)*10+1):(trainNum-3)*10+10);collectHH = collectHH HH;collectOO = collectOO OO;w1 = HH(:,1:inputnum);b1 = HH(:,1+inputnum);w2 = OO(:,1:hiddennum);b2 = OO(:,1+hiddennum);end% 训练数据测试,计算最大误差率hiddenOut_test = logsig(HH*input_train); %参数修改后的隐含层输出network_test = w2*hiddenOut_test+repmat(b2,

14、1,361); %预测结果rate = (output_train-network_test)./output_train; %误差率max_rate = max(abs(rate);%误差率最大值end%显示测试结果%标准函数图像y=sin(x1)+cos(x2)x,y = meshgrid:,:;z = sin(x)+cos(y);mesh(x,y,z)xlabel(x1);ylabel(x2);zlabel(y);%网络图t1=linspace(min(input(:,1),max(input(:,1);t2=linspace(min(input(:,2),max(input(:,2);X,Y=meshgrid(t1,t2);Z=griddata(input(:,1),input(:,2),network_test,X,Y);mesh(X,Y,Z)xlabel(Input1);ylabel(Input2);zlab

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论