参考:https://www.zhihu.com/question/24623031
以及花书4.3节《基于梯度的优化方法》
当我们的函数具有多维输入时,二阶导数也有很多。我们可以将这些导数合并成一个矩阵,称为Hessian矩阵。对于函数 f : R m → R n f: \Bbb R^m \rightarrow \Bbb R^n f:Rm→Rn,Hessian矩阵 H \boldsymbol H H定义为:
H i , j = ∂ 2 ∂ x i ∂ x j f ( x ) \boldsymbol H_{i,j}=\frac{\partial^2}{\partial x_i \partial x_j}f(\boldsymbol x) Hi,j=∂xi∂xj∂2f(x)
若 f ( x ) f(\boldsymbol x) f(x)二阶偏导连续,则有:
∂ 2 ∂ x i ∂ x j f ( x ) = ∂ 2 ∂ x j ∂ x i f ( x ) \frac{\partial^2}{\partial x_i \partial x_j}f(\boldsymbol x)=\frac{\partial^2}{\partial x_j \partial x_i}f(\boldsymbol x) ∂xi∂xj∂2f(x)=∂xj∂xi∂2f(x)
即 H i , j = H j , i H_{i,j}=H_{j,i} Hi,j=Hj,i,因此Hessian矩阵是对称矩阵。在深度学习背景下,我们遇到的大多数函数的Hessian矩阵几乎处处都是对称的。因为Hessian矩阵是实对称矩阵,我们可以将其分解成一组实特征值和特征向量的正交,即 H = Q T Λ Q H=Q^T\Lambda Q H=QTΛQ,其中 Q Q Q为正交矩阵,其列向量(即特征向量)内积为1。
在特定方向 d d d上的二阶导数可以写成 d T H d d^THd dTHd。当 d d d 为 H H H 的一个特征向量 α i \alpha_i αi时,设对应的特征值为 λ i \lambda_i λi,二阶导数为:
α i T H α i = α i T λ α i = λ \alpha_i^TH\alpha_i=\alpha_i^T\lambda \alpha_i=\lambda αiTHαi=αiTλαi=λ
即特征向量方向上的二阶导数就是对应的特征值。对于其他的方向 d d d,方向二阶导数是所有特征值的加权平均,权重在 0 和 1 之间,且与 d d d 夹角越小的特征向量有更大的权重。最大特征值确定最大二阶导数,最小特征值确定最小二阶导数。
对于代价函数 J J J,其等值线与其Hessian矩阵有什么关系?
对于使用均方误差的线性回归,有 J ( w ) = ∑ i = 1 m ( w T x i − y i ) 2 J(\boldsymbol w)=\sum_{i=1}^m(\boldsymbol w^Tx_i-y_i)^2 J(w)=i=1∑m(wTxi−yi)2
为作图便于观察,仅考虑参数向量为二维的情形,即参数向量 w = [ w 1 , w 2 ] w=[w_1,w_2] w=[w1,w2],设 w ∗ \boldsymbol w^* w∗为 J J J的极小值点,则 J ( w ) J(\boldsymbol w) J(w)等值线类似下图.
在图中,最大特征值对应的特征向量对应二阶导数最大的方向,即图中的椭圆的短轴方向,亦即等值线最密集、“山坡”最陡的那面;最小特征值对应的特征向量对应二阶导数最小的方向,即图中椭圆的长轴方向,亦即等值线最稀疏、“山坡”最平缓的那面。