您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 神经网络与matlab仿真
神经网络与matlab仿真摘要随着技术的发展,人工神经网络在各个方面应用越来越广泛,由于matlab仿真技术对神经网络的建模起着十分重要的作用,因此,本文通过讨论神经网络中基础的一类——线性神经网络的matlab仿真,对神经网络的matlab仿真做一个基本的了解和学习。关键词:人工神经网路matlab仿真线性神经网络1神经网络的发展及应用人工神经网络(ArtificialNeuralNetwork,简称ANN)是一种高度并行的信息处理系统,它具有高度的容错性,自组织能力和自学习能力;它以神经科学的研究成果为基础,反映了人脑功能的若干基本特性,对传统的计算机结构和人工智能方法是一个有力的挑战,其目的在于探索人脑加工、储存和搜索信息的机制,进而应用于人工智能系统。1.1神经网络的研究历史及发展现状神经网络的研究已有较长的历史。1943年,心理学家McCulloch和数学家Pitts合作提出形式(兴奋与抑制型)神经元的数学模型(MP模型),开创了神经科学理论研究的时代。1944年,Hebb提出了神经元连接强度的修改规则,它们至今仍在各种神经网络模型中起着重要作用。50年代末60年代初,开始了作为人工智能的网络系统的研究。1958年,F.Rosenblatt首次引进了模拟人脑感知和学习能力的感知器概念,它由阈值性神经元组成。1962年,B.Widrow提出的自适应线性元件(adaline),具有自适应学习功能,在信息处理、模式识别等方面受到重视和应用。在这期间,神经网络大都是单层线性网络。此时,人们对如何解决非线性分割问题很快有了明确的认识,但此时,计算机科学已被人工智能研究热潮所笼罩。80年代后,传统的数字计算机在模拟视听觉的人工智能方面遇到了物理上不能逾越的基线,此时,物理学家Hopfield提出了HNN模型,引入了能量函数的概念,给出了网络稳定性的判据,同时开拓了神经网络用于联想记忆和优化计算的新途径。神经网络的热潮再次掀起。此后,Feldmann和Ballard的连接网络模型指出了传统的人工智能“计算”与生物的“计算”的不同点,给出了并行分布的计算原则;Hinton和Sejnowski提出的Boltzman机模型则急用了统计物理学的概念和方法,首次采用了多层网络的学习算法,保证整个系统趋于全局稳定点;Rumelhart和McClelland等人发展了多层网络的BP算法;Kosko提出了双向联想记忆网络;Hecht-Nielsen提出了另一种反向传播网络,可用于图像压缩和统计分析;Holland提出了分类系统类似于以规则为基础的专家系统。这些努力为神经网络的后期发展奠定了牢固的基础。目前,神经网络在研究方向上已经形成多个流派,包括多层网络BP算法,Hopfield网络模型,自适应共振理论(ART),自组织特征映射理论等。1987年,IEEE在SanDiego召开大规模的神经网络国际学术会议,国际神经网络学会也随之诞生。迄今为止的神经网络研究。大体可分为三个大的方向:1)探求人脑神经系统的生物结构和机制;2)用微电子学或光学器件形成特殊功能网络,主要应用于新一代计算机制造;3)讲神经网络理论作为解决某些问题的一种手段和方法。1.2神经网络的应用在理论工作取得重要进展的同时,硬件实现的研究工作也在积极开展,神经网络理论已经渗透到各个领域,并在智能控制、模式识别、计算机视觉、自适应滤波和信号处理、非线性优化、自动目标识别、连续语音识别、声纳信号的处理、知识处理、传感器技术与机器人、生物医学工程等方面取得了很大的进展。人工神经网络系统是仿照人脑的工作原理而产生。它是大量的、同时也是很简单的处理单元(神经元)广泛互连形成的复杂的非线性系统。在人工神经网络中存在着许多简单的、具有非线性函数功能的几类单元,它们称为人工神经元。神经元以分层的形式来组织,而它们之间又存在着用突触维持的高度互连。人工神经网络的学习能力就在于突触的权值能够在学习过程中得到加强或是削弱,并以此将信息储存于神经网络中。人工神经网络经过训练,能够实现输入到输出的映射关系,同时具有一定的推广性,因此在不同的领域得到广泛的应用,如自动控制、移动通信、生物医学、模式识别、生产制造等等。2面向matlab工具箱的神经网络设计人工神经网络可通过硬件或软件方式来实现。硬件方式即神经计算机。目前较常用的还是软件实现方式。已有许多公司和研究单位设计了通用的ANN程序以方便人们使用,matlab提供的神经网络工具箱就是其重要代表。神经网络工具箱是在matlab环境下所开发出来的许多工具箱之一,它是以人工神经网络理论为基础,用matlab语言构造出典型神经网络的激活函数,如S型、线性、竞争层、饱和线性等激活函数,使设计者对所选定网络输出的计算变成对激活函数的调用。另外,根据各种典型的修正网络权值的规定,加上网络的训练过程,用matlab编写出各种网络设计与训练所涉及的公式运算、矩阵操作和方程求解等大部分子程序,网络的设计者可以根据自己的需要进行调用,免除了自己编写复杂而庞大的算法程序的困扰,集中精力去思考需要解决的问题,提高工作效率和解题质量。目前matlab几乎完整地概括了神经网络的基本成果,对于各种网络模型,神经网络工具箱集成了多种学习算法,为用户提供了极大的方便。同时,matlab的其他工具箱也为我们在神经网络工具箱的基础上开发研究模糊与神经网络的结合、神经网络的样条算法等问题提供了辅助手段。3线性神经网络线性神经网络是最简单的一种神经元网络,它可以由一个或多个线性神经元构成。50年代末期提出的自适应线性元件是线性神经网络最早的典型代表。其每个神经元的传递函数为线性函数,其输出可以取任意值。线性神经网络可以采用Widrow-Hoff学习规则,也称为LMS算法来调整网络的权值和阈值。3.1线性神经网络模型线性神经元模型的神经元有一个线性传递函数purelin,其输入输出之间是简单的比例关系,一次对单个线性神经元,由图1可得,a=purelin(ω×p+b).因此,线性神经网络允许输出可以取任意值,而不仅仅是0或1。图1线性神经元模型图2线性神经元传递函数具有R个输入的单层(S个神经元)线性神经网络模型如下图3所示。图3单层多输入的线性神经网络模型3.2线性神经网络的学习算法Widrow-Hoff学习规则,又称为最小均方误差LMS(LeastMeanSquareError)学习算法,由Widrow-Hoff提出,属于有导师学习算法。LMS学习规则定义如下:221111()(()())mmkkmseekdkykmm(3-1)其目标是通过调节权值,使mse从误差空间的某点开始,沿着mse的斜面向下滑行,最终使mse达到最小值。LMS算法的实现有五个步骤:第一步:初始化。给各个连接赋一个较小的随机值;第二步:输入一个样本,计算连接权值的调整量:2()()2()ijijekekek(3-2)2()()2()ekekekbb(3-3)1()[()(())]Rijiijijiekedkpkb(3-4)第三步:调整连接权值:根据负梯度下降的原则,网络权值和阈值修正公式如下(1)()2()()(1)()2()Tkkekpkbkbkek(3-5)式中η为学习率,当其取较大值时,可以加快网络的训练速度,但是如果其值太大,会导致网络稳定性的降低和训练误差的增加。所以,为了保证网络进行稳定的训练,学习率的值必须选择一个合适的值;第四步:计算均方误差:221111()(()())mmkkmesekdkykmm(3-6)第五步:判断误差是否为零或者是否达到预选设定的要求。如果是,则结束算法,否则输入下一个样本,返回第二步进入下一轮求解过程。4线性神经网络的matlab实现下表1给出了matlab中与线性网络相关的神经网络工具函数。表1神经网络工具函数函数名称功能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实现其从输入到输出的变化关系。该线性网络的结构如下图4所示。图4线性网络结构图由例中的条件编写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')执行程序,可得到线性网络求解后的误差曲面图5如下。图5线性网络误差曲面图对此线性网络进行更多的训练以求最优解,则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')运行程序,得到的误差曲面及误差等高线图如下图6所示。图6误差曲面及误差等高线5结束语由于自身知识的局限性,本文只是讨论了神经网络中最基本的matlab建模。我希望随着以后的深入学习,可以能够掌握matlab对神经网络的仿真方法,为自己的研究和学习添砖加瓦。参考文献[1]周开利,康耀红.神经网络模
本文标题:神经网络与matlab仿真
链接地址:https://www.777doc.com/doc-4258133 .html