资源描述
,单击此处编辑母版标题样式,*,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,本幻灯片资料仅供参考,不能作为科学依据,如有不当之处,请参考专业资料。谢谢,第2章 MATLAB神经网络,工具箱函数,2.1 MATLAB神经网络工具箱函数,2.2 MATLAB神经网络工具箱图形用户界面,第1页,1,利用神经网络能处理许多用传统方法无法处理问题。神经网络在很多领域中都有应用,以实现各种复杂功效。这些领域包含商业及经济估算、自动检测和监视、计算机视觉、语音处理、机器人及自动控制、优化问题、航空航天、银行金融业、工业生产等。而神经网络是一门发展很快学科,其应用领域也会伴随其发展有更大拓宽。,第2页,2,本章将介绍MATLAB神经网络工具箱应用。在MATLAB神经网络工具箱中提供了丰富演示实例,用MATLAB语言结构了经典神经网络激活函数,编写了各种网络设计与训练子程序,网络设计者能够依据自己需要去调用工具箱中相关神经网络设计训练程序,使自己能够从繁琐编程中解脱出来。,第3页,3,MATLAB神经网络工具箱提供了许多进行神经网络设计和分析工具函数,这些函数MATLAB实现,使得设计者对所选定网络进行计算过程,转变为对函数调用和参数选择,这给用户带来了极大方便,即使不了解算法本质,也能够直接应用功效丰富函数来实现自己目标。相关这些工具函数使用能够经过help命令得到,本章将对这些函数功效、调用格式,以及使用方法做详细介绍。,2.1 MATLAB神经网络工具箱函数,第4页,4,伴随MATLAB软件版本提升,其对应神经网络工具箱内容越来越丰富,它包含了很多现有神经网络新结果,包括网络模型有,感知机网络、线性神经网络、BP神经网络、径向基神经网络、自组织神经网络、学习向量量化神经网络、Elman神经网络、Hopfield神经网络、自适应滤波和控制系统网络等。,第5页,5,神经网络工具箱提供了很多经典学习算法,使用它能够快速地实现对实际问题建模求解。因为其编程简单,这么就给使用者节约了大量编程时间,使其能够把更多精力投入到网络设计而不是详细程序实现上。,第6页,6,2.1.1 神经网络工具箱中通用函数,MATLAB神经网络工具箱中提供函数主要分为两大部分。一部分函数是通用,这些函数几乎能够用于全部类型神经网络,如神经网络初始化函数init()、训练函数train()和仿真函数sim()等;另一部分函数则是尤其针对某一个类型神经网络,如对感知机神经网络进行建立函数simup()等。表2-1列出了一些通用函数名称和基本功效。,第7页,7,表2-1 神经网络通用函数和功效,函数名,功 能,init(),初始化一个神经网络,initlay(),层-层结构神经网络初始化函数,initwb(),神经网络某一层权值和偏值初始化函数,initzero(),将权值设置为零初始化函数,train(),神经网络训练函数,adapt(),神经网络自适应训练函数,sim(),神经网络仿真函数,dotprod(),权值点积函数,normprod(),规范点积权值函数,netsum(),输入求和函数,netprod(),网络输入积函数,concur(),结构一致函数,第8页,8,1.初始化神经网络函数init(),利用初始化神经网络函数init()能够对一个已存在神经网络进行初始化修正,该网络权值和偏值是按照网络初始化函数来进行修正。其调用格式为:,net=init(NET),2.神经网络某一层初始化函数initlay(),初始化函数initlay()尤其适合用于层-层结构神经网络初始化,该网络权值和偏值是按照网络初始化函数来进行修正。其调用格式为:,net=initlay(NET),第9页,9,3.神经网络某一层权值和偏值初始化函数initwb(),利用初始化函数initwb()能够对一个已存在神经网络NET某一层i权值和偏值进行初始化修正,该网络对每层权值和偏值是按照设定每层初始化函数来进行修正。其调用格式为:,net=initwb(NET,i),4.神经网络训练函数train(),利用train()函数能够训练一个神经网络。网络训练函数是一个通用学习函数,训练函数重复地把一组输入向量应用到一个网络上,每次都更新网络,直到抵达了某种准则。停顿准则可能是最大学习步数、最小误差梯度或者是误差目标等,调用格式为:,net,tr,Y,E,Xf,Af=train(NET,X,T,Xi,Ai),第10页,10,5.网络自适应训练函数adapt(),另一个通用训练函数是自适应函数adapt()。自适应函数在每一个输入时间阶段更新网络时仿真网络,而这在进行下一个输入仿真前完成,其调用格式为:,net,Y,E,Xf,Af,tr=adapt(NET,X,T,Xi,Ai),6.网络仿真函数sim(),神经网络一旦训练完成,网络权值和偏值就已经确定了。于是就能够使用它来处理实际问题了。利用sim()函数能够仿真一个神经网络性能。其调用格式为:,Y,Xf,Af,E,perf=sim(net,X,Xi,Ai,T),或,Y,Xf,Af,E,perf=sim(net,Q Ts,Xi,Ai),第11页,11,7.权值点积函数dotprod(),网络输入向量与权值点积可得到加权输入。函数dotprod()调用格式为:,Z=dotprod(W,X),式中,W为S,R维权值矩阵;X为Q组R维输入向量;Z为Q组S维W与X 点积。,8.网络输入和函数netsum(),网络输入和函数是经过某一层加权输入和偏值相加作为该层输入。调用格式:,Z=netprod(Z1,Z2,),式中,Zi为S,Q维矩阵。,第12页,12,9.网络输入积函数netprod(),网络输入积函数是经过某一层加权输入和偏值相乘作为该层输入。调用格式:,Z=netprod(Z1,Z2,),式中,Zi为S,Q维矩阵。,10.结构一致函数concur(),函数concur()作用在于使得原来不一致权值向量和偏值向量结构一致,方便于进行相加或相乘运算,其调用格式为:,Z=concur(b,q),式中,b为N,1维权值向量;q为要到达一致化所需要长度;Z为一个已经一致化了矩阵。,第13页,13,例2-1,利用netsum()函数和netprod()函数,对两个加权输入向量Z1和Z2进行相加和相乘。,解,MATLAB程序以下。,Z1=1 2 4;3 4 1;Z2=-1 2 2;-5-6 1;%提供两个加权输入向量,b=0;-1;q=3;%权值向量和一致化所需要长度,Z=concur(b,q)%计算一致化了矩阵,X1=netsum(Z1,Z2),X2=netprod(Z1,Z2)%计算向量和与积,结果显示:,Z=0 0 0,-1 -1 -1,X1=0 4 6,-2 -2 2,X2=-1 4 8,-15 -24 1,第14页,14,2,.1.2,感知机神经网络工具箱函数,MATLAB神经网络工具箱中提供了大量与感知机相关函数。在MATLAB工作空间命令行键入“help percept”,便可得到与感知机(Perceptron)相关函数,深入利用help命令又能得到相关函数详细介绍。表2-2列出了这些函数名称和基本功效。,第15页,15,表2-2 感知机网络主要函数和功效,函数名,功 能,mae(),平均绝对误差性能函数,hardlim(),硬限幅传输函数,hardlims(),对称硬限幅传输函数,plotpv(),在坐标图上绘出样本点,plotpc(),在已绘制图上加分类线,initp(),对感知机神经网络进行初始化,trainp(),训练感知机神经网络权值和偏值,trainpn(),训练标准化感知机权值和偏值,simup(),对感知机神经网络进行仿真,learnp(),感知机学习函数,learnpn(),标准化感知机学习函数,newp(),生成一个感知机,第16页,16,1平均绝对误差性能函数mae(),感知机网络学习规则为调整网络权值和偏值,使网络平均绝对误差和性能最小。平均绝对误差性能函数调用格式为:,perf=mae(E,w,pp),式中,E,为误差矩阵或向量(,E=T-Y),。,第17页,17,2硬限幅传输函数hardlim(),硬限幅传输函数hardlim()经过计算网络输入得到该层输出。假如网络输入到达门限,则硬限幅传输函数输出为1,不然为0。这表明神经元可用来作出判断或分类。其调用格式为:,a=hardlim(N),或 a=hardlim(Z,b),a=hardlim(P),函数,hardlim(N),在给定网络输入矢量矩阵,N,时,返回该层输出矢量矩阵,a,。当,N,中元素大于等于零时,返回值为,1,,不然为,0,。函数,hardlim(Z,b),用于矢量是成批处理且偏差存在情况下,此时偏差,b,和加权输入矩阵,Z,是分开传输。偏差矢量,b,加到,Z,中每个矢量中形成网络输入矩阵。,第18页,18,返回元素a是1还是0,取决于网络输入矩阵中元素是大于等于0还是小于0;函数hardlim(P)包含传输函数特征名并返回问题中特征,以下特征可从任何传输函数中取得:,(1)delta与传输函数相关delta函数;,(2)init传输函数标准初始化函数;,(3)name传输函数全称;,(4)output包含有传输函数最小、最大值二元矢量。,例利用以下命令可得图2-1。,N=-5:0.1:5;,a=hardlim(N);plot(N,a),图,2-1,硬限幅传输函数曲线,第19页,19,3对称硬限幅传输函数hardlims(),对称硬限幅传输函数hardlims()经过计算网络输入得到该层输出。假如网络输入到达门限,则硬限幅传输函数输出为1,不然为-1。例,w=eye(3);b=-0.5*ones(3,1);,X=1 0;0 1;1 1;,a=hardlims(w*X,b),结果显示:,a=,1 -1,-1 1,1 1,第20页,20,例2-2,建立一个感知机网络,使其能够完成“或”功效。,解,为了完成“或”函数,建立一个两输入、单输出一个单层感知机网络。,设输入向量为:X=0 0 1 1;0 1 0 1,,目标向量为:T=0 1 1 1。,激活函数取硬限幅传输函数。,依据感知机学习算法计算步骤,利用,MATLAB,神经网络工具箱相关函数编写程序以下。,ex2_2,第21页,21,结果显示:,epoch=,3,Wij=,1.5028 1.7095,y=,0 1 1 1,第22页,22,4.绘制样本点函数plotpv(),利用,plotpv(),函数可在坐标图中绘出已知给出样本点及其类别,不一样类别使用了不一样符号。其调用格式为:,plotpv(X,T),式中,X,定义了,n,个,2,或,3,维样本,它是一个,2,n,维或,3,n,维矩阵;,T,表示各样本点类别,它是一个,n,维向量。,假如,T,只含一元矢量,目标,0,输入矢量画为“,o,”;,目标,1,输入矢量画为“,+,”;,假如,T,含二元矢量,则输入矢量对应以下:,0 0,用“,o,”;,0 1,用“,+,”;,1 0,用“,*,”;,1 1,用“,”。例,第23页,23,X=-0.5,-0.5,0.3,-0.1,0.2,0.0,0.6,0.8;,-0.5,0.5,-0.5,1.0,0.5,-0.9,0.8,-0.6;,T=1 1 0 1 1 0 1 0;plotpv(X,T),对样本不一样类别使用了不一样符号,如图,2-2,所表示。,图2,-2,样本分类,第24页,24,5.在存在图上画感知机分类线函数plotpc(),硬特征神经元将输入空间用一条直线(假如神经元有两个输入),或用一个平面(假如神经元有三个输入),或用一个超平面(假如神经元有三个以上输入)分成两个区域。,plotpc(w,b),对含权矩阵,w,和偏差矢量,b,硬特征神经元两个或三个输入画一个分类线。这一函数返回分类线句柄方便以后调用。,plotpc(w,b,h),包含从前一次调用中返回句柄,它在画新分类线之前,删除旧线。,第25页,25,6.感知机神经网络初始化函数initp(),利用initp()函数可建立一个单层(一个输入层和一个输出层)感知机神经网络。其调用格式为:,W,b=initp(R,S),或 W,b=initp(X,T),第26页,26,例利用以下命令,可得图1-54。,X=0 0 1 1;0 1 0 1;T=0 1 1 1;,W,b=initp(X,T);,plotpv(X,T);plotpc(W,b);,使用,plotpc(),函数能够在已绘制图上加上感知机分类线(,MATLAB6.1,及以下版本利用此命令,不能产生分类线),如,图,2-3,所表示。由图可见,经过初始化后网络对,输入样本还不能正确进,行分类。,图2-3 输入样本加网络初始分类线,第27页,27,7用感知机准则训练感知机函数trainp(),经过初始化建立感知机,还必须经过训练才能够实际应用。经过训练以决定网络权值和偏值。对于感知机,其训练过程为:对于给定输入向量,计算网络实际输出,并与对应目标向量进行比较,得到误差,,然后依据对应学习规则调整权值和偏值。重新计算网络在新权值和偏值作用下输出,重复上述权值和偏值调整过程,直到网络输出与期望目标向量相等或者训练次数到达预定最大次数时才停顿训练,之所以要设定最大训练次数,是因为对于有些问题,使用感知机神经网络时是不能处理,这正是感知机缺点。,训练感知机神经网络trainp()函数调用格式为:,W,B,epochs,errors=trainp(w,b,X,T,tp),第28页,28,例2-4,利用trainp()函数训练一个感知机网络,并用训练后网络对输入样本进行分类。,解,程序以下。,ex2_4,例利用以上程序,可得如图2-4所表示样本及分类线。,用标准化感知机准则训,练感知机函数,trainpn(),使用方法同函数,trainp(),,,即使输入矢量长度不一样,,使用标准化感知机准则也,使得学习过程收敛很快。,图2-4 样本加分类线,第29页,29,8.感知机神经网络仿真函数simup(),神经网络一旦训练完成,网络权值和偏值就已经确定了。于是就能够使用它来处理实际问题了。感知机由一系列硬特征神经元组成,运行速度很快,对简单分类很有用。利用simup()函数能够测试一个感知机神经网络性能。其调用格式为:,Y=simup(X,w,b),第30页,30,例2-5,利用trainp()函数训练一个感知机网络,使其能够完成“或”功效。,解,依据神经网络工具箱函数编写程序以下。,ex2_5,执行以上程序可得以下结果以及图2-5至图2-8。,y=,0 1 1 1,由以上结果和图2,-7,可知,训练后网络已含有“或”功效,且可对输入样本进行正确分类,第31页,31,图,2-5,输入样本分类,图,2-6,输入样本加网络初始分类线,图,2-7,输入样本加网络训练后分类线,图,2-8,误差曲线,第32页,32,例2-6,利用trainp()函数训练一个感知机网络,使其能够对三个输入进行分类。,解,依据神经网络工具箱函数编写程序以下。,ex2_6,执行以上程序可得以下结果以及图2-9至图2-12。,y=,0 1 0 0 1 1 0 1,第33页,33,图,2-9,输入样本分类,图,2-10,输入样本加网络初始分类线,图,2-11,输入样本加网络训练后分类线,图,2-12,误差曲线,第34页,34,例2-7,利用trainp()函数训练一个感知机网络,使其能够将输入分为4类。,解,依据神经网络工具箱函数编写程序以下。,ex2-7,第35页,35,执行以上程序可得以下结果以及图2-13和图2-14。,y=,1 1 1 0 0 1 1 1 0 0,0 0 0 0 0 1 1 1 1 1,图,2-13,输入样本加网络训练后分类线,图,2-14,误差曲线,第36页,36,9感知机学习函数learnp(),感知机神经网络学习规则为调整网络权值和偏值使网络平均绝对误差性能最小,方便对网络输入矢量正确分类。感知机学习规则只能训练单层网络,函数调用格式为:,dW,db=learnp(X,E),第37页,37,例2-8,利用learnp()函数训练建立一个感知机网络,使其能够完成“或”功效。,解,依据神经网络工具箱函数编写程序以下。,ex2_8,结果显示:,epoch=,5,W=,1.3626 1.7590,y=,0 1 1 1,第38页,38,10标准化感知机学习函数learnpn(),感知机学习规则在调整网络权值和偏值时利用下式,从上式能够看出,输入向量X越大,则权值改变,w,就越大。当存在奇异样本(即该样本向量同其它全部样本向量比较起来,尤其得大或者尤其得小)时,利用以上规则训练时间大为加长。因为其它样本则需花很多时间才能同奇异样本所对应权值改变相匹配。为了消除学习训练时间对奇异样本敏感性,提出了一个改进感知机学习规则,也成为标准化感知机学习规则,标准化感知机学习规则试图使奇异样本和其它样本对权值改变值影响均衡,它可经过下式实现,第39页,39,标准化感知机学习函数为learnpn(),其调用格式为:,dW,db=learnpn(X,E),式中 X为输入向量矩阵;E为误差向量(E=T-Y);T表示网络目标向量;Y表示网络输出向量;dW为权值改变阵;db为偏值改变阵。,对应于标准化感知机学习规则训练函数为trainpn(),其调用格式为:,W,B,epochs,errors=trainpn(w,b,X,T,tp),第40页,40,例2-9,利用trainpn()函数训练建立一个感知机网络,观察奇异输入样本对训练结果影响。,解,依据神经网络工具箱函数编写程序以下。,ex2_9,第41页,41,执行以上程序可得以下结果以及图2-15和图2-16。,y=,1 1 0 0 1,图2-15 输入样本加网络训练后分类线 图2-16 误差曲线,由图,2-16,可见利用函数,trainpn(),,网络训练只需要,2,步,假如利用函数,trainp(),,网络训练需要经过,60,多步。,第42页,42,例2-10,利用trainpn()函数训练建立一个感知机网络,对“异或”问题进行分类。,解,单层感知机不能处理像逻辑“异或”一类线性不可分输入向量分类问题,处理这一问题方案,是能够设计一个两层网络,即含有输入层,隐含层和输出层结构。设输入向量为:X=0 0 1 1;0 1 0 1,目标向量为:T=0 1 1 0。依据神经网络工具箱函数编写程序ex2_10.m以下。,%ex2_10.m,执行以上程序可得以下结果以及图2-17和图2-18。,y=,0 1 1 0,第43页,43,由图2-18可见网络训练只需要4步。需要指出是,因为隐含层权值和偏值是随机给定而且不可调整,故隐含层输出也是随机,这么网络有可能有解,也有可能无解,假如网络找不到解,可再次运行网络,以重新初始化隐含层权值和偏值。假如采取单层网络,对以上问题永远也找不到正确分类方案。,第44页,44,11.建立感知机神经网络函数newp(),利用newp()函数可建立一个感知机神经网络。其调用格式为:,net=newp(Xr,S,Tf,Lf),例建立一个两输入且样本点取值在-1,1之间,而网络只有单个神经元感知机神经网络,可利用以下命令,net=newp(-1 1;-1 1,1);,第45页,45,使用plotpc()函数能够在已绘制图上加上感知机分类线。让它返回得到分类线句柄,方便在下一次再绘制分类线时能够将原来删除。例,handle=plotpc(net.iw1,net.b1);,式中,net.iw1,用来计算网络,net,权值,,net.b1,用来计算网络,net,偏值。,第46页,46,例2-11,利用newp()和train()函数建立并训练一个感知机网络,使其一样能够完成“或”功效。,解,依据神经网络工具箱函数编写程序以下。,ex2_11,执行结果,y=,0 1 1 1,第47页,47,例2-12,利用train()函数训练一个感知机网络,并选择10个点对其进行测试。,解,依据神经网络工具箱函数编写程序ex2_12.m以下。,ex2_12.m,运行以上命令可得如图2-20和图2-21所表示训练过程误差曲线和测试结果。由图可见网络训练只需5步,就能够将它们正确分类,这说明了设计网络是正确。,第48页,48,2.1.3 线性神经网络工具箱函数,MATLAB神经网络工具箱中提供了大量与线性网络相关工具箱函数。在MATLAB工作空间命令行键入“help linnet”,便可得到与线性网络相关函数,深入利用help命令又能得到相关函数详细介绍。表2-3列出了这些函数名称和基本功效。,第49页,49,表2-3 线性网络主要函数和功效,函数名,功 能,sse(),误差平方和性能函数,purelin(),线性传输函数,initlin(),线性线性神经初始化函数,solvelin(),设计一个线性神经网络,simulin(),对线性神经网络进行仿真,maxlinlr(),计算线性层最大学习速率,learnwh(),Widrow-hoff学习函数,trainwh(),对线性神经网络进行离线训练,adaptwh(),对线性神经网络进行在线自适应训练,newlind(),设计一个线性层,newlin(),新建一个线性层,第50页,50,1误差平方和性能函数sse(),线性网络学习规则为调整网络权值和偏值使网络误差平方和性能最小。误差平方和性能函数调用格式为:,perf=sse(E,w,pp),第51页,51,2.线性传输函数purelin(),神经元最简单传输函数是简单地从神经元输入到输出线性传输函数,输出仅仅被神经元所附加偏差所修正。线性传输函数惯用于Widriw-Hoff或BP准则来训练神经网络中,该函数调用格式为:,a=purelin(N),或 a=purelin(Z,b),a=purelin(P),第52页,52,函数purelin(P)包含传输函数特征名并返回问题中特征,以下特征可从任何传输函数中取得:,(1)delta与传输函数相关delta函数;,(2)init传输函数标准初始化函数;,(3)name传输函数全称;,(4)output包含有传输函数最小、最大值二元矢量。,例利用以下命令可得图2-22。,n=-5:0.1:5;b=0;,a=purelin(n,b);plot(n,a),图,2-22,线性传输函数,第53页,53,3.线性神经网络初始化函数initlin(),利用initlin()函数可建立一个单层(一个输入层和一个输出层)线性神经网络。其调用格式为:,W,b=initlin(R,S),或 W,b=initlin(X,T),例,X=0 0 1 1;0 1 0 1;,T=0 1 1 1;W,b=initlin(X,T);,第54页,54,4.设计一个线性神经网络函数solvelin(),同大多数其它神经网络不一样是,只要已知线性神经网络输入向量和目标向量,就能够直接对其进行设计。使用函数solvelin()设计线性神经网络,能够不经过训练,直接找出网络权值和偏值,使得网络误差平方和最小。该函数调用格式为:,W,b=solvelin(X,T),第55页,55,5.线性神经网络仿真函数simulin(),利用函数solvelin()建立线性神经网络权值和偏值就已经依据网络输入向量和目标向量训练好了。simulin()函数能够测试一个线性神经网络性能。其调用格式为:,Y=simulin(X,w,b),第56页,56,例2-13,利用solvelin()函数建立一个线性网络,并对其进行测试。,X=1 2 3;T=2.0 4.1 5.9;%给定训练集和目标值,W,b=solvelin(X,T);y=simulin(X,W,b),结果显示:,y=,2.0500 4.0000 5.9500,第57页,57,6.计算线性层最大学习速率函数maxlinlr(),函数maxlinlr()用于计算用Widrow-Hoff准则训练线性网络最大稳定学习速率。其调用格式为:,lr=maxlinlr(X),或 lr=maxlinlr(X,b),例利用以下命令可计算出用Widrow-Hoff准则训练线性神经元层所用学习率上限。,X=1 2-4 7;0.1 3 10 6;lr=maxlinlr(X),结果显示:,lr=0.0069,第58页,58,7线性神经网络学习函数learnwh(),线性网络采取Widrow-Hoff学习规则,Widrow-Hoff学习规则只能训练单层线性神经网络,但这并不影响单层线性神经网络应用,因为对每一个多层线性神经网络而言,都能够设计出一个性能完全相当单层线性神经网络。当利用函数solvelin()设计线性神经网络不能调整网络权值和偏值使网络误差平方和性能最小时,能够应用函数learnwh()和 函数trainwh()来调整网络权值和偏值。函数learnwh()调用格式为:,dW,db=learnwh(X,E,lr),第59页,59,8线性神经网络训练函数trainwh(),函数trainwh()可利用Widrow-Hoff学习规则对线性层权值进行训练,利用输入矢量,计算该层输出矢量,然后依据产生误差矢量调整该层权值和偏差。调用格式为:,W,B,epochs,errors=trainwh(w,b,X,T,tp),9.线性神经网络自适应训练函数adaptwh(),函数adaptwh()能够利用Widrow-Hoff学习规则对线性层权值进行自适应调整,在每一步迭代过程中,修改自适应线性网络层权值、偏差和输出矢量,从而学习并适应环境改变。其调用格式为:,Y,E,W,B=adaptwh(w,b,X,T,lr),第60页,60,10.设计一个线性层函数newlind(),利用函数newlind()设计出线性网络已经训练好,可直接使用,该函数调用格式为:,net=newlind(X,T),式中 X为R,Q维Q组输入向量;T 为S,Q维Q组目标分类向量;net为生成新线性神经网络。,第61页,61,例2-14,利用newlind()函数建立一个线性网络,并对其进行测试。,解,MATLAB程序ex2_14.m以下。,%ex2_14.m,X=1 2 3;T=2.0 4.1 5.9;%给定训练集和目标值,net=newlind(X,T);,y=sim(net,X),执行结果:,y=2.0500 4.0000 5.9500,第62页,62,11.新建一个线性层函数newlin(),利用函数newlin()设计线性网络,还需训练,该函数调用格式为:,net=newlin(Xr,S,Id,lr),例建立一个线性网络。可利用以下命令,X=1 2 3;S=1;net=newlin(minmax(X),S);,第63页,63,执行结果可得图2-23和图2-24。,图,2-23,系统输入输出曲线,图,2-24,网络预测输出与系统输出和误差,例2-15,利用线性网络进行系统辨识。,解 MATLAB程序以下:,ex2_15,第64页,64,执行结果可得图2-25和图2-26。,图,2-25,网络待预测目标信号,图,2-26,网络预测输出与目标值,例2-16,利用线性网络进行自适应预测。,解,方法一:MATLAB程序以下:,ex2_16_1,第65页,65,执行结果可得图2-27和图2-28。,图2-27,网络待预测目标信号,图,2-28,网络预测输出与误差,方法二:MATLAB程序以下:,ex2_16_2,第66页,66,执行结果可得图2-29和图2-30。,图,2-29,网络待预测目标信号,图,2-30,网络预测输出目标信号与误差,例2-17,利用线性网络预测一个时变信号序列。,解 MATLAB程序以下:,ex2_17,第67页,67,2.1.4,BP神经网络工具箱函数,MATLAB,神经网络工具箱中提供了大量进行,BP,网络分析和设计工具箱函数。在,MATLAB,工作空间命令行键入“,help backprop,”,便可得到与,BP,神经网络相关函数,深入利用,help,命令又能得到相关函数详细介绍。表,2-4,列出了这些函数名称和基本功效。,第68页,68,表,2-4 BP,网络主要函数和功效,函数名,功 能,tansig(),双曲正切S型(tan-sigmoid)传输函数,purelin(),线性(Purelin)传输函数,logsig(),对数S型(log-sigmoid)传输函数,deltatan(),Tansig神经元delta函数,deltalin(),Purelin神经元delta函数,deltalog(),Logsig神经元delta函数,learnbp(),BP学习规则,learnbpm(),含动量规则快速BP学习规则,learnlm(),Levenberg-Marguardt学习规则,initff(),对BP神经网络进行初始化,trainbp(),利用BP算法训练前向网络,trainbpx(),利用快速BP算法训练前向网络,trainlm(),利用Levenberg-Marguardt规则训练前向网络,第69页,69,函数名,功 能,simuff(),BP神经网络进行仿真,newff(),生成一个前馈BP网络,newfftd(),生成一个前馈输入延时BP网络,newcf(),生成一个前向层叠BP网络,nwlog(),对Logsig神经元产生Nguyen-Midrow随机数,sse(),误差平方和性能函数,sumsqr(),计算误差平方和,errsurf(),计算误差曲面,plotes(),绘制误差曲面图,plotep(),在误差曲面图上绘制权值和偏值位置,ploterr(),绘制误差平方和对训练次数曲线,barerr(),绘制误差直方图,第70页,70,1均方误差性能函数mse(),BP神经网络学习规则为调整网络权值和偏值,使网络均方误差和性能最小。均方误差性能函数调用格式为:,perf=mse(E,w,pp),2.双曲正切S型(Sigmoid)传输函数tansig(),双曲正切Sigmoid函数把神经元输入范围从,(-,+,)映射到(-1,+1),它是可导函数,适合用于BP训练神经元,函数调用格式为:,a=tansig(N),或 a=tansig(Z,b),tansig(P),第71页,71,函数tansig(P)包含传输函数特征名并返回问题中特征,以下特征可从任何传输函数中取得:,(1)delta与传输函数相关delta函数;,(2)init传输函数标准初始化函数;,(3)name传输函数全称;,(4)output包含有传输函数最小、最大值二元矢量。,例利用以下命令可得图2-31。,n=-5:0.1:5;b=0;,a=tansig(n,b);plot(n,a),图,2-31,双曲正切曲线,第72页,72,假如,BP,网络最终一层是,Sigmoid,型神经元,那么整个网络输出就被限制在一个较小范围内;假如,BP,网络最终一层是,Purelin,型线性神经元,那么整个网络输出能够取任意值。,第73页,73,3.正切S型(Tansig)神经元求导函数dtansig(),函数,dtansig(),为Tansig神经元导函数,它依据Y=1-X2函数来计算,其调用格式为:,dY_dX=dtansig(X,Y),Logsig,和,Purelin,神经元导函数,dlogsig(),和,dpurelin(),使用方法同上。但它们分别依据,Y=X*(1-X),和,Y=1,函数来计算。例利用以下,MATLAB,命令,X=0.1 0.8 0.7;Y=tansig(x),dY_dX=dtansig(X,Y),结果显示:,Y=,0.0997 0.6640 0.6044,dY_dX=,0.9901 0.5591 0.6347,第74页,74,4.正切S型(Tansig)神经元求导函数deltatan(),反向传输误差算法(BP)是利用误差平方和对网络各层输入导数来调整其权值和偏值,从而降低误差平方和。从网络误差矢量中可推导出输出层误差导数或,(delta)矢量,隐含层,矢量导出,这种,矢量反向传输正是BP算法由来。函数调用格式为:,dy=deltatan(y),或 dy=deltatan(y,e),dy=deltatan(y,d2,w2),Logsig和Purelin神经元delta函数deltalog()和deltalin()使用方法同上。,第75页,75,5.BP学习规则函数learnbp(),BP神经网络学习规则为调整网络权值和偏值使网络误差平方和为最小。这是经过在最速下降方向上不停地调整网络权值和偏值来到达。计算网络输出层误差矢量导数,然后反馈回网络,直到每个隐含层误差导数(称为delta)都到达。这可由函数deltatan()、deltalin()和deltalog()计算。依据BP准则,每一层权值矩阵w利用本层,向量和输入向量x来更新,即,w(i,j)=,(i)x(j)。函数调用格式为,dW,dB=learnbp(X,delta,lr),第76页,76,6.含动量规则BP学习规则函数learnbpm(),为了提升BP算法学习速度并增加算法可靠性,在BP学习算法中引进了动量因子,它使权值改变等于上次权值改变与这次由BP准则引发改变之和,这么可将动量加到BP学习中,上一次权值改变影响可由动量常数来调整。动量法降低了网络对于误差曲面局部细节敏感性,有效地抑制网络陷于局部极小。而自适应学习率,也能够使训练时间大大缩短。当动量常数为0时,说明权值改变仅由梯度决定。,第77页,77,当动量常数为0时,说明权值改变仅由梯度决定。当动量常数为1时,说明新权值改变仅等于上次权值改变,而忽略掉梯度项,其数学表示式为,w(i,j)=D,w(i,j)+(1-D),(i)x(j)。函数调用格式为,dW,dB=learnbpm(X,delta,lr,D,dw,db),第78页,78,7.Levenberg-Marguardt学习规则函数learnlm(),函数learnlm()采取了Levenberg-Marguardt优化方法,从而使得学习时间更短。其缺点是,对于复杂问题,该方法需要很大存放空间。LM方法更新参数(如权值和偏值)数学表示式为,w=(J,T,J+,I),-1,J,T,e,。伴随,增大,LM方法中J,T,J 项变得无关紧要,因而学习过程由,-1,J,T,e,决定,即梯度下降法。函数调用格式为,dW,dB=learnlm(X,delta),第79页,79,例2-18,利用三层BP神经网络训练加权系数。两组3输入为1 2;-1 1;1 3,希望输出均为1,1。隐含层激活函数取S型传输函数,输出层激活函数取线性传输函数。,解,依据BP学习算法计算步骤,利用MATLAB神经网络工具箱相关函数编写程序以下。,ex2_18,结果显示:,Ok=,1.0068 0.9971,0.9758 1.0178,第80页,80,8.BP神经网络初始化函数initff(),在设计一个BP网络时,只要已知网络输入向量取值范围、各层神经元个数及传输函数,就能够利用初始化函数initff()对BP网络进行初始化。函数initff()可最多对三层神经网络进行初始化,而得到每层权值和偏值。其调用格式为:,W,b=initff(Xr,S,Tf),或 W1,b1,W2,b2=initff(Xr,S1,Tf1,S2,Tf2),W1,b1,W2,b2,W3,b3=initff(Xr,S1,Tf1,S2,Tf2,S3,Tf3),第81页,81,比如设计一个隐含层有8个神经元,传输函数为tansig,输出层有5个神经元,传输函数为purelin两层BP神经网络可利用以下命令。,X=sin(0:100);cos(0:100*2);,W1,b1,W2,b2=initff(X,8,tansig,5,purelin),第82页,82,9.利用BP算法训练前向网络函数tra
展开阅读全文