《常见的几种神经网络ppt课件.ppt》由会员分享,可在线阅读,更多相关《常见的几种神经网络ppt课件.ppt(46页珍藏版)》请在三一办公上搜索。
1、,目录,一、感知器神经网络,输入,神经元,感知器神经元的一般模型,1.感知器的学习,感知器的学习是有导师学习方式。 感知器的训练算法的基本原理来源于著名的Hebb学习律。 基本思想:逐步地将样本集中的输入到网络中,根据输出结果和理想输出之间的差别来调整网络中的权矩阵 。 最实用的功能:对输入向量进行分类。,2.感知器的局限性,感知器神经网络的传输函数一般采用阈值函数,所以输出值只能取0或1;感知器神经网络只能对线性可分的向量集合进行分类。理论上已经证明,只要输入向量是线性可分的,感知器在有限的时间内总能达到目标向量。当感知器神经网络的所有输入样本中存在奇异的样本时,即该样本向量同其它所有样本向
2、量比较起来特别大或特别小时,网络训练花费的时间将很长。,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为训练后的网
3、络; tr为训练记录; Y为网络的输出向量; E为误差向量; Pf为训练终止时的输入延迟状态; Af为训练终止时的层延迟状态; NET为训练前的网络; P为网络的输入向量矩阵; T为网络的目标矩阵,默认值为0; Pi表示初始输入延时,默认值为0; Ai表示初始的层延时,默认值为0; VV为验证矢量(可省略); TV为测试向量(可省略)。,网络训练函数是一种通用的学习函数,训练函数重复地把一组输入向量应用到一个网络上,每次都更新网络,直到达到了某种准则,停止准则可能是达到最大的学习步数、最小的误差梯度或误差目标等。,3.感知器神经网络仿真设计分析,sim函数功能:对网络进行仿真。格式:Y,Pf,
4、Af,E,perf=sim(NET,P,Pi,Ai,T) Y,Pf,Af,E,perf=sim(NET,Q,TS,Pi,Ai,T) Y,Pf,Af,E,perf=sim(NET,Q,Pi,Ai,T)说明: Y为网络的输出向量; Pf为训练终止时的输入延迟状态; Af为训练终止时的层延迟状态; E为误差向量; perf为网络的性能值; NET为要测试的网络对象; P为网络的输入向量矩阵; Pi表示初始输入延时,默认值为0; Ai表示初始的层延时,默认值为0;T为网络的目标矩阵(可省略)。 Q为批处理数据的个数; TS为网络仿真的时间步数。,3.感知器神经网络仿真设计分析,lotpv函数功能:绘制
5、样本点的函数。格式:plotpv(P,T) plotpv(P,T,V)说明: P定义了n个2或3维的样本,是一个2xn维或3xn维的矩阵; T表示个样本点的类别,是一个n维的向量; V=x_min y_min x_max y_max为一设置绘图坐标值范围的向量; 利用plotpv函数可以在坐标图中会出给定的样本样本点及其类别,不同的类别使用不同的符号。例如,如果T只含一元向量,则目标为0的输入向量在坐标图中用“o”表示;目标为1的输入向量在坐标图中用“+”表示。如果T含二元向量,则输入向量在坐标图中采用的符号分别为:0 0用“o”表示;0 1用“+”表示;1 0用“*”表示;1 1用“”表示。
6、,3.感知器神经网络仿真设计分析,lotpc函数功能:在存在的图上绘制出感知器分类线函数。格式: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为误差矩阵或向量(网络的目标向量和输出向量之差);
7、 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.e
8、pochs=15; %设置训练次数最大为15net=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、线性神经网络特点,线性神经网络类似于感知器,但是线性
9、神经网络的激活函数是线性的,而不是硬性激活函数(hardlim)。因此,线性神经网络的输出可以是任意值,而感知器的输出不是0就是1。线性神经网络和感知器一样只能求解线性可分的问题。因此,线性神经网络的局限性和感知器相同。线性神经网络包括单层网络和多层网络,其中以以单层神经网络应用较多。,2、线性神经网络的学习,对线性神经网络可以不经过训练直接求出网络的权值和阈值,如果网络有多个零误差姐,则取最小的一组权值和与之;如果网络不存在零误差解,则取网络的误差平方和最小的一组权值和阈值。另外,当不能直接求出网络权值和阈值时,线性神经网络及自适应线性神经网络可采用使均方误差最小的学习规则,即LMS算法,或
10、称之为WH学习规则来调整网络的权值和阈值,它是一种沿误差的最陡下降方向对前一步权值向量进行修正的方法。,3.线性神经网络的MATLAB实现,线性神经网络创建函数和设计函数 newlin函数功能:用于创建一线性层。 线性层通常做信号处理和预测中的自适应滤波器。格式:net = newlin(P,S,ID,LR) 说明:P是以输入元素的最大和最小值组成的矩阵;s为输出向量数目;ID为输入延迟向量;LR为学习速率;net为创建的线性层。newlind函数功能:用于设计一线性层。格式:net = newlind(P,T,Pi) 说明:P为输入向量组成的矩阵;T为目标分类向量组成的矩阵;Pi为初始输入延
11、迟状态的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为由输入
12、向量组成的矩阵。 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; %计算神经元误差
13、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 = ne
14、wlin(minmax(P),1 ,0,0.01); %学习速率为0.01net=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
15、)的学习算法;它是一种多层前向反馈神经网络,其神经元的变换函数是S型函数;输出量为0到1之间的连续量,它可实现从输入到输出的任意的非线性映射。,BP神经元模型,a=f(wx+),1.网络拓扑结构,2.BP网络的学习,BP网络的学习过程分为两个阶段:输入已知学习样本,通过设置网络结构和前一次迭代的权值和阈值,从网络的第一层向后计算各神经元的输出。对权值和阈值进行修改,从最后一层向前计算各权值和阈值对总误差的影响(梯度),据此对各权值和阈值进行修改。以上两个过程反复交替,直到达到收敛为止。,3.BP网络的MATLAB实现,BP 神经网络创建函数newcf函数功能:用于创建一个级联前馈BP网络。格式
16、: net=newcf(PR,S1,S2SN,TF1TF2TFN,BTF,BLF,PF)说明: PR输入向量的取值范围,由每组输入(共有R组 输入)元素的最大和最小值组成的R2维矩阵。 Si第i层的神经元个数(长度),总共N层 TFi第i层的传递函数,缺省值为“tansig” BTFBP网络训练函数,缺省值为“tranlm” BLFBP网络权值和阈值学习函数,缺省值为“learngdm” PF性能函数,缺省值为“mse” 执行后,创建一个N层的BP神经网络。,3.BP网络的MATLAB实现, newff函数功能:用于创建一个前馈BP神经网络。格式: net=newff(PR,S1,S2SN,
17、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值的不同返不同的信息,包括: de
18、riv返回微分函数的名称。 name返回函数全称。 output返回输出值域。 active返回有效的输入区间。,3.BP网络的MATLAB实现, dlogsig函数功能:该函数为logsig的导函数。格式:dA_dN=dlogsig(N,A)说明:NSQ维网络的输入; ASQ维网络的输出; dA_dN函数返回值,输出对输入的导数。注:MATLAB2007按照此形式的函数来计算对数传递函数的值: yx*(1-x),3.BP网络的MATLAB实现, tansig函数功能:该函数为双曲正切S型传递函数。格式:A=tansig(N) info=tansig(code)说明:NQ个S维的输入列向量;
19、A函数返回值,位于区间(0,1)中; info=tansig(code)含义参见 info=logsig(code)说明。注:MATLAB2007按照此形式的函数来计算双曲正切传递函数的值: n2(1+exp(-2n)-1,3.BP网络的MATLAB实现,dtansig函数功能:该函数是tansig的导函数。格式:dA_dN=dtansig(N,A)说明:各参数的意义参见dlogsig,其原型函数为 y1-x2purelin函数功能:该函数是线性传递函数。格式:A=purelin(N) info=purelin(code)说明:NQ个S维的输入列向量;A函数返回值,A=N; info=pure
20、lin (code)含义参见 info=logsig(code)说明,原型函数为 yx。dpurelin函数功能: 该函数是purelin的导函数。调用格式: dA_dN=dpurelin(N,A)说明:各参数的意义参见dlogsig,原型函数为常数函数:x1。,3.BP网络的MATLAB实现,BP网络学习函数learngd函数功能:该函数为梯度下降权值/阈值学习函数,它通过神经元的输入和误差,以及权值和阈值的学习速率来计算权值和阈值的变化率。格式:说明:,3.BP网络的MATLAB实现,learngdm函数功能:该函数为梯度下降动量学习函数,它利用神经元的输入和误差、权值或阈值的学习速率和动
21、量常数来计算权值或阈值的变化率。格式:说明:各参数的含义见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为确定向量结
22、构或者为空; 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)说明:其参数意义、设置格式或适用
23、范围等参加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实现,显示函数plotper
24、f函数功能:该函数用于绘制网络的性能。格式:plotperf(tr,goal,name,epoch)说明:tr为网络的训练记录; goal为性能指标,默认NaN; name为训练函数名称,默认为空; epoch为训练步数,默认为训练记录的长度。此函数除了可以绘制网络训练性能外,还可以绘制性能指标、确认性能和检验性能。,3.BP网络的MATLAB实现,lotes函数功能:用于绘制一个单独神经元的误差曲面格式:plotes(WV,BV,ES,V)说明:WV为权值的N维向量; BV为M维的阈值行向量; ES为误差向量组成的MN维矩阵; V为视角,默认为-37.5,30.函数绘制的误差曲面图是由权值和
25、阈值确定、由函数errsurf计算得出。,3.BP网络的MATLAB实现,lotep函数功能:用于绘制权值和阈值在误差曲面上的位置。格式: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.
26、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
27、.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 onplot(p,y,.);legend(原始网络,训练后的网络)figureplot(1:21,y-t);%绘制网络的误差曲线。运行程序,其中,“蓝点”表示网络的输出结果,“星号”表示函数的实际值。,四、SIMULINK神经网络仿真模型库,1.模块的设置 在Simulink库浏览窗口的Neural Network Blockset节点上,通过单击鼠标右键后,便
28、可打开如图所示的Neural Network Blockset模块集窗口。,四、SIMULINK神经网络仿真模型库,.传输函数模块库(Transfer Functions)传输函数模块库中的任意一个模块都能够接受一个网络输入向量,并且相应地产生一个输出向量,这个输出向量的组数和输入向量相同。,四、SIMULINK神经网络仿真模型库,四、SIMULINK神经网络仿真模型库,网络输入模块库(Net Input Functions) 网络输入模块库中的每一个模块都能够接受任意数目的加权输入向量、加权的层输出向量,以及偏值向量,并且返回一个网络输入向量。,四、SIMULINK神经网络仿真模型库,权值模
29、块库(Weight Functions)权值模块库中的每个模块都以一个神经元权值向量作为输入,并将其与一个输入向量(或者是某一层的输出向量)进行运算,得到神经元的加权输入值。,四、SIMULINK神经网络仿真模型库,控制系统模块神经网络的控制系统模块库中包含三个控制器和一个示波器。,四、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的模块化描述,