序言
在数值计算与优化理论的广阔天地里,梯度作为一阶导数的向量表示,是理解函数局部变化率及进行最优化求解的基础工具。然而,当问题的复杂度提升,单一梯度信息往往不足以全面刻画函数的多变量间相互作用及更高阶的变化特性。此时, Jacobian \text{Jacobian} Jacobian矩阵与 Hessian \text{Hessian} Hessian矩阵便成为不可或缺的数学利器,它们分别扩展了梯度概念至向量值函数与二阶导数领域,为深入探索函数性质、设计高效算法提供了坚实的理论基础。
概述
Jacobian矩阵
- Jacobian \text{Jacobian} Jacobian矩阵是函数值从向量空间到向量空间的线性映射的一阶偏导矩阵,它在多变量向量值函数的微分学中占据核心地位。
- 该矩阵的每一行代表函数输出向量中某一分量对所有输入变量的一阶偏导数,从而全面揭示了输入向量变化时,输出向量如何线性地变化。
- 在机器学习的神经网络中, Jacobian \text{Jacobian} Jacobian矩阵常用于反向传播算法中,帮助计算梯度。
Hessian矩阵
- Hessian \text{Hessian} Hessian矩阵则是函数二阶偏导数的方阵,反映了函数在某一点上的局部曲率信息。
- 它不仅告诉我们函数值如何随单个变量的二阶变化,还揭示了变量间相互作用的二阶效应。
- Hessian \text{Hessian} Hessian矩阵在优化算法中尤为重要,其正定性可用于判断局部极小值点,负定性则指向局部极大值,而零特征值则暗示了可能存在的鞍点或平坦区域。
- 此外, Hessian \text{Hessian} Hessian矩阵还应用于牛顿法等二阶优化算法中,通过直接利用二阶信息加速收敛过程。
数值计算之梯度之上Jacobian和Hessian矩阵
- Jacobian矩阵
-
有时我们需要计算输入和输出都为向量的函数的所有偏导数。包含所有这样的偏导数的矩阵被称为Jacobian矩阵。
-
具体来说,如果我们有一个函数: f : R m → R n \boldsymbol{f}:\mathbb{R}^m\to\mathbb{R}^n f:Rm→Rn, f \boldsymbol{f} f的 Jacobian \text{Jacobian} Jacobian矩阵 J ∈ R n × m \boldsymbol{J}\in\mathbb{R}^{n\times m} J∈Rn×m定义为: J i , j = ∂ ∂ x j f ( x ) i J_{i,j}=\displaystyle\frac{\partial}{\partial x_j}f(\boldsymbol{x})_i Ji,j=∂xj∂f(x)i。
-
Hessian矩阵
-
有时,我们也对导数的导数高兴去,即二阶导数(second derivative)。
-
例如,有一个函数 f : R m → R n f:\mathbb{R}^m\to\mathbb{R}^n f:Rm→Rn, f f f的一阶导数(关于 x j x_j xj)关于 x i x_i xi的导数记为: ∂ 2 ∂ x i ∂ x j f \displaystyle\frac{\partial^2}{\partial x_i\partial x_j}f ∂xi∂xj∂2f。
-
在一维情况下,我们可以将二阶导数: ∂ 2 ∂ x i 2 f \displaystyle\frac{\partial^2}{\partial x_i^2}f ∂xi2∂2f,记为 f ′ ′ ( x ) f''(x) f′′(x)。
-
二阶导数告诉我们的一阶导数将如何随着输入的变化而改变。
- 它表示只基于梯度信息的梯度下降步骤是否会产生如我们预期的那样大的改善,因此是重要的。
- 我们可以认为,二阶导数是对曲率的衡量。假设我们有一个二次函数(虽然很多实践中的函数都不是二次,但至少在局部可以很好地用二次近似)。
- 如果这样的函数具有零二阶导数,那就没有曲率。也就是一条完全平坦的线,仅用梯度就可以预测它的值。
- 我们使用沿负梯度方向大小为 ϵ \epsilon ϵ的下降步,当该梯度是 1 1 1时,代价函数将下降 ϵ \epsilon ϵ。
- 如果二阶导数是负的,函数曲线向下凹陷 (向上凸出),因此代价函数将下降的比 ϵ \epsilon ϵ多。
- 如果二阶导数是正的,函数曲线是向上凹陷(向下凸出),因此代价函数将下降的比 ϵ \epsilon ϵ少。
- 从图例1可以看出不同形式的曲率如何影响基于梯度的预测值与真实的代价函数值的关系。
-
当我们的函数具有多维输入时,二阶导数也有很多。可以这些导数合并成一个矩阵,称为Hessian矩阵。Hessian矩阵 H ( f ) ( x ) \boldsymbol{H}(f)(\boldsymbol{x}) H(f)(x)定义为:
H ( f ) ( x ) i j = ∂ 2 ∂ x i ∂ x j f ( x ) \boldsymbol{H}(f)(\boldsymbol{x})_{ij}=\displaystyle\frac{\partial^2}{\partial x_i\partial x_j}f(\boldsymbol{x}) H(f)(x)ij=∂x<