资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,目录,一、感知器神经网络,输入,神经元,感知器神经元的一般模型,1.,感知器的学习,感知器的学习是有导师学习方式。,感知器的训练算法的基本原理来源于著名的,Hebb,学习律。,基本思想:逐步地将样本集中的输入到网络中,根据输出结果和理想输出之间的差别来调整网络中的权矩阵,。,最实用的功能:对输入向量进行分类。,2.,感知器的局限性,感知器神经网络的传输函数一般采用阈值函数,所以输出值只能取,0,或,1,;,感知器神经网络只能对线性可分的向量集合进行分类。理论上已经证明,只要输入向量是线性可分的,感知器在有限的时间内总能达到目标向量。,当感知器神经网络的所有输入样本中存在奇异的样本时,即该样本向量同其它所有样本向量比较起来特别大或特别小时,网络训练花费的时间将很长。,3.,感知器神经网络仿真设计分析,newp,函数,功能:用于创建一个感知器网络。,格式:,net=newp,(,PR,S,TF,LF,),说明:,net,为生成的感知器神经网络;,PR,为一个,R2,的矩阵,有,R,组输入向量中的最大和最小值组成;,S,表示神经元的个数;,TF,表示感知器的激活函数,默认值为硬限幅激活函数,handlim,;,LF,表示网络的学习函数,默认值为,learnp,。,3.,感知器神经网络仿真设计分析,train,函数,功能:神经网络训练函数。,格式:,net,tr,Y,E,Pf,Af=train(NET,P,T,Pi,Ai,VV,TV),说明:,net,为训练后的网络;,tr,为训练记录;,Y,为网络的输出向量;,E,为误差向量;,Pf,为训练终止时的输入延迟状态;,Af,为训练终止时的层延迟状态;,NET,为训练前的网络;,P,为网络的输入向量矩阵;,T,为网络的目标矩阵,默认值为,0,;,Pi,表示初始输入延时,默认值为,0,;,Ai,表示初始的层延时,默认值为,0,;,VV,为验证矢量(可省略);,TV,为测试向量(可省略),。,网络训练函数是一种通用的学习函数,训练函数重复地把一组输入向量应用到一个网络上,每次都更新网络,直到达到了某种准则,停止准则可能是达到最大的学习步数、最小的误差梯度或误差目标等。,3.,感知器神经网络仿真设计分析,plotpc,函数,功能:在存在的图上绘制出感知器分类线函数。,格式:,plotpc(W,B),plotpc(W,B,H),说明:,plotpc(W,B),对含权矩阵,W,和阈值矩阵,B,的硬特性神经元的两个或三个输入画一个分类线。这一函数返回分类线的句柄以便以后调用。,plotpc(W,B,H),包含从前的一次调用中返回的句柄。它在画新分类线之前,删除旧线。,3.,感知器神经网络仿真设计分析,mae,函数,功能:平均绝对误差性能函数。,格式:,perf=mae(E,X,Y,FP),info=mae(code),说明:,perf,表示平均绝对误差和;,E,为误差矩阵或向量(网络的目标向量和输出向量之差);,X,为所有权值(可忽略);,Y,为阈值向量(可忽略);,FP,为性能参数(可忽略)。,mae(code),则可根据,code,的不同,返回不同信息,,包括:,deriv,:返回导数函数的名称。,name,:返回函数全称。,pnames,:返回训练函数的名称。,pdefaults,:返回默认的训练参数。,3.,感知器神经网络仿真设计分析,例,1,给定样本输入向量,P,,目标向量,T,及需要进行分类的输入向量组,Q,,设计一个单层感知器,对其进行分类。,P=-0.6-0.7 0.8;0.9 0 1;%,输入向量,T=1 1 0;%,目标向量,net=newp(-1 1;-1 1,1);%,初始化感知器网络,net.trainParam.epochs=15;%,设置训练次数最大为,15,net=train(net,P,T);%,训练感知器网络,Q=0.5 0.8-0.2;-0.2-0.6 0.6;%,给定输入向量,Y=sim(net,Q);%,仿真结果,plotpv(Q,Y);,%,绘制分类结果,h=plotpc(net.iw1,net.b1)%,绘制分类线,可见,经过两次训练后,网络目标误差达到要求。,二、线性神经网络,线性神经网络是最简单的一种神经元网络,它可以由一个或多个线性神经元构成,每个神经元的激活函数都是线性函数(,purelin),。,线性神经元模型如图,输入,线性神经元,1,、线性神经网络特点,线性神经网络类似于感知器,但是,线性神经网络的激活函数是线性的,而不是硬性激活函数(,hardlim,),。因此,线性神经网络的输出可以是任意值,而感知器的输出不是,0,就是,1,。,线性神经网络和感知器一样只能求解线性可分的问题。因此,,线性神经网络的局限性和感知器相同,。,线性神经网络包括单层网络和多层网络,其中以以单层神经网络应用较多。,2,、线性神经网络的学习,对线性神经网络可以不经过训练直接求出网络的权值和阈值,如果网络有多个零误差姐,则取最小的一组权值和与之;如果网络不存在零误差解,则取网络的误差平方和最小的一组权值和阈值。,另外,当不能直接求出网络权值和阈值时,线性神经网络及自适应线性神经网络可采用使均方误差最小的学习规则,即,LMS,算法,或称之为,WH,学习规则来调整网络的权值和阈值,它是一种沿误差的最陡下降方向对前一步权值向量进行修正的方法。,3.,线性神经网络的,MATLAB,实现,线性神经网络创建函数和设计函数,newlin,函数,功能:用于创建一线性层。,线性层通常做信号处理和预测中的自适应滤波器。,格式:,net=newlin(P,S,ID,LR),说明:,P,是以输入元素的最大和最小值组成的矩阵;,s,为输出向量数目;,ID,为输入延迟向量;,LR,为学习速率;,net,为创建的线性层。,newlind,函数,功能:用于设计一线性层。,格式:,net=newlind(P,T,Pi),说明:,P,为输入向量组成的矩阵;,T,为目标分类向量组成的矩阵;,Pi,为初始输入延迟状态的,ID,个单元矩阵。,3.,线性神经网络的,MATLAB,实现,学习函数,learnwh,函数,功能:,Widrow_Hoff,学习规则,实现输出误差的平方和最小功能。,learnwh,函数沿着误差平方和下降最快方向修改神经元的权值和阅值使输出误差的平方和最小。,格式:,dW,LS=learnwh(W,P,Z,N,A,T,E,gW,gA,D,LP,LS),db,LS=learnwh(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS),maxlinlr,函数,功能:计算线性层的最大学习速率。,格式:,lr=maxlinlr(P),lr=maxlinlr(P,bias),其中,,P,为由输入向量组成的矩阵。,lr=maxlinlr(P),是针对不带阈值的线性层得到一个最大学习速率;,lr=maxlinlr(P,bias),是针对带阈值的线性层得到一个最大学习速率。,3.,线性神经网络的,MATLAB,实现,例题:输入向量,P=1.0-1.2,,目标向量,T=0.5 1.0,,设计一个线性神经网络给出,P,与,T,之间的线性关系。,P=1.0-1.2;,%,输入向量,T=0.5 1.0;,%,目标向量,net=newlind(P,T);,%,设计函数,newlind,设计一个线性网络,A=sim(net,P),;%,用仿真函数,sim,对训练后的网络进行仿真,E=T-A,;,%,计算神经元误差,SSE=sumsqr(E);,%,用,sumsqr,函数来计算平方误差的和,w_range=-1:0.1:1;,b_range=-1:0.1:1;,ES=errsurf(P,T,w_range,b_range,purelin);,plotes(w_range,b_range,ES);%,绘制单独神经元的误差曲面,plotep(net.IW1,1,net.b1,SSE);%,绘制权值和阂值在误差曲面上的位置,最好的权值和阈值是误差曲面的最低点。,3.,线性神经网络的,MATLAB,实现,法二:,用,newlin,函数设计一个线性神经网络,程序如下:,P=1.0-1.2;,T=0.5 1.0;,net=newlin(minmax(P),1,0,0.01);%,学习速率为,0.01,net=init(net);%,对网络的参数进行初始化,net.trainParam.epochs=500;%,训练次数为,500,次,net=train(net,P,T);%,训练,训练,500,次后,误差小于,10,-8,,,3.,线性神经网络的,MATLAB,实现,线性神经网络的应用,完成对胎儿心率的检测,自适应滤波方面,三、,BP,传播网络,反向传播网络,(Back-Propagation Network,,简称,BP,网络,),是将,W-H,学习规则一般化,对非线性可微分函数进行权值训练的多层网络;,权值的调整采用反向传播,(Back-propagation,)的学习算法;,它是一种多层前向反馈神经网络,其神经元的变换函数是,S,型函数;,输出量为,0,到,1,之间的连续量,它可实现从输入到输出的任意的非线性映射。,BP,神经元模型,a=f,(,wx+,),1.,网络拓扑结构,x,1,o,1,输出层,隐藏层,输入层,x,2,o,2,o,m,x,n,W,(1),W,(2),W,(3),W,(L),W,(2),2.BP,网络的学习,BP,网络的学习过程分为两个阶段:,输入已知学习样本,通过设置网络结构和前一次迭代的权值和阈值,从网络的第一层向后计算各神经元的输出。,对权值和阈值进行修改,从最后一层向前计算各权值和阈值对总误差的影响(梯度),据此对各权值和阈值进行修改。,以上两个过程反复交替,直到达到收敛为止。,3.BP,网络的,MATLAB,实现,BP,神经网络创建函数,newcf,函数,功能:用于创建一个级联前馈,BP,网络。,格式,:,net=newcf(PR,S1,S2SN,TF1TF2TFN,BTF,BLF,PF),说明:,PR,输入向量的取值范围,由每组输入(共有,R,组,输入)元素的最大和最小值组成的,R2,维矩阵。,Si,第,i,层的神经元个数(长度),总共,N,层,TFi,第,i,层的传递函数,缺省值为,“,tansig,”,BTF,BP,网络训练函数,缺省值为,“,tranlm,”,BLF,BP,网络权值和阈值学习函数,缺省值为“,learngdm,”,PF,性能函数,缺省值为,“,mse,”,执行后,创建一个,N,层的,BP,神经网络。,3.BP,网络的,MATLAB,实现,newff,函数,功能:用于创建一个前馈,BP,神经网络。,格式:,net=newff(PR,S1,S2SN,TF1 TF2TFN,BTF,BLF,PF),说明:各参数含义见,net=newcf,。,3.newfftd,函数,功能:由于创建一个输入延迟的,BP,神经网络。,格式:,net=newff(PR,IDS1,S2SN,TF1 TF2TFN,BTF,BLF,PF),说明:各参数含义见,net=newcf,。,3.BP,网络的,MATLAB,实现,神经元上的传递函数,logsig,函数,功能:传递函数为型对数函数。,格式:,=logsig(N),inf,(),=logsig(code),说明:,NQ,个,S,维的输入列向量;,A,函数返回值,位于区间(,0,,,1,)中;,info=logsig(code),:依据,code,值的不同返不同的信息,包括:,deriv,返回微分函数的名称。,name,返回函数全称。,output,返回输出值域。,active,返回有效的输入区间。,3.BP,网络的,MATLAB,实现,dlogsig,函数,功能:该函数为,logsig,的导函数。,格式:,dA_dN=dlogsig(N,A),说明:,N,SQ,维网络的输入;,A,SQ,维网络的输出;,dA_dN,函数返回值,输出对输入的导数。,注:,MATLAB2007,按照此形式的函数来计算对数传递函数的值:,y,x*(1-x),3.BP,网络的,MATLAB,实现,tansig,函数,功能:该函数为双曲正切,S,型传递函数。,格式:,A=tansig(N),info=tansig(code),说明:,N,Q,个,S,维的输入列向量;,A,函数返回值,位于区间(,0,,,1,)中;,info=tansig(code),含义参见,info=logsig(code),说明。,注:,MATLAB2007,按照此形式的函数来计算双曲正切传递函数的值:,n,2,(1+exp(-2n)-1,3.BP,网络的,MATLAB,实现,dtansig,函数,功能:该函数是,tansig,的导函数。,格式:,dA_dN=dtansig(N,A),说明:各参数的意义参见,dlogsig,其原型函数为,y,1-,x,2,purelin,函数,功能:该函数是线性传递函数。,格式:,A=purelin(N),info=purelin(code),说明:,N,Q,个,S,维的输入列向量;,A,函数返回值,,A=N,;,info=purelin(code),含义参见,info=logsig(code),说明,原型函数为,y,x,。,dpurelin,函数,功能:该函数是,purelin,的导函数。,调用格式:,dA_dN=dpurelin(N,A),说明:各参数的意义参见,dlogsig,,原型函数为常数函数:,x,1,。,3.BP,网络的,MATLAB,实现,BP,网络学习函数,learngd,函数,功能:该函数为梯度下降权值,/,阈值学习函数,它通过神经元的输入和误差,以及权值和阈值的学习速率来计算权值和阈值的变化率。,格式:,说明:,3.BP,网络的,MATLAB,实现,learngdm,函数,功能:该函数为梯度下降动量学习函数,它利用神经元的输入和误差、权值或阈值的学习速率和动量常数来计算权值或阈值的变化率。,格式:,说明:各参数的含义见,learngd,。,注意:动量常数,mc,是通过学习参数,LP,设置的,格式为:,lp.mc=0.8,。,3.BP,网络的,MATLAB,实现,BP,网络训练函数,trainbfg,函数,功能:该函数为,BFGS,牛顿,BP,算法函数。除了,BP,网络外,该函数也可以训练任意形式的神经网络,只要他的传递函数对权值和输入存在导函数即可。,格式:,net,TR=trainbfg(NET,Pd,trainV,valV,testV),info=trainbfg(code),说明:,NET,为待训练的神经网络;,Pd,为有延迟的输入向量;,trainV,为训练向量结构或者为空;,valV,为确定向量结构或者为空;,testV,为检验向量结构或者为空;,net,为训练神经网络;,TR,为每部训练的有关信息记录。,3.BP,网络的,MATLAB,实现,traingd,函数,功能:该函数为梯度下降,BP,算法函数。,格式:,net,TR=traingd(NET,Pd,trainV,valV,testV),info=traingd(code),说明:其参数意义、设置格式或适用范围等参加,trainbfg,函数。,traingdm,函数,功能:该函数为梯度下降动量,BP,算法函数。,格式:,net,TR=traingdm(NET,Pd,trainV,valV,testV),info=traingdm(code),说明:其参数意义、设置格式或适用范围等参加,trainbfg,函数。,3.BP,网络的,MATLAB,实现,性能函数,mse,函数,功能:该函数为均方误差性能函数。,格式:,perf=mse(E,Y,X,FP),info=mse(code),说明:,perf,表示平均绝对误差和;,E,为误差矩阵或向量;,X,为所有权值(可忽略);,Y,为阈值向量(可忽略);,FP,为性能参数(可忽略)。,msereg,函数,功能:该函数是通过两个因子的加权和来评价网络的性能,这两个因子分别是均方误差、均方权值和阈值。,格式:,perf=msereg(E,Y,X,FP),info=msereg(code),说明:各参数参见,mse,函数。,3.BP,网络的,MATLAB,实现,显示函数,plotperf,函数,功能:该函数用于绘制网络的性能。,格式:,plotperf(tr,goal,name,epoch),说明:,tr,为网络的训练记录;,goal,为性能指标,默认,NaN,;,name,为训练函数名称,默认为空;,epoch,为训练步数,默认为训练记录的长度。,此函数除了可以绘制网络训练性能外,还可以绘制性能指标、确认性能和检验性能。,3.BP,网络的,MATLAB,实现,plotes,函数,功能:用于绘制一个单独神经元的误差曲面,格式:,plotes(WV,BV,ES,V),说明:,WV,为权值的,N,维向量;,BV,为,M,维的阈值行向量;,ES,为误差向量组成的,MN,维矩阵;,V,为视角,默认为,-37.5,30.,函数绘制的误差曲面图是由权值和阈值确定、由函数,errsurf,计算得出。,3.BP,网络的,MATLAB,实现,plotep,函数,功能:用于绘制权值和阈值在误差曲面上的位置。,格式:,H=plotep(W,B,E),H=plotep(W,B,E,H),说明:,W,为当前权值;,B,为当前阈值;,E,为当前单输入神经元的误差;,H,为权值和阈值在上一时刻的位置信息向量。,errsurf,函数,功能:用于计算单个神经元的误差曲面。,格式:,errsurf(P,T,WV,BV,F),说明:,P,为输入行向量;,T,为目标行向量;,WV,为权值列向量;,BV,为阈值列向量;,F,为传递函数的名称。,3.BP,网络的,MATLAB,实现,例:利用一个单隐层的,BP,网络来逼近一个函数,编写,M,文件,p=-1:0.1:1;,t=-0.9602-0.5770-0.0729 0.3771 0.6405 0.6600 0.4600 0.1336-0.2013-0.4344-0.5000-0.3930-0.1647 0.0988 0.3072 0.3960 0.3449 0.1816-0.0312-0.2189-0.3201;,plot(p,t,.),s=3:8;,res=1:6;,for i=1:6 net=newff(minmax(p),s(i),1,tansig,logsig,traingdx);,net.trainParam.epochs=2000;,net.trainParam.goal=0.001;,net=train(net,p,t),y=sim(net,p),error=y-t;,res(i)=norm(error);,End,3.BP,网络的,MATLAB,实现,y=sim(net,p),plot(p,t,rp);,hold on,plot(p,y,.);,legend(,原始网络,训练后的网络,),figure,plot(1:21,y-t);%,绘制网络的误差曲线。,运行程序,其中,“蓝点”表示网络的输出结果,“星号”表示函数的实际值。,四、,SIMULINK,神经网络仿真模型库,1.,模块的设置,在,Simulink,库浏览窗口的,Neural Network Blockset,节点上,通过单击鼠标右键后,便可打开如图所示的,Neural Network Blockset,模块集窗口。,四、,SIMULINK,神经网络仿真模型库,.,传输函数模块库,(Transfer Functions),传输函数模块库中的任意一个模块都能够接受一个网络输入向量,并且相应地产生一个输出向量,这个输出向量的组数和输入向量相同。,四、,SIMULINK,神经网络仿真模型库,模块,功能描述,compet,竞争传递函数,hardlim,强限幅传递函数,hardlims,对称强限幅传递函数,logsig,logsig,传递函数,poslin,正线性传递函数,purelin,纯线性传递函数,radbas,径向基传递函数,satlin,饱和线性传递函数,satlins,对称饱和线性传递函数,softmax,弱最大值传递函数,tansig,tansig,传递函数,tribas,三角基传递函数,netinv,网络逆传递函数,四、,SIMULINK,神经网络仿真模型库,网络输入模块库,(Net Input Functions),网络输入模块库中的每一个模块都能够接受任意数目的加权输入向量、加权的层输出向量,以及偏值向量,并且返回一个网络输入向量。,模块,功能描述,nestum,相加或相减计算,netprod,点乘或点除计算,四、,SIMULINK,神经网络仿真模型库,权值模块库,(Weight Functions),权值模块库中的每个模块都以一个神经元权值向量作为输入,并将其与一个输入向量(或者是某一层的输出向量)进行运算,得到神经元的加权输入值。,模块,功能描述,dotprod,点乘权值函数,dist,距离权值函数,negdist,Euclidean,距离的负值计算权值函数,normprod,规范化的点乘权值函数,四、,SIMULINK,神经网络仿真模型库,控制系统模块,神经网络的控制系统模块库中包含三个控制器和一个示波器。,模块,功能描述,Mode Reference Controller,模块参考控制器,NARMA-L2 Controller,NARMA-L2,控制器,NN Predictive Controller,神经网络预测控制器,Graph,示波器,四、,SIMULINK,神经网络仿真模型库,处理函数模块库,四、,SIMULINK,神经网络仿真模型库,2.Simulink,应用实例,步骤:首先通过,MATLAB,命令窗口或编制程序完成设计,然后,通过,gensim,函数生成神经网络仿真模块,并进入,Simulink,系统进行仿真。,例:设计一个线性网络,并生成其模块化描述。定义网络的输入,p=1 2 3 4 5,,相应的目标,t=1 3 5 7 9,。,p=1 2 3 4 5;,t=1 3 5 7 9;,net=newlind(p,t);%,设计一个线性网络,y=sim(net,p)%,利用原始的输入数据测试网络,gensim(net,-1)%,生成网络,net,的模块化描述,
展开阅读全文