前言
牛顿法和共轭方向法都是基于函数局部二阶信息的优化算法,即所谓二阶优化算法。二阶优化算法在自变量空间任意位置处对原函数进行二阶泰勒展开,以二次函数近似拟合原函数局部形态,再根据近似二次函数的形态确定优化方向。
深度学习中常用的梯度下降法是一阶优化算法,它只将原函数进行一阶泰勒展开,以任意位置处的近似一阶(仿射)函数的信息来确定优化方向。近似一阶(仿射)函数就是原函数在该位置处的切(超)平面。切(超)平面“下滑”最陡的方向就是梯度下降法的优化方向(梯度反方向)。无疑,二阶优化算法利用比一阶优化算法更多的信息,依据的是能比近似(超)平面更准确地描述原函数局部形态的近似二次函数,所以二阶优化算法应该大体优于一阶优化算法。
但是,若想使用二阶优化算法,必须将原函数进行二阶泰勒展开,这就需要计算原函数在自变量空间任意位置的赫森矩阵(Hessian Matrix)。计算赫森矩阵的计算量是巨大的,特别是在高维自变量空间中。深度神经网络参数量巨大,损失函数自变量空间维数超高,就属于这种情况。所以二阶优化算法在深度学习中不常用。但是我们知道:类似 RMSProp 或 Adam 这样的原始梯度下降的改进体其实都是依靠梯度历史信息来模拟二阶优化算法。所以,理解二阶优化算法对于理解深度神经网络的训练是很有帮助的。