一、感知器神经网络二、线性神经网络三、BP传播网络四、Simulink神经网络仿真模型库目录一、感知器神经网络输入神经元感知器神经元的一般模型1.感知器的学习感知器的学习是有导师学习方式。感知器的训练算法的基本原理来源于著名的Hebb学习律。基本思想:逐步地将样本集中的输入到网络中,根据输出结果和理想输出之间的差别来调整网络中的权矩阵。最实用的功能:对输入向量进行分类。2.感知器的局限性①感知器神经网络的传输函数一般采用阈值函数,所以输出值只能取0或1;②感知器神经网络只能对线性可分的向量集合进行分类。理论上已经证明,只要输入向量是线性可分的,感知器在有限的时间内总能达到目标向量。③当感知器神经网络的所有输入样本中存在奇异的样本时,即该样本向量同其它所有样本向量比较起来特别大或特别小时,网络训练花费的时间将很长。3.感知器神经网络仿真设计分析①newp函数功能:用于创建一个感知器网络。格式:net=newp(PR,S,TF,LF)说明:net为生成的感知器神经网络;PR为一个R×2的矩阵,有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.感知器神经网络仿真设计分析③sim函数功能:对网络进行仿真。格式:[Y,Pf,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.感知器神经网络仿真设计分析④plotpv函数功能:绘制样本点的函数。格式:plotpv(P,T)plotpv(P,T,V)说明:P定义了n个2或3维的样本,是一个2xn维或3xn维的矩阵;T表示个样本点的类别,是一个n维的向量;V=[x_miny_minx_maxy_max]为一设置绘图坐标值范围的向量;利用plotpv函数可以在坐标图中会出给定的样本样本点及其类别,不同的类别使用不同的符号。例如,如果T只含一元向量,则目标为0的输入向量在坐标图中用“o”表示;目标为1的输入向量在坐标图中用“+”表示。如果T含二元向量,则输入向量在坐标图中采用的符号分别为:[00]用“o”表示;[01]用“+”表示;[10]用“*”表示;[11]用“×”表示。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.70.8;0.901];%输入向量T=[110];%目标向量net=newp([-11;-11],1);%初始化感知器网络net.trainParam.epochs=15;%设置训练次数最大为15net=train(net,P,T);%训练感知器网络Q=[0.50.8-0.2;-0.2-0.60.6];%给定输入向量Y=sim(net,Q);%仿真结果plotpv(Q,Y);%绘制分类结果h=plotpc(net.iw{1},net.b{1})%绘制分类线可见,经过两次训练后,网络目标误差达到要求。二、线性神经网络线性神经网络是最简单的一种神经元网络,它可以由一个或多个线性神经元构成,每个神经元的激活函数都是线性函数(purelin)。线性神经元模型如图∑···b()apurelinewpbnaRp1p2p11w1Rw输入线性神经元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.51.0],设计一个线性神经网络给出P与T之间的线性关系。P=[1.0-1.2];%输入向量T=[0.51.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.IW{1,1},net.b{1},SSE);%绘制权值和阂值在误差曲面上的位置最好的权值和阈值是误差曲面的最低点。3.线性神经网络的MATLAB实现法二:用newlin函数设计一个线性神经网络,程序如下:P=[1.0-1.2];T=[0.51.0];net=newlin(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-PropagationNetwork,简称BP网络)是将W-H学习规则一般化,对非线性可微分函数进行权值训练的多层网络;权值的调整采用反向传播(Back-propagation)的学习算法;它是一种多层前向反馈神经网络,其神经元的变换函数是S型函数;输出量为0到1之间的连续量,它可实现从输入到输出的任意的非线性映射。BP神经元模型a=f(wx+Θ)1.网络拓扑结构x1o1输出层隐藏层输入层x2o2omxn…………………W(1)W(2)W(3)W(L)W(2)2.BP网络的学习BP网络的学习过程分为两个阶段:①输入已知学习样本,通过设置网络结构和前一次迭代的权值和阈值,从网络的第一层向后计算各神经元的输出。②对权值和阈值进行修改,从最后一层向前计算各权值和阈值对总误差的影响(梯度),据此对各权值和阈值进行修改。以上两个过程反复交替,直到达到收敛为止。3.BP网络的MATLAB实现BP神经网络创建函数①newcf函数功能:用于创建一个级联前馈BP网络。格式:net=newcf(PR,[S1,S2…SN],TF1TF2…TFN},BTF,BLF,PF)说明:PR—输入向量的取值范围,由每组输入(共有R组输入)元素的最大和最小值组成的R×2维矩阵。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,S2…SN],{TF1TF2…TFN},BTF,BLF,PF)