标准回答
三者层级
- 梯度 (\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)来折中利用曲率信息。
追问 2:Hessian 与函数的凸性有什么关系?
对二阶可微函数,f 在某区域凸 ⟺ 其 Hessian 在该区域处处半正定(所有特征值 ≥0);严格正定则严格凸。凸性保证局部极小即全局极小、无鞍点困扰,这也是凸优化问题易解的根本原因。Hessian 的最大/最小特征值之比(条件数)还决定梯度下降的收敛速度,条件数越大越病态、收敛越慢。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。