尧图精选

实对称矩阵、二次型、正定与Hessian矩阵:从定义到机器学习应用

🕒 发布时间:2026/10/2 5:05:15 📁 来源:尧图网络
矩阵的二次型、迹、正定、实对称、Hessian矩阵这组概念几乎是理工科绕不过去的一座山。我当年学线性代数的时候这几个词分散在不同章节学完二次型忘了迹看到Hessian又觉得是另一门课的东西。直到后来做机器学习和优化相关的项目才意识到这些概念根本就是一条线串下来的实对称矩阵是地基二次型是实对称矩阵定义出来的标量函数正定矩阵是二次型的一种符号特征迹又是矩阵的一种不变标量而Hessian矩阵干脆就是二次型在高维微积分里的亲儿子。这篇文章我想把这些概念放在一起讲清楚重点解决三个问题它们各自到底是什么、彼此之间怎么联系、在实际做优化和机器学习时到底有什么用。适合正在补线代基础的学生、刚入门机器学习想看明白损失函数性质的开发者以及做数值优化相关工作的工程师。1. 实对称矩阵所有概念的地基先说实对称矩阵因为后面每个概念几乎都建立在这上面。定义很简单一个方阵 $A$如果满足 $A A^T$也就是 $a_{ij} a_{ji}$并且所有元素都是实数就叫实对称矩阵。这个定义看起来普通但实对称矩阵有几个性质是后面所有推导的命根子特征值一定是实数不同特征值对应的特征向量彼此正交一定可以对角化而且可以用正交矩阵对角化即存在正交矩阵 $Q$ 使得 $Q^T A Q \Lambda$其中 $\Lambda$ 是对角矩阵对角元就是特征值这组性质有多重要举个例子你就明白了。任何实对称矩阵都可以理解为在某组正交基底下它的作用效果就是分别沿着各个特征向量方向做伸缩伸缩比例就是对应的特征值。换句话说实对称矩阵没有旋转分量只有拉伸分量。这个几何直觉贯穿了二次型和正定矩阵的全部内容。1.1 正交对角化的几何意义我们把 $A Q \Lambda Q^T$ 这个过程拆开看。$Q$ 的每一列是特征向量$Q^T$ 先把坐标从标准基变换到特征向量张成的坐标系然后 $\Lambda$ 在这个坐标系里做各方向独立的伸缩最后 $Q$ 把结果变换回标准坐标系。这种化繁为简的思路是线代里最核心的思维方式。遇到一个复杂的矩阵先看它能不能在对角化下简化实对称矩阵因为性质足够好这个简化一定可以做。后面讲二次型和正定矩阵时你会发现很多证明和计算的落脚点都是先把矩阵对角化再分析。1.2 实对称矩阵的判定与常见误区判定一个矩阵是否实对称很多人以为只要 $a_{ij} a_{ji}$ 就行但忽略了实这个字。含虚数的 Hermitian 矩阵虽然也有实数特征值但性质和应用场景完全不同。我在实际项目里也遇到过一个问题数值计算得到的矩阵由于浮点舍入误差$a_{ij}$ 和 $a_{ji}$ 可能相差 $10^{-16}$ 级别严格判断相等会失败。稳妥做法是检查 $|A - A^T|_F$ 是否小于一个容忍度而不是逐元素比较。另一个常见误区是把实对称矩阵等同于正定矩阵。实对称只是结构上的约束正定是对特征值符号的约束两者是不同层面的性质。但正因为实对称矩阵特征值全是实数符号才有意义这为判断正定性铺平了道路。2. 二次型从矩阵到标量函数二次型是连接矩阵和函数的桥梁。给定一个实对称矩阵 $A$二次型定义为$$f(x) x^T A x \sum_{i1}^n \sum_{j1}^n a_{ij} x_i x_j$$注意这里要求 $A$ 对称否则 $x^T A x$ 虽然仍然定义良好但交叉项的系数有歧义。比如 $x_1 x_2$ 项的系数在展开式里是 $a_{12} a_{21}$只有在 $a_{12} a_{21}$ 时才能唯一对应到矩阵元素。2.1 二次型的展开与矩阵元素的关系把二次型展开来看$$x^T A x \sum_{i1}^n a_{ii} x_i^2 2 \sum_{i j} a_{ij} x_i x_j$$对角线元素直接对应平方项系数非对角线元素的一半对应交叉项系数。这个关系在从二次函数反推矩阵时特别实用。比如你有一个二次函数 $f(x_1, x_2) 3x_1^2 4x_1 x_2 5x_2^2$对应的矩阵就是 $\begin{pmatrix} 3 2 \ 2 5 \end{pmatrix}$因为 $4 2 \times 2$。我在做二次规划Quadratic Programming问题时经常需要这个反向构造。目标函数里的二次项系数矩阵如果不手动构造成对称形式很多求解器会直接报错或行为异常。所以拿到任意二次函数的系数先写成对称矩阵再送进求解器能省掉很多排查时间。2.2 矩阵的迹二次型的特殊情况矩阵的迹trace定义为对角线元素之和$\text{tr}(A) \sum_i a_{ii}$。它和二次型有什么关系最直接的联系是当 $x$ 取标准基向量 $e_i$ 时$e_i^T A e_i a_{ii}$所以迹就是二次型在所有标准基方向上的取值之和。迹还有一个非常重要的循环性质$\text{tr}(AB) \text{tr}(BA)$推广到三个矩阵就是 $\text{tr}(ABC) \text{tr}(BCA) \text{tr}(CAB)$。这个性质在机器学习里非常常用尤其是推导矩阵形式的损失函数梯度时。比如在最小二乘法中损失函数 $|y - Xw|^2$ 的展开就用到 $\text{tr}(w^T X^T X w)$ 的循环操作来整理项。迹和特征值的关系也极其直观矩阵的迹等于所有特征值之和。结合实对称矩阵的特征值全为实数这一性质迹的符号可以看作特征值平均水平的度量。但要注意迹为正不代表矩阵正定因为迹只反映了特征值的和正定要求所有特征值都大于零这是强得多的条件。2.3 二次型的几何图像与标准形变换二次型 $x^T A x$ 的几何图像是什么样的在二维情况下$x^T A x 1$ 定义了一条曲线。如果 $A$ 正定这是一个椭圆如果 $A$ 不定特征值一正一负这是双曲线。这就是正定这个名称的来历——它决定了二次型对应的曲面形状。通过正交对角化 $A Q \Lambda Q^T$做变量替换 $y Q^T x$二次型化为 $\sum_i \lambda_i y_i^2$也就是消除了所有交叉项只剩下平方项。这个过程叫主轴变换几何上就是旋转坐标系到椭圆的轴方向。$\lambda_i$ 的符号直接决定曲面类型所有 $\lambda_i 0$正定超椭球所有 $\lambda_i \geq 0$半正定退化的超椭球某些方向压扁了所有 $\lambda_i 0$负定开口朝下的超椭球符号有正有负不定鞍面这个几何图像对理解优化问题至关重要。机器学习里很多目标函数是二次型或近似二次型的它的等值面是椭球梯度下降收敛速度慢的根源就在于椭球的长短轴比太大也就是条件数大。条件数等于最大特征值除以最小特征值这又回到特征值了。所以你看所有概念都是连在一起的。3. 正定矩阵判定方法与应用语境正定矩阵的定义是对任意非零向量 $x$都有 $x^T A x 0$。等价条件是矩阵的所有特征值都大于零。正定矩阵在优化、概率统计、数值计算中出现的频率高得惊人。3.1 四种实用的正定性判定方法我常用的判断正定性的方法按实用优先级排一下特征值法算所有特征值是否都大于零。最直接但计算成本高适合小规模矩阵或需要特征值本身做后续计算的场景。顺序主子式法Sylvester准则矩阵的各阶顺序主子式从左上角开始取 $k \times k$ 子矩阵的行列式都大于零则矩阵正定。这个方法适合手算和理论推导但维度高时计算行列式也不便宜。Cholesky分解尝试对矩阵做 Cholesky 分解 $A L L^T$$L$ 是下三角矩阵。能分解成功即正定分解失败则不正定。这个方法是数值计算里最常用的因为 Cholesky 分解本身就常用于解线性方程组顺手就验证了正定性。鞍点检查对高阶矩阵先看对角线元素是否都为正这是一个必要条件能快速过滤掉一部分负定矩阵。但注意对角线全正不代表正定这只是个快速的初筛。我在工程里最常用的是第三条路。许多要求解的线性系统 $Ax b$ 如果 $A$ 正定就可以用 Cholesky 分解替代普通 LU 分解速度翻倍且数值更稳定。所以在设计算法时如果知道矩阵是对称正定的就直接选择针对性的求解器性能提升非常明显。3.2 正定矩阵在优化中的角色凸性与唯一最小值为什么优化问题那么关心正定性因为对于一个二次函数 $f(x) \frac{1}{2} x^T A x b^T x c$当 $A$ 正定时$f$ 是严格凸函数有唯一的全局最小值而且可以通过直接解线性方程 $Ax -b$ 一步到位地找到最小值点。这个性质是无数优化算法设计的基石。如果 $A$ 是半正定函数在某个方向上平坦最小值点集合是一个仿射子空间而不是一个点。如果 $A$ 有负特征值函数在对应特征向量方向上向下开口没有全局最小值只有鞍点。这些判断在深度学习里尤其重要——高维非凸问题的鞍点数量远多于局部极小值这也是为什么优化器要专门设计逃离鞍点的机制。3.3 半正定矩阵松弛与约束中的常见形态在实际问题里严格正定常常太苛刻半正定$x^T A x \geq 0$才是更常见的形态。比如协方差矩阵一定是半正定的但只有当数据维度小于样本量且没有线性相关性时才正定。再比如推荐系统里的物品相似度矩阵、图拉普拉斯矩阵都是半正定或正定的典型。半正定矩阵的特征值非负允许特征值等于零。零特征值对应的特征向量就是平坦方向。在最小二乘问题里$X^T X$ 半正定如果 $X$ 列满秩$X^T X$ 才正定此时正规方程有唯一解。列不满秩时比如特征数多于样本数$X^T X$ 奇异这就是为什么需要岭回归加 $\lambda I$ 项来强行把矩阵变成正定的。4. Hessian矩阵把前面所有概念拧到一起Hessian矩阵是多变量函数的二阶导数矩阵。对于一个 $f: \mathbb{R}^n \to \mathbb{R}$Hessian矩阵 $H$ 的每个元素定义为$$H_{ij} \frac{\partial^2 f}{\partial x_i \partial x_j}$$当函数二阶连续可微时混合偏导数与求导顺序无关Clairaut定理所以Hessian矩阵天然是实对称矩阵。这意味着前面讲的实对称矩阵的所有性质包括特征值实数性、正交对角化全部自动适用于Hessian矩阵。4.1 Taylor展开视角下的Hessian多变量函数的二阶Taylor展开是理解Hessian作用的最佳视角$$f(x \Delta x) \approx f(x) \nabla f(x)^T \Delta x \frac{1}{2} \Delta x^T H(x) \Delta x$$注意最后一项就是一个二次型。也就是说函数在一个点附近的局部行为完全由梯度一阶信息和Hessian矩阵二阶信息刻画。Hessian矩阵的特征值决定了函数在这个点各个方向上的曲率特征值越大该方向上函数弯曲越剧烈。4.2 用Hessian判断极值点类型在最优化里判断一个驻点梯度为零的点是极小值、极大值还是鞍点全靠Hessian矩阵$H$ 正定局部极小值$H$ 负定局部极大值$H$ 不定特征值有正有负鞍点$H$ 半正定需要看高阶项才能判断这个二阶条件失效这套判断方法在机器学习损失函数分析里经常用到。比如神经网络损失函数在参数空间的随机初始化点Hessian矩阵几乎一定是不定矩阵因此梯度为零的点大多是鞍点而非局部极小值。这也解释了为什么深度学习优化器不依赖二阶信息也照样能工作——因为纯牛顿法在鞍点会被困住。4.3 Hessian矩阵与牛顿法的关联牛顿法的更新公式是$$\Delta x -H^{-1} \nabla f$$从几何上看牛顿法用二次曲面近似目标函数直接跳到这个二次曲面的最低点。如果原函数本身就是二次函数牛顿法一步收敛如果函数在最优解附近接近二次牛顿法收敛极快。但牛顿法有两个现实问题。一是计算Hessian矩阵及其逆的成本高对于神经网络这种几百万参数的问题根本不现实。二是当 $H$ 不正定时$-H^{-1} \nabla f$ 可能不是下降方向甚至会指向鞍点。这时候常见的处理手段是加正则项 $H \lambda I$把特征值整体抬高让矩阵变正定这就是Levenberg-Marquardt方法的核心思想。我在调优化器参数时遇到过不少次一阶方法收敛慢的情况后来分析发现是目标函数的Hessian矩阵条件数太大等值面呈窄长条形。这时候与其盲目调学习率不如先做特征归一化或预处理把条件数降下来。这就是把Hessian分析用在实调参里的一个典型例子。4.4 Hessian矩阵在损失函数设计中的前置考量在机器学习模型设计阶段Hessian矩阵的性质会影响损失函数的选择。以线性回归的最小二乘损失为例$$L(w) |y - Xw|^2 y^T y - 2w^T X^T y w^T X^T X w$$二阶项是 $X^T X$由设计矩阵 $X$ 决定。如果 $X$ 的列之间有严重的多重共线性$X^T X$ 就接近奇异最小特征值趋于零损失函数在某些方向上非常平坦梯度下降在这些方向上收敛极慢。这个问题的根源能从Hessian矩阵的特征值谱一眼看穿。交叉熵损失配合softmax来用一个重要原因也是其Hessian矩阵比均方误差损失更良态尤其在分类问题中优化更稳定。这里面Hessian矩阵的正定性分析起了关键的指导作用——虽然大家实际用的时候未必每一步都算Hessian但设计损失函数时这些考量早就融进去了。4.5 大规模场景下的Hessian近似方案当问题规模大到无法显式存储Hessian矩阵时比如GPT级别模型的训练工程师们用各种近似方案拟牛顿法BFGS/L-BFGS用梯度差来近似Hessian矩阵的逆只存储有限步的信息Hessian-vector product不需要显式构造Hessian矩阵通过自动微分直接计算 $Hv$配合Krylov子空间方法求解对角近似只用Hessian矩阵的对角线元素近似整个矩阵计算量小很多常用于优化器的学习率自适应这些方法本质上都在回答同一个问题如何用最小的成本获取尽量接近真实Hessian矩阵的信息。理解了Hessian矩阵的含义和作用才能理解为什么这些近似方案能有效、各自的优缺点又在哪里。5. 常见问题与实操经验速查5.1 典型问题与排查方法问题一为什么我的二次规划求解器报错matrix is not symmetric排查思路不是你的目标矩阵不对称而是浮点舍入误差破坏了对称性。解法在送入求解器前强制对称化取 $A (A A^T) / 2$。问题二优化过程中梯度消失/爆炸排查思路看损失函数的Hessian矩阵条件数。如果条件数极大梯度方向几乎垂直于最优方向导致Zigzag现象。解法对输入做归一化或使用带动量项的优化器或改用二阶方法的一阶近似比如Adam里的一阶矩和二阶矩估计其实也在间接估计对角Hessian的信息。问题三Cholesky分解失败排查思路这是矩阵不正定的数值信号。解法检查特征值是否出现非正值如果是数据处理产生的矩阵检查是否有数值噪声导致本应半正定的矩阵变成了负定。在矩阵对角线上加一个小值Jitter是常用处理比如加 $10^{-6} I$。问题四手算二次型的矩阵容易算错排查思路记住一个口诀——平方项系数放对角线交叉项系数除以2放对应位置。我曾见过不少人在从二次函数构造矩阵时忘了除以2导致后续特征值算错。5.2 几个我踩过的坑坑一混淆矩阵对称和矩阵正定的判定时机。做数据预处理时拿到协方差矩阵先看它是不是对称再判断特征值。但实际数据量不足时样本协方差矩阵的特征值会出现0甚至微小的负值影响后续求逆。我的习惯是直接用半正定的强制投影把负特征值截断为0或者统一加正则项。坑二在符号计算和数值计算间来回横跳。手工推导时用 $\lambda_i 0$ 判断正定很优雅但数值求解时特征值可能算出 $-10^{-12}$ 这种负值。这时纠结特征值符号没意义直接设一个容差低于容差就当零处理。坑三迹的性质用错方向。$\text{tr}(AB) \text{tr}(BA)$ 容易记但 $\text{tr}(ABC) \text{tr}(ACB)$ 是错的不是所有排列都能任意换。正确的循环是轮换不是任意交换。在推导梯度时我曾在这个地方翻过车推导结果差一个转置导致实现时的梯度方向不够准确模型训练初期就发散。坑四Hessian矩阵计算只关注二阶导忽略了一阶导也能提供曲率信息。高斯牛顿法用一阶导的乘积来近似Hessian矩阵这种做法在半正定的残差问题上效果很好。实际实现时如果直接算完整Hessian成本太高可以先试试高斯牛顿近似多数场景下够用。5.3 实用检查表遇到涉及这些概念的项目时我习惯按这张表检查[ ] 矩阵是否显式构造为对称形式或已做对称化处理[ ] 矩阵是否正定用Cholesky分解测试[ ] 特征值是否按降序排列条件数是否合理范围内[ ] 二次型展开时交叉项系数是否已除以2[ ] 迹运算时是否使用的是循环置换而非任意置换[ ] Hessian矩阵是否对称且符合问题规模对应的存储策略这个方法帮我在多个项目里提前避开了数值坑。尤其是工业界的数据矩阵数值病态问题非常常见测试正定性应该成为标准流程的一部分而不是等到求解器报错了再回头排查。5.4 扩展到机器学习模型的实战思考如果把这些概念投射到深度学习模型训练上你可以得到一套实用的训练诊断思路。震荡剧烈的损失曲线往往对应Hessian矩阵的大特征值收敛到平台期往往对应小特征值方向上的缓慢优化。当损失在某个值附近徘徊很久我会采样几个点做Hessian矩阵的特征值估计看最小特征值是否接近零。如果是这个方向的梯度几乎消失我会考虑给对应参数增加正则约束或者调整网络结构、加入残差连接来改善曲率特性。当然大规模模型的Hessian矩阵没法全量算但近似方法已经相对成熟。PyTorch里可以用torch.autograd.functional.hessian算小规模模型的完整Hessian矩阵几百参数以内的规模没问题再大就得用Hessian-vector product来探测特定方向上的曲率了。这些工具和我讲的理论配合起来能解决很大一部分优化疑难杂症的排查。矩阵的二次型、迹、正定矩阵和Hessian矩阵这套知识说到底是同一块璞玉的不同切面。它们在线代课上各占一节在优化课里又出现一次在机器学习里第三次见面。我的建议是遇到实际问题时别急着套公式先从实对称矩阵出发梳理一下问题的结构。这个习惯一旦养成你会发现很多看似复杂的优化现象——收敛慢、震荡、鞍点困住——都能用特征值、正定性、条件数这三个词解释清楚。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →