Adaline的LMS算法Word格式.docx
《Adaline的LMS算法Word格式.docx》由会员分享,可在线阅读,更多相关《Adaline的LMS算法Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
![Adaline的LMS算法Word格式.docx](https://file1.bdocx.com/fileroot1/2022-10/3/54c1cc5d-2038-42bf-9e53-ee88fabbb17b/54c1cc5d-2038-42bf-9e53-ee88fabbb17b1.gif)
1、通过实验了解Adaline的工作原理
2、对比LMS的三种算法,并通过上机实验掌握具体实现方法
3、与采用硬限幅函数的单个神经元模型进行对比,比较其异同
二、实验原理
采用硬限幅函数的单个神经元,通过简单的学习算法,可以成功实现两类线性可分类的分类功能。
但对于大多数的非线性可分类来说,则无法完成分类功能,为此我们转而采用具有线性功能函数的神经元Adaline(AdaptiveLinearElement)方法。
设输入矢量X=[x1,x2,…,xN],加权矢量W=[w1,w2,…,wN],则神经元的输出可以通过下式来计算:
I=WXT=XWTy=fI=WXT=XWT
(1)
要实现Adaline的分类功能,按照最小二乘法的统计意义而言,就是要求所有样本的实际输出值与理想预期值之间的误差的均方值最小。
设输入观察矢量X的期望输出是d,当权向量为W时的实际输出是y,定义ε=d-y。
考虑所有可能出现样本的均方误差:
Eε2=E[(d-y)2]
(2)
将
(1)式代入,可得:
Eε2=Ed2+WRWT-2PWT(3)
其中,R≜E[XTX]是输入向量的自相关矩阵,P≜E[dX]是输入向量与期望输出的互相关向量。
由(3)式可知必定存在最佳的加权矢量W*使均方误差达到最小,对(3)式求梯度可得:
∇wEε2=2WR-2P(4)
由(4)式可解最优权向量:
W*=PR-1(5)
(5)式给出了求最佳加权矢量的方法,但是需要做大量的统计计算,而且当输入矢量X的维数很大时,需要解决高阶矩阵求逆的问题,这些都是非常困难的。
于是我们给出下面三种递推求解的方法。
2.1LMS学习问题的严格递推学习算法
1.任意设置初始权向量W(0);
2.对于每一个时序变量k,按下式调整权向量W:
Wk+1=Wk+α-∇wEε2(k),k=1,2,…(6)
(6)式的含义为,应该向梯度的负方向调整加权向量W(k),只要选定合适的步幅系数α就能保证学习的收敛性。
求出(6)式中的梯度:
∇w=-2Eε(k)X(k)(7)
于是(6)式变为:
Wk+1=Wk+2αEε(k)X(k)(8)
用这种方法可以保证求得严格的最佳解,而且避开了矩阵求逆的困难,但学习过程中的每一步仍需完成大量的统计计算,统计计算的困难尚需解决。
2.2LMS学习问题的随机逼近算法
将(8)是修正为如下形式:
Wk+1=Wk+2αε(k)X(k)(9)
即得到随机逼近算法,与其严格递推算法的区别在于:
用ε(k)X(k)代替Eε(k)X(k),由此避免了统计计算的困难,但同时也给加权矢量的变化趋势带来了随机性。
2.3LMS学习问题的基于统计的算法
这是一种具有一定统计特性的学习算法
假设学习进行到第k步时,可能出现的样本有P个,分别用XP(k)表示,下标p=1,2,…P表示在第k步学习过程中可能出现的不同样本编号。
第p个样本的理想输出和实际输出分别用dpk和yp(k)表示。
我们定义“误差平方和”J(k)如下:
J(k)=1PPεP2(k)(10)
其中εpk=dpk-ypk,∇wJ(k)相对于W的梯度为:
∇wJ(k)=-2ppεpkXp(k)(11)
令误差朝J(k)减小的方向调整,可得如下递推算法:
Wk+1=Wk+2αppεpkXp(k)](12)
当P的数量非常大,使上式右端的求和项足以代表输入的统计特性时,(12)式与(8)式(严格递推算法)一致,当P取1时,(12)式与(9)式(随机逼近算法)一致。
三、实验内容及步骤
3.1LMS算法
根据实验原理,R≜E[XTX]即输入矢量的自相关阵,可得:
P≜E[dX]是输入向量与期望输出的互相关向量,可得:
最佳权向量W*=PR-1,则有:
档W=W*时,均方误差取得最小值:
可得:
Eε2min=Emin=Ed2-PW*T=0.2623
3.2随机逼近算法
随机逼近算法,根据给出的权向量初始值,每步从样本中随机的选择一个,按照迭代公式(9),计算下一步的权向量,根据计算出的权向量,计算此时系统的输出矢量Y,与理想输出比较,得到此时系统的均方误差,若均方误差满足要求,则迭代结束,否则再选择样本进行训练。
下图为随机逼近算法的简单结构框图:
按照式(9)计算W(k+1)
计算Eε2=Ed-y2
计算输出Y=W*XT
Eε2-Emin>
0.001
随机选择一个样本
结束
N
Y
随机逼近算法框图
其中,步幅系数α=0.01,加权系数的初始值选择为W
(1)=[0.1,0.1],学习结束的条件为随机逼近算法的均方误差Eε2≤Emin+0.001
图1α=0.01时,均方误差随训练次数的变化曲线
迭代结束后,随机逼近算法计算出的加权系数矩阵:
W=[0.3793,0.3257]
如图1所示为实验结果。
在α=0.01时,均方误差随训练次数的变化曲线,随着学习的进行,均方误差逐渐减小。
但是从图中可以看见会有微小的起伏,这是因为每一步加权系数的调整量是向所选样本的误差梯度的负方向调整,但是总的趋势是误差减小的方向,最后满足误差的要求。
下列各图为α取值不同时,均方误差随训练次数变化的曲线。
图2α=0.002时,均方误差随训练次数的变化曲线
图3α=0.008时,均方误差随训练次数的变化曲线
图4α=0.01时,均方误差随训练次数的变化曲线
图5α=0.02时,均方误差随训练次数的变化曲线
图6α=0.1时,均方误差随训练次数的变化曲线
图7α=0.3时,均方误差随训练次数的变化曲线
从图中可以看出,在α=0.002,0.008,0.01,0.02时,学习均是收敛的,只是对于不同的步幅系数,收敛速度不同。
在α=0.02时收敛最快,在α=0.002时收敛较慢,但是当α=0.1和α=0.3时学习是不收敛的。
原因:
步幅系数影响每次对于加权系数W的调整量,因此,在步幅系数较小时(例α=0.002),每次学习对于加权系数的调整很小,因此训练的次数较多,但是会收敛。
在步幅系数较大时(例α=0.1),每次学习对于加权系数的调整也会较大,所以,可能会出现这次学习之前,误差没有达到指定的精度,但是学习之后,由于调整量太大而又超过了指定精度。
所以会出现想图6所示的振荡现象。
3.3基于统计的算法
基于统计的算法,根据给出的权向量初始值,每步随机的选择几个样本,(在本次实验中,随机的选择5个样本)按照迭代公式(12),计算下一步的权向量,根据计算出的权向量,计算出此时系统的输出矢量Y,与理想输出比较,得到此时的均方误差,若均方误差满足要求,则迭代结束,否则再选择样本进行训练。
下图为基于统计算法的简单结构框图:
按照式(12)计算W(k+1)
随机选择五个样本
基于统计的算法框图
其中,步幅系数α=0.02,输入矢量样本P=5,加权系数的初始值选择为W
(1)=[0.1,0.1],学习结束的条件为此算法的均方误差Eε2≤Emin+0.001
图8P=5时,均方误差随训练次数的变化曲线
迭代结束后,基于统计的算法计算出的加权系数矩阵为:
W=[0.3283,0.3506]
如图8所示为基于统计的算法的实验结果。
在P=5时,随着学习的进行,均方误差逐渐减小。
与随机逼近算法一样,图中可以看出在逼近过程中会有微小的起伏,这是因为每一步加权系数的调整量是向所选5个样本的误差平方和的梯度的负方向调整。
但是总的趋势是误差减小的方向,最后满足误差的要求。
下列各图为P取值不同时,均方误差随训练次数变化的曲线。
图9P=2时,均方误差随训练次数的变化曲线
图10P=50时,均方误差随训练次数的变化曲线
从图中可以看出在合适的步幅系数α=0.02时,学习过程均是收敛的,随着P取值的不同,训练次数不同。
P取值越大,每步调整的加权系数W越精确,所以训练的次数应该越小。
但是我的实验中,在P=50时,虽然收敛的效果很好,但是训练次数太多。
3.4Widrow严格递推算法
Widrow严格递推算法,与前两种方法不同的是,每一步调整都是利用所有的样本,计算其理想输出与实际输出的误差,权向量向误差梯度的负方向调整。
即每一步利用所有的样本计算调整量,根据给出的权向量初始值,按照迭代公式(8),计算下一步的权向量,再计算此时系统的输出矢量Y,与理想输出比较,得到此时系统的均方误差,若均方误差满足要求,则迭代结束,否则选择样本进行训练。
下图为Widrow严格递推算法的简单结构框图:
按照式(8)计算W(k+1)
计算系统输出Y=W*XT
所有的输入矢量
Widrow严格递推算法框图
其中,步幅系数α=0.02,加权系数的初始值选择为W
(1)=[0.1,0.1],学习结束的条件为此算法的均方误差Eε2≤Emin+0.001
图11α=0.02时,均方误差随训练次数的变化曲线
迭代结束后,Widrow严格递推算法计算出的加权系数矩阵:
W=[0.3454,0.3296]
如图11所示,为α=0.02时,Widrow的严格递推算法计算的系统的均方误差随训练次数的变化情况,从图中可以看见,因为此算法每次对于加权系数的调整是利用所有的输入矢量,即向系统的均方误差减小的方向调整,所以迭代次数比起另外两种方法少很多。
而且均方误差随着训练次数的变化曲线是一直减小的,因为每一步计算的均方误差也是系统的均方误差。