核心要点

  • 梯度 ∇f:标量函数对各变量的一阶偏导组成的向量,指向函数上升最快方向,是梯度下降的核心。

  • Jacobian J:向量值函数 f:Rⁿ→Rᵐ 的一阶偏导矩阵(m×n),描述局部线性近似,反向传播链式法则即 Jacobian 连乘。

  • Hessian H:标量函数的二阶偏导矩阵(n×n),刻画曲率;H 正定⇒局部凸/极小,负定⇒极大,不定⇒鞍点。

  • 应用:一阶法(SGD)只用梯度;二阶法(牛顿法)用 Hessian 逆做精确步长,收敛快但 O(n³) 代价高。

标准回答

三者层级

  • 梯度 (\nabla f):标量函数 (f:\mathbb{R}^n\to\mathbb{R}) 的一阶偏导向量,指向上升最快的方向,模长是该方向变化率。优化中沿 (-\nabla f) 下降,是 SGD/Adam 的基础。
  • Jacobian (J):向量值函数 (f:\mathbb{R}^n\to\mathbb{R}^m) 的一阶偏导矩阵((m\times n)),给出函数在某点的最佳局部线性近似。神经网络反向传播本质就是各层 Jacobian 按链式法则连乘。
  • Hessian (H):标量函数的二阶偏导矩阵((n\times n),对称),刻画曲率。

Hessian 与凸性、临界点判定

在临界点((\nabla f=0))处看 Hessian:

  • (H) 正定 → 局部极小(函数局部凸);
  • (H) 负定 → 局部极大;
  • (H) 不定(有正有负特征值)→ 鞍点。

全局上 (H) 处处半正定等价于 f 为凸函数。

一阶法 vs 二阶法

牛顿法用更新 (x\leftarrow x-H^{-1}\nabla f),利用曲率自适应步长、二次收敛很快,但需算并求逆 Hessian,代价 (O(n^3))、内存 (O(n^2)),深度学习中不可行,故实践用一阶法或 L-BFGS、Adam 等近似。

常见误区

⚠️ 常见踩坑

Jacobian 针对向量值函数(一阶、可非方阵),Hessian 针对标量函数(二阶、方阵且对称)——别混用;另外梯度为 0 只说明是临界点,是极小/极大/鞍点要靠 Hessian 判定。

追问

追问 1为什么深度学习几乎不用牛顿法这类二阶优化?

Hessian 是 (n\times n) 矩阵,深度网络参数量 n 可达数十亿,存储 (O(n^2)) 和求逆 (O(n^3)) 完全不可行;且小批量下 Hessian 估计噪声大、非凸问题中可能非正定导致更新发散。实践改用一阶法(SGD/Adam)或拟牛顿近似(L-BFGS)、对角/Kronecker 近似(如 K-FAC)来折中利用曲率信息。

追问 2Hessian 与函数的凸性有什么关系?

对二阶可微函数,f 在某区域凸 ⟺ 其 Hessian 在该区域处处半正定(所有特征值 ≥0);严格正定则严格凸。凸性保证局部极小即全局极小、无鞍点困扰,这也是凸优化问题易解的根本原因。Hessian 的最大/最小特征值之比(条件数)还决定梯度下降的收敛速度,条件数越大越病态、收敛越慢。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。