牛顿法及BFGS近似
牛顿法是基于二阶泰勒级数展开在某点 附近近似 的优化方法,忽略了高阶级数。
其中H是j相对于 的Hessian矩阵在 处的估计。如果再求解这个函数的临界点,将得到牛顿参数更新规则:
牛顿法只适用于Hessian矩阵是正定的情况(如果不是正定阵,若存在负的特征值,则无法保证梯度沿该方向下降。若存在为0的特征值,则Hessian矩阵不可逆,此时该矩阵称为奇异矩阵)。深度学习中,目标函数表面通常非凸(有很多特征),如鞍点,因此牛顿法是有问题的,如果Hessian矩阵的特征值并不都是正的,例如,靠近鞍点处,牛顿法实际上会导致更新朝着错误的方向移动,这种情况可以通过正则化Hessian矩阵来避免常用正则化策略包括在Hessian矩阵对角线上增加常数 。正则化更新变为
注意:这里的特征值就是曲线在θ0 的导数。
这种正则化策略用于牛顿法的近似,例如Levenberg-Marquardt算法(就是这种正则化策略),只要Hessian矩阵的负特征值仍然相对接近零,效果就会很好。然而,如果 持续增加,Hessian矩阵会变得由对角矩阵αI 主导,通过牛顿法所选择的方向会收敛到普通梯度除以 ,当很强的负曲率存在时, 可能需要特别大,以至于牛顿法比选择合适学习率的梯度下降的步长更小。
牛顿法用于训练大型神经网络还受限于其显著的计算负担。Hessian矩阵中元素数目是参数数量的平方,。因此如果参数数目为k,牛顿法需要计算k*k矩阵的逆,计算复杂度为O(k3)。另外,由于参数训练迭代都需要计算Hessian矩阵的逆。其结果是只有参数很少的网络才能在实际中使用牛顿法训练。
对于Levenberg-Marquardt算法, 时,就是Gauss-Newton方向,即解决非线性最小二乘法。 充分大时, 取决于 ,即解决最速下降算法。
BFGS使用不含二阶倒数的矩阵M近似Hessian逆矩阵,来代替Hessian矩阵逆矩阵。但是BFGS必须存储Hessian矩阵,需要 的空间,使BFGS不适用于现代深度学习模型。
注意这里的BFGS就是拟牛顿法的一种。