您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 神经网络自适应线性神经元Adaline的LMS算法
的算法——神经网络导论实验一二〇一〇年十月十六日1一实验目的1通过实验了解Adaline的工作原理;2对比LMS的三种算法,并通过上机实验掌握具体实现方法;3与采用硬限幅函数的单个神经元模型进行对比,比较其异同。二实验原理1基本原理我们已经知道,采用硬限幅函数的单个神经元,通过简单的学习算法可以完成线性可分类的分类功能。但对于大多数的非线性可分类问题,则无法完成分类。为此我们转向采用具有线性功能函数的神经元Adaline方法。设输入矢量12[,,]NxxxX,加权矢量12[,,]NW,则神经元的输出为:()TTTTIyfIWXXWWXXW按照最小二乘法,需要均方误差最小,即:222()[()]()2TTEEdyEdWRWPW其中[]TERXX是输入向量的自相关矩阵,()EdPX是输入向量和期望输出的互相关向量,通过求梯度得到的最优权值为:*1WPR这种算法需要大量的运算,比较难以实现。于是有了以下递推算法。2LMS学习问题的严格递推学习算法1)任意设置初始加权矢量(0)W;2)对每一个时序变量k,按照下式调整权值向量:(1)()2[()()]kkEkkWWX其中右侧第二项为误差均方梯度,为步幅系数。这种方法克服了矩阵求逆的困难,但是仍需大量的统计运算。3LMS的随机逼近算法将严格递推算法的递推公式修正为如下形式:(1)()2()()kkkkWWX即得到了随机逼近算法。此时步幅系数需要满足一定的条件才能保证学习的收敛性。4LMS的最陡下降学习算法将递推公式修正为如下形式:(1)()2()()pppkkkkWWX2其中用误差平方和代替了误差均方。这种算法是严格递推和随机逼近的中和算法,如果p值取的很大,则相当于严格递推算法,相反,若1p那么,其相当于随机逼近算法。三实验内容1样本矢量1根据给出的样本值(lms_samp.mat)的数据,得到样本如图1表示。其中红色和蓝色的点分别是输入的两类样本,黑色的线是其理想分界线。图1输入样本分布2LMS算法21)设阈值为零情况下根据给出的数据在MATLAB®下运算得到如下结果。2.01061.1515;1.15151.7398R1.10581.0074;P*0.35170.3463;W2min()0.2623E2)阈值待定的情况下根据样本数据得到的运算结果如下。-3-2-10123-3-2-1012332.01061.15150.02691.15151.73980.0422;0.02690.04221.0000R1.10581.00740;P*0.35160.3469,0.0241;W2min()0.2617E根据给出的样本分布可以知道,认为阈值为零是合理的,从忽略阈值和计算阈值两种情况的得到的结果来相比较可以知道,认为阈值为零确实是合理的。3随机逼近算法3在步幅系数选择为0.01,最小误差为min0.0010.2633E的条件下,在MATLAB下编程计算,得到某一次的相应结果如下。权值向量[0.33650.3365];W均方误差曲线图2随机逼近算法均方误差曲线可以看到,经过38次的迭代算法,最后均方误差收敛到的计算阈值0.2633。4不同的步幅系数对迭代步数的影响表1给出了在不同的步幅系数的条件下测试随机逼近算法达到收敛时的迭代次数。05101520253035400.20.30.40.50.60.70.80.91迭代次数N均方误差E4表1不同步幅系数下随机逼近法的迭代次数12345平均迭代次数0.002299237259240265260.000.008635565479264.400.020181727201619.600.1005202421914.000.300①1728210734689.20从表1可以看到,一般来说,步幅系数选择的越大,需要的迭代次数越少,这是因为,在初始权值即初始分界线斜率确定的情况下,步幅系数越大,在每次迭代运算中,接近最佳分界线的速度越快,这样,就会越快的收敛到最佳分界线即最佳权值附近。但是,当步幅系数超过一定的值以后,就可能需要更多的迭代次数,甚至可能出现不收敛的情况,原因也很简单,步幅系数给的太大,分界线斜率一次改变过多,就容易导致其“转过头了”,反而需要更多的次数接近最佳权值。如果不幸的是这样过大的偏转可能导致其越来越远的偏离最佳斜率,这样就导致了不收敛的情况。5最陡下降算法4在步幅系数选择为0.02,最小误差为min0.0010.2633E的条件下,在MATLAB下编程计算,得到某一次的相应结果如下。权值向量[0.35160.3240];W均方误差曲线图3最陡下降法的均方误差曲线①步幅系数为0.3时的结果中忽略了结果中不收敛时的迭代次数。0510152025300.20.30.40.50.60.70.80.9迭代次数N均方误差E测试序号步幅系数5可以看到,经过29次的迭代算法,最后均方误差收敛到的计算阈值0.2632。6不同样本数目对迭代次数的影响表2给出了在不同的样本数目下的最陡下降算法达到收敛时的迭代次数。表2不同样本数目下的最陡下降法迭代次数12345迭代次数均值/方差1232026292825.20/13.702242943402131.40/94.305272932262527.80/7.7050242627232925.80/5.70150272626272626.40/0.30从测试的结果来看,在步幅系数确定的情况下,样本数选择逐渐增大时,收敛次数越趋于稳定。对于这点的解释是,样本数选择比较少时,在步幅系数一定时,权值的改变量随机性比较强,故而达到收敛的步数变化较大。当样本数增多时,每次权值的改变趋于期望,因此收敛步数变化很小,迭代的过程比较稳定。5检验带入测试样本到以上得到的权值中,得到检验结果如表3,总体样本数为200个。表3检验结果算法权值W判错次数正确率LMS算法[0.35170.3463]1095%随机逼近算法[0.33650.3365]1095%最陡下降算法[0.35160.3240]1095%各种算法结果如图4所示。图4检验样本和各种算法结果-4-3-2-101234-3-2-10123最陡下降算法LMS算法随机逼近算法测试序号步幅系数60510152025300.20.30.40.50.60.70.80.91迭代次数N均方误差E123450.260.280.30.320.340.360.38迭代次数N均方误差E0100200300400500012345x1050迭代次数N均方误差E6Widrow严格递推算法5根据Widrow的严格递推算法,在误差min0.2633E条件下,在不同的步幅系数条件下,得到运算的均方误差曲线如下。这些结果和步骤4得到的结果类似,当步幅系数增大的时候,迭代步数加快,但是步幅系数过大的时候,会导致结果发散。四思考1实验中将线性函数换做硬限幅函数,会导致什么现象?前面所叙述和应用的LMS矩阵算法以及三种递推算法,都是基于传递函数是现行函数()TyfIIWX得到的,线性函数的相比于硬限幅函数,在这里其最大的特点就是线性函数是可微的。LMS算法基于上式右侧递推得到,三种递推算法的核心递推环节通过求导得到,因此,失去线性函数的条件,而换成硬限幅函数作为传递函数,以上算法均无法进行。图5=0.022468100.250.30.350.40.450.50.550.60.65迭代次数N均方误差E图6=0.05图7=0.1图8=0.35(不收敛)图5~8不同步幅系数下Widrow严格递推算法的均方误差曲线70246810121416182000.20.40.60.811.21.41.61.82迭代次数N均方误差E若采用硬限幅函数,那么我们只能运用硬限幅函数的权值递推式来求权值6(1)()()()()kkdkykkWWX通过上式进行递推即可以得到权值,其中为步幅系数,传递函数为1,0hardlims()1,0IyII得到权值为[0.05090.0542]W由此得到一组权值和典型的均方误差曲线如下图。从采用硬限幅函数得到的均方误差曲线开看,其不会出现如使用线性函数一样表现的较为平滑,而是突变,比较明显。迭代过程中常常会有均方误差增大的情况。分析其原因在于,使用硬限幅函数以后,权值迭代式的()()dkyk项非0即2,所以可能迭代多次,权值也不会发生变化,发生变化时一定是发生突变。收敛情况与步幅系数相关,较小的步幅系数收敛较慢,太大则可能导致不收敛。在步幅系数一定时,收敛的步数不稳定,变化较大。2比较随机逼近法和最陡下降法的均方误差曲线随时序变量变化的不同并解释原因。通过上面的分析和图示很明显的可以看出,随着变量数目增多,均方误差曲线趋于平滑,原因很简单,就是因为取的样本数目越多,权值改变量越趋于期望值,这样,就以一个更加稳定的速率收敛到了最佳权值附近,故而曲线越平滑。0510152025300.10.20.30.40.50.60.70.8迭代次数N均方误差E图9采用硬限幅函数的典型均方误差曲线8参考源代码1样本绘图代码%%画图clear;clc;clf;load('C:\Users\TX\Desktop\lms_tstsamp.mat');fori=1:length(tstsamp)iftstsamp(i,3)==1plot(tstsamp(i,1),tstsamp(i,2),'b*');holdon;elseiftstsamp(i,3)==-1plot(tstsamp(i,1),tstsamp(i,2),'ro');holdon;endendfortheta=0:0.02:(2*pi-0.02)xx1=-1+1.7*cos(theta);xx2=xx1+2;yy1=-1+1.7*sin(theta);yy2=yy1+2;plot(xx1,yy1,':r');holdon;plot(xx2,yy2,':b');holdon;endf=@(x)(-x);fplot(f,[-33],'k');holdon;axis([-33-33]);axisequal;gridon;2LMS算法代码%%LMS算法%忽略阈值的结果x=samp(1:200,1:2);R(1:2,1:2)=0;P(1:2)=0;d(1:200)=0;dd=0;fori=1:200d(i)=samp(i,3);dd=dd+d(i)*d(i);P=P+d(i)*x(i,1:2);xx=(x(i,1:2))'*x(i,1:2);R(1,1)=R(1,1)+xx(1,1);R(1,2)=R(1,2)+xx(1,2);R(2,1)=R(2,1)+xx(2,1);R(2,2)=R(2,2)+xx(2,2);endR=R/200;P=P/200;dd=dd/200;W=P*(inv(R));E_min=dd-P*(W');disp('W=');disp(W);disp('E_min=');disp(E_min);%%LMS算法%考虑阈值的结果load('C:\Users\TX\Desktop\lms_samp.mat');x=samp(1:200,1:2);x(:,3)=1;R(1:3,1:3)=0;P(1:3)=0;d(1:200)=0;dd=0;fori=1:200d(i)=samp(i,3);dd=dd+d(i)*d(i);P=P+d(i)*x(i,1:3);xx=(x(i,:))'*x(i,:);forj=1:9R(j)=R(j)+xx(j);endendR=R/200;P=P/200;dd=dd/200;W=P*(inv(R));E_min=dd-P*(W');disp('W=');disp(W);disp('E_min=');disp(E_min);3随机逼近算法代码9%%线性函数单个神经元LM
本文标题:神经网络自适应线性神经元Adaline的LMS算法
链接地址:https://www.777doc.com/doc-3553180 .html