Newton法(牛顿法)

来源:互联网 发布:java 12306验证码识别 编辑:程序博客网 时间:2024/04/19 08:29

    • 基本思想
    • 算法
    • 修正Newton法
      • G_k为奇异矩阵
      • G_k为非奇异矩阵
    • 总结

上一篇博客我们讲了最速下降法(梯度下降法),梯度下降法简单,但是收敛的速度较慢。这一篇博客将会讲述牛顿法,牛顿法对于正定二次函数具有二次终止性,有较好的收敛速度。

   注:(二次终止性)对于n元的正定二次函数求极小值问题的算法,如果从任意点出发,经过有限次迭代就能够求得极小点,我们称这种算法具有二次终止性。具有二次终止性的算法,对于一般函数,一般也有较好的收敛速度。可知最速下降算法不具有二次终止性。

基本思想

如果目标函数f(x)具有二阶连续偏导数,其Hesse矩阵为2f(x)(记G(x)=2f(x))为正定矩阵。在我们从xkxk+1的迭代过程中,我们可以将函数f(x)xk处做Taylor展开,如下。

f(x)Q(x)=f(xk)+g(xk)T(xxk)+12(xxk)TG(x)(xxk)
其中,g(x)为函数f(x)的一节偏导数。我们可以对Q(x)求极小值,由于G(x)是正定的,所以Q(x)是正定二次函数,令Q(x)=0,即
g(xk)+G(xk)(xxk)=0
由此可求得
x=xkG(xk)1g(xk)
令此时的x作为下一个迭代点,即
xk+1=xkG(xk)1g(xk)(1)
xk+1作为函数f(x)极小点x新的近似。公式(1)成为牛顿迭代公式

算法

Newton法算法描述

已知:目标函数f(x),梯度g(x),Hesse矩阵G(x),H终止准则所需要的终止限ϵ1ϵ2ϵ3

(1) 选定初始点x0,并且计算f0=f(x0)g0=g(x0);置k=0
(2) 计算Gk=G(xk)
(3) 由方程组Gkpk=gk求解pk
(4) 计算xk+1=xk+pkfk+1=f(xk+1)gk+1=g(xk+1)
(5) 判别H终止准则是否满足:弱满足,输出xk+1fk+1;否则,置k=k+1转(2)

程序流程图如下。

Created with Raphaël 2.1.0开始选定初始点x0,计算f0=f(x0),g0=g(x0)置k=0 计算Gk=G(xk)由方程组Gkpk=−gk求解pk 计算x{k+1}=xk+pk,fk+1=f(x{k+1}),g{k+1}=g(x{k+1})满足终止条件?输出x{k+1},f{k+1}结束置k=k+1,fk=f{k+1},gk=g{k+1}yesno

修正Newton法

其实在实际应用中,Newton法的限制还是比较大的,首先在使用Newton法的时候我们需要知道目标函数f(x)的Hesse矩阵,同时要求Hesse矩阵是正定的。其实我认为Hesse矩阵是正定的这一条件有些情况下可以不满足,若Hesse矩阵是正定的则函数f(x)是严格凸函数,找的极小点就是全局极小点;在Hesse矩阵为半正定时,此时函数f(x)为凸函数,但并不能保证在任意点的Hesse矩阵的行列式大于0,也就是无法求得G1k,便无法继续迭代;而对于非凸函数,牛顿法并不能一定获得全局极小点,能够获得全局极小点取决于初始点的选择。而对于无法求得Hesse矩阵情况,我们有拟Newton方法,之后我们将对拟Newton方法族进行介绍。接下来我们将对Newton方法的一些特殊情况进行讲解。

Gk为奇异矩阵

当迭代到点xk时,此时求的Gk变为奇异矩阵,即我们无法通过

Gkpk=gk
来求解pk(把pk=G1kgk看作是搜索方向,称为Newton方向,步长为1)。遇到这种情况,可以借鉴最速下降法的做法,我们可以取下降方向pk=gk,然后作直线搜索
xk+1=1s(xk,pk)
即用最速下降法的迭代公式去代替Newton迭代公式来完成这一次的迭代。

Gk为非奇异矩阵

Gk为非奇异矩阵时,我们可以通过方程组Gkpk=gk求解pk。其实我们并不能保证pk为下降方向;即使为下降方向,由于步长因子为1,我们也不能保证f(xk+1<f(xk))。对于,我们分两种情况进行处理。

(1)若f(xk+1)<f(xk),则迭代有效,不作处理;
(2)若f(xk+1f(xl)),又分以下两种情况做处理。

α:|gTkpk|ϵ||gk|| ||pk||(ϵ是某一很小的整数)时,说明pkgk几乎垂直,所以此时求得pk是不利方向,这时候取pk=gk,然后做直线搜索。
β:gTkpk<ϵ||gk|| ||pk||时,说明pk是下降方向,此时进行直线搜索;否则,当gTkpk>ϵ||gk|| ||pk||,说明pk是上升方向,此时,改为反方向(即pk=G1kgk)为搜索方向,之后在做直线搜索。

总结

无论是Newton方法还是Newton方法都需要对目标函数求Hesse矩阵,这会相对复杂一点,但是Newton方法要比最速下降法的收敛速度快。对于无法求得Hesse矩阵的目标函数f(x),由此便出现了拟Newton方法,将在之后讲解。

原创粉丝点击