学习深度学习时遇到二阶优化算法牛顿法,查阅了相关书籍进行记录。
:函数的梯度向量
:函数的Hessian矩阵,其第i行第j列的元素为.
假设是二阶连续可微函数,。最速下降法因为迭代路线呈锯齿形,固收敛速度慢,仅是线性的。最速下降法本质使用线性函数去近似目标函数。要得到快速的算法,需要考虑对目标函数的高阶逼近。Newton法就是通过二次模型近似目标函数得到的。
一、Newton法理论
设为的极小点的一个近似,将在附近做泰勒展开,有
其中,,,若正定,则有唯一极小值点,将它取为的下一次近似。由一阶必要条件知,应满足,
即 。
令 , (1)
其中应满足 。 (2)
方程(2)被称为Newton方程,从中解出并带入(1)式得
(3)
我们称(1)(2)为牛顿迭代公式,有时也称(3)为牛顿迭代公式。
二、算法
算法1 Newton法
给定控制误差 。
Step1 取初始点,令。
Step2 计算。
Step3 若,则,结束;否则计算,并由(2)式解出。
Step4 令,,转Step2。
优缺点:
优点:(1)如果正定且初始点合适,算法是二阶收敛的。
(2)对正定二次函数,迭代一次就可得到极小点。
缺点:(1)对多数问题算法不是整体收敛的。
(2)在每次计算中需要计算。
(3)每次迭代需要求解线性方程组,,该方程组有可能是奇异的或病态的(有时非正定),可能不是下降方向。
(4)收敛于鞍点或极大点的可能性并不小。
三、Newton法的改进
针对缺点(1)(4),在由求时,不直接利用公式(1)(2)进行迭代,而是以作为搜索方向进行一维搜索,求步长,例如,令满足精确一维搜索,即
。
而令
,
这样往往可以克服缺点(1)和(4),这种方法通常称为阻尼Newton法。
在阻尼Newton法的基础上,我们再考虑克服缺点(3),可以证明,当正定时,由确定的方向是下降方向。但是当奇异或非正定时,通常由(2)得不到下降方向,为此,用正定矩阵取代(2)中的,由
确定搜索方向,当正定时,可取。这样就总能得到一个下降方向。通常称这种策略为强迫矩阵正定策略。
补充:我看到的资料中并没有提到如何得到。在看到深度学习中介绍在Hessian矩阵的特征值不都是正的,例如靠近鞍点处。这种情况可以通过正则化Hessian矩阵来避免。常用的正则化策略包括在Hessian矩阵对角线上增加常数。正则化更新变为
这个正则化策略用于牛顿法近似。这里是不是相当于上边所说的呢?欢迎大家留言讨论。
参考:
解可新. 最优化方法[M]. 天津大学出版社, 2004. 106-110.
《深度学习》.Ian Goodfellow.