1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,感知器是由美国学者,F.Rosenblatt,在1957年首次提出的神经网络模型。,LMS,算法是由,Widrow,和,Hoff,在1960年提出的高效率易实现的自适应滤波算法。,LMS(Least-Mean-Square),算法,可称为最小均方误差算法或梯度算法,也称为,Delta,规则。,本章首先介绍单层感知器及其学习算法,然后介绍自适应线性元件及,LMS,算法,最后给出典型算法的仿真实例。,2.1 单层感知器,*感知器是神经网络用来进行模式识别的一种最简单模型。,*单层感知器只能用来实现线性可分的
2、两类模式的识别。,*单层感知器模型与,MP,模型的不同之处是其神经元的突触权值是可调的,这样就可以进行学习。,*感知器模型在神经网络研究中具有重要的意义和地位。,2.1.1 单层感知器模型,感知器神经元模型如图,2.1,所示。,I/O,关系:,图2.1感知器模型,感知器包括一个线性累加器和一个二值阈值元件,同时还有一个外部偏差,b。,线性累加器的输出作为二值阈值元件的输入。,二值阈值元件的输入为正数时,神经元输出,-1或0。,单层感知器可实现两类目标的识别,当感知器输出为+1时,我们认为输入模式为一类;当感知器输出为-1时,我们认为输入模式为另一类。,在,m,维信号空间,单层感知器进行模式识别
3、的判决超平面由下式决定:,图,2.3,给出了一种只有两个输入 和 的判决超平面的情况,它的判决边界是直线,图,2.3,两类模式识别的判定,决定判决边界直线的主要参数是权向量,W,通过合适的学习算法可以训练出满意的权向量,2.1.2,单层感知器的学习算法,单层感知器的学习算法是基于叠代的思想,通常是采用纠错学习规则的学习算法。,为方便,将偏差,b,作为权向量的一个分量加到权值向量中去,对应的输入向量也增加一项,可设输入向量的第一个分量固定为+1,则输入向量和权值向量可写成如下形式:,其中,变量,n,为叠代次数,,b(n),可用,表示,则二值阈值元件的输入(激活值)可重新写为:,令上式等于零,即可
4、得在,m,信号空间的单层感知器,的判决超平面。,学习算法如下:,第一步 设置变量和参量,:,b(n),为偏差。,y(n),为实际输出。,d(n),为期望输出。,为学习速率。,n,为迭代次数。,第二步 初始化,赋给,-1,,,1,区间内的随机非零值,,n=0。,第三步 对于一组输入样本,指定它的,期望输出,d。,第四步 计算实际输出:,第五步 调整权向量:,第六步 判断是否满足条件,若满足算法结束,若不,满足则,n,值增加1,转到第三步重新执行。,注意:在第六步判断的条件可以是:,误差小于设定值,即 ;,权值的变化量已很小,即,迭代次数大于,N,在感知器学习算法中,重要的是引入了一个量化的期望输
5、出,d(n),,其定义为:,采用纠错学习规则对权向量进行逐步修正,对于线性可分的两类模式,可以证明单层感知器的学习算法是收敛的。,2.1.,3,matlab,工具箱应用,1.Newp,感知器,生成,函数,感知器生成函数,newp,用于创建一个感知器网络,调,用格式为:,net=newp(pr,s,tf,lf),其中,net:,函数返回参数,表示生成的感知器网络;,net=newp:,表示在一个对话框中定义感知器的属性;,pr:,一个,R2,的矩阵,由,R,组输入向量的最大值和最小值组成;,s:,神经元的个数;,tf:,感知器的传递函数,可选参数为,hardlim,和,hardlims,默认为,
6、hardlim;,lf:,感知器的学习函数,可选参数为,learnp,和,learnpn,默认为,learnp.,该函数返回一个新的感知器网络。,2.Sim,神经网络仿真,函数,sim,用于仿真一个神经网络,调用格式为:,Y,Pf,Af=sim(net,P,Pi,Ai),其中:,net,神经网络;,P,网络的输入;,Pi,初始输入延迟,缺省值为,0,;,Ai,初始的层延迟,缺省值为,0,。,该函数返回,Y,网络的输出;,Pf,最终输出延迟;,Af,最终的层延迟。,3.init,神经网络初始化,调用格式为:,net=init(net),init,函数调用,NET.initFcn,函数,根据,NE
7、T,initParam,设定的参数对网络的权值和阈值进行初始化。,4.adapt,神经网络的自适应,格式:,net,Y,E,Pf,Af=adapt(NET,P,T,Pi,Ai),其中:,NET,一个神经网络;,P,网络的输入;,Pi,初始输入延迟,缺省值为,0,;,Ai,初始的层延迟,缺省值为,0,。,返回一个具有适应功能,NET.adaptFcn,及适应参数,NET.adaptParam,的结果:,net,修正后的网络;,Y,网络的输出;,E,网络的误差;,Pf,最终输出延迟;,Af,最终的层延迟。,而参数,T,仅对需要目标的网络是必须的,而且是可任选的。,5.train,神经网络的训练函数
8、格式:,net,tr=train(NET,P,T,Pi,Ai),train,函数是按照,NET.trainFcn,和,NET.trainParam,训,练网络,NET,的。,其中:,NET,神经网络;,P,网络的输入;,T,网络的目标,默认值为,0,;,Pi,初始输入延迟,默认值为,0,;,Ai,初始的层延迟,默认值为,0,。,返回:,net,修正后的网络;,TR,训练的纪录(训练步数和性能,epoch and perf,),.,而参数,T,仅对需要目标的网络是必须的,而且是可任选的。,Pi,和,Ai,仅用于具有输入或层间的延迟的网络,而且也是可以任选的。,6.learnp,感知器的权值,/
9、阈值学习函数,格式:,dW,LS=learnp(W,P,Z,N,A,T,E,gW,gA,D,LP,LS),db,LS=learnp(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS),info=learnp(code),W SR,维的权值矩阵(或,S1,维的阈值向量);,P Q,组,R,维的输入向量(或,Q,组单个输入);,Z Q,组,R,维的权值输入向量;,N Q,组,R,维的网络输入向量;,A Q,组,R,维的输出向量;,T Q,组,R,维的目标向量;,E Q,组,R,维的误差向量;,gW SR,维的性能参数的梯度;,gA Q,组,R,维的性能参数的输出梯度;,LP
10、学习参数,若没有学习参数,,LP=,;,LS,学习状态,初始值为,。,函数返回以下参数:,dW SR,维的权值(或阈值)变化阵;,LS,新的学习状态;,learnp(code),对于每一个,code,代码返回相应的有,用的信息:,pnames,返回学习参数的名称;,pdefaults,返回默认的学习参数;,needg,如果该函数使用,gW,或,gA,,则返回值,为,1,。,7.,感知器网络的应用,简单分类问题,设计单一感知器神经元来解决一个简单的分类问,题:将,4,个输入向量分为两类,其中两个输入向,量对应的目标值为,1,,另两个向量对应的目标值,为,0,。对于这个简单的分类问题,所采用的是
11、两,个输入的单个感知器,是采用硬限幅阈值函数,hardlim,的神经元。,即:,输入矢量:,P=-0.5 0.5 0.3 0.0;,-0.5 0.5 -0.5 1.0,目标矢量:,T=1.0 1.0 0.0 0.0,输入矢量可以用图来描述,对应于目标值0,.0,的输入矢量用符号,表示,对应于目标值1,.0,的输入矢量符号+表示。,输入矢量图,为解决这个问题,首先用函数,newp,构造一个,输入向量均在,-1,,,1,之间的单个神经元感知器:,net=newp(-1 1;-1 1,1);,用,init,对网络进行初始化:,net=init(net);,利用函数,adapt,调整网络的权值和阈值,
12、直到误差为,0,时结束训练:,net,Y,E=adapt(net,P,T);,训练结束后可得到下图所示的分类曲线,由图可见分类线将两类输入向量正确地分类:,其相应的训练误差的变化如图所示。这说,明经过,4,步训练后,就达到了误差指标的要,求。,1.,分类结果,2.,误差变化曲线,感知器神经网络在取不同的初始条件时,其训练的结果不同,即用感知器求解分类问题可得到多个解。,当网络训练完成之后,其权值和阈值就不再改变,这是就可利用训练好的感知器神经网络来解决实际的分类问题,对任意的输入矢量进行分类。,例如:,p=0.7;1.2;,a=sim(net,p);,得到的分类结果如图所示:,可见感知器网络能
13、对输入向量进行正确的分类,同时验证了网络的正确性。,(源程序见附录1中的例2.1),感知器应用结果,讨论局限性,1)由于激活函数为阈值函数,输出矢量只能取0、1,所以仅可以解决简单的分类问题;,2)输入矢量线性可分时,学习在有限次数内收敛;,3)输入矢量的奇异性导致较慢的收敛。比如当输入/输出矢量分别为:,P=-0.5 0.5+0.3 0.1 80,-0.5+0.5 0.5+1.0 100;,T=1 1 0 0 1;,时,必然导致训练的困难;,4)异或问题不可解。,2.2自适应线性神经元,自适应线性神经元,Adaline,模型如图2.4所示:,图2.4 自适应线性神经元模型,LMS,算法,模拟
14、输出,二值输出,它实际上是一个连续时间线性阀值逻辑器件。,神经元的输入向量,的各分量被权向量,加权(连接单位输入 ,来控制阀值电,平),得到模拟输出和二值输出。,模拟输出为:,二值输出为:,其中:,为符号函数,当,单个神经元具有,n,个二进制输入,共有 个可能的输入模式,具有一个模拟输出和一个二值输出。,单个神经元只能实现线性可分函数。,自适应线性神经元采用,LMS,学习算法。,假定只有两个输入 和 ,则自适应线性神经元的模拟输出为:,调整临界阀值条件,可令,y,输出为零,有,该直线方程为自适应线性神经元实现线性可分函,数。如图2.5所示,通过学习总是可以得到一条直线,将空心小园和实心小园分开
15、图2.5 线性可分模式空间,用自适应线性神经元实现非线性可分函数的方法有,两种,一是对神经元施加非线性输入函数,如图2.6所,示。,图2.6 两个非线性输入的,Adaline,神经元,若令,Y=0,,上式为曲线方程,通过选择,W,,可实现非线性函数,使得自适应线性神经元具有非线性可分性。如图2.7所示:,图2.7 自适应线性元件的非线性可分性,另一种实现非线性函数可分的方法是由多个自适应,线性神经元和,AND,逻辑器件构成的,所谓,Madalines,网络,如图2.8所示。,图2.8 两输入,Madalines,模型,AND,其原理是实现多个线性函数,对线性不可非区域,进行划分。如图2.9
16、所示:,图2.9,Madalines,的非线性划分,2.3,LMS,学习算法,LMS,算法也称为,Widrow-Hoff,算法或,Delta,算法,由于容易实现而很快得到了广泛的应用,成为自适应滤波的标准算法。,Adaline,和,Madalines,模型所采用的就是,LMS,算法。该方法通过调整单个神经元的权值,使神经元的实际输出与理想输出之差为最小。,LMS,算法采用了误差最速下降准则,使用的误差测度函数为均方误差,MSE。,即权值的调整是按均方误差函数负梯度变化。即有,其中 是当前权值,是下一步权值,是学习率,是,MES,曲面上对应于 的梯度值。,设,MSE,测度函数(误差平方和)为,其
17、中,为在,j,输出单元的期望输出;第,j,单元的实际输出为,改写上式为:,其中,,为当前模式输入向量。,定义瞬时梯度为:,则有,注意,上式采用的是瞬时梯度下降来训练网络的权值,因此,,LMS,算法实际上偏离了,E,真正的梯度下降方向,是一种近似的梯度下降。但当学习率,很小时,这种偏离是可以忽略的。,当学习率 比较小时,,LMS,算法自适应过程较慢,但这时可记忆更多的过去数据,从而结果更精确。也可以说,学习率的倒数表示了,LMS,算法的记忆容量。,若要实现全局误差函数,E,上的梯度下降,则,的变化应正比于负平均梯度,即:,之所以采用瞬时梯度,是因为它可以直接从单个样本数据求得。此外,要计算所有训
18、练模式的平均梯度是很费时的,因而在实际中很少用。,当用式,(2.2),来训练网络,为获得全局误差最小的最优权值,需要无限次的迭代运算。有限次迭代得到的解只是近似解,这是,LMS,学习算法的一个不足之处。,可以看出,,LMS,算法与感知器的误差修正算法在形式上是一样的,但他们有本质上的差别。差别在于:,感知器学习的数学基础是模式空间超平面位置的调整;,LMS,算法学习的数学基础是误差曲面上的梯度下降,。,LMS,算法步骤,初始化 。,选择一输入样本 。,计算实际输出 。,如果误差 则结束训练。,计算 ,更新 。,返回,2,网络应用设计,举例,对线性神经元进行训练,设计一个简单的单层线性神经元,使
19、其实现从输入到输出的变换关系。,P=+1.0 1.2,T=+0.5+1.0,给出权值和阈值的范围并绘制误差曲面及误差等高线,,w_range=-1:0.1:1;,b_range =-1:0.1:1;,ES=errsurf(P,T,w_range,purelin);,plotes(w_range,b_range,ES);,误差曲面及误差等高线,误差曲面及误差等高线如下图所示。,学习速率问题,在网络设计中,学习速率的选取是影响收敛速,度以及训练结果的一个很重要的因素。只要学,习速率足够小,采用,Widrow-Hoff,学习规则的,线性网络总可以训练出一个最小的输出误差。,但是当学习速率较大时,可导
20、致训练过程的不,稳定。,Matlab,工具箱给出了一个正确求解学习,率的函数,maxlinlr,。下面我们用,maxlinlr,求得,的学习率大的值训练网络。,举例,学习速率过大,输入和目标与上例相同,但学习率是原来的,1.5,倍。,本例选取的学习率为,maxlr=maxlinlr(P,bias);,训练次数为,net.trainParam.epochs=20;,建立一个学习率为原来的,1.5,倍的线性网络:,net=newlin(-2 2,1,0,maxlr*2.25),该程序的仿真结果为:,a=66.2114,1.,误差曲面及误差等高线,2.,训练过程的误差曲线,当学习率选取较大时,误差越
21、来越大,,,网络不收敛。,如图所示。,举例,自适应噪声消除,设计一个自适应线性网络,使其对输入信号进行预,测。程序如下:,time=1:0.01:2.5;,X=sin(sin(time).*time*10);,P=con2seq(X);,T=con2seq(2*0 X(1:(end-1)+X);,plot(time,cat(2,P:),time,cat(2,T:),-),;,title(Input and Target Signals);,xlabel(Time);,legend(Input,Target),net=newlin(-3 3,1,0 1,0.1);,net,Y,E,Pf=adapt(net,P,T);,plot(time,cat(2,Y:),b,.,time,cat(2,T:),r,.,time,cat(2,E:),g,1 2.5,0 0,k),legend(Output,Target,Error),如图所示,在,2,秒时,网络输出与目之间的误差接近于零,因此该线性网络可以对输入信号(噪声)进行对消,。,1,输入信号和目标函数,2,网络输出、目标函数及误差,






