课程/M10/矩阵范数与条件数
M10 · 数值线性代数核心约 40 分钟

10.2 矩阵范数与条件数

本节位置:模块 10 · 数值线性代数 | 前置:7.2 SVD 的计算与性质 | 预计:40 分钟

一句话:矩阵范数回答「这个线性映射最多能把向量放大多少倍」,条件数回答「输入误差最多能被放大多少倍」——后者是前者的比值。

0. 场景引入

某测控中心要在卫星过境的 3 分钟弧段内定轨,测距精度 1 m,卫星距地心约 km。设计矩阵 的六列几乎共线:短弧上「半长轴变大」与「偏心率变大」对测距的影响几乎一样,。

工程师把法方程 直接丢给 fp64。,16 位有效数字只剩 4 位,位置误差约 m。改用 QR 分解 本身,同样是 fp64,,误差回到毫米级。

短弧定轨是典型的「病态但可解」:几何给的 无法靠算法消除,算法只能不把它再平方一次。这也是定轨软件默认走 QR/SVD、而不是教科书上的正规方程的原因。

决定:保留法方程(省一半 FLOPs),还是换成 QR(多一倍计算)?

代价: m 的位置误差会让碰撞预警虚警率飙高,一次误报就要改发射窗口;漏报则是卫星安全事件。

问题:同一个矩阵为什么有四个不同的范数,误差界该用哪一个?条件数 为什么等于「丢掉 位有效数字」?

读完本节,你应该能回答三件事:

  1. 四个范数各自衡量什么,为什么误差分析里要同时用 与 的范数?
  2. 与有效数字位数的换算关系是什么,这条经验什么时候不成立?
  3. 为什么「先算 再解」会把条件数平方,具体在哪一步坏掉?

1. 直觉

1.1 诱导范数 = 单位球被拉成的最长半轴

把 作用在单位球 上,得到一个椭球。诱导范数(induced norm) 就是这个椭球最长半轴的长度:

不同范数对应不同的「单位球」: 的球是菱形, 的是正方形, 的是圆。球不同,最长半轴也不同,所以同一个矩阵有多个范数值。

💡 一句话直觉:范数 = 最大拉伸倍数;条件数 = 最大拉伸与最小拉伸的比值。

类比边界:「最大拉伸」是最坏情况。矩阵可能只在某一个方向放大很多,随机输入的放大倍数通常远小于范数。

1.2 条件数 = 椭球有多扁

若 把单位圆拉成半轴为 与 的椭圆,求逆时要把短轴重新拉长 倍。误差若落在短轴方向,就会被这个倍数放大。椭圆越扁, 越大:

读作:解的相对误差不超过右端相对误差的 倍。完整推导见 4.6,本节补上「范数」这一层。

1.3 它在现实世界里对应什么

在定轨里, 是「轨道参数 → 测距读数」的灵敏度矩阵, 是最灵敏方向能让测距变化多少, 是最不灵敏方向。条件数于是有了物理读法: 表示「最不灵敏的方向比最灵敏的方向弱 倍」,也就是要用 倍的观测精度才能把它定出来。

换成有效数字:误差放大约 倍,就丢掉约 位十进制有效数字。 km 的轨道、fp64 的 :

相对误差上界 位置误差
nm
mm
m

最后一行正是「先算 」的代价: 把 变成 。

1.4 这个类比在哪里失效

「最坏方向」的读法只在线性化附近成立:定轨的 是当前估计处的 Jacobian,弧段一长、非线性一强, 就不再能预测真实误差。

第二个失效点: 依赖参数化与单位。把半长轴从 km 换成 m, 不变();但只把某一列的单位换掉, 会跟着变 倍。所以「」必须附上「哪个范数、哪些变量、什么单位」,否则不是一个可比较的数。

2. 定义

2.1 向量范数回顾

对 ,、、。三者满足 ,所以它们「等价」,但常数依赖维数 。

2.2 矩阵范数

Frobenius 范数(Frobenius norm) 把矩阵当成长度为 的向量:

诱导(算子)范数(induced/operator norm) 由向量范数定义:

常用诱导范数都有初等公式:(最大列绝对值和)、(最大行绝对值和)、。注意 不是诱导范数,没有「某个向量范数诱导出来」的对应物。

2.3 条件数

对可逆方阵 和选定范数 ,条件数(condition number) 定义为

2-范数下 ;1-范数与 -范数下没有奇异值公式,只能分别算 与 的列/行和。

2.4 误差放大界

设 ,右端扰动 使解变为 ,则

若 本身有扰动 ,一阶近似下 。这个「相对误差 × 条件数」的框架由 Turing(1948) 与 von Neumann–Goldstine(1947) 奠定。

3. 为什么这样定义

  • 为什么用诱导范数而不是逐元素最大? 我们要控制 相对于 的增长。诱导范数是满足 的最小常数,逐元素范数做不到这么贴合。
  • 为什么需要 ? 只看 不知道「压扁」有多严重。 与 的范数一起,才同时记录最长半轴与最短半轴。
  • 为什么范数要统一? 误差界里的 必须和误差度量的范数一致;用 2-范数度量误差,就要用 。
  • 为什么 Frobenius 还有用? 它计算便宜、正交不变,且 直接连到低秩近似误差(第 7.3 节);只是不能用来做最优的算子界。

3.1 反事实:先算 ,会在哪一步坏掉

取一个和短弧定轨同构的 例子:

现在用 8 位十进制算术(相当于 fp32 的 7 位再加一位)解正规方程:

行列式本应是 ,但 8 位算术里 。矩阵被判成奇异,求解器直接报错或给出垃圾。

恰好落在第 8 位有效数字上,被两个 4 位的大数相减吃掉了。而 本身只有 的条件数,8 位算术还剩 位,QR 分解能正常给出解。

这就是「换一种公式」的代价:数学上 与 等价,数值上后者的条件数是前者的平方根。定理没错,错的是你把误差平方了。

同一类反事实还可以换成「用行列式判病态」: 的行列式是 ,,良态得不能再良态。行列式量的是体积,不是误差放大。

4. 性质与推导

4.1 2-范数为什么等于最大奇异值

第一步是定义,第二步展开平方,第三步是 Rayleigh 商的最大值等于最大特征值,最后一步用 。等号在 取最大右奇异向量时达到。

4.2 1-范数与 -范数的公式

对 1-范数:

取 ( 为列和最大的那一列)即可取等号。-范数把行与列的角色对调,证明相同。

4.3 次乘性与误差界的推导

诱导范数满足次乘性(submultiplicativity):,因为 。

由 得 ;又由 得 。两式相乘即得 §2.4 的界。

4.4 基本性质

();;;( 正交);;以及最重要的 。最后一条是「最小二乘不要显式解正规方程」的根本原因(4.6)。

5. 例子

5.1 手算: 矩阵的四种范数与三个条件数

矩阵范数:列绝对值和为 、,取最大得 ;行绝对值和为 、,取最大得 ;。

2-范数需要 :迹 、行列式 ,特征值 ,即 与 。于是 、,。

逆的范数:;;;。条件数:,,。同一矩阵三个条件数不同:都对,只是度量误差的尺子不同。若算 ,它不是诱导范数意义下的条件数,不能直接套 §2.4 的界。

5.2 手算: 的精确逆与

Hilbert 矩阵 是经典的病态矩阵。 时

可逐项相乘验证 。; 的三行绝对值之和分别为 、、,最大 。所以

精确的 2-范数条件数是 。若右端相对扰动为 ,解的相对误差上界是 ,比输入误差大了近三个数量级。

23456

时双精度的 16 位有效数字大约只剩 9 位。

5.3 场景:量化误差的放大

设一层权重 的 。用 bf16 存储,元素相对误差典型量级 。若误差落在最敏感方向,输出相对误差上界是 ,即理论上可放大到 。

实际量化误差方向分散,实测通常远小于这个最坏界;但上界说明:条件数大时,低精度存储是高风险操作。

5.4 场景闭环:3 分钟弧段能不能定轨

输入:2 个测站、120 个测距点、6 个轨道参数;短弧使 的列近共线,;fp64,。

计算:

  • 直接分解 (QR/SVD):解的相对误差上界 ;
  • 法方程:。

输出:位置误差为「 km × 相对误差」,分别是 mm 与 m。碰撞预警的判据常在千米级, m 已经吃掉大半个门限。

成本:对 的 做 QR,只多约一倍 FLOPs,绝对值是微秒级;法方程省下的时间在整个定轨流程里可以忽略。这里省算力是纯粹的坏交易。

失败条件与兜底:

  • 弧段更短( 分钟)时 可到 ,QR 也救不回来——此时误差由几何决定,不是算法。兜底是加测站、延长弧段,或用正则化把 抬起来。
  • 观测含粗差时,最小二乘的最坏方向会被单个坏点主导。兜底是先做残差检验( 门限)再解。
  • 要给出协方差时,对 做特征分解而不是显式求逆: 对应的方向方差最大,直接告诉你「这次定轨最不可信的是哪个方向」。

6. 常见误区

  1. 误区: 是诱导范数,可以当算子范数用。 纠正:它不是任何向量范数的诱导范数。 成立,但通常比 松。
  2. 误区:条件数只有一个数。 纠正: 可以差几倍(例 5.1 中 与 ),必须和误差所用的范数匹配。
  3. 误区:行列式小就病态。 纠正: 的行列式是 ,但 。病态看奇异值比值,不看行列式。
  4. 误区: 大就一定算不准。 纠正: 是最坏情况上界。扰动不落在敏感方向时,实际误差可以小几个数量级;正则化也能把最小奇异值抬起来。

7. 概念网络

8. 通往大模型:条件数决定「低精度能不能用」

出现位置一:权重矩阵的量化误差。 一层线性层 ,、。若 被量化成 ,则

推导:,而 ,相除即得。bf16 的相对误差约 ,fp16 约 。同一个 的层,bf16 的最坏输出误差是 (即 ),fp16 是 。

出现位置二:Hessian 与损失曲面。 极小点附近的 Hessian 是对称矩阵,。梯度下降的稳定步长要求 ,收敛到精度 的迭代次数约为 。 越大,损失曲面越像狭长山谷:一个方向震荡,另一个方向几乎不动。 出现位置三:谱范数与归一化。 谱归一化把 约束到 1 附近,从而控制整层的 Lipschitz 常数;实现上用幂迭代估计 :反复算 并归一化,20 步左右就够,每次只花两次矩阵向量乘。

可检验结论:随机初始化、方差为 的 并不良态——奇异值谱铺在 附近, 可以非常接近 0, 随 增大而上升。所以真实模型里看到 – 并不奇怪;这也解释了低精度训练为什么需要 fp32 主权重与归一化层配合。

如果这一步算错,用户会看到什么。 定轨软件不会报错,它给出一组「看起来正常」的轨道根数;异常出现在下游:预报位置越漂越远、碰撞预警虚警率异常高、同一颗星两次定轨差出几百米。工程上的判别方法是看协方差椭球的最长轴——如果它稳定指向某个物理方向(比如沿迹方向),说明是几何不可辨识,不是代码 bug。

9. 练习

  1. 概念:为什么 ,而 不是诱导范数?各举一个用途。
  2. 计算:对 求四个范数,再求 。三个条件数一样吗?
  3. 计算: 的 。双精度约有 16 位有效数字,解大约还剩几位?若右端相对扰动 ,相对误差上界是多少?
  4. 开放:若只能改一处来降低一层的有效条件数,你选「逐通道量化」「权重归一化」还是「低秩分解」?说明代价。
参考答案
  1. (见 4.1); 把所有权重同等对待,不对应任何「最大拉伸」的变分问题。 用于误差放大与谱归一化; 用于低秩近似误差与参数范数正则。
  2. ,,。,特征值 ,、,。,、。于是 、、。不一样,但都在 2 附近。
  3. 失去 位,剩约 位,即约 8–9 位。相对误差上界 。
  4. 逐通道量化最便宜,只改缩放因子,不改变权重结构,能缓解通道间动态范围差异;权重归一化直接压 ,但会改变前向数值、需要重新校准;低秩分解能同时降低存储与计算,但引入近似误差,且 可能更小。通常先做逐通道量化,再考虑谱约束。

10. 一页速记

  • = 最大列绝对值和, = 最大行绝对值和,,。
  • 诱导范数是满足 的最小常数;Frobenius 不是诱导范数。
  • ;2-范数下 ,且 。
  • ;条件数必须与误差范数匹配。
  • ;Hilbert 矩阵是病态的标准例子。
  • 物理意义 / 现实对应:条件数是「最不灵敏方向比最灵敏方向弱多少倍」,也是「误差放大几倍、丢掉几位有效数字」; 就丢约 位。

11. 参考文献与致谢

这一页的知识不是凭空来的。下面列出本页直接借用的原始工作与权威整理;正文中的人名、定理名已链接到对应条目。链接优先指向 DOI、arXiv 或可长期访问的原文存档。

  • Turing(1948):Rounding-Off Errors in Matrix Processes。第一次系统讨论矩阵消元的舍入误差与「条件数」式放大,是本页误差界的源头之一。Quarterly Journal of Mechanics and Applied Mathematics
  • von Neumann & Goldstine(1947):Numerical Inverting of Matrices of High Order。把矩阵求逆的误差分析与范数联系起来,与本页 §2.4 的放大界同一脉络。Bulletin of the AMS
  • Higham(2002):Accuracy and Stability of Numerical Algorithms(2nd ed.)。矩阵范数、条件数与扰动分析的权威整理。SIAM

下一篇 → 10.3 BLAS 与 GEMM

返回 M10 导览去练习场

随堂测 · 4 题

数值难度 1第 1 / 4 题
对 ,Frobenius 范数 约是多少?保留三位小数。

源文件:10-数值线性代数/02-矩阵范数与条件数.md

输入关键词开始搜索