计算机MATLAB神经网络工具箱PPT学习教案_第1页
计算机MATLAB神经网络工具箱PPT学习教案_第2页
计算机MATLAB神经网络工具箱PPT学习教案_第3页
计算机MATLAB神经网络工具箱PPT学习教案_第4页
计算机MATLAB神经网络工具箱PPT学习教案_第5页
已阅读5页,还剩290页未读 继续免费阅读

下载本文档

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

文档简介

1、会计学1计算机计算机MATLAB神经网络工具箱神经网络工具箱2 本章将介绍MATLAB神经网络工具箱的应用。在MATLAB神经网络工具箱中提供了丰富的演示实例,用MATLAB语言构造了典型神经网络的激活函数,编写了各种网络设计与训练的子程序,网络的设计者可以根据自己的需要去调用工具箱中有关神经网络的设计训练程序,使自己能够从繁琐的编程中解脱出来。 第1页/共295页3 MATLAB神经网络工具箱提供了许多进行神经网络设计和分析的工具函数,这些函数的MATLAB实现,使得设计者对所选定网络进行计算的过程,转变为对函数的调用和参数的选择,这给用户带来了极大的方便,即使不了解算法的本质,也可以直接应

2、用功能丰富的函数来实现自己的目的。有关这些工具函数的使用可以通过help命令得到,本章将对这些函数的功能、调用格式,以及使用方法做详细的介绍。1 MATLAB神经网络工具箱函数第2页/共295页4 随着MATLAB软件的版本提高,其对应的神经网络工具箱的内容越来越丰富,它包括了很多现有的神经网络的新成果,涉及的网络模型有,感知机网络、线性神经网络、BP神经网络、径向基神经网络、自组织神经网络、学习向量量化神经网络、Elman神经网络、Hopfield神经网络、自适应滤波和控制系统网络等。第3页/共295页5 神经网络工具箱中的通用函数神经网络工具箱中的通用函数 MATLAB神经网络工具箱中提供

3、的函数主要分为两大部分。一部分函数是通用的,这些函数几乎可以用于所有类型的神经网络,如神经网络的初始化函数init( )、训练函数train( )和仿真函数sim( )等;另一部分函数则是特别针对某一种类型的神经网络的,如对感知机神经网络进行建立的函数simup( )等。表2-1列出了一些通用函数的名称和基本功能。 第4页/共295页6表2-1 神经网络的通用函数和功能函数名函数名功功 能能init( )初始化一个神经网络initlay( )层-层结构神经网络的初始化函数initwb( )神经网络某一层的权值和偏值初始化函数initzero( )将权值设置为零的初始化函数train( )神经网

4、络训练函数adapt( )神经网络自适应训练函数sim( ) 神经网络仿真函数dotprod( ) 权值点积函数normprod( ) 规范点积权值函数netsum( ) 输入求和函数netprod( )网络输入的积函数concur( ) 结构一致函数第5页/共295页71. 初始化神经网络函数初始化神经网络函数init( ) 利用初始化神经网络函数init( )可以对一个已存在的神经网络进行初始化修正,该网络的权值和偏值是按照网络初始化函数来进行修正的。其调用格式为:net=init(NET)第6页/共295页82. 神经网络某一层的初始化函数神经网络某一层的初始化函数initlay( )

5、初始化函数initlay( )特别适用于层-层结构神经网络的初始化,该网络的权值和偏值是按照网络初始化函数来进行修正的。其调用格式为:net=initlay(NET)第7页/共295页93. 神经网络某一层的权值和偏值初始化函数神经网络某一层的权值和偏值初始化函数initwb( ) 利用初始化函数initwb( )可以对一个已存在的神经网络的NET某一层i的权值和偏值进行初始化修正,该网络对每层的权值和偏值是按照设定的每层的初始化函数来进行修正的。其调用格式为: net=initwb(NET,i)第8页/共295页104. 神经网络训练函数神经网络训练函数train( ) 利用train( )

6、 函数可以训练一个神经网络。网络训练函数是一种通用的学习函数,训练函数重复地把一组输入向量应用到一个网络上,每次都更新网络,直到达到了某种准则。停止准则可能是最大的学习步数、最小的误差梯度或者是误差目标等,调用格式为:net,tr,Y,E,Xf,Af=train(NET,X,T,Xi,Ai)第9页/共295页115. 网络自适应训练函数网络自适应训练函数adapt( ) 另一种通用的训练函数是自适应函数adapt( )。自适应函数在每一个输入时间阶段更新网络时仿真网络,而这在进行下一个输入的仿真前完成,其调用格式为:net,Y,E,Xf,Af,tr= adapt(NET,X,T,Xi,Ai)第

7、10页/共295页126. 网络仿真函数网络仿真函数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页/共295页137. 权值点积函数权值点积函数dotprod( ) 网络输入向量与权值的点积可得到加权输入。函数dotprod ( )的调用格式为:Z=dotprod (W,X)8. 网络输入的和函数网络输入的和函数netsum( ) 网

8、络输入的和函数是通过某一层的加权输入和偏值相加作为该层的输入。调用格式:Z=netprod(Z1,Z2,)第12页/共295页149. 网络输入的积函数网络输入的积函数netprod( ) 网络输入的积函数是通过某一层的加权输入和偏值相乘作为该层的输入。调用格式:Z=netprod(Z1,Z2,)10. 结构一致函数结构一致函数concur( ) 函数concur( )的作用在于使得本来不一致的权值向量和偏值向量的结构一致,以便于进行相加或相乘运算,其调用格式为:Z=concur(b,q)。 第13页/共295页15例例2-1 利用netsum( )函数和netprod( )函数,对两个加权输

9、入向量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 -1X1 = 0 4 6 -2 -2 2X2 = -1 4 8 -15 -24 1 第14页/共295页16 感知机神经网络工具箱函数感知机神经网络工具箱函数 MATLAB神经网络工具箱中提供了大量的与感知机相关的的函数。在MATLAB工作空间的命令行键入“help percept”,便

10、可得到与感知机(Perceptron)相关的函数,进一步利用help命令又能得到相关函数的详细介绍。表2-2列出了这些函数的名称和基本功能。 第15页/共295页17表2-2 感知机网络的重要函数和功能 函数名函数名功功 能能mae( ) 平均绝对误差性能函数hardlim( )硬限幅传输函数hardlims( )对称硬限幅传输函数plotpv( )在坐标图上绘出样本点plotpc( )在已绘制的图上加分类线initp( )对感知机神经网络进行初始化trainp( )训练感知机神经网络的权值和偏值trainpn( )训练标准化感知机的权值和偏值simup( ) 对感知机神经网络进行仿真lear

11、np( )感知机的学习函数learnpn( )标准化感知机的学习函数newp( )生成一个感知机第16页/共295页181平均绝对误差性能函数mae( ) 感知机网络学习规则为调整网络的权值和偏值,使网络的平均绝对误差和性能最小。平均绝对误差性能函数的调用格式为:perf=mae(E,w,pp)第17页/共295页192硬限幅传输函数hardlim( ) 硬限幅传输函数hardlim( )通过计算网络的输入得到该层的输出。如果网络的输入达到门限,则硬限幅传输函数的输出为1,否则为0。这表明神经元可用来作出判断或分类。其调用格式为:a=hardlim(N)或 a=hardlim(Z,b)a=ha

12、rdlim(P)第18页/共295页20返回的元素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页/共295页213对称硬限幅传输函数hardlims( ) 对称硬限幅传输函

13、数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页/共295页22例例2-2 建立一个感知机网络,使其能够完成“或”的功能。解解 为了完成“或”函数,建立一个两输入、单输出的一个单层感知机网络。设输入向量为:X=0 0 1 1;0 1 0 1, 目标向量为:T=0 1 1 1。激活函数取硬限幅传输函数。 根据感知机学习算法的计算步骤,利用MATLAB的神经

14、网络工具箱的有关函数编写的程序如下。 ex2_2第21页/共295页23结果显示:epoch = 3Wij = y = 0 1 1 1 第22页/共295页244. 绘制样本点的函数plotpv( ) 利用plotpv( ) 函数可在坐标图中绘出已知给出的样本点及其类别,不同的类别使用了不同的符号。其调用格式为:plotpv(X,T) 如果T只含一元矢量,目标0的输入矢量画为“o”; 目标1的输入矢量画为“+”; 如果T含二元矢量,则输入矢量对应如下:0 0用“o”;0 1用“+”;1 0用“*”;1 1用“”。例 第23页/共295页25X=-0.5,-0.5,0.3,-0.1,0.2,0.

15、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页/共295页26 5. 在存在的图上画感知机的分类线函数plotpc( ) 硬特性神经元将输入空间用一条直线(如果神经元有两个输入),或用一个平面(如果神经元有三个输入),或用一个超平面(如果神经元有三个以上输入)分成两个区域。plotpc(w,b)对含权矩阵w和偏差矢量b的硬特性神经元的两个或三个输入画一个分类线。这一函数返回分类线的句柄以便以后调用。plo

16、tpc(w,b,h)包含从前的一次调用中返回的句柄,它在画新分类线之前,删除旧线。 第25页/共295页27 6. 感知机神经网络的初始化函数initp( ) 利用initp( ) 函数可建立一个单层(一个输入层和一个输出层)感知机神经网络。其调用格式为: W,b=initp(R,S)或 W,b=initp(X,T)第26页/共295页28例利用以下命令,可得图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( )函数可以在已绘制的图上加上感知机分类线(及以下版本利用此命令不能

17、产生分类线),如图2-3所示。由图可见经过初始化后的网络对输入样本还不能正确进行分类。 图2-3 输入样本加网络初始分类线-0.500.511.5-0.500.511.5Vectors to be ClassifiedP(1)P(2)第27页/共295页29 7用感知机准则训练感知机的函数trainp( ) 经过初始化建立的感知机,还必须经过训练才能够实际应用。通过训练以决定网络的权值和偏值。对于感知机,其训练过程为:对于给定的输入向量,计算网络的实际输出,并与相应的目标向量进行比较,得到误差,然后根据相应的学习规则调整权值和偏值。重新计算网络在新的权值和偏值作用下的输出,重复上述的权值和偏值

18、的调整过程,直到网络的输出与期望的目标向量相等或者训练次数达到预定的最大次数时才停止训练,之所以要设定最大训练次数,是因为对于有些问题,使用感知机神经网络时是不能解决的,这正是感知机的缺点。 第28页/共295页30训练感知机神经网络trainp( ) 函数的调用格式为:W,B,epochs,errors= trainp(w,b,X,T,tp) 第29页/共295页31例例2-4 利用trainp( )函数训练一个感知机网络,并用训练后的网络对输入样本进行分类。 解解 程序如下。ex2_4例利用以上程序,可得如图2-4所示的样本及分类线。 用标准化感知机准则训练感知机的函数trainpn( )

19、的用法同函数trainp( ),即使输入矢量的长度不同,使用标准化感知机准则也使得学习过程收敛很快。 图2-4 样本加分类线-0.500.511.5-0.500.511.5Vectors to be ClassifiedP(1)P(2)第30页/共295页328. 感知机神经网络的仿真函数simup( ) 神经网络一旦训练完成,网络的权值和偏值就已经确定了。于是就可以使用它来解决实际问题了。感知机由一系列硬特性神经元组成,运行速度很快,对简单的分类很有用。利用simup( ) 函数可以测试一个感知机神经网络的性能。其调用格式为:Y=simup(X,w,b) 第31页/共295页33例例2-5

20、利用trainp( )函数训练一个感知机网络,使其能够完成“或”的功能。 解解 根据神经网络工具箱函数编写的程序如下。ex2_5 执行以上程序可得如下结果以及图2-5至图2-8。y = 0 1 1 1 由以上结果和图2-7可知,训练后的网络已具有“或”的功能,且可对输入样本进行正确分类 第32页/共295页34图2-5 输入样本的分类 图2-6 输入样本加网络初始分类线 -0.500.511.5-0.500.511.5Vectors to be ClassifiedP(1)P(2)-0.500.511.5-0.500.511.5Vectors to be ClassifiedP(1)P(2)-

21、0.500.511.5-0.500.511.5Vectors to be ClassifiedP(1)P(2)00.20.40.60.811.21.41.61.8210-1610-1410-1210-1010-810-610-410-2100EpochSum-Squared ErrorSum-Squared Network Error for 2 Epochs图2-7 输入样本加网络训练后的分类线 图2-8 误差曲线 第33页/共295页35例例2-6 利用trainp( )函数训练一个感知机网络,使其能够对三个输入进行分类。 解解 根据神经网络工具箱函数编写的程序如下。ex2_6 执行以上程

22、序可得如下结果以及图2-9至图2-12。y = 0 1 0 0 1 1 0 1 第34页/共295页36-101-101-1.5-1-0.500.511.5P(1)P(2)P(3)Vectors to be Classified-101-101-1.5-1-0.500.511.5P(1)Vectors to be ClassifiedP(2)P(3)-101-101-1.5-1-0.500.511.5P(1)Vectors to be ClassifiedP(2)P(3)00.20.40.60.811.21.41.61.8210-2010-1510-1010-5100105EpochSum-S

23、quared ErrorSum-Squared Network Error for 2 Epochs图2-9 输入样本的分类 图2-10 输入样本加网络初始分类线 图2-11 输入样本加网络训练后的分类线 图2-12 误差曲线 第35页/共295页37例例2-7 利用trainp( )函数训练一个感知机网络,使其能够将输入分为4类。 解解 根据神经网络工具箱函数编写的程序如下。ex2-7第36页/共295页38执行以上程序可得如下结果以及图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

24、-14 误差曲线 -2.5-2-1.5-1-0.500.511.52-2-10123Vectors to be ClassifiedP(1)P(2)012345610-2010-1510-1010-5100105EpochSum-Squared ErrorSum-Squared Network Error for 6 Epochs第37页/共295页399感知机学习函数learnp( ) 感知机神经网络学习规则为调整网络的权值和偏值使网络平均绝对误差性能最小,以便对网络输入矢量正确分类。感知机的学习规则只能训练单层网络,函数调用格式为:dW, db=learnp(X,E)第38页/共295页4

25、0例例2-8 利用learnp( )函数训练建立一个感知机网络,使其能够完成“或”的功能。 解解 根据神经网络工具箱函数编写的程序如下。ex2_8第39页/共295页41结果显示:epoch = 5W =y = 0 1 1 1 第40页/共295页4210标准化感知机学习函数learnpn( )感知机学习规则在调整网络的权值和偏值时利用下式从上式可以看出,输入向量X越大,则权值的变化w就越大。当存在奇异样本(即该样本向量同其它所有的样本向量比较起来,特别得大或者特别得小)时,利用以上规则训练时间大为加长。因为其它样本则需花很多时间才能同奇异样本所对应的权值变化相匹配。为了消除学习训练时间对奇异

26、样本的敏感性,提出了一种改进的感知机学习规则,也成为标准化感知机学习规则,标准化感知机学习规则试图使奇异样本和其它样本对权值的变化值的影响均衡,它可通过下式实现TTXEYTXw)(TTEXXYTXXw)(第41页/共295页43 标准化感知机的学习函数为learnpn( ),其调用格式为:dW, db=learnpn(X,E) 相应于标准化感知机学习规则的训练函数为trainpn( ),其调用格式为:W,B,epochs,errors= trainpn(w,b,X,T,tp) 第42页/共295页44例例2-9 利用trainpn( )函数训练建立一个感知机网络,观察奇异输入样本对训练结果的影

27、响。 解解 根据神经网络工具箱函数编写的程序如下。ex2_9第43页/共295页45 执行以上程序可得如下结果以及图2-15和图2-16。y = 1 1 0 0 1 -100-80-60-40-20020-40-20020406080100120140Vectors to be ClassifiedP(1)P(2)00.20.40.60.811.21.41.61.8210-2010-1510-1010-5100105EpochSum-Squared ErrorSum-Squared Network Error for 2 Epochs图2-15 输入样本加网络训练后的分类线 图2-16 误差曲

28、线 由图2-16可见利用函数trainpn( ),网络训练只需要2步,如果利用函数trainp( ),网络训练需要经过60多步。 第44页/共295页46例例2-10 利用trainpn( )函数训练建立一个感知机网络,对“异或”问题进行分类。解解 单层感知机不能解决像逻辑“异或”一类的线性不可分的输入向量的分类问题,解决这一问题的方案,是可以设计一个两层的网络,即含有输入层,隐含层和输出层的结构。设输入向量为:X=0 0 1 1;0 1 0 1,目标向量为:T=0 1 1 0。根据神经网络工具箱函数编写的程序如下。 执行以上程序可得如下结果以及图2-17和图2-18。y = 0 1 1 0

29、第45页/共295页47由图2-18可见网络训练只需要4步。需要指出的是,由于隐含层的权值和偏值是随机给定的而且不可调整,故隐含层的输出也是随机的,这样网络有可能有解,也有可能无解,如果网络找不到解,可再次运行网络,以重新初始化隐含层的权值和偏值。如果采用单层网络,对以上问题永远也找不到正确的分类方案。-0.500.511.5-0.500.511.5Vectors to be ClassifiedP(1)P(2)00.511.522.533.5410-2010-1510-1010-5100105EpochSum-Squared ErrorSum-Squared Network Error fo

30、r 4 Epochs第46页/共295页48 11. 建立感知机神经网络函数newp( ) 利用newp( ) 函数可建立一个感知机神经网络。其调用格式为:net=newp(Xr,S,Tf,Lf)例建立一个两输入且样本点取值在-1,1之间,而网络只有单个神经元的感知机神经网络,可利用以下命令 net=newp(-1 1;-1 1,1); 第47页/共295页49 使用plotpc( )函数可以在已绘制的图上加上感知机分类线。让它返回得到的分类线的句柄,以便在下一次再绘制分类线时能够将原来的删除。例handle=plotpc(net.iw1,net.b1); 式中 net.iw1用来计算网络ne

31、t的权值,net.b1用来计算网络net的偏值。 第48页/共295页50例例2-11 利用newp( )和train( )函数建立并训练一个感知机网络,使其同样能够完成“或”的功能。解解 根据神经网络工具箱函数编写的程序如下。ex2_11 执行结果y = 0 1 1 1 第49页/共295页51例例2-12 利用train( )函数训练一个感知机网络,并选择10个点对其进行测试。解解 根据神经网络工具箱函数编写的程序如下。 运行以上命令可得如图2-20和图2-21所示的训练过程误差曲线和测试结果。由图可见网络训练只需5步,就能够将它们正确分类,这说明了设计的网络是正确的。 第50页/共295

32、页52 线性神经网络工具箱函数线性神经网络工具箱函数 MATLAB神经网络工具箱中提供了大量的与线性网络相关的的工具箱函数。在MATLAB工作空间的命令行键入“help linnet”,便可得到与线性网络相关的函数,进一步利用help命令又能得到相关函数的详细介绍。表2-3列出了这些函数的名称和基本功能。第51页/共295页53表2-3 线性网络的重要函数和功能函数名函数名功功 能能sse( ) 误差平方和性能函数purelin( )线性传输函数initlin( )线性线性神经的初始化函数solvelin( )设计一个线性神经网络simulin( )对线性神经网络进行仿真maxlinlr( )

33、计算线性层的最大学习速率learnwh( )Widrow-hoff的学习函数trainwh( )对线性神经网络进行离线训练adaptwh( )对线性神经网络进行在线自适应训练newlind( )设计一个线性层newlin( )新建一个线性层第52页/共295页541误差平方和性能函数sse( ) 线性网络学习规则为调整网络的权值和偏值使网络误差平方和性能最小。误差平方和性能函数的调用格式为:perf=sse(E,w,pp)第53页/共295页552. 线性传输函数purelin( ) 神经元最简单的传输函数是简单地从神经元输入到输出的线性传输函数,输出仅仅被神经元所附加的偏差所修正。线性传输函

34、数常用于Widriw-Hoff或BP准则来训练的神经网络中,该函数调用格式为:a=purelin(N)或 a=purelin(Z,b)a=purelin(P) 第54页/共295页56函数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) -5-4-3-2-1012345-

35、5-4-3-2-1012345图2-22 线性传输函数 第55页/共295页57 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); 第56页/共295页584. 设计一个线性神经网络函数solvelin( ) 同大多数其它神经网络不同的是,只要已知线性神经网络的输入向量和目标向量,就可以直接对其进行设计。使用函数solvelin( )

36、设计的线性神经网络,可以不经过训练,直接找出网络的权值和偏值,使得网络的误差的平方和最小。该函数的调用格式为:W,b=solvelin(X,T)第57页/共295页59 5. 线性神经网络的仿真函数simulin( ) 利用函数solvelin( )建立的线性神经网络的权值和偏值就已经根据网络的输入向量和目标向量训练好了。simulin( ) 函数可以测试一个线性神经网络的性能。其调用格式为:Y=simulin(X,w,b) 第58页/共295页60例例2-13 利用solvelin( )函数建立一个线性网络,并对其进行测试。X=1 2 3;T=2.0 4.1 5.9; %给定训练集和目标值W

37、,b=solvelin(X,T);y=simulin(X,W,b)结果显示: y= 2.0500 4.0000 5.9500 第59页/共295页61 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 第60页/共295

38、页62 7线性神经网络学习函数learnwh( ) 线性网络采用Widrow-Hoff学习规则,Widrow-Hoff学习规则只能训练单层的线性神经网络,但这并不影响单层线性神经网络的应用,因为对每一个多层线性神经网络而言,都可以设计出一个性能完全相当的单层线性神经网络。当利用函数solvelin( )设计的线性神经网络不能调整网络的权值和偏值使网络误差平方和性能最小时,可以应用函数learnwh( )和 函数trainwh( )来调整网络的权值和偏值。函数learnwh( )的调用格式为:dW, db=learnwh(X,E,lr) 第61页/共295页63 8线性神经网络的训练函数trai

39、nwh( ) 函数trainwh( )可利用Widrow-Hoff学习规则对线性层的权值进行训练,利用输入矢量,计算该层输出矢量,然后根据产生的误差矢量调整该层的权值和偏差。调用格式为:W,B,epochs,errors= trainwh(w,b,X,T,tp)第62页/共295页649. 线性神经网络自适应训练函数adaptwh( ) 函数adaptwh( )可以利用Widrow-Hoff学习规则对线性层的权值进行自适应调节,在每一步迭代过程中,修改自适应线性网络层的权值、偏差和输出矢量,从而学习并适应环境的变化。其调用格式为:Y,E,W,B= adaptwh(w,b,X,T,lr)第63页

40、/共295页65 10. 设计一个线性层函数newlind( ) 利用函数newlind( )设计出的线性网络已经训练好,可直接使用,该函数调用格式为:net=newlind(X,T)第64页/共295页66例例2-14 利用newlind( )函数建立一个线性网络,并对其进行测试。解解 MATLAB程序如下。X=1 2 3;T=2.0 4.1 5.9; %给定训练集和目标值net=newlind(X,T);y=sim(net,X)执行结果:第65页/共295页6711. 新建一个线性层函数newlin( ) 利用函数newlin( )设计的线性网络,还需训练,该函数调用格式为:net=new

41、lin(Xr,S,Id,lr)例建立一个线性网络。可利用以下命令 X=1 2 3;S=1;net=newlin(minmax(X),S); 第66页/共295页68执行结果可得图2-23和图2-24。 图2-23 系统输入输出曲线 图2-24 网络预测输出与系统输出和误差 例例2-15 利用线性网络进行系统辨识。解 MATLAB程序如下: ex2_15 第67页/共295页69执行结果可得图2-25和图2-26。 图2-25 网络待预测的目标信号 图2-26 网络预测输出与目标值 例例2-16 利用线性网络进行自适应预测。解方法一: MATLAB程序如下: ex2_16_1第68页/共295页

42、70执行结果可得图2-27和图2-28。 图2-27 网络待预测的目标信号 图2-28网络预测输出与误差 方法二:MATLAB程序如下: ex2_16_2第69页/共295页71执行结果可得图2-29和图2-30。 图2-29 网络待预测的目标信号 图2-30 网络预测输出目标信号与误差 例例2-17 利用线性网络预测一个时变信号序列。解 MATLAB程序如下: ex2_17第70页/共295页72 BP神经网络工具箱函数神经网络工具箱函数 MATLAB神经网络工具箱中提供了大量的进行BP网络分析和设计的工具箱函数。在MATLAB工作空间的命令行键入“help backprop”,便可得到与B

43、P神经网络相关的函数,进一步利用help命令又能得到相关函数的详细介绍。表2-4列出了这些函数的名称和基本功能。 第71页/共295页73表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( )含动量

44、规则的快速BP学习规则learnlm( )Levenberg-Marguardt学习规则initff( )对BP神经网络进行初始化trainbp( )利用BP算法训练前向网络trainbpx( )利用快速BP算法训练前向网络trainlm( )利用Levenberg-Marguardt规则训练前向网络第72页/共295页74函数名函数名功功 能能simuff( )BP神经网络进行仿真newff( )生成一个前馈BP网络newfftd( )生成一个前馈输入延时BP网络newcf( )生成一个前向层叠BP网络nwlog( )对Logsig神经元产生Nguyen-Midrow随机数sse( ) 误差

45、平方和性能函数sumsqr( )计算误差平方和errsurf( )计算误差曲面plotes( )绘制误差曲面图plotep( )在误差曲面图上绘制权值和偏值的位置ploterr( )绘制误差平方和对训练次数的曲线barerr( )绘制误差的直方图第73页/共295页751均方误差性能函数均方误差性能函数mse( ) BP神经网络学习规则为调整网络的权值和偏值,使网络的均方误差和性能最小。均方误差性能函数的调用格式为:perf=mse(E,w,pp)第74页/共295页762. 双曲正切S型(Sigmoid)传输函数tansig( ) 双曲正切Sigmoid函数把神经元的输入范围从(-,+)映射

46、到(-1,+1),它是可导函数,适用于BP训练的神经元,函数调用格式为: a=tansig(N)或 a=tansig(Z,b)tansig (P)第75页/共295页77函数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 双曲正切曲线 第76页/共295页78

47、 如果BP网络的最后一层是Sigmoid型神经元,那么整个网络的输出就被限制在一个较小的范围内;如果BP网络的最后一层是Purelin型线性神经元,那么整个网络的输出可以取任意值。 第77页/共295页793. 正切正切S型(型(Tansig)神经元的求导函数)神经元的求导函数dtansig( ) 函数dtansig( )为Tansig神经元的导函数,它根据Y=1-X2的函数来计算,其调用格式为:dY_dX =dtansig(X,Y) Logsig和Purelin神经元的导函数dlogsig( )和dpurelin( )的用法同上。但它们分别根据Y=X*(1-X)和Y=1的函数来计算。例利用以

48、下MATLAB命令X=0.1 0.8 0.7;Y=tansig(x),dY_dX=dtansig(X,Y)结果显示:Y=dY_dX= 第78页/共295页804. 正切S型(Tansig)神经元的求导函数deltatan ( ) 反向传播误差算法(BP)是利用误差平方和对网络各层输入的导数来调整其权值和偏值的,从而降低误差平方和。从网络误差矢量中可推导出输出层的误差导数或(delta)矢量,隐含层的矢量的导出,这种矢量的反向传播正是BP算法的由来。函数调用格式为: dy=deltatan(y)或 dy=deltatan(y,e) dy=deltatan(y,d2,w2) Logsig和Pure

49、lin神经元的delta函数deltalog( )和deltalin( )的用法同上。第79页/共295页81学习规则函数learnbp( ) BP神经网络学习规则为调整网络的权值和偏值使网络误差的平方和为最小。这是通过在最速下降方向上不断地调整网络的权值和偏值来达到的。计算网络输出层的误差矢量导数,然后反馈回网络,直到每个隐含层的误差导数(称为delta)都达到。这可由函数deltatan( )、deltalin( )和deltalog( )计算。根据BP准则,每一层的权值矩阵w利用本层的向量和输入向量x来更新,即w(i,j)=(i)x(j) 。函数调用格式为dW,dB=learnbp(X,

50、delta,lr)第80页/共295页826. 含动量规则的BP学习规则函数learnbpm( ) 为了提高BP算法的学习速度并增加算法的可靠性,在BP学习算法中引进了动量因子,它使权值的变化等于上次权值的变化与这次由BP准则引起的变化之和,这样可将动量加到BP学习中,上一次权值变化的影响可由动量常数来调整。动量法降低了网络对于误差曲面局部细节的敏感性,有效地抑制网络陷于局部极小。而自适应学习率,也可以使训练时间大大缩短。当动量常数为0时,说明权值的变化仅由梯度决定。第81页/共295页83 当动量常数为0时,说明权值的变化仅由梯度决定。当动量常数为1时,说明新的权值变化仅等于上次权值变化,而

51、忽略掉梯度项,其数学表达式为w(i,j)=Dw(i,j)+(1-D)(i)x(j)。函数调用格式为dW,dB=learnbpm(X,delta,lr,D,dw,db)第82页/共295页847. Levenberg-Marguardt学习规则函数learnlm( ) 函数learnlm( )采用了Levenberg-Marguardt优化方法,从而使得学习时间更短。其缺点是,对于复杂的问题,该方法需要很大的存储空间。LM方法更新参数(如权值和偏值)的数学表达式为w=(JTJ+I)-1JTe。随着的增大,LM方法中的JTJ 项变得无关紧要,因而学习过程由 -1JTe决定,即梯度下降法。函数调用格

52、式为dW,dB=learnlm(X,delta)第83页/共295页85例例2-18 利用三层BP神经网络训练加权系数。两组3输入为1 2;-1 1;1 3,希望的输出均为1,1。隐含层的激活函数取S型传输函数,输出层的激活函数取线性传输函数。解解 根据BP学习算法的计算步骤,利用MATLAB的神经网络工具箱的有关函数编写的程序如下。ex2_18结果显示:Ok =第84页/共295页868. BP神经网络初始化函数initff( ) 在设计一个BP网络时,只要已知网络的输入向量的取值范围、各层的神经元个数及传输函数,就可以利用初始化函数initff( )对BP网络进行初始化。函数initff(

53、 )可最多对三层神经网络进行初始化,而得到每层的权值和偏值。其调用格式为: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) 第85页/共295页87 例如设计一个隐含层有8个神经元,传输函数为tansig,输出层有5个神经元,传输函数为purelin的两层BP神经网络可利用以下命令。 X=sin(0:100);cos(0:100*2); W1,b1,W2,b2=initff(X,8,tansig,5,purelin) 第

54、86页/共295页889. 利用BP算法训练前向网络函数trainbp( ) BP神经网络学习规则为调整网络的权值和偏值使网络误差的平方和为最小。这是通过在最速下降方向上不断地调整网络的权值和偏值来达到的。函数调用格式为:W,B,te,tr=trainbp(w,b,Tf,X,T,tp)或 W1,B1,W2,B2,te,tr=trainbp(w1,b1,Tf1,w2 ,b2,Tf2 , X,T,tp) W1,B1,W2,B2, W3,B3,te,tr= t r a i n b p ( w 1 , b 1 , T f 1 , w 2 , b 2 , T f 2 ,w3,b3,Tf3,X,T,tp)

55、 第87页/共295页8910. 利用快速BP算法训练前向网络函数trainbpx( ) 使用动量因子时,BP算法可找到更好的解,而自适应学习率,也可以使训练时间大大缩短。函数调用格式为:W,B,te,tr=trainbpx(w,b,Tf,X,T,tp)或 W1,B1,W2,B2,te,tr=trainbpx(w1,b1,Tf1,w2,b2,Tf2,X,T,tp); W1,B1,W2,B2, W3,B3,te,tr=trainbpx(w1,b1,Tf1,w2 ,b2,Tf2 ,w3,b3,Tf3,X,T,tp)第88页/共295页9011. 利用Levenberg-Marguardt规则训练前

56、向网络函数trainlm( ) 函数trainbp( )和trainbpx( ) 都是基于梯度下降的训练算法,而函数trainblm( )是建立在一种优化方法基础上的训练算法。其调用格式为:W,B,te,tr=trainlm(w,b,Tf,X,T,tp)或 W1,B1,W2,B2,te,tr=trainlm(w1,b1,Tf1,w2 ,b2,Tf2 , X,T,tp) W1,B1,W2,B2, W3,B3,te,tr= trainlm(w1,b1,Tf1,w2 ,b2,Tf2 ,w3,b3,Tf3,X,T,tp) 第89页/共295页91 函数trainlm( )的训练速度最快,但它需要更大的

57、存储空间,trainbpx( ) 的训练速度次之,trainbp( )最慢。 第90页/共295页9212. BP神经网络仿真函数simuff( ) BP神经网络由一系列网络层组成,每一层都从前一层得到输入数据,simuff( )函数可仿真最多三层前向网络。其调用格式为:y=simuff (X,W,b,Tf,)或 y1,y2=simuff (X,w1,b1,Tf1,w2,b2,Tf2) y1,y2,y3=simuff (X,w1,b1,Tf1,w2,b2,Tf2,w3,b3,Tf3,)式中 X为的输入向量;w,wi为权值矩阵;b,bi为偏值;Tf,Tfi为传输函数。 第91页/共295页93例

58、例2-19 利用两层BP神经网络完成函数逼近。隐含层的激活函数取S型传输函数,输出层的激活函数取线性传输函数。解解 (1)根据神经网络工具箱函数trainbp( )编写的程序如下。ex2_19_1 利用以上程序可得图2-32和如下结果。y2 = 0.9887 第92页/共295页94利用以上程序可得如下结果。y2 = 1.0026 (2)根据神经网络工具箱函数trainbpx( )编写的程序如下。ex2_19_2 (3)根据神经网络工具箱函数trainlm( )编写的程序如下。ex2_19_3 结果显示:y2 = 0.9987 第93页/共295页9513. 建立网络函数newff( ) 利用

59、newff( ) 函数可建立一个感知机神经网络。其调用格式为:net=newff(Xr,S1 S2.SNl,TF1 TF2.TFNl,BTF,BLF,PF)第94页/共295页96例例2-20 利用newff( )函数建立一个非线性函数的BP网络逼近正弦函数。解解 MATLAB程序如下。 未经训练的网络输出与目标值(正弦函数)的比较,如图2-33所示。网络的权值和偏值是随机的,所以未将训练的网络输出效果很差,而且每次运行结果也不一样。 图2-33 未训练的网络输出与目标值第95页/共295页9714. 建立网络函数建立网络函数newfftd( ) 利用newfftd( )函数可生成一个前馈输入

60、延时BP网络。其调用格式为:net=newfftd(Xr,ID,S1 S2.SNl,TF1 TF2.TFNl,BTF,BLF,PF)式中,ID为延迟输入向量;其他参数定义同函数newff( )。第96页/共295页98例例2-21 利用两层BP神经网络训练加权系数。两组3输入为1 2;-1 1;1 3,希望的输出均为1,1。隐含层的激活函数取S型传输函数,输出层的激活函数取线性传输函数。解解 根据神经网络工具箱函数编写的程序如下。ex2_21结果显示: 1.0000 1.0000 第97页/共295页9915. 计算误差曲面函数errsurf( ) 利用误差曲面函数可以计算单输入神经元误差的平

温馨提示

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

评论

0/150

提交评论