ch4 神经网络模型及仿真_第1页
ch4 神经网络模型及仿真_第2页
ch4 神经网络模型及仿真_第3页
ch4 神经网络模型及仿真_第4页
ch4 神经网络模型及仿真_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

管理建模与仿真,哈尔滨工程大学经济管理学院胡玉真yuzhenhu,第4章神经网络模型及仿真,第4章神经网络模型及仿真,4.1人工神经网络基本理论4.1.1生物神经元及生物神经网络神经元是大脑处理信息的基本单元,以细胞体为主体,由许多向周围延伸的不规则树枝状纤维构成的神经细胞,其形状很像一棵枯树的枝干。它主要由细胞体、树突、轴突和突触(Synapse,又称神经键)组成。人脑大约由1000多亿个神经元组成,神经元互相连接成神经网络。,图1生物神经元示意图,从神经元各组成部分的功能来看,信息的处理与传递主要发生在突触附近。当神经元细胞体通过轴突传到突触前膜的脉冲幅度达到一定强度,即超过其阈值电位后,突触前膜将向突触间隙释放神经传递的化学物质。突触有两种:兴奋性突触和抑制性突触。前者产生正突触后电位,后者产生负突触后电位。,图1生物神经元示意图,4.1.2人工神经元模型1.人工神经元模型的三要素,连接权:求和单元:激励函数(传递函数):,2.人工神经元模型的数学表达一,模型中为输入信号,为输出信号,为神经元的阈值。该模型的数学表达式为:,4.激励函数的形式,阈值函数:分段线性函数:sigmoid函数:,4.1.3人工神经网络结构及工作方式1、人工神经网络模型拓扑结构人工神经网络(ArtificialNeuralNetworks,ANN)是对人类大脑系统的一种仿真,简单地讲,它是一个数学模型,可以用电子线路来实现,也可以用计算机程序来模拟,是人工智能研究的一种方法。实际上它是由大量的、功能比较简单的形式神经元互相连接而构成的复杂网络系统,用它可以模拟大脑的许多基本功能和简单的思维方式。,神经网络的优点是多输入多输出实现了数据的并行处理以及自学习能力。前向反馈(backpropagation,BP)网络和径向基(radicalbasisfunction,RBF)网络是目前技术最成熟、应用范围最广泛的的两种网络。神经网络的拓扑结构包括:网络层数各层神经元数量各神经元之间相互连接方式,前馈型网络:反馈型网络:,2、神经网络结构,学习期(训练期):各计算单元状态不变,各连接线上权值通过学习来修改工作期:连接权固定,计算单元状态变化,以达到某种稳定状态,3、神经网络工作方式,有教师学习:外界存在一个教师,对给定的一组输入,提供应有的输出(标准答案),学习系统可根据实际输出与标准答案之间的差值来调整系统参数,4.1.4神经网络的学习方法,1.学习方式,无教师学习:学习系统按照环境提供数据的某些统计规律来调节自身参数,强化学习:环境对系统输出结果只给出评价信息(奖或惩),系统通过强化受奖动作来改善自身性能,考察神经元k在n时刻的输入和输出输入:实际输出:应有输出:由误差信号构造能量函数:其中E(.)为求期望算子求解最优化问题:得出系统参数:w,2.学习规则,通常情况下用时刻n的瞬时值代替J,即求解最优化问题由数值迭代算法(如最速下降法、模拟退火算法等),可得其中为学习步长,神经学家Hebb提出的学习规则:当某一连接两端的神经元同步激活(或同为抑制)时,该连接的强度应增强,反之应减弱,数学描述如下:其中分别为wij两端神经元的状态最常用的一种情况是:,3.Hebb学习规则,4.1.5BP算法(向后传播算法),BP(BackPropagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层、隐含层(中间层)和输出层。,BP算法由数据流的前向计算(正向传播)和误差信号的反向传播两个过程构成。正向传播时,传播方向为输入层隐含层输出层,每层神经元的状态只影响下一层神经元。若在输出层得不到期望的输出,则转向误差信号的反向传播流程。通过这两个过程的交替进行,在权向量空间执行误差函数梯度下降策略,动态迭代搜索一组权向量,使网络误差函数达到最小值,从而完成信息提取和记忆过程。,1、正向传播设BP网络的输入层有n个节点,隐含层有q个节点,输出层有m个节点,输入层与隐含层之间的权值为,隐含层与输出层之间的权值为,如图所示。隐含层的传递函数为f1(),输出层的传递函数为f2(),则隐含层节点的输出为(将阈值写入求和项中):,k=1,2,q,输出层节点的输出为:,j=1,2,m,Sj,Sk,Ep是wjk、vki的函数,2、反向传播(1)定义误差函数输入P个学习样本,用来表示。第P个样本输入到网络后得到输出(j=1,2,m)。采用平方型误差函数,于是得到第P个样本的误差Ep:,其中:为期望输出,对于P个样本,全局误差为:,(2)输出层权值的变化采用累计误差BP算法调整,使全局误差E变小,即:式中:为学习率定义误差信号为:其中第一项:,第二项:是输出层传递函数的偏微分。于是:由链定理得:于是输出层各神经元的权值调整公式为:,(3)隐含层权值的变化定义误差信号为:其中第一项:依链定理有:,第二项:是隐含层传递函数的偏微分。于是:由链定理得:从而得到隐含层各神经元的权值调整公式为:,4.2BP神经网络MATLAB工具箱,MATLAB神经网络工具箱包含许多用于BP网络分析与设计的函数,这里主要介绍以下几类函数:前向网络创建函数:newcf、newff和newfftd激励函数:logsig、tansig、purelin学习函数:learngd、learngdm性能函数:mse、msereg,4.2.1BP网络创建函数BP网络创建函数中用得到的变量及含义:PR:由每组输入元素的最大值和最小值组成的R2的矩阵;Si:第i层网络的神经元个数,共计N层;TFi:第i层的激励函数,默认为“tansig”;BTF:网络的训练函数,默认为“trainlm”;BLF:权值与阈值的学习算法,默认为“learngdm”;PF:网络的性能函数,默认为“mse”。,1、函数newcf该函数用于创建级联前向BP网络,其使用格式为:net=newcf(PR,S1S2SN,TF1TF2TFN,BTF,BLF,PF)2、函数newff该函数用于创建一个BP网络,其使用格式为:net=newff(PR,S1S2SN,TF1TF2TFN,BTF,BLF,PF)3、函数newfftd该函数用于创建一个存在输入延迟的前向网络,其使用格式为:net=newfftd(PR,S1S2SN,TF1TF2TFN,BTF,BLF,PF),4.2.2神经元激励函数BP网络经常采用S行的对数或者正切函数和线性函数1、函数logsigS型对数函数使用格式:A=logsig(N)info=logsig(code)其中,N为Q个S维的输入列向量;A为函数返回值,位于区间(0,1)中;info=logsig(code)根据code值不同返回不同的信息,2、函数tansig双曲正切S型激励函数其使用格式为:A=tansig(N)info=tansig(code)其中,N为Q个S维的输入列向量;A为函数返回值,位于区间(-1,1)中;info=tansig(code)根据code值不同返回不同的信息(同函数logsig)。,3、函数purelin线性激励函数其使用格式为:A=purelin(N)info=purelin(code)其中,N为Q个S维的输入列向量;A为函数返回值,A=N;info=tansig(code)根据code值不同返回不同的信息(同函数logsig),4.2.3BP网络学习函数(训练函数),常见学习函数,1、函数learngd函数learngd是梯度下降法学习函数,视同输入和误差,以及权值和阈值的学习速率计算权值或阈值的变化率。其使用格式为:dW,LS=learngd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)db,LS=learngd(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS)其中,W为SR为的权值矩阵;b为S维的阈值向量;P为Q组R维的输入向量;ones(1,Q)为产生一个Q维的输入向量;Z为Q组S维的加权输入向量;N、A分别为Q组S维的输入、输出向量;T、E分别为Q组S维的层目标向量、层误差向量;gW、gA分别为与性能相关的SR的维梯度、维输出梯度;D为SS维的神经元距离矩阵;LP为学习参数,通过其设置学习速率,设置格式为LP.lr=0.001;LS为学习状态,初始状态下为空;dW为SR维的权值或阈值变化率矩阵;db为S维的阈值变化率向量;ls为新的学习状态,2、函数learngdm函数learngdm为梯度下降动量学习函数,其使用格式为:dW,LS=learngdm(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)db,LS=learngdm(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS)其中各参数的含义与函数learngd相同。动量常熟mc是通过学习参数LP设置的,格式为LP.mc=0.8。,4.2.4BP网络训练函数,1、函数trainbfg函数trainbfg为BFGS准牛顿BP算法函数,除BP网络外,该函数也可以训练任意形式的神经网络,其使用格式为:net,TR,Ac,E1=trainbfg(NET,Pd,T1,Ai,Q,TS,VV,TV)其中,NET为待训练的神经网络;Pd为有延迟的输入向量;T1为层次目标向量;Ai为初始的延迟条件;Q为批量;TS为时间步长;VV用于确认向量结构或者为空;TV用于检验向量结构或者为空;net为训练后的神经网络;TR为每步训练的有信息记录,包括:TR.epoch时刻点,TR.perf训练性能,TR.vperf确认性能,TR.tperf检验性能;Ac为上一步训练中聚合层的输出;E1为上一步训练中的层次误差。,BP网络默认训练参数,2、函数traingd函数traingd是梯度下降BP算法训练函数,其使用格式:net,TR,Ac,E1=traingd(NET,Pd,T1,Ai,Q,TS,VV,TV)3、函数traingdm函数traingdm是梯度下降动量BP算法训练函数,其使用格式:net,TR,Ac,E1=traingdm(NET,Pd,T1,Ai,Q,TS,VV,TV),4.2.5性能函数,1、函数mse函数mse为均方差性能函数,其使用格式为:perf=mse(e,x,pp)perf=mse(e,net,pp)其中,e为误差向量矩阵;x为所有的权值和阈值向量,可忽略;pp为性能参数,可忽略;net为待评定的神经网络;perf为函数的返回值,为平均绝对误差。,应用实例:,clc;clear;%清屏,清除内存%构建网络结构net=newff(-1010,41,logsig,purelin);p=-10-50510;t=00111;y=sim(net,p);e=t-yperf=mse(e),e=-2.4471-2.6697-0.8825-0.5951-0.0973perf=2.8516,2、函数mseregperf=msereg(e,x,pp)perf=msereg(e,net)函数msereg是在函数mse基础上增加一项网络权值和阈值的均方值。在使用该函数前,需要设定性能参数pp,如pp.ration=0.6,该参数的意义是误差相对应权值和阈值的重要性。此时,函数返回值=返回误差pp.ration+权值或阈值均方(1-pp.ration),应用实例:,clc;clear;%清屏,清除内存%构建网络结构net=newff(-2,2,4,1,tansig,purelin,trainlm,learngdm,msereg);p=-2-1012;t=11010;y=sim(net,p);e=t-y;net.performparam.ratio=0.92;perf=msereg(e,net),e=-0.2134-0.8307-1.5266-1.0537-1.0837perf=3.0414,函数sim,sim:simulatesneuralnetworks.Y,Pf,Af,E,perf=sim(net,P,Pi,Ai,T)takes:net:Network;P:NetworkinputsPi:Initialinputdelayconditions(default=zeros)Ai:Initiallayerdelayconditions(default=zeros)T:Networktargets(default=zeros)returns:Y:NetworkoutputsPf:FinalinputdelayconditionsAf:FinallayerdelayconditionsE:Networkerrorsperf:Networkperformance,应用实例,x=-4:.5:4;y=x.2-x;net=newff(minmax(x),minmax(y),10);net=train(net,x,y);xx=-4:.2:4;yy=net(xx);plot(x,y,o-,xx,yy,*-)title(新版newff)net1=newff(minmax(x),10,1,tansig,purelin,trainlm);net=train(net1,x,y);yy2=net(xx);figure(2);plot(x,y,o-,xx,yy2,*-)title(旧版newff),4.3组件神经网络的注意事项,4.3.1神经元节点数网络的输入与输出节点数是由实际问题的维数决定的,与网络性能无关。隐含层节点数l目前还没有统一的规范来解决,一般可利用下面两个经验公式之一来确定。,其中,m,n分别为输入、输出节点数目;a为1-10之间的常数,4.3.2数据预处理和后期处理MATLAB中提供的预处理方法有:(1)归一化处理:将每组数据都变为-11之间的数,相关的函数有:mapminmax、premnmx、postmnmx、tramnmx(2)标准化处理:将每组数据都化为均值为0、方差为1的一组数据,相关的函数有:prestd、poststd、trastd(3)主成分分析:运用正交处理,可减少数据的维数,相关的函数有:prepca、trapca(4)回归分析与相关性分析:相关的函数为postrg等,premnmx函数,premnmx语句的语法格式是:pn,minp,maxp,Tn,mint,maxt=premnmx(P,T)pn,minp,maxp=premnmx(p)其中:P,T分别为原始输入和输出数据;minp和maxp分别为P中的最小值和最大值;mint和maxt分别为T的最小值和最大值;Pn,Tn分别为归一化后的输入、输出数据pn=2*(p-minp)/(maxp-minp)-1premnmx函数用于将网络的输入数据或输出数据进行归一化,归一化后的数据将分布在-1,1区间内。,tramnmx函数,在训练网络时如果所用的是经过归一化的样本数据,那么以后使用网络时所用的新数据也应该和样本数据接受相同的预处理,这就要用到tramnmx。tramnmx函数格式:pn=tramnmx(P,minp,maxp)其中:P和Pn分别为变换前、后的输入数据maxp和minp分别为premnmx函数找到的最大值和最小值pn=2*(p-minp)/(maxp-minp)-1。,postmnmx函数,postmnmx函数是将已被premnmx规一化的数据进行反规一化处理。postmnmx函数语法格式:P,T=postmnmx(pn,minp,maxp,tn,mint,maxt)其中:Pn,Tn分别为归一化的输入、输出数据;minp和maxp分别为P中的最小值和最大值;mint和maxt分别为T的最小值和最大值;P,T分别为还原的输入和输出数据;postmnmx函数主要作用是将输出的结果映射回归一化之前的数据范围。,prestd、poststd、trastd函数,prestd(规范化数据为0均值,单位标准差)poststd将已被prestd规范化的数据进行反规范处理trastd传递预先计算过的均值和标准差的数据。prestd语句的语法格式是:pn,meanp,stdp,tn,meant,stdt=prestd(p,t)pn,meanp,stdp=prestd(p)其中:p和pn分别为变换前、后的输入数据meanp是p对应行数据的平均值stdp是p对应行数据的标准方差pn=(p-meanp)/stdp,4.3.3学习速率的选定学习速率参数net.trainparam.lr不能选择的太大,否则会出现算法不收敛的情况;也不能太小,否则会使训练过程事件太长。一般选择0.010.1之间的值,再根据训练过程中梯度变化和均方误差变化值来确定。,4.4应用实例,4.4.1基于MATLAB工具箱的公路运量预测1、问题的描述公路运量主要包括客运量和货运量两方面,据研究,某地区的公路运量主要与该地区的人数、机动车数量和公路面积有关。下表给出了某地区20年的公路运量相关数据。根据统计,该地区2010、2011年的人数分别为73.39和75.55万人,机动车数量分别为3.9635和4.0975万辆,公路面积分别为0.9880和1.0268万平方千米。请利用BP网络预测该地区2010、2011两年的公路客运量和货运量。,2、BP网络求解过程(1)原始数据的输入(2)数据归一化(3)网络训练(4)对原始数据进行仿真(5)将原始数据仿真的结果与已知样本进行对比(6)对预测数据进行仿真,程序分析:,(1)原始数据的输入,clc%原始数据%人数(单位:万人)sqrs=20.5522.4425.3727.1329.4530.1030.9634.0636.4238.0939.1339.99.41.9344.5947.3052.8955.7356.7659.1760.63;%机动车数(单位:万辆)sqjdcs=0.60.750.850.91.051.351.451.61.71.852.152.22.252.352.52.6.2.72.852.953.1;%公路面积(单位:万平方公里)sqglmj=0.090.110.110.140.200.230.230.320.320.340.360.360.380.49.0.560.590.590.670.690.79;,%公路客运量(单位:万人)glkyl=5126621777309145104601138712353157501830419836210241949020433.22598251073344236836405484292743462;%公路货运量(单位:万吨)glhyl=123713791385139916631714183443228132893611099112031052411115.133201676218673207242080321804;p=sqrs;sqjdcs;sqglmj;%输入数据矩阵t=glkyl;glhyl;%目标数据矩阵,(2)对输入数据矩阵和目标矩阵的数据进行归一化,%利用premnmx函数对数据进行归一化pn,minp,maxp,tn,mint,maxt=premnmx(p,t);%对于输入矩阵p和输出矩阵t进行归一化处理dx=-1,1;-1,1;-1,1;%归一化处理后最小值为-1,最大值为1,(3)网络训练,%BP网络训练net=newff(dx,3,7,2,tansig,tansig,purelin,traingdx);%建立模型,并用梯度下降法训练net.trainParam.show=1000;%1000轮回显示一次结果net.trainParam.Lr=0.05;%学习速度为0.05net.trainParam.epochs=50000;%最大训练轮回为50000次net.trainParam.goal=0.65*10(-3);%均方误差net=train(net,pn,tn);%开始训练,其中pn,tn分别为输入输出样本,(4)对原始数据进行仿真,%利用原始数据对BP网络仿真an=sim(net,pn);%用训练好的模型进行仿真a=postmnmx(an,mint,maxt);%把仿真得到的数据还原为原始的数量级;,(5)原始数据仿真的结果与已知数据进行对比测试,%本例因样本容量有限使用训练数据进行测试,通常必须用新鲜数据进行测试x=1990:2009;newk=a(1,:);newh=a(2,:);figure(2);,%本例因样本容量有限使用训练数据进行测试,通常必须用新鲜数据进行测试x=1990:2009;newk=a(1,:);newh=a(2,:);figure(2);subplot(2,1,1);plot(x,newk,r-o,x,glkyl,b-+)%绘值公路客运量对比图;legend(网络输出客运量,实际客运量);xlabel(年份);ylabel(客运量/万人);subplot(2,1,2);plot(x,newh,r-o,x,glhyl,b-+)%绘制公路货运量对比图;legend(网络输出货运量,实际货运量);xlabel(年份);ylabel(货运量/万吨);title(运用工具箱

温馨提示

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

评论

0/150

提交评论