ADLINE LMS Matlab实验.docx

上传人:b****6 文档编号:7454486 上传时间:2023-01-24 格式:DOCX 页数:14 大小:165.99KB
下载 相关 举报
ADLINE LMS Matlab实验.docx_第1页
第1页 / 共14页
ADLINE LMS Matlab实验.docx_第2页
第2页 / 共14页
ADLINE LMS Matlab实验.docx_第3页
第3页 / 共14页
ADLINE LMS Matlab实验.docx_第4页
第4页 / 共14页
ADLINE LMS Matlab实验.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

ADLINE LMS Matlab实验.docx

《ADLINE LMS Matlab实验.docx》由会员分享,可在线阅读,更多相关《ADLINE LMS Matlab实验.docx(14页珍藏版)》请在冰豆网上搜索。

ADLINE LMS Matlab实验.docx

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;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1