matlab牛顿法原理,牛顿法的matlab实现

41528d3028836879cd698677c3999917.gif牛顿法的matlab实现

牛顿法的 MATLAB 实现摘要:性能学习是神经网络中的一类很重要的学习规则,其旨在找到一个最优点来提高网络的性能。牛顿法是一种基于二阶泰勒级数的算法,逐步迭代来实现进一步的极小化,最后找到最优点。本文采用 MATLAB 编程来实现牛顿法,并通过具体的例子进行分析计算。关键字:牛顿法;MATLAB Realise Newton’s by using MatlabAbstract: Perance learning is one of important learning rules in neural network ,which aims to find an optimal point to improve the perance of neural network.Newton s 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, Newton s is easily to realize and it also gives a demonstration to analyse and calculation. Key words: Newton’s ; MATLAB0 引言神经网络作为一门新兴的学科,在短短的数十年内已经被运用于多种学科领域,大量的有关神经网络机理、模型以及算法分析等方面的文章如雨后春笋般涌现。MATLAB 是一种强大的工程计算和仿真软件,其基本上可以实现神经网络的各种设计方法和算法。牛顿法是求解优化问题最早使用的经典算法之一,其基本思想是用迭代点处的一阶导数和二阶导数对目标函数进行二次函数近似,然后把模型的极小点作为新的迭代点,并不断的重复这个过程,直至求得满足精度的近似极小点。1 神经网络的性能优化在学习神经网络的过程中,性能学习是一种非常重要的学习规则,其目的在于调整网络参数以优化网络性能。优化过程可以分为两步,第一步是定义“性能”的标准,即找到一个衡量网络性能的定量标准,也就是性能指数;第二步是搜索减小性能指数的参数空间。假设最小化的性能指数是一个解析函数 F(x),它的各级导数均存在。那么 F(x)可表示某些指定点 上的泰勒级数展开,如下式所示𝑥∗𝐹(𝑥)=𝐹(𝑥∗)+𝑑𝑑𝑥𝐹(𝑥)|𝑥=𝑥∗(𝑥‒𝑥∗)+12𝑑2𝑑𝑥2𝐹(𝑥)|𝑥=𝑥∗(𝑥‒𝑥∗)2+⋯+1𝑛!𝑑𝑛𝑑𝑥𝑛𝐹(𝑥)|𝑥=𝑥∗(𝑥‒𝑥∗)𝑛+⋯ (1)神经网络的性能指数并不仅仅是一个纯量 x 的函数,它是所有网络参数(各个权值和偏置值)的函数,参数的数量也不是确定的。因此,需要将泰勒级数展开式扩展为多变量形式。假设有下列 n 元函数。(2)𝐹(𝑥)=𝐹(𝑥1,𝑥2,⋯,𝑥𝑛)把这个函数在点 的泰勒级数展开,可以得到如下式子:𝑥∗𝐹(𝑥)=𝐹(𝑥∗)+∂∂𝑥1𝐹(𝑥)|𝑥=𝑥∗(𝑥1‒𝑥∗1)+∂∂𝑥2𝐹(𝑥)|𝑥=𝑥∗(𝑥2‒𝑥∗2)+⋯+∂∂𝑥𝑛𝐹(𝑥)|𝑥=𝑥∗(𝑥𝑛‒𝑥∗𝑛)+12∂2∂𝑥2𝐹(𝑥)|𝑥=𝑥∗(𝑥1‒𝑥∗1)2(3)+12∂2∂𝑥1∂𝑥2𝐹(𝑥)|𝑥=𝑥∗(𝑥1‒𝑥∗1)(𝑥2‒𝑥∗2)+⋯将这个表达式表示成矩阵的形式:𝐹(𝑥)=𝐹(𝑥∗)+∇𝐹(𝑥)|𝑥=𝑥∗(𝑥‒𝑥∗)+12(𝑥‒𝑥∗)𝑇∇2𝐹(𝑥)|𝑥=𝑥∗(𝑥‒𝑥∗)2+⋯(4)其中为梯度,定义为∇𝐹(𝑥)(5)∇𝐹(𝑥)=[∂∂𝑥1𝐹(𝑥)∂∂𝑥2𝐹(𝑥)⋯∂∂𝑥𝑛𝐹(𝑥)]𝑇为赫森矩阵,定义为∇2𝐹(𝑥)(6)∇2𝐹(𝑥)=[∂2∂𝑥21𝐹(𝑥) ∂2∂𝑥1∂𝑥2𝐹(𝑥) ⋯ ∂2∂𝑥1∂𝑥𝑛𝐹(𝑥)∂2∂𝑥2∂𝑥1𝐹(𝑥) ∂2∂𝑥22𝐹(𝑥) ⋯ ∂2∂𝑥2∂𝑥𝑛𝐹(𝑥)⋮∂2∂𝑥𝑛∂𝑥1𝐹(𝑥)⋮∂2∂𝑥𝑛∂𝑥2𝐹(𝑥)⋮⋯ ∂2∂𝑥2𝑛𝐹(𝑥) ]通过限定泰勒级数展开式的数量,可以用泰勒级数近似估计性能指数。2 牛顿法牛顿法是基于如下的二阶泰勒级数:(7)𝐹(𝑥𝑘+1)=𝐹(𝑥𝑘+∆𝑥𝑘)≈𝐹(𝑥𝑘)+𝑔𝑇𝑘∆𝑥𝑘+12∆𝑥𝑇𝑘𝐴𝑘∆𝑥𝑘牛顿法的原理是求 F(x)的二次近似的驻点。用下式求这个二次函数对 的梯度并设它∆𝑥𝑘为零,(8)∇𝐹(𝑥)=𝐴𝑥+𝑑则有(9)𝑔𝑘+𝐴𝑘∆𝑥𝑘=0求解 得∆𝑥𝑘(10)∆𝑥𝑘=‒𝐴‒1𝑘𝑔𝑘于是将牛顿法定义为(11)∆𝑥𝑘+1=∆𝑥𝑘‒𝐴‒1𝑘𝑔𝑘其中 为在 的赫森矩阵𝐴𝑘 𝑥𝑘(12)𝐴𝑘=∇2𝐹(𝑥)|𝑥=𝑥∗因为牛顿法总是用一个二次函数逼近 F(x),然后求其驻点。如果原函数为二次函数(有强极小点) ,它就能实现一步极小化。牛顿法最突出的有点是收敛速度快,具有局部二阶收敛性。初始点要足够的“靠近”极小点。由于实际问题中的精确极小点一般不是知道的,因此初始点的选取要适当。3 牛顿法的 MATLAB 实现牛顿法的步骤如下:①、给定终止误差值 epson=1e-12,初始点 ,令 k=0。𝑥0②、计算 若 ,停止运算,输出𝑔𝑘=∇𝐹(𝑥𝑘), ‖𝑔𝑘‖≤𝑒𝑝𝑠𝑜𝑛③、计算 𝐺𝑘=∇2𝐹(𝑥𝑘)④、令 。k=k+1,转①。𝑥𝑘+1=𝑥𝑘+𝑝举一个例子,一个函数 ,以 为初始点,用牛顿法对𝐹(𝑥)=𝑒(𝑥21‒𝑥1+2𝑥22+4) 𝑥0=[1 ‒2]𝑇其进行一次迭代。首先求梯度和赫森矩阵。梯度为(13)∇𝐹(𝑥)=[∂∂𝑥1𝐹(𝑥)∂∂𝑥2𝐹(𝑥)]=𝑒(𝑥21‒𝑥1+2𝑥22+4)[(2𝑥1‒1)4𝑥2 ]赫森矩阵为∇2𝐹(𝑥)=[∂2∂𝑥21𝐹(𝑥)∂2∂𝑥1∂𝑥2𝐹(𝑥)∂2∂𝑥2∂𝑥1𝐹(𝑥) ∂2∂𝑥22𝐹(𝑥) ](14)=𝑒(𝑥21‒𝑥1+2𝑥22+4)[4𝑥21‒4𝑥1+3 (2𝑥1‒1)(4𝑥2)(2𝑥1‒1)(4𝑥2) 16𝑥22+4 ]在初始点 ,有𝑥0(15)𝑔0=∇𝐹(𝑥)|𝑥=𝑥0=[ 0.163×106‒1.302×106]和(16)𝐴0=∇2𝐹(𝑥)|𝑥=𝑥0=[ 0.049×107 ‒0.130×107‒0.130

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值