《神经网络导论》实验报告-Adaline的LMS算法专业:信息与通信工程班级:5030班学号:3115091011姓名:王静《神经网络导论》实验一Adaline的LMS算法一、实验目的1、通过实验了解Adaline的工作原理2、对比LMS的三种算法,并通过上机实验掌握具体实现方法3、与采用硬限幅函数的单个神经元模型进行对比,比较其异同二、实验原理采用硬限幅函数的单个神经元,通过简单的学习算法,可以成功实现两类线性可分类的分类功能。但对于大多数的非线性可分类来说,则无法完成分类功能,为此我们转而采用具有线性功能函数的神经元Adaline(AdaptiveLinearElement)方法。设输入矢量X=[𝑥1,𝑥2,…,𝑥𝑁],加权矢量W=[𝑤1,𝑤2,…,𝑤𝑁],则神经元的输出可以通过下式来计算:{I=WXT=XWTy=f(I)=WXT=XWT(1)要实现Adaline的分类功能,按照最小二乘法的统计意义而言,就是要求所有样本的实际输出值与理想预期值之间的误差的均方值最小。设输入观察矢量X的期望输出是d,当权向量为W时的实际输出是y,定义𝜀=𝑑−𝑦。考虑所有可能出现样本的均方误差:𝐸[𝜀2]=𝐸[(𝑑−𝑦)2](2)将(1)式代入,可得:𝐸[𝜀2]=𝐸[𝑑2]+𝑊𝑅𝑊𝑇−2𝑃𝑊𝑇(3)其中,𝑅≜𝐸[𝑋𝑇𝑋]是输入向量的自相关矩阵,𝑃≜𝐸[𝑑𝑋]是输入向量与期望输出的互相关向量。由(3)式可知必定存在最佳的加权矢量𝑊∗使均方误差达到最小,对(3)式求梯度可得:∇𝑤𝐸[𝜀2]=2𝑊𝑅−2𝑃(4)由(4)式可解最优权向量:𝑊∗=𝑃𝑅−1(5)(5)式给出了求最佳加权矢量的方法,但是需要做大量的统计计算,而且当输入矢量X的维数很大时,需要解决高阶矩阵求逆的问题,这些都是非常困难的。于是我们给出下面三种递推求解的方法。2.1LMS学习问题的严格递推学习算法1.任意设置初始权向量W(0);2.对于每一个时序变量k,按下式调整权向量W:W(k+1)=W(k)+α[−∇𝑤𝐸[𝜀2(𝑘)]],𝑘=1,2,…(6)(6)式的含义为,应该向梯度的负方向调整加权向量W(k),只要选定合适的步幅系数α就能保证学习的收敛性。求出(6)式中的梯度:∇𝑤=−2𝐸[𝜀(𝑘)𝑋(𝑘)](7)于是(6)式变为:W(k+1)=W(k)+2αE[𝜀(𝑘)𝑋(𝑘)](8)用这种方法可以保证求得严格的最佳解,而且避开了矩阵求逆的困难,但学习过程中的每一步仍需完成大量的统计计算,统计计算的困难尚需解决。2.2LMS学习问题的随机逼近算法将(8)是修正为如下形式:W(k+1)=W(k)+2αε(k)X(k)(9)即得到随机逼近算法,与其严格递推算法的区别在于:用ε(k)X(k)代替E[ε(k)X(k)],由此避免了统计计算的困难,但同时也给加权矢量的变化趋势带来了随机性。2.3LMS学习问题的基于统计的算法这是一种具有一定统计特性的学习算法假设学习进行到第k步时,可能出现的样本有P个,分别用𝑋𝑃(𝑘)表示,下标p=1,2,…P表示在第k步学习过程中可能出现的不同样本编号。第p个样本的理想输出和实际输出分别用𝑑𝑝(𝑘)和𝑦𝑝(𝑘)表示。我们定义“误差平方和”J(k)如下:𝐽(𝑘)=1𝑃∑𝜀𝑃2𝑃(𝑘)(10)其中𝜀𝑝(𝑘)=𝑑𝑝(𝑘)−𝑦𝑝(𝑘),𝛻𝑤𝐽(𝑘)相对于W的梯度为:𝛻𝑤𝐽(𝑘)=−2𝑝∑𝜀𝑝(𝑘)𝑝𝑋𝑝(𝑘)(11)令误差朝J(k)减小的方向调整,可得如下递推算法:𝑊(𝑘+1)=𝑊(𝑘)+2𝛼𝑝∑𝜀𝑝(𝑘)𝑝𝑋𝑝(𝑘)](12)当P的数量非常大,使上式右端的求和项足以代表输入的统计特性时,(12)式与(8)式(严格递推算法)一致,当P取1时,(12)式与(9)式(随机逼近算法)一致。三、实验内容及步骤3.1LMS算法根据实验原理,𝑅≜𝐸[𝑋𝑇𝑋]即输入矢量的自相关阵,可得:2.01061.15151.15151.7398R𝑃≜𝐸[𝑑𝑋]是输入向量与期望输出的互相关向量,可得:1.10581.0074P最佳权向量𝑊∗=𝑃𝑅−1,则有:10.35170.3463WPR档W=𝑊∗时,均方误差取得最小值:可得:E[𝜀2]𝑚𝑖𝑛=𝐸𝑚𝑖𝑛=𝐸[𝑑2]−𝑃𝑊∗𝑇=0.26233.2随机逼近算法随机逼近算法,根据给出的权向量初始值,每步从样本中随机的选择一个,按照迭代公式(9),计算下一步的权向量,根据计算出的权向量,计算此时系统的输出矢量Y,与理想输出比较,得到此时系统的均方误差,若均方误差满足要求,则迭代结束,否则再选择样本进行训练。下图为随机逼近算法的简单结构框图:其中,步幅系数α=0.01,加权系数的初始值选择为W(1)=[0.1,0.1],学习结束的条件为随机逼近算法的均方误差E(𝜀2)≤𝐸𝑚𝑖𝑛+0.001随机逼近算法框图按照式(9)计算W(k+1)计算E(𝜀2)=𝐸[(𝑑−𝑦)2]计算输出Y=W*𝑋𝑇E(𝜀2)−𝐸𝑚𝑖𝑛0.001随机选择一个样本结束NY迭代结束后,随机逼近算法计算出的加权系数矩阵:W=[0.3793,0.3257]如图1所示为实验结果。在α=0.01时,均方误差随训练次数的变化曲线,随着学习的进行,均方误差逐渐减小。但是从图中可以看见会有微小的起伏,这是因为每一步加权系数的调整量是向所选样本的误差梯度的负方向调整,但是总的趋势是误差减小的方向,最后满足误差的要求。下列各图为α取值不同时,均方误差随训练次数变化的曲线。图2α=0.002时,均方误差随训练次数的变化曲线图3α=0.008时,均方误差随训练次数的变化曲线图1α=0.01时,均方误差随训练次数的变化曲线从图中可以看出,在α=0.002,0.008,0.01,0.02时,学习均是收敛的,只是对于不同的步幅系数,收敛速度不同。在α=0.02时收敛最快,在α=0.002时收敛较慢,但是当α=0.1和α=0.3时学习是不收敛的。原因:步幅系数影响每次对于加权系数W的调整量,因此,在步幅系数较小时(例α=0.002),每次学习对于加权系数的调整很小,因此训练的次数较多,但是会收敛。在步幅系数较大时(例α=0.1),每次学习对于加权系数的调整也会较大,所以,可能会出现这次学习之前,误差没有达到指定的精度,但是学习之后,由于调整量太大而又超过了指定精度。所以会出现想图6所示的振荡现象。图4α=0.01时,均方误差随训练次数的变化曲线图5α=0.02时,均方误差随训练次数的变化曲线图6α=0.1时,均方误差随训练次数的变化曲线图7α=0.3时,均方误差随训练次数的变化曲线3.3基于统计的算法基于统计的算法,根据给出的权向量初始值,每步随机的选择几个样本,(在本次实验中,随机的选择5个样本)按照迭代公式(12),计算下一步的权向量,根据计算出的权向量,计算出此时系统的输出矢量Y,与理想输出比较,得到此时的均方误差,若均方误差满足要求,则迭代结束,否则再选择样本进行训练。下图为基于统计算法的简单结构框图:其中,步幅系数α=0.02,输入矢量样本P=5,加权系数的初始值选择为W(1)=[0.1,0.1],学习结束的条件为此算法的均方误差E(𝜀2)≤𝐸𝑚𝑖𝑛+0.001图8P=5时,均方误差随训练次数的变化曲线基于统计的算法框图Y按照式(12)计算W(k+1)计算E(𝜀2)=𝐸[(𝑑−𝑦)2]计算输出Y=W*𝑋𝑇E(𝜀2)−𝐸𝑚𝑖𝑛0.001随机选择五个样本结束N迭代结束后,基于统计的算法计算出的加权系数矩阵为:W=[0.3283,0.3506]如图8所示为基于统计的算法的实验结果。在P=5时,随着学习的进行,均方误差逐渐减小。与随机逼近算法一样,图中可以看出在逼近过程中会有微小的起伏,这是因为每一步加权系数的调整量是向所选5个样本的误差平方和的梯度的负方向调整。但是总的趋势是误差减小的方向,最后满足误差的要求。下列各图为P取值不同时,均方误差随训练次数变化的曲线。从图中可以看出在合适的步幅系数α=0.02时,学习过程均是收敛的,随着P取值的不同,训练次数不同。P取值越大,每步调整的加权系数W越精确,所以训练的次数应该越小。但是我的实验中,在P=50时,虽然收敛的效果很好,但是训练次数太多。3.4Widrow严格递推算法Widrow严格递推算法,与前两种方法不同的是,每一步调整都是利用所有的样本,计算其理想输出与实际输出的误差,权向量向误差梯度的负方向调整。即每一步利用所有的样本计算调整量,根据给出的权向量初始值,按照迭代公式(8),计算下一步的权向量,再计算此时系统的输出矢量Y,与理想输出比较,得到此时系统的均方误差,若均方误差满足要求,则迭代结束,否则选择样本进行训练。下图为Widrow严格递推算法的简单结构框图:图9P=2时,均方误差随训练次数的变化曲线图10P=50时,均方误差随训练次数的变化曲线其中,步幅系数α=0.02,加权系数的初始值选择为W(1)=[0.1,0.1],学习结束的条件为此算法的均方误差E(𝜀2)≤𝐸𝑚𝑖𝑛+0.001迭代结束后,Widrow严格递推算法计算出的加权系数矩阵:W=[0.3454,0.3296]Widrow严格递推算法框图图11α=0.02时,均方误差随训练次数的变化N按照式(8)计算W(k+1)计算系统输出Y=W*𝑋𝑇所有的输入矢量计算E(𝜀2)=𝐸[(𝑑−𝑦)2]E(𝜀2)−𝐸𝑚𝑖𝑛0.001结束Y如图11所示,为α=0.02时,Widrow的严格递推算法计算的系统的均方误差随训练次数的变化情况,从图中可以看见,因为此算法每次对于加权系数的调整是利用所有的输入矢量,即向系统的均方误差减小的方向调整,所以迭代次数比起另外两种方法少很多。而且均方误差随着训练次数的变化曲线是一直减小的,因为每一步计算的均方误差也是系统的均方误差。如上图所示为α取不同的值的时候,系统均方误差随训练次数的变化曲线,步幅系数α影响每一次加权系数的调整量。从图中可以看见当α取0.02,0.05,0.1时,迭代均是收敛的,而且α越大,收敛的越快,训练次数越少。但是当α过大时,像实验中的α=0.35迭代不收敛。图13α=0.05时,均方误差随训练次数的变化图12α=0.02时,均方误差随训练次数的变化图14α=0.1时,均方误差随训练次数的变化曲图15α=0.35时,均方误差随训练次数的变化3.5检验本实验在检验时,对于用于测试的200个样本,按照三种方法计算出的加权系数分别计算其对应的实际输出,再与理想输出对比,确定分类是否正确。其中确定错误分类的个数时,用每一个样本的实际输出与对应的理想输出相乘,结果为正则分类正确,结果为负则分类错误。下面为三种方法分类的结果算法加权系数错误个数正确率(%)随机逼近算法W=[0.3793,0.3257]995.5基于统计的算法W=[0.3283,0.3506]995.5WidrowW=[0.3454,0.3296]1095四、实验总结与思考4.1实验总结本次实验,由于我对MATLAB掌握的不是很好,所以刚开始在编程方面有一点困难,但是在理解了整体的思想和学习之后,进行了实验。三种方法实质上就是运用不同的方法计算加权系数W,随机逼近算法每次随机的选择一个样本进行调整,基于统计的算法每次选择P个样本进行调整,Widrow严格递推算法每次用所有的输入矢量进行调整。所以Widrow严格递推算法最快,因为它每次调整的方向都是向系统误差减小的方向调整。算出加权系数W之后,接下来三种方法都一样,就是根据W计算实际输出,再计算均方误差,根据误差精度的要求确定迭代是否结束。问题:在基于统计的算法中,随着P的增加,应该训练次数减少,但是在我的实验中,当P=50