海森矩阵介绍及其在机器学习、深度学习中的理解

时间:2024-03-17 21:08:56

Key Words: Hessian Matrix, second order derivatives, convexity, and saddle points
原文链接:Hessian, second order derivatives, convexity, and saddle points
翻译:

Hessian Matrix:二阶导和函数曲率

回忆一下ff的梯度 f:RnRf:\mathbb{R}^n \rightarrow \mathbb{R}
f(x)=[δfδx1,δfδx2,,δfδxn](1) f'(x) = [\frac{\delta f}{\delta x_1}, \frac{\delta f}{\delta x_2}, \cdots, \frac{\delta f}{\delta x_n} ]\tag{1}
ff的二阶导意味着,我们可以看到第ii个一阶导δfδxi\frac{\delta f}{\delta x_i}是如何影响其他所有偏导数的。求二阶导相当于求f(x)f'(x)的Jacobian矩阵,结果如公式(2)所示。

H=[2fx122fx1x22fx1xn2fx2x12fx222fx2xn2fxnx12fxnx22fxn2](2)H=\left[\begin{array}{cccc}{\frac{\partial^{2} f}{\partial x_{1}^{2}}} & {\frac{\partial^{2} f}{\partial x_{1} \partial x_{2}}} & {\cdots} & {\frac{\partial^{2} f}{\partial x_{1} \partial x_{n}}} \\ {\frac{\partial^{2} f}{\partial x_{2} \partial x_{1}}} & {\frac{\partial^{2} f}{\partial x_{2}^{2}}} & {\cdots} & {\frac{\partial^{2} f}{\partial x_{2} \partial x_{n}}} \\ {\vdots} & {\vdots} & {\ddots} & {\vdots} \\ {\frac{\partial^{2} f}{\partial x_{n} \partial x_{1}}} & {\frac{\partial^{2} f}{\partial x_{n} \partial x_{2}}} & {\cdots} & {\frac{\partial^{2} f}{\partial x_{n}^{2}}}\end{array}\right]\tag{2}

海森矩阵体现了不同输入维之间相互加速的速率。e.g.:如果H1,1H_{1,1} is high,这表明维度1的加速度较高。如果H1,2H_{1,2} is high,那么我们在两个维度上均同时加速。如果H1,2H_{1,2} 是负的,那么当第一个维度加速时,第二个维度在减速。

海森 & 机器学习

在机器学习中的梯度下降法中,二阶导数测量的是损失函数的曲率,而不是单坐标处的斜率(梯度)。因此,有关海森的信息可以帮助我们采取合适的步长,以达到最小。

假定我们有一个代价函数ff,它的梯度f(x)<0f'(x)<0。我们知道ff在负梯度方向会下降,但不知道的是1)下降速率越来越快? 2)以不变的速率下降?还是 3)下降得很少,且可能上升?这些信息可以通过求二阶导——Hessian Matrix来了解。

  • 图1:f(x)<0f''(x)<0,则ff加速下降,最终代价函数的下降幅度将大于梯度乘以步长
  • 图2:f(x)=0f''(x)=0,函数是一条直线,没有曲率,那么以步长α\alpha沿着负梯度前进,ff就减少c.α.c. \alpha .
  • 图3:f(x)>0f''(x)>0,函数会减速下降,最后会加速上升。因此如果α\alpha太大,梯度下降可能不会使得代价函数达到一个最低点,反而会以一个较高的代价结束这一次计算。
    海森矩阵介绍及其在机器学习、深度学习中的理解

如果我们能够计算二阶导,那么我们就可以选择合适的α\alpha,从而弱化在局部最小值处的振荡。

特征值、凸性和鞍点

  • Hessian的特征向量/特征值描述了主曲率的方向和每个方向的曲率量。
  • 如果偏导数是连续的,那么微分的顺序可以换(2fx1x2=2fx2x1\frac{\partial^{2} f}{\partial x_{1} \partial x_{2}}=\frac{\partial^{2} f}{\partial x_{2} \partial x_{1}})(Clairaut’s theorem)。因此Hessian矩阵是对称的。在深度学习的环境中,一般都是这种情况,因为我们强迫使我们的函数是连续且可微的。Hessian就可以被分解成一组实特征值和一组正交特征向量。
  • 在机器学习优化中,当我们使用梯度下降法收敛到一个临界点后,我们需要检查海森特征值来确定它是最小、最大还是鞍点。研究特征值的性质可以告诉我们函数的凸性。对于所有x∈Rn :
    1. 如果H是正定的,H0H \succ 0(所有特征值> 0),那么二次型问题在高维空间中呈“碗”形,且严格凸(只有一个全局最小值)。如果在坐标x处的梯度是0,那么x是全局最小值点。
    2. 如果半正定,H0H\succeq 0(所有特征值>=0),则函数是凸的,在x点的梯度=0,则x是局部最小值点。
    3. 负正定H0H\prec 0(所有特征值<0),二次型问题在高维情况下呈倒碗状,并且是严格凹的(只有一个全局最大值)。如果在坐标x处的梯度是0,那么x就是全局最大值。
    4. 半负定⪯0(所有特征值< = 0),那么函数是凹的。如果坐标x处的梯度是0,则x是局部最大值。
    5. 如果H是不定的,(在x处的特征值有正有负),这意味着x是局部最小&局部最大,因此x是ff的一个鞍点。

注意,1~4反推下并不成立。e.g. :严格凸并不意味着正定。

(原文还有个泰勒展开,来证明这个的,不翻译了,看原文即可)