牛顿法的MATLAB实现

萌到你眼炸
649次浏览
2021年02月11日 05:59
最佳经验
本文由作者推荐

-

2021年2月11日发(作者:电影女儿)


牛顿法的


MATLAB


实现




摘要:

性能学习是神经网络中的一类很重要的学习规则,


其旨在找到一个最优点来提高网络


的性能。


牛顿法是一种基于二阶泰勒级数的算法,


逐步迭代来实现进一步的极小化,


最后找


到最优点。 本文采用


MATLAB


编程来实现牛顿法,并通过具体的例子进 行分析计算。



关键字:


牛顿法;


MATLAB




Realise Newton


’


s Method by using Matlab


Abstract


:


Performance


learning


is


one


of


important


learning


rules


in


neural


network ,which aims to find an optimal point to improve the performance of neural


's 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



this


paper,by


using


the


matlab,


Newton's


method


is


easily


to


realize and it also gives a demonstration to analyse and calculation.


Key words:


Newton


’


s method; MATLAB


0


引言


< p>
神经网络作为一门新兴的学科,


在短短的数十年内已经被运用于多种学科领 域,


大量的


有关神经网络机理、模型以及算法分析等方面的文章 如雨后春笋般涌现。


MATLAB


是一种强

大的工程计算和仿真软件,其基本上可以实现神经网络的各种设计方法和算法。


< /p>


牛顿法是求解优化问题最早使用的经典算法之一,


其基本思想是用 迭代点处的一阶导数


和二阶导数对目标函数进行二次函数近似,


然后把模型的极小点作为新的迭代点,


并不断的


重复这个过程, 直至求得满足精度的近似极小点。



1


神经网络的性能优化



在学习神经网络 的过程中,


性能学习是一种非常重要的学习规则,


其目的在于调 整网络


参数以优化网络性能。优化过程可以分为两步,第一步是定义“性能”的标准,即 找到一个


衡量网络性能的定量标准,也就是性能指数;第二步是搜索减小性能指数的参数 空间。



假设最小化的性能指数是一个解析函数


F(x)


,它的各级导数均存在。那么


F(x)


可表示某


些指定点


x


∗


上的泰勒级数展开,如下式所示



F



x



=


F



x


∗



+


dx


F



x



|


x=x


∗



x


−


x


∗





1


d


2


+


F



x



|


x=x


∗



x


−


x


∗



2


+


⋯



2


2


dx


+


n!


dx


n


F



x



|


x=x


∗



x


−


x


∗



n


+


⋯


(1)




神经网络的性能指数并不仅 仅是一个纯量


x


的函数,


它是所有网络 参数


(各个权值和偏


置值)


的函数,< /p>


参数的数量也不是确定的。


因此,


需要将 泰勒级数展开式扩展为多变量形式。


假设有下列


n


元函数。



F



x



=


F(x


1


,


x


2


,


⋯


,


x


n


)






























(2)


把这个函数在点


x


∗


的泰勒级数展开, 可以得到如下式子:



1


d

< p>
n


d


F



x



=


F



x


∗



+


∂


∂


∗



∗



F



x



|


x=x


∗



x


1


−


x


1


+


F



x



|


x=x


∗



x


2


−


x


2



∂


x


1


∂


x


2


∂


1


∂


2

< br>∗



2


∗


+


⋯


+


F



x



|


x=x


∗



x


n


−


x


n



+


F



x



|


x=x


∗



x


1


−


x


1



2


∂


x


n


2


∂


x


+


2


∂

< br>x


1


∂


2


1


∂


x


2


∗



∗


F



x



|


x=x


∗



x


1


−


x


1


(x


2


−


x


2


)


+

< p>
⋯




























(3)


将这个表达式表示成矩阵的形式:



F



x



=


F



x


∗



+


∇


F



x



|


x=x


∗



x


−


x


∗




+


2



x


−


x


∗



T


∇


2


F



x



|


x=x


∗



x


−


x


∗



2


+


⋯















(4)


其中







∇


F



x



为梯度,定义为



∇


F



x



=







∇


2


F



x



为赫森矩阵,定义为




∂


x


1



∂


2



F



x



∇


2


F



x



=



∂


x


2


∂


x


1


⋮



2


∂



F



x




∂


x


n


∂


x


1


∂


2


2


F



x



1


∂


∂


x


1


F



x



∂


∂


x


2


F

< br>


x



⋯


∂


∂


x


n


F



x






















(5)


T


F



x





∂


2


∂


2


⋯


F



x




F



x



∂


x


2


∂


x


n


∂


x


2


2

















(6)


⋮


⋮



2


∂


2


∂




x



F




⋯


F


x


2


∂


x


n


∂


x


2



∂


x

< br>n


∂


x


1


∂


x


2


∂


2


F



x



⋯


∂


2


∂


x


1


∂


x


n


通过限定泰勒级数展开式的数量,可以用泰勒级数近似估计性能指数。



2


牛顿法



牛顿法是基于如下的二阶泰勒级数:



T


F



x


k+1



=


F



x


k


+


∆


x


k



≈


F(x


k


)


+


g


T


k


∆


x

< br>k


+


2


∆


x


k


A


k


∆


x


k













(7)


1


牛顿法的原理是求


F(x)


的二次近似的驻点。用下式求这个二 次函数对


∆


x


k


的梯度并设它


为零,



∇


F



x



=


Ax< /p>


+


d

































(8)


则有



g


k< /p>


+


A


k


∆


x


k


=


0

< p>































(9)


求解


∆


x


k


得



1


∆


x


k


=


−


A


−


k


g


k
































(10)


于是将牛顿法定义为



1


∆


x


k+1


=


∆


x


k


−

< br>A


−


k


g


k



























(11)


其中

A


k


为在


x


k


的赫森矩阵



A

< br>k


=


∇


2


F



x



|


x=x


∗






























(12)


因为牛顿法总是用一个二次函数逼近


F(x)


,然后求其驻点。如果原函数为二次函数(有


强极小点)


,它就能实现一步极小化。



牛顿法最突出的有点是收敛速度快,


具有局部二阶收敛性。初始点要足够的

< p>
“靠近”极


小点。由于实际问题中的精确极小点一般不是知道的,因此初始 点的选取要适当。



3


牛顿法的


MATLAB


实现



牛顿法的步骤如下:


-


-


-


-


-


-


-


-