收藏 分享(赏)

牛顿法的MATLAB实现.doc

上传人:精品资料 文档编号:10180750 上传时间:2019-10-16 格式:DOC 页数:5 大小:24.58KB
下载 相关 举报
牛顿法的MATLAB实现.doc_第1页
第1页 / 共5页
牛顿法的MATLAB实现.doc_第2页
第2页 / 共5页
牛顿法的MATLAB实现.doc_第3页
第3页 / 共5页
牛顿法的MATLAB实现.doc_第4页
第4页 / 共5页
牛顿法的MATLAB实现.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、牛顿法的 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 optim

2、al 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 realiz

3、e and it also gives a demonstration to analyse and calculation. Key words: Newtons method; MATLAB0 引言神经网络作为一门新兴的学科,在短短的数十年内已经被运用于多种学科领域,大量的有关神经网络机理、模型以及算法分析等方面的文章如雨后春笋般涌现。MATLAB 是一种强大的工程计算和仿真软件,其基本上可以实现神经网络的各种设计方法和算法。牛顿法是求解优化问题最早使用的经典算法之一,其基本思想是用迭代点处的一阶导数和二阶导数对目标函数进行二次函数近似,然后把模型的极小点作为新的迭代点,并不断的重复这个过

4、程,直至求得满足精度的近似极小点。1 神经网络的性能优化在学习神经网络的过程中,性能学习是一种非常重要的学习规则,其目的在于调整网络参数以优化网络性能。优化过程可以分为两步,第一步是定义“性能”的标准,即找到一个衡量网络性能的定量标准,也就是性能指数;第二步是搜索减小性能指数的参数空间。假设最小化的性能指数是一个解析函数 F(x),它的各级导数均存在。那么 F(x)可表示某些指定点 上的泰勒级数展开,如下式所示()=()+()|=()+1222()|=()2+1!()|=()+ (1)神经网络的性能指数并不仅仅是一个纯量 x 的函数,它是所有网络参数(各个权值和偏置值)的函数,参数的数量也不是

5、确定的。因此,需要将泰勒级数展开式扩展为多变量形式。假设有下列 n 元函数。(2)()=(1,2,)把这个函数在点 的泰勒级数展开,可以得到如下式子:()=()+1()|=(11)+2()|=(22)+()|=()+1222()|=(11)2(3)+12212()|=(11)(22)+将这个表达式表示成矩阵的形式:()=()+()|=()+12()2()|=()2+(4)其中为梯度,定义为()(5)()=1()2()()为赫森矩阵,定义为2()(6)2()=221() 212() 21()221() 222() 22()21()22() 22() 通过限定泰勒级数展开式的数量,可以用泰勒级数近

6、似估计性能指数。2 牛顿法牛顿法是基于如下的二阶泰勒级数:(7)(+1)=(+)()+12牛顿法的原理是求 F(x)的二次近似的驻点。用下式求这个二次函数对 的梯度并设它为零,(8)()=+则有(9)+=0求解 得(10)=1于是将牛顿法定义为(11)+1=1其中 为在 的赫森矩阵 (12)=2()|=因为牛顿法总是用一个二次函数逼近 F(x),然后求其驻点。如果原函数为二次函数(有强极小点) ,它就能实现一步极小化。牛顿法最突出的有点是收敛速度快,具有局部二阶收敛性。初始点要足够的“靠近”极小点。由于实际问题中的精确极小点一般不是知道的,因此初始点的选取要适当。3 牛顿法的 MATLAB 实

7、现牛顿法的步骤如下:、给定终止误差值 epson=1e-12,初始点 ,令 k=0。0、计算 若 ,停止运算,输出=(), 、计算 =2()、令 。k=k+1,转。+1=+举一个例子,一个函数 ,以 为初始点,用牛顿法对()=(211+222+4) 0=1 2其进行一次迭代。首先求梯度和赫森矩阵。梯度为(13)()=1()2()=(211+222+4)(211)42 赫森矩阵为2()=221()212()221() 222() (14)=(211+222+4)42141+3 (211)(42)(211)(42) 1622+4 在初始点 ,有0(15)0=()|=0= 0.1631061.302

8、106和(16)0=2()|=0= 0.049107 0.1301070.130107 1.107107所以牛顿法的第一次迭代为1=0100(17)= 12 0.049107 0.1301070.130107 1.1071071 0.1631061.302106= 0.9711.886F(x)的极小点即指数部分的极小点,即(18)=1=2 00 4110=0.50用 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

9、=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=0.50000 通过运行可以知道,经过 4 次迭代。找到了该函数的绩效点 。 牛顿法的收敛速度比较快,一次迭代过后基本上接近极小值,经过数次迭代之后,就可以进一步实现极小化。4 结束语神经

10、网络是一门很活跃的,应用范围特别广的学科。性能学习是最重要的神经网络学习规则之一。通过性能学习,网络参数能得到调节从而优化网络性能。牛顿法是一种基于二阶泰勒级数展开而导出的优化算法。对于二次函数,牛顿法能够一次迭代收敛到一个驻点。而对于复杂的函数,可以经过多次迭代,最后使其收敛到真正的极小点。神经网络的机理、算法及模型可以应用到各个科学领域中去,众多的神经生理学家、心理学家、数理学家、计算机与信息工程学家及企业家等对其的进一步研究和应用,使神经网络日益成为当代高科技领域中方兴未艾的竞争热点。参考文献1马昌凤.最优化方法及其 MATLAB 程序设计.福建:福建师范大学,2009.2傅荟璇.赵红.MATLAB 神经网络应用设计.北京:机械工业出版社,2010.3飞思科技产品研发中心.神经网络理论与 MATLAB 7 实现.北京:电子工业出版社,2005.5戴葵译.神经网络设计.北京:机械工业出版社,2002.6云磊.牛顿迭代法的 MATLAB 实现.湖北:襄樊学院,2011.

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报