84神经网络与matlab仿真

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

神经网络与matlab仿真随着技术的发展,人工神经网络在各个方面应用越来越广泛,由于matlab仿真技术对神经网络的建模起着十分重要的作用,因此,通过讨论神经网络中基础的一类——线性神经网络的matlab仿真,对神经网络的matlab仿真做一个基本的了解。1.面向matlab工具箱的神经网络设计人工神经网络可通过硬件或软件方式来实现。硬件方式即神经计算机。目前较常用的还是软件实现方式。已有许多公司和研究单位设计了通用的ANN程序以方便人们使用,matlab提供的神经网络工具箱就是其重要代表。神经网络工具箱是在matlab环境下所开发出来的许多工具箱之一,它是以人工神经网络理论为基础,用matlab语言构造出典型神经网络的激活函数,如S型、线性、竞争层、饱和线性等激活函数,使设计者对所选定网络输出的计算变成对激活函数的调用。另外,根据各种典型的修正网络权值的规定,加上网络的训练过程,用matlab编写出各种网络设计与训练所涉及的公式运算、矩阵操作和方程求解等大部分子程序,网络的设计者可以根据自己的需要进行调用,免除了自己编写复杂而庞大的算法程序的困扰,集中精力去思考需要解决的问题,提高工作效率和解题质量。目前matlab几乎完整地概括了神经网络的基本成果,对于各种网络模型,神经网络工具箱集成了多种学习算法,为用户提供了极大的方便。同时,matlab的其他工具箱也为我们在神经网络工具箱的基础上开发研究模糊与神经网络的结合、神经网络的样条算法等问题提供了辅助手段。2线性神经网络线性神经网络是最简单的一种神经元网络,它可以由一个或多个线性神经元构成。50年代末期提出的自适应线性元件是线性神经网络最早的典型代表。其每个神经元的传递函数为线性函数,其输出可以取任意值。线性神经网络可以采用Widrow-Hoff学习规则,也称为LMS算法来调整网络的权值和阈值。2.1线性神经网络模型线性神经元模型的神经元有一个线性传递函数purelin,其输入输出之间是简单的比例关系,一次对单个线性神经元,由图1可得,a=purelin(ω×p+b).因此,线性神经网络允许输出可以取任意值,而不仅仅是0或1。线性神经元模型线性神经元传递函数具有R个输入的单层(S个神经元)线性神经网络模型。单层多输入的线性神经网络模型2.2线性神经网络的学习算法Widrow-Hoff学习规则,又称为最小均方误差LMS(LeastMeanSquareError)学习算法,由Widrow-Hoff提出,属于有导师学习算法。LMS学习规则定义如下:221111()(()())mmkkmseekdkykmm其目标是通过调节权值,使mse从误差空间的某点开始,沿着mse的斜面向下滑行,最终使mse达到最小值。LMS算法的实现有五个步骤:第一步:初始化。给各个连接赋一个较小的随机值;第二步:输入一个样本,计算连接权值的调整量:2()()2()ijijekekek2()()2()ekekekbb1()[()(())]Rijiijijiekedkpkb第三步:调整连接权值:根据负梯度下降的原则,网络权值和阈值修正公式如下(1)()2()()(1)()2()Tkkekpkbkbkek式中η为学习率,当其取较大值时,可以加快网络的训练速度,但是如果其值太大,会导致网络稳定性的降低和训练误差的增加。所以,为了保证网络进行稳定的训练,学习率的值必须选择一个合适的值;第四步:计算均方误差:221111()(()())mmkkmesekdkykmm第五步:判断误差是否为零或者是否达到预选设定的要求。如果是,则结束算法,否则输入下一个样本,返回第二步进入下一轮求解过程。3线性神经网络的matlab实现函数名称功能newlind设计一个线性层newlin构造一个线性层purelin线性传递函数dotprod权值点积函数netsum网络输入求和函数initlay某层的初始化函数initwb某层的权值和阈值的初始化函数initzero零权值阈值初始化函数init一个网络的初始化函数mae求平均绝对误差性能函数learnwhWidrow-hoff的学习规则adaptwb网络的权值阈值的自适应函数adapt神经网络的自适应函数trainwb网络的权值和阈值训练函数train神经网络训练函数maxlinlr线性层的最大学习率errsurf计算误差性能曲面sim仿真一个神经网络下面给出一个线性神经网络的设计要求,并尝试用matlab提供的神经网络工具函数实现。设计一个简单的单层线性神经元,其输入和目标分别为P=[+1.0-1.2],T=[+0.5+1.0]。权值和阈值的范围分别为-1~1。试用matlab实现其从输入到输出的变化关系。由例中的条件编写matlab源程序如下:%dlin1.m%NEWLIND%SIMclf;figure(gcf);P=[1.0-1.2];T=[0.51.0];w_range=-1:0.1:1;b_range=-1:0.2:1;ES=errsurf(P,T,w_range,b_range,'purelin');plotes(w_range,b_range,ES);ax=findobj(gcf.'type','axes');pausenet=neslind(P,T);formatcompact;A=0;E=0;SSE=0;A=sim(net,P)E=T-ASSE=sumsqr(E)plotes(w_range,b_range,ES);plotep(net.IW{1.1},net.b{1},SSE);p=-1.2;a=0;a=sim(net,p)%进行网络验证disp('Endofdline1')执行程序,可得到线性网络求解后的误差曲面图对此线性网络进行更多的训练以求最优解,则matlab程序更改如下。%dlin2.m%NEWLIN%TRAIN%SIMclf;figure(gcf);P=[1.0-1.2];T=[0.51.0];w_range=-1:0.2:1;b_range=-1:0.2:1;ES=errsurf(P,T,w_range,b_range,'purelin');plotes(w_range,b_range,ES);pausemaxlr=0.40*maxlinlr(P,'bias');net=newlin([-22].1.[0],maxlr);net.trainParam.goal=.001;subplot(1,2,2);h=text(sum(get(gca,'xlim'))*0.5,sum(get(gca,'ylim'))*0.5'*ClickOnME*');set(h,'horizontal','center','fontweight','bold');[net.IW{1.1}net.b{1}]=ginput(1);delete(h);[net,tr]=train(net,P,T);formatconpact;A=0;E=0;SSE=0;A=sim(net,P)E=T-ASSE=sumsqr(E)plotes(w_range,b_range,ES);plotep(net.IW{1.1},net.b{1},SSE);pauseplotperf(tr,net.trainParam.goal);p=-1.2;a=sim(net,P)disp('Endofdlin2')运行程序,得到的误差曲面及误差等高线图。参考文献[1]周开利,康耀红.神经网络模型及其MATLAB仿真程序设计[M].北京:清华大学出版社,2005:90-95.[2]闵惜琳,刘国华.用MATLAB神经网络工具箱开发BP网络应用[J].计算机应用,2001,21(8):163-164.[3]刘建斌.人工神经网络在电磁建模中的应用[D].上海交通大学,2003:10-11.[4]张德丰.MATLAB神经网络应用设计[M].机械工业出版社,2009:7-12.

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功