2. 拟牛顿法
由于Hesse矩阵的计算工作量大,有时目标函数的Hesse阵很难计算。
拟牛顿法利用目标函数和一阶导数,来构造目标函数的曲率近似,而不需要明显形成Hesse阵,同时具有收敛速度快的优点。
2.1 一般拟牛顿法
由
令,得:
令,得
或者记为:
对于二次函数,上述关系式精确成立。
要求在拟牛顿法中构造出Hesse逆近似 (如DFP算法),满足
或者构建Hesse近似(如BFGS算法)
这称为拟牛顿法条件 。
一般拟牛顿法:
- 给定初始点
;
- 若
,则停止;否则,计算
;
- 沿方向
线性搜索求步长因子
,令
;
- 校正
产生
,使得拟牛顿法条件满足。
, 转2.
优点:
(1)只需要一阶导数;
(2)保持正定,具有下降性;
(3)迭代每次需要次乘法;牛顿法是
次(因为牛顿法需要求逆)。
2.2 DFP算法
设秩二校正为:
若要拟牛顿法条件成立,对于
一个取法为:
可以得到,
那么,
2.2 L-BFGS算法
BFGS算法推导和DFP算法差不多,直接给出公式:
Limited memory Broyden–Fletcher–Goldfarb–Shanno (L-BFGS) 是对BFGS的一种优化,BFGS需要存储的方阵
来近似Hessian矩阵的逆矩阵,而L-BFGS只存储最近m(m约为10)个(
)用于近似
. 因此,L-BFGS的空间复杂度是
.
L-BFGS算法:
3. 总结
(1)牛顿法是通过求解一阶导数为0,从而引入Hessian矩阵指导参数优化;拟牛顿法是对牛顿法的性能优化,思路是近似求解Hessian矩阵。
(2)牛顿法在什么时候只需要迭代一次就能求解,什么时候牛顿法不能适用?
对于正定二次函数,一步即可得最优解。
当初始点远离最优解时,不一定是正定的,则牛顿方向不一定为下降方向,其收敛性不能保证。这说明恒取步长因子为1是不合适的,应该采用一维搜索(仅当步长因子
收敛1时,牛顿法才是二阶收敛的),此时迭代公式是:
带步长因子的牛顿法是总体收敛的。
(3)牛顿法和最小二乘法的区别?
牛顿法和最小二乘法相比,牛顿法需要求解Hessian矩阵及确定步长,而最小二乘法不需要。牛顿法是迭代求解,最小二乘法是计算解析解。如果样本量不算很大,且存在解析解,最小二乘法比起牛顿法要有优势,计算速度很快。但是如果样本量很大,用最小二乘法由于需要求一个超级大的逆矩阵,这时就很难或者很慢才能求解解析解了,使用迭代的牛顿法比较有优势。
(4)牛顿法和梯度下降法的区别,以及为什么深度学习不使用牛顿法进行参数优化?
两者都是迭代求解,不过梯度下降法是梯度求解,而牛顿法/拟牛顿法是用二阶的海森矩阵的逆矩阵或伪逆矩阵求解。相对而言,使用牛顿法/拟牛顿法收敛更快。但是每次迭代的时间比梯度下降法长。
深度学习一般不使用牛顿法的原因:
原因一:牛顿法需要用到Hessian矩阵,这难以求解,因为很难写出深度神经网络拟合函数的表达式。
原因二:即使可以得到梯度和Hessian矩阵,当输入向量的维度较大时,Hessian矩阵的大小是
,所需要的内存非常大(L-BFGS会有所改善)。
原因三:在高维非凸优化问题中,鞍点相对于局部最小值的数量非常多,而且鞍点处的损失值相对于局部最小值处也比较大。而二阶优化算法是寻找梯度为0的点,所以很容易陷入鞍点。
参考: