优化算法:牛顿法(Newton法)

版权声明:作者:Rookiekk 联系邮箱:[email protected] 欢迎转载或分享,但请务必声明文章出处。 https://blog.csdn.net/qq_18888869/article/details/82971029

学习深度学习时遇到二阶优化算法牛顿法,查阅了相关书籍进行记录。

\bigtriangledown f(x) ,g(x):函数f(x)的梯度向量g(x) = (\frac{\partial f}{\partial x_{1}},...,\frac{\partial f}{\partial x_{n}})^{T}

\bigtriangledown ^{2}f(x),G(x):函数f(x)Hessian矩阵,其第i行第j列的元素为\frac{\partial ^{2}f(x)}{\partial x_{i}\partial x_{j}}.

假设f(x)是二阶连续可微函数,x=(x_{1},...,x_{n})^{T}。最速下降法因为迭代路线呈锯齿形,固收敛速度慢,仅是线性的。最速下降法本质使用线性函数去近似目标函数。要得到快速的算法,需要考虑对目标函数的高阶逼近。Newton法就是通过二次模型近似目标函数得到的。

一、Newton法理论

    设x_{k}f(x)的极小点x^{\ast }的一个近似,将f(x)x_{k}附近做泰勒展开,有

                                              f(x)\approx q_{k}(x)=f_{k}+g{_{k}}^{T}(x-x_{k})+\frac{1}{2}(x-x_{k})^{T}G_{k}(x-x_{k})

其中f_{k}=f(x_{k}),g_{k}=g(x_{k}),G_{k}=G(x_{k}),若G_{k}正定,则q_{k}(x)有唯一极小值点,将它取为x^{\ast }的下一次近似x_{k+1}。由一阶必要条件知,x_{k+1}应满足\bigtriangledown q_{k}(x_{k+1}) = 0

即          G_{k}(x_{k+1}-x_{k})+g_{k}=0

令          x_{k+1}=x_{k}+p_{k},                                    (1)

其中p_{k}应满足   G_{k}p_{k} = -g_{k}。                           (2)

方程(2)被称为Newton方程,从中解出p_{k}并带入(1)式得

                  x_{k+1}=x_{k}-G_{k}^{-1}g_{k}                         (3)

我们称(1)(2)为牛顿迭代公式,有时也称(3)为牛顿迭代公式。

二、算法

算法1   Newton法

给定控制误差 \varepsilon > 0

Step1  取初始点x_{0},令k=0

Step2  计算g_{k}

Step3  若\left \| g_{k} \right \|\leq \varepsilon,则x^{*} = x_{k},结束;否则计算G_{k},并由(2)式解出p_{k}

Step4  令x_{k+1}=x_{k}+p_{k}k=k+1,转Step2。

优缺点:

优点:(1)如果G^{*}正定且初始点合适,算法是二阶收敛的。

(2)对正定二次函数,迭代一次就可得到极小点。

缺点:(1)对多数问题算法不是整体收敛的。

(2)在每次计算中需要计算G_{k}

(3)每次迭代需要求解线性方程组G_{k}p_{k} = -g_{k},,该方程组有可能是奇异的或病态的(有时G_{k}非正定),p_{k}可能不是下降方向。

(4)收敛于鞍点或极大点的可能性并不小。

三、Newton法的改进

针对缺点(1)(4),在由x_{k}x_{k+1}时,不直接利用公式(1)(2)进行迭代,而是以p_{k}作为搜索方向进行一维搜索,求步长\alpha _{k},例如,令\alpha _{k}满足精确一维搜索,即

                        f(x_{k} + \alpha _{k}p_{k})=\underset{\alpha \geq 0}{min}f(x_{k}+\alpha p_{k})

 而令

                        x_{k+1}=x_{k}+\alpha _{k}p_{k}

这样往往可以克服缺点(1)和(4),这种方法通常称为阻尼Newton法。

在阻尼Newton法的基础上,我们再考虑克服缺点(3),可以证明,当G_{k}正定时,由p_{k} = -G_{k}^{-1}g_{k}确定的方向是下降方向。但是当G_{k}奇异或非正定时,通常由(2)得不到下降方向,为此,用正定矩阵M_{k}取代(2)中的G_{k},由

                         M_{k}p= -g_{k}

确定搜索方向p_{k},当G_{k}正定时,可取M_{k}=G_{k}。这样就总能得到一个下降方向。通常称这种策略为强迫矩阵正定策略。

补充:我看到的资料中并没有提到M_{k}如何得到。在看到深度学习中介绍在Hessian矩阵的特征值不都是正的,例如靠近鞍点处。这种情况可以通过正则化Hessian矩阵来避免。常用的正则化策略包括在Hessian矩阵对角线上增加常数\alpha。正则化更新变为

                       \theta ^{*}=\theta _{0}-[H(f(\theta _{0}))+\alpha I]^{-1}\bigtriangledown _{\theta }f(\theta _{0})

这个正则化策略用于牛顿法近似。这里H(f(\theta _{0}))+\alpha I是不是相当于上边所说的M_{k}呢?欢迎大家留言讨论。

参考:

解可新. 最优化方法[M]. 天津大学出版社, 2004. 106-110.

《深度学习》.Ian Goodfellow.

猜你喜欢

转载自blog.csdn.net/qq_18888869/article/details/82971029
今日推荐