牛顿法的MATLAB实现.doc_第1页
牛顿法的MATLAB实现.doc_第2页
牛顿法的MATLAB实现.doc_第3页
牛顿法的MATLAB实现.doc_第4页
牛顿法的MATLAB实现.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

牛顿法的MATLAB实现摘要:性能学习是神经网络中的一类很重要的学习规则,其旨在找到一个最优点来提高网络的性能。牛顿法是一种基于二阶泰勒级数的算法,逐步迭代来实现进一步的极小化,最后找到最优点。本文采用MATLAB编程来实现牛顿法,并通过具体的例子进行分析计算。关键字:牛顿法;MATLAB Realise Newtons Method by using MatlabAbstract: Performance learning is one of important learning rules in neural network ,which aims to find an optimal point to improve the performance of neural network.Newtons method is a kind of algorithm which based on second-order Taylor series, the iteration step by step to achieve further minimization, and finally find the most advantage.In this paper,by using the matlab, Newtons method is easily to realize and it also gives a demonstration to analyse and calculation. Key words: Newtons method; MATLAB0 引言神经网络作为一门新兴的学科,在短短的数十年内已经被运用于多种学科领域,大量的有关神经网络机理、模型以及算法分析等方面的文章如雨后春笋般涌现。MATLAB是一种强大的工程计算和仿真软件,其基本上可以实现神经网络的各种设计方法和算法。牛顿法是求解优化问题最早使用的经典算法之一,其基本思想是用迭代点处的一阶导数和二阶导数对目标函数进行二次函数近似,然后把模型的极小点作为新的迭代点,并不断的重复这个过程,直至求得满足精度的近似极小点。1 神经网络的性能优化在学习神经网络的过程中,性能学习是一种非常重要的学习规则,其目的在于调整网络参数以优化网络性能。优化过程可以分为两步,第一步是定义“性能”的标准,即找到一个衡量网络性能的定量标准,也就是性能指数;第二步是搜索减小性能指数的参数空间。假设最小化的性能指数是一个解析函数F(x),它的各级导数均存在。那么F(x)可表示某些指定点x*上的泰勒级数展开,如下式所示Fx=Fx*+ddxFx|x=x*x-x* +12d2dx2Fx|x=x*x-x*2+1n!dndxnFx|x=x*x-x*n+ (1) 神经网络的性能指数并不仅仅是一个纯量x的函数,它是所有网络参数(各个权值和偏置值)的函数,参数的数量也不是确定的。因此,需要将泰勒级数展开式扩展为多变量形式。假设有下列n元函数。Fx=F(x1,x2,xn) (2)把这个函数在点x*的泰勒级数展开,可以得到如下式子:Fx=Fx*+x1Fx|x=x*x1-x1*+x2Fx|x=x*x2-x2*+xnFx|x=x*xn-xn*+122x2Fx|x=x*x1-x1*2+122x1x2Fx|x=x*x1-x1*(x2-x2*)+ (3)将这个表达式表示成矩阵的形式:Fx=Fx*+Fx|x=x*x-x*+12x-x*T2Fx|x=x*x-x*2+ (4)其中 Fx为梯度,定义为Fx=x1Fxx2FxxnFxT (5) 2Fx为赫森矩阵,定义为2Fx=2x12Fx2x1x2Fx2x1xnFx2x2x1Fx2x22Fx2x2xnFx2xnx1Fx2xnx2Fx2xn2Fx (6)通过限定泰勒级数展开式的数量,可以用泰勒级数近似估计性能指数。2 牛顿法牛顿法是基于如下的二阶泰勒级数:Fxk+1=Fxk+xkF(xk)+gkTxk+12xkTAkxk (7)牛顿法的原理是求F(x)的二次近似的驻点。用下式求这个二次函数对xk的梯度并设它为零,Fx=Ax+d (8)则有gk+Akxk=0 (9)求解xk得xk=-Ak-1gk (10)于是将牛顿法定义为xk+1=xk-Ak-1gk (11)其中Ak为在xk的赫森矩阵Ak=2Fx|x=x* (12)因为牛顿法总是用一个二次函数逼近F(x),然后求其驻点。如果原函数为二次函数(有强极小点),它就能实现一步极小化。牛顿法最突出的有点是收敛速度快,具有局部二阶收敛性。初始点要足够的“靠近”极小点。由于实际问题中的精确极小点一般不是知道的,因此初始点的选取要适当。3 牛顿法的MATLAB实现牛顿法的步骤如下:、给定终止误差值epson=1e-12,初始点x0,令k=0。、计算gk=F(xk),若gkepson,停止运算,输出、计算Gk=2F(xk)、令xk+1=xk+p。k=k+1,转。举一个例子,一个函数Fx=ex12-x1+2x22+4,以x0=1-2T为初始点,用牛顿法对其进行一次迭代。首先求梯度和赫森矩阵。梯度为Fx=x1Fxx2Fx=e(x12-x1+2x22+4)2x1-14x2 (13)赫森矩阵为2Fx=2x12Fx2x1x2Fx2x2x1Fx2x22Fx=ex12-x1+2x22+44x12-4x1+32x1-1(4x2)2x1-1(4x2)16x22+4 (14)在初始点x0,有g0=Fx|x=x0=0.163106-1.302106 (15)和A0=2Fx|x=x0=0.049107-0.130107-0.1301071.107107 (16)所以牛顿法的第一次迭代为x1=x0-A0-1g0=1-2-0.049107-0.130107-0.1301071.107107-10.163106-1.302106=0.971-1.886 (17)F(x)的极小点即指数部分的极小点,即x*=-A-1d=-2004-1-10=0.50 (18)用MATLAB实现,源代码如下:syms x1 x2f=exp(x12-x1+2*x22+4);v=x1,x2; df=jacobian(f,v); df=df.; G=jacobian(df,v); epson=1e-12;xm=0,0;g1=subs(df,x1,x2,xm(1,1),xm(2,1);G1=subs(G,x1,x2,xm(1,1),xm(2,1);k=0;while(norm(g1)epson) p=-G1g1; xm=xm+p; g1=subs(df,x1,x2,xm(1,1),xm(2,1); G1=subs(G,x1,x2,xm(1,1),xm(2,1); k=k+1; endk xm 运行结果为:k =4 xm=0.50000通过运行可以知道,经过4次迭代。找到了该函数的绩效点xm。 牛顿法的收敛速度比较快,一次迭代过后基本上接近极小值,经过数次迭代之后,就可以进一步实现极小化。4 结束语神经网络是一门很活跃的,应用范围特别广的学科。性能学习是最重要的神经网络学习规则之一。通过性能学习,网络参数能得到调节从而优化网络性能。牛顿法是一种基于二阶泰勒级数展开而导出的优化算法。对于二次函数,牛顿法能够一次迭代收敛到一个驻点。而对于复杂的函数,可以经过多次迭代,最后使其收敛到真正的极小点。神经网络的机理、算法及模型可以应用到各个科学领域中去,众多的神经生理学家、心理学家、数理学家、计算机与信息工程学家及企业家等对其的进一步研究和应用,使神经网络日益成为当代高科技领域中方兴未艾的竞争热点。参考文献1马昌凤.最优化方法及其MATL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论