一句话定义:海森矩阵(Hessian matrix)是一个多元函数所有二阶偏导数排成的方阵,它刻画的是函数在某一点的「弯曲程度」,也就是曲率。
先分清一阶和二阶。 梯度(gradient)是一阶信息,像山坡上的一支箭头:告诉你哪个方向最陡、往下走最快,但它不关心坡本身长什么样。海森矩阵是二阶信息,回答的是「坡在怎么变」——是像碗底那样越走越平,还是像刀刃那样稍偏一点就急剧上升。
打个比方。 你在浓雾里下山找谷底。只有梯度,你只能一步步试探:如果山谷是狭长的一条沟,陡的方向和缓的方向差了几十倍,你会沿着沟壁来回横跳,走出一串「之」字,收敛极慢。有了海森矩阵(或者说它给出的曲率),你等于提前知道了谷的形状:陡的方向小步挪,缓的方向大胆走。牛顿法(Newton's method)正是这么干的,它用 x ← x − H⁻¹g 直接跳到当前二次近似的最低点,理想情况下几步到位。
几个容易混的概念:
| 概念 | 描述什么 | 形状 | 典型使用者 |
|---|---|---|---|
| 梯度 | 一阶信息,最陡下降方向 | n 维向量 | SGD、Adam |
| 雅可比矩阵(Jacobian) | 向量值函数的一阶导数 | m×n | 反向传播的链式法则 |
| 海森矩阵 | 标量函数的二阶导数、曲率 | n×n | 牛顿法 |
| 费舍尔信息矩阵(Fisher) | 曲率的统计近似 | n×n | 自然梯度 |
注意梯度是向量、海森是矩阵,这个「升一维」就是它昂贵的原因。
为什么贵到几乎没人真用。 n 个参数要存 n×n 个数。今天的模型动辄上亿参数,n² 直接是天文数字,既存不下也算不动——更别说每次迭代还要解一个线性方程组。于是实践中全是「偷看一点曲率」的近似方案:L-BFGS 只保留最近若干步梯度差来估计曲率的逆;Adam 用梯度平方做逐维缩放,本质上是一种粗糙的对角近似(只取海森对角线);K-FAC 之类的自然梯度方法则用分块结构近似,工程复杂度很高,具体支持情况以各框架官方文档为准。这些统称拟牛顿法(quasi-Newton)——用一阶信息的便宜价格,买一部分二阶信息的收益。
对从业者的意义。 很多训练技巧都能从曲率角度读懂:损失面条件数差(各方向曲率悬殊)是训练不稳、学习率难调的根源;归一化层、学习率预热、Adam 相对 SGD 的优势,大多可以理解为在补偿或绕开曲率信息。下次调不动学习率时,想想你脚下的山谷是不是一条又窄又长的沟。
对普通人的意义。 做迭代决策时,「知道方向」和「知道方向会怎么变」是两码事。只按当前趋势往前冲,容易在接近目标时来回振荡;对变化率本身有感觉,才知道该减速,还是该加大步伐。
