原文链接:原文
文章目录
- 梯度之上:Hessian 矩阵
- 梯度、雅克比矩阵
- 海森矩阵
- 海森矩阵应用
梯度之上:Hessian 矩阵
本文讨论研究梯度下降法的一个有力的数学工具:海森矩阵。在讨论海森矩阵之前,需要首先了解梯度和雅克比矩阵的基本概念。
⭐️本文假设读者已经熟悉梯度下降法和简单的数值分析、线性代数知识
梯度、雅克比矩阵
梯度下降算法需要当前函数点的导数信息,当此函数点包含多个方向时,梯度是包含所有方向的(偏)导数向量。
上述情况对应于输出为一个的情况,当函数的输出也为一个向量时,我们需要把输出向量的每一个元素对于多个输入的梯度罗列在一起,罗列形成的矩阵就是雅克比矩阵(Jacobian Matrix)。
举例说明:
- 若函数 f f f接受三个输入 x 1 、 x 2 、 x 3 x1、x2、x3 x1、x2、x3,产生一个输出 y y y,则其梯度为:
G r a d = [ ∂ y ∂ x 1 , ∂ y ∂ x 2 , ∂ y ∂ x 3 ] \begin{equation} Grad = [\frac{\partial y}{\partial x_1}, \frac{\partial y}{\partial x_2}, \frac{\partial y}{\partial x_3}] \end{equation} Grad=[∂x1∂y,∂x2∂y,∂x3∂y]
- 若函数 f 2 f2 f2接受三个输入 x 1 、 x 2 、 x 3 x1、x2、x3 x1、x2、x3,产生三个输出 y 1 、 y 2 、 y 3 y1、y2、y3 y1、y2、y3,则其雅克比矩阵为:
J a c o b i a n = [ ∂ y 1 ∂ x 1 ∂ y 1 ∂ x 2 ∂ y 1 ∂ x 3 ∂ y 2 ∂ x 1 ∂ y 2 ∂ x 2 ∂ y 2 ∂ x 3 ∂ y 3 ∂ x 1 ∂ y 3 ∂ x 2 ∂ y 3 ∂ x 3 ] \begin{equation} Jacobian = \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_1}{\partial x_2}&\frac{\partial y_1}{\partial x_3} \\ \frac{\partial y_2}{\partial x_1} & \frac{\partial y_2}{\partial x_2}&\frac{\partial y_2}{\partial x_3} \\ \frac{\partial y_3}{\partial x_1} & \frac{\partial y_3}{\partial x_2}&\frac{\partial y_3}{\partial x_3} \end{bmatrix} \end{equation} Jacobian= ∂x1∂y1∂x1∂y2∂x1∂y3∂x2∂y1∂x2∂y2∂x2∂y3∂x3∂y1∂x3∂y2∂x3∂y3
利用二阶导数,我们可以知道关于函数在特定方向 d d d 上的凹凸信息,利用凹凸信息可以在一定程度上预判梯度下降法的表现效果。如果在特定方向 d d d 上:
-
二阶导数为正,则函数在方向 d d d上一阶导数增加,函数值下降更慢;
-
二阶导数为负,则函数在方向 d d d上一阶导数减少,函数值下降更快;
-
二阶导数为零,则函数在方向 d d d上一阶导数不变,函数值匀速下降;
⭐️注意在梯度下降法中是对损失函数进行下降,因此需要使用减函数来分析函数中某一小段(经常使用二次函数的减半部近似:二阶泰勒展开、牛顿法)中的导数变化情况;
海森矩阵
和雅克比矩阵类似,海森矩阵(Hessian 矩阵)可以包含函数中二阶导的信息:
H
e
s
s
i
a
n
=
[
∂
2
y
∂
x
1
∂
x
1
∂
2
y
∂
x
1
∂
x
2
∂
2
y
∂
x
1
∂
x
3
∂
2
y
∂
x
2
∂
x
1
∂
2
y
∂
x
2
∂
x
2
∂
2
y
∂
x
2
∂
x
3
∂
2
y
∂
x
3
∂
x
1
∂
2
y
∂
x
3
∂
x
2
∂
2
y
∂
x
3
∂
x
3
]
Hessian = \begin{bmatrix} \frac{\partial^2y}{\partial x_1\partial x_1} & \frac{\partial^2y}{\partial x_1\partial x_2}&\frac{\partial^2y}{\partial x_1\partial x_3} \\ \frac{\partial^2y}{\partial x_2\partial x_1} & \frac{\partial^2y}{\partial x_2\partial x_2}&\frac{\partial^2y}{\partial x_2\partial x_3} \\ \frac{\partial^2y}{\partial x_3\partial x_1} & \frac{\partial^2y}{\partial x_3\partial x_2}&\frac{\partial^2y}{\partial x_3\partial x_3} \end{bmatrix}
Hessian=
∂x1∂x1∂2y∂x2∂x1∂2y∂x3∂x1∂2y∂x1∂x2∂2y∂x2∂x2∂2y∂x3∂x2∂2y∂x1∂x3∂2y∂x2∂x3∂2y∂x3∂x3∂2y
同时由于二阶导数计算顺序的可交换性,即
∂
2
y
∂
x
1
∂
x
2
=
∂
2
y
∂
x
2
∂
x
1
\frac{\partial^2y}{\partial x_1\partial x_2}=\frac{\partial^2y}{\partial x_2\partial x_1}
∂x1∂x2∂2y=∂x2∂x1∂2y,因此海森矩阵是一个对称矩阵,对于对称矩阵我们可以使用特征分解来研究特征值和二阶导数的关系,便于我们快速获得某个方向的二阶导数。
针对于特定方向d,已知此方向的二阶导数可以写成 d T H d d^THd dTHd ,则:
🔗 基于Hessian矩阵的二阶方向导数与性质_Hi 喀什噶尔的胡杨的博客-CSDN博客_二阶方向导数
-
若d是H对应特征值λ的特征向量:
因为d为对应λ的特征向量(以下简称特征向量),则据定义有:
H d = λ d ⇒ d T H d = d T λ d = λ d T d = λ 对称矩阵 d T = d − Hd = \lambda d\\ \Rightarrow d^THd=d^T\lambda d = \lambda d^Td=\lambda \ \ \ 对称矩阵d^T = d^- Hd=λd⇒dTHd=dTλd=λdTd=λ 对称矩阵dT=d−因此特征向量对应的特征值λ即为此方向的二阶导数;
-
若d为其他方向:设 e i e_i ei为 H H H对应特征值 λ i \lambda_i λi的特征向量,由上可知,
λ i = e i T H e i \lambda_i=e_i^THe_i λi=eiTHei
可知任何一个方向 d = ∑ i m t i e i d=\sum_i^mt_ie_i d=∑imtiei为特征向量的线性组合,其中m为特征值个数, t i t_i ti为第 i i i个特征向量的加权数,则:
d T H d = ( ∑ i m t i e i ) T H ( ∑ i m t i e i ) = ∑ i m t i e i T H t i e i = ∑ i m t i 2 λ i d^THd=(\sum_i^mt_ie_i)^TH(\sum_i^mt_ie_i)=\sum_i^mt_ie_i^THt_ie_i=\sum_i^mt_i^2\lambda_i dTHd=(i∑mtiei)TH(i∑mtiei)=i∑mtieiTHtiei=i∑mti2λi
因此任意非特征向量方向的二阶导数是所有特征值的加权和,特别的,此时的加权和是一个椭球体,在二维的特征值情况下,二阶导数是一个椭圆,椭圆方程为:
y = λ 1 1 t 1 2 + λ 2 1 t 2 2 y=\frac{\lambda_1}{\frac{1}{t_1^2}}+\frac{\lambda_2}{\frac{1}{t_2^2}} y=t121λ1+t221λ2
由图可知,最大二阶导数由最大特征值决定(长半轴),而最小二阶导数由最小特征值决定(短半轴)。
海森矩阵应用
在弄清海森矩阵的基本定义后,就可以使用海森矩阵的一些性质来分析优化方法中的一些问题了。如确定局部最大点、局部最小点和鞍点、确定学习率、以及使用病态条件来确定梯度下降的表现等,同时我们还可以利用Hessian矩阵来实现牛顿法这种优化算法,。
(本节完)