2006-11-28北京科技大学付冬梅1第四章自适应线性神经元2006-11-28北京科技大学付冬梅2第四章自适应线性神经元自适应线性神经元模型单个自适应线性神经元的学习方法单层自适应线性神经元的学习方法MATLAB程序仿真关于自适应线性神经元的几点说明2006-11-28北京科技大学付冬梅34.1自适应线性神经元模型线性神经元模型如图所示:I/O关系a=purelin(W*P+b)2006-11-28北京科技大学付冬梅42006-11-28北京科技大学付冬梅5基于最小二乘的一次性学习算法4.2单个自适应线性神经元的学习方法注意到O=KO’+b,所以有O’=(O-b)/K,同理有:y’=(y-b)/K,所以{X,Y’}仍是样本对。'0niiiywx1111nmm1mnyxxYXWY,XyxxLMMOMLT1TW(XX)XY2006-11-28北京科技大学付冬梅6基于梯度的学习算法(内部反馈)后),对于输入,个次学习以后(即得到第0n0n12n()()njTjiiiynwnxWXv1nw11nx)()(00nyynej2002)]([)(nyynej设经过后,或者没有初始权值神经元的输出为:其中则神经元的输出误差为:jxjy又设在同样输入作用下,样本输出12000n根据上面的推导,我们可以给出神经元(单个且)根据建立在梯度法基础上的最小均方差(LMS)算法得知,被调整的参数(这里是TW000(1)()()WnWnnv22000000()(())()2()()()jTjjenyWnXnenXWnWnvvjXnenWnW)(2)()1(000uuf)()的修改应该向着梯度的反方向进行,此处梯度为:因此我们有:权值调整的具体学习步骤:即:(1)随机初始化权值和阈值:(0)random()0,1,2,,1iwaainggL4.2单个自适应线性神经元的学习方法2006-11-28北京科技大学付冬梅8为迭代次数,按:作为输入向量,,则表明分类正确,而不需要调整权值和阈值,如此类中了,需按下面步骤调整权值。错分到作为本次的训练,并以此为输入计算中的BAxx或Axx)(lTlXWfy比如选中(2)在A样本集合{A,B}中,任选一个神经元的输出:1ly1lylxBx,表明将(3)若可回到(2)步,并重新选一个新的训练样本。如果0n0000(1)()2(y())()lliiiwnwnynxny11y其中:是理想输出,即样本输出)调整权值,此处为学习率。为期望输出,直到计算为止。(4)设4.2单个自适应线性神经元的学习方法)(0nyl2006-11-28北京科技大学付冬梅9)()1(00nwnwii1,2,,1inL(5)重新在A,B样本集中选择另一个样本进行学习,即重复(2)~(5),直到对所有均成立,对所有样本均正确分类,则学习结束。()fukub11)(0或nyl|y|lye①上面的算法适合这样连续激励函数,但是来作为迭代的标准,往往以误差,则不要调整权值,否则进行(4)步。说明:此时不能用大小作为限制,即在算法的第(3)步中,②理想输出不一定非得是+1或-1,可以使其他的实数。4.2单个自适应线性神经元的学习方法2006-11-28北京科技大学付冬梅10基于梯度的学习算法(外部反馈)后),对于输入,个次学习以后(即得到第0n0n12n()()njTjiiiynkwnxbkWXbv1nw11nx)()(00nyynej2002)]([)(nyynej设经过后,或者没有初始权值神经元的输出为:其中则感知机的输出误差为:jxjy又设在同样输入作用下,样本输出12000n根据建立在梯度法基础上的最小均方差(LMS)算法得知,被调整的参数(这里是TW000(1)()()WnWnnv22000000()(())()2()()()jTjjenykWnXbnkenXWnWnvv000(1)()2()jWnWnkenX)的修改应该向着梯度的反方向进行,此处梯度为:因此我们有:即:4.2单个自适应线性神经元的学习方法基于梯度的学习算法(外部反馈)2006-11-28北京科技大学付冬梅124.3单层自适应线性神经元的学习方法基于最小二乘的一次性学习算法'0niiiywxQ111km1mk111n111km1mnn1nkyyYXWY,yyxxwwX,WxxwwLMOMLLLMOMMOMLLT1TW(XX)XY2006-11-28北京科技大学付冬梅13基于梯度的学习算法设样本集为(X,Y),取、样本。设已训练了n0次得到的权值为:lxly1011010110200100100()()()()()()()()()()TnnTmnnnnTmWnwnwnwnWnWnwnwnwnWnLMOOMML则由网络计算得到的输出为:llXWnY)(04.3单层自适应线性神经元的学习方法2006-11-28北京科技大学付冬梅14用分量表示之为:lTinjljijliXnWxnwny)()()(011)(00则此时网络的误差为:220000100()(())[()][()][()][()]mllTlTiiiTlTTlTEntynYYnYYnYWXnYWXn根据梯度下降法我们可以知道:)()()1(000nnwnwii4.3单层自适应线性神经元的学习方法2006-11-28北京科技大学付冬梅15220100002010000[()]()()()()[(())]2()()2[()]2()mjjTTiimTljjjliTiTllliiienEnnwnwnywnXenXwnywnXXenX故有:000(1)()2[()]TlliiiiwnwnywnXX4.3单层自适应线性神经元的学习方法2006-11-28北京科技大学付冬梅16由此可得递推算法如下:(1)随机初始化权值和阈值,即令:1,2,,1,2,,injmLL(0)random()ijwagga系数取不等于零的正小数,以使初始化权值比较小。(2)在样本集合(X,Y)中,任选一个和作为训练样本,计算神经元的实际输出:lXlY()lllOfXWXW4.3单层自适应线性神经元的学习方法2006-11-28北京科技大学付冬梅17eyOyOllll||3)若(规定的最小误差),则不需调整权值,回到(2)步,取另一样本进行训练,否则进行如下的(4)步。000(1)()2[()]TlliiiiwnwnywnXX4)调整权值:然后返回2)。4.3单层自适应线性神经元的学习方法2006-11-28北京科技大学付冬梅184.4MATLAB程序仿真例1、设计自适应线性神经网络实现从输入矢量到输出矢量的变换关系,其输入矢量和输出矢量分别为:P=[1.0-1.2]T=[0.51.0]程序1P=[1.0-1.2];T=[0.51.0];[Q,R]=size(P);[S,Q]=size(T);lr=0.4*maxlinlr(P);%最佳学习率net=newlin(minmax(P),S,[0],lr);%创建线性网络net.inputWeights{1,1}.initFcn='rands';%初始化权值net.biases{1}.initFcn='rands';%初始化偏差net=init(net);%把初始化的权值和偏差函数赋给网络2006-11-28北京科技大学付冬梅19W0=net.iw{1,1}%显示初始化权值和偏差B0=net.b{1}net.trainParam.epochs=20;%最大循环次数net.trainParam.goal=0.001;%期望误差[net,tr]=train(net,P,T);%进行线性自适应网络权值的训练W=net.iw{1,1}%显示训练好的初始化权值和偏差B=net.b{1}4.4MATLAB程序仿真W=-0.2475B=0.74312006-11-28北京科技大学付冬梅20例1、设计自能够适应线性神经网络实现从输入矢量到输出矢量的变换关系,其输入矢量和输出矢量分别为:P=[1.0-1.2]T=[0.51.0]程序2P=[1.0-1.2];T=[0.51.0];net=newlind(P,T);%得到准确的线性自适应网络W=net.iw{1,1}%显示训练好的初始化权值和偏差B=net.b{1}4.4MATLAB程序仿真W=-0.2273B=0.72732006-11-28北京科技大学付冬梅21例2:设计自能够适应线性神经网络实现从输入矢量到输出矢量的变换关系,其输入矢量和输出矢量分别为:P=[1.01.51.2-0.3-1.02.03.3-0.52.01.0-1.60.9]T=[0.53.0-2.21.41.1-1.21.7-0.43.00.2-1.8-0.4-1.00.1-1.00.6]4.4MATLAB程序仿真2006-11-28北京科技大学付冬梅22程序:P=[1.01.51.2-0.3-1.02.03.3-0.52.01.0-1.60.9];T=[0.53.0-2.21.41.1-1.21.7-0.43.00.2-1.8-0.4-1.00.1-1.00.6];[Q,R]=size(P);[S,Q]=size(T);lr=0.9*maxlinlr(P);%最佳学习率net=newlin(minmax(P),S,[0],lr);%创建线性网络net.inputWeights{1,1}.initFcn='rands';%初始化权值net.biases{1}.initFcn='rands';%初始化偏差4.4MATLAB程序仿真2006-11-28北京科技大学付冬梅23net=init(net);%把初始化的权值和偏差函数赋给网络W0=net.iw{1,1}%显示初始化权值和偏差B0=net.b{1}A=sim(net,P)e=T-A;%求训练前网络的输出误差sse=(sumsqr(e))/(S*Q);%求误差平方和的平均值fprintf('Beforetraining,sumsqurarederror=%g.\n',sse)%显示训练前网络的均方差net.trainParam.epochs=400;%最大循环次数net.trainParam.goal=0.0001;%期望误差[net,tr]=train(net,P,T);%进行线性自适应网络权值的训练W=net.iw{1,1}%显示训练好的初始化权值和偏差B=net.b{1}4.4MATLAB程序仿真2006-11-28北京科技大学付冬梅24W=-2.71532.45113.52842.3781-1.9358-2.34822.2205-1.3512-0.1580-1.79471.04531.1494B=-1.37351.4670-0.2634-0.45314.4MATLAB程序仿真2006-11-28北京科技大学付冬梅254.5关于自适应线性神经元的几点说明一、自适应线性神经元与感知器的不同之处1)网络模型的不同:感知器是二值形式的,自适应线性神经元是线性的。前者只能作分类工作,后者可以完成分类以及线性逼近任务。2)学习算法的不同:感知器的学习算法是最早提出的可收敛的学习算法,算法的本质是:如果网络的计算输出与样本不同,则表明分类错误,则