ADLINE LMS Matlab实验.docx
- 文档编号:7454486
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:14
- 大小:165.99KB
ADLINE LMS Matlab实验.docx
《ADLINE LMS Matlab实验.docx》由会员分享,可在线阅读,更多相关《ADLINE LMS Matlab实验.docx(14页珍藏版)》请在冰豆网上搜索。
ADLINELMSMatlab实验
《神经网络导论》实验一
Adaline的LMS算法
专业班级硕2081
学号**********
姓名李海玥
完成时间2012年12月
《神经网络导论》实验一
Adaline的LMS算法
李海玥
2012年12月
一、实验目的
1.通过实验了解Adaline的工作原理;
2.对比LMS三种算法,并通过上机实验掌握具体的实现方法;
3.与采用硬限幅函数的单个神经元模型进行对比,比较其异同。
二、实验原理
2.1.Adaline原理
采用硬限幅函数的单个神经元,通过简单的学习算法,可以成功实现两类线性可分类的分类功能。
但对于大多数的非线性可分类来说,则无法完成分类功能,因此采用具有线性功能函数的神经元Adaline方法。
设输入矢量
,如果加权向量
,则神经元的输出为:
按照最小二乘法,就是要求所有样本的实际输出值d与理想预期值y之间的误差的均方值最小。
定义误差
。
考虑所有可能出现的样本的均方误差:
其中,
是输入向量相关矩阵,
是输入向量与期望输出的互相关向量,通过求梯度求得最优权向量:
2.2.LMS学习问题的严格递推学习算法
1.任意设置初始加权矢量
;
2.对于每一个时序变量k,按下式调整权向量W:
2.3.LMS学习问题的随机逼近算法
将严格递推公式修正如下形式:
1)
是时序k的非增函数;
2)
;
2.4.LMS学习基于统计的算法
这是一种具有一定统计特性的学习算法,递推公式如下:
如果P的取值很大相当于严格递推法,若P=1,则相当于随机逼近法。
三、实验内容及步骤
3.1.样本矢量
用Matalb的load命令加载数据文件lms_samp.mat,其中samp是一个200×3的矩阵,其中第一列是样本的横坐标,第二列是样本的纵坐标,第3列为样本的理想输出。
图1样本矢量图
3.2.LMS算法
1.忽略阈值情况下
数据在Matlab中运行结果如下:
2.阈值待定情况下
根据样本数据得到运行结果如下:
3.3.随机逼近算法
在步幅系数选择
,最小误差
,在Mtalab中某一次的运行结果如下:
图2
均方误差与迭代次数图
3.4.不同步幅系数对迭代次数的影响
图3α=0.002图4α=0.008
图5α=0.02图6α=0.1
图7α=0.3
从图中可以看到步幅系数选择的越大,需要迭代的次数越少。
这是由于初始权值即初始分界线确定的情况下,步幅系数越大,每次接近最佳分界线的速度越快。
但是当步幅系数超过一定的值以后,就可能需要更多次的迭代,甚至出现不收敛的情况。
这是因为步幅系数过大,分界线斜率一次改变过多,容易导致“转过头”的现象发生,可能需要更多的次数接近最佳分界线,也可能越来越远。
3.5.基于统计的算法
取步幅系数α=0.02,最小误差
,在Mtalab中某一次的运行结果如下:
图8
均方误差与迭代次数图
3.6.不同样本数对收敛速度的影响
表1不同步幅下随机推进法的迭代次数
测试序
号
样本数
1
2
3
4
5
迭代次数均值
2
24
29
40
40
21
30.8
50
23
26
27
24
27
25.4
从测试结果上看,在步幅系数确定的情况下,样本数越大,收敛所需的迭代次数越少。
这是因为在步幅系数一定的情况下,样本数少,权值改变随机性越强,收敛速度慢;反之,样本数增多,每次权值的改变更趋于期望,因此收敛步数小,收敛速度快,迭代过程更加稳定。
3.7.检验
图9检验样本和各种算法结果
表2检验结果
算法
权值
判错次数
正确率
LMS算法
10
95%
随机逼近算法
10
95%
基于统计的算法
10
95%
四、试验思考
1.如果想用硬限幅函数的单个神经元完成该分类任务,会出现什么样的现象?
答:
LMS算法以及矩阵算法,都是基于传递函数是
得到的,线性函数相比于硬限幅函数,最大特点就是线性函数是可微的。
LMS算法是基于上式递推得到的,而三种递推算法都是通过求导完成的。
因此失去了线性条件,换成硬限幅函数作为传递函数,以上算法均无法进行。
如果采用硬限幅函数,传递函数为
,按
递推求权值,此时得到权值为W=[0.05090.542],
图10均方误差与迭代次数的关系图
及均方误差曲线图可以看到,均方误差变化比较突兀。
这是因为对于硬限幅函数
所以权值可能发生多次没有变化,和突然变化的情况,所以,当使用具有硬限幅函数的神经元处理这类问题时,不能保证学习结果是收敛的。
2.通过观察比较随机逼近算法与不同P时最陡下降算法的均方误差曲线随时序变量k的变化有什么不同,并简要解释原因。
答:
从上面的比较可以看出,随着变量P的增大,均方误差曲线趋于平滑,这是因为样本取样值越多,权值改变量越趋于期望值,收敛步数更少,收敛速度快,迭代过程更加稳定。
五、试验总结
通过本次试验了解了Adaline算法,对LMS三种算法进行了对比,并通过Matlab对算法进行了具体的实现。
比较得出了在最小误差固定的情况下,步幅系数对收敛速度的影响;以及不同样本个数对均方差的收敛性、收敛速度的影响。
并与采用硬限幅函数的单个神经元模型进行对比。
对于线性可分问题,采用硬限幅函数的单个神经元,通过简单的学习算法就可成功实现分类。
即对于两个不同类中的输入矢量,神经元的输出值为0或1。
但对于大多数非线性可分类,硬限幅神经元则无法完成分类功能。
自适应线性元件Adaline是一种具有线性功能函数的神绎元,在实际输出与理想预期值的最小二乘LMS的统计意义下进行学习,可以实现最佳的非线性可分集合的分类,即按照最小二乘的统计意义要求,实际输出值与理想预期值之间的误差均方值为最小。
在本次实验中由于对于Matlab软件编程的不熟悉,导致实验周期长,效率不高。
在后续的试验中,打算进一步熟悉Matlab软件神经网络工具箱,直接利用神经网络训练函数进行实验仿真,提高实验效率。
Matlab主要源代码
1.样本矢量
loadlms_samp.mat
fori=1:
length(samp)
ifsamp(i,3)==1
plot(samp(i,1),samp(i,2),'g*');holdon;
elseifsamp(i,3)==-1
plot(samp(i,1),samp(i,2),'ro');holdon;
end
end
end
fortheta=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,':
g');holdon;
end
f=@(x)(-x);
fplot(f,[-3,3],'k');holdon;
axis([-33-33]);
axisequal;
gridon;
2.LMS算法
1)阈值为零情况下:
loadlms_samp.mat;
x=samp(1:
200,1:
2);
R(1:
2,1:
2)=0;P(1:
2)=0;d(1:
200)=0;dd=0;
%%定义自相关矩阵和互相关矩阵,d为期望输出;
fori=1:
200
d(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=R+xx;
end
R=R/200;P=P/200;dd=dd/200;
W=P*(inv(R));
Emin=dd-P*(W');
%%计算最佳权向量,最小均方差;
disp('P');disp(P);
disp('R');disp(R);
disp('W');disp(W);
disp('Emin');disp(Emin);
2)阈值待定情况下:
loadlms_samp.mat
x=samp(1:
200,1:
3);x(:
3)=1;
R(1:
3,1:
3)=0;P(1:
3)=0;d(1:
200)=0;dd=0;
fori=1:
200
d(i)=samp(i,3);
dd=dd+d(i)*d(i);
P=P+d(i)*x(i,1:
3);
xx=(x(i,:
)).'*x(i,:
);
R=R+xx;
end
R=R/200;P=P/200;dd=dd/200;
W=P*(inv(R));
Emin=dd-P*(W');
disp('P');disp(P);
disp('R');disp(R);
disp('W');disp(W);
disp('Emin');disp(Emin);
3.随机逼近算法
xk(:
:
)=samp(:
1:
2);dk=samp(:
3);
wk(1,:
)=[00];averError(:
1:
P)=0;u=0.01;count=1;
%wk为权向量,averError为均方误差,u为步幅系数,count为迭代次数;
P=1;err(:
1:
P)=0;xerr(1:
P,1:
2)=0;yk(:
1:
P)=0;
%P=1时是随机逼近法,P=200是严格递推,P=1~200是最陡下降法;
yy(:
1:
P)=0;xx(:
1:
P)=0;
%LMS算法求最佳权值
fori=1:
length(samp)
xk(i,:
)=samp(i,1:
2);
%xk为输入向量
yk=xk(i,:
)*wk(i,:
)';
%yk为实际输出向量
dk(i)=samp(i,3);
%dk为期望输出
err(i)=dk(i)-yk;
%err为误差
wk(i+1,:
)=wk(i,:
)+2*u*err(i)*xk(i,:
);
averError(i)=(mean(err(i).^2))/i;
xx(i)=i;
yy(i)=averError(i);
plot(xx(i),yy(i),'.b');holdon;
end
disp('w=');disp(wk(length(samp),:
));
4.基于统计的算法
%这里将P=50,u=0.02,其他与随机逼近算法相同。
5.检验
loadlms_samp.mat
fori=1:
length(samp)
ifsamp(i,3)==1
plot(samp(i,1),samp(i,2),'g*');holdon;
elseifsamp(i,3)==-1
plot(samp(i,1),samp(i,2),'ro');holdon;
end
end
end
fortheta=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,':
g');holdon;
end
h=@(x)(-0.3517*x/0.3464);
fplot(h,[-3,3],'k-');holdon;
f=@(x)(-0.3421*x/0.3721);
fplot(f,[-3,3],'b:
');holdon;
g=@(x)(-0.3138*x/0.4129);
fplot(g,[-3,3],'c--');holdon;
axis([-33-33]);
axisequal;
gridon;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ADLINE LMS Matlab实验 Matlab 实验