学习深度学习时遇到二阶优化算法牛顿法,查阅了相关书籍进行记录。
:函数
的梯度向量
:函数
的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.