7.4 伪逆、数值秩与条件数
本节位置:模块 7 · SVD | 前置:4.5、7.2 | 预计:35 分钟
一句话:伪逆就是「沿每个奇异方向取倒数」,但小奇异值不能取倒数——什么时候算「小」,由数值秩和条件数决定。
0. 场景引入
放射科要重建一张 512×512 的 CT 切片: 个未知像素,而扫描只有 180 个角度 × 512 个探测器,共 个方程——方程比未知数少,问题本身欠定。
CT 的方程组是 ; 既不是方阵,也谈不上可逆,solve 在这里连调用都不合法。你想找一个统一写法,把「方程比未知数多」「少」「刚好但病态」三种情况一次处理掉。
更麻烦的是病态:探测器噪声约 0.5%,而系统矩阵的最小奇异值只有最大奇异值的 量级。伪逆要沿每个奇异方向除以 ,最坏方向上 的噪声会被放大 倍,重建图上是放射状条纹,不是解剖结构。
你要决定截断阈值 取多少。取小了,条纹压不住;取大了,钙化点和小裂纹一起被抹平——「看起来干净」比「有噪声」更危险。每张切片的重建按秒计,病人还在扫描床上,没时间让你试十组参数。
读完你能回答三个问题:
- 伪逆 怎样用一个公式同时处理超定、欠定和秩亏?
- 为什么「多小算小」不能用一个绝对常数回答?
- 截断伪逆为什么有时比精确逆更接近真解?
1. 直觉
在奇异坐标系里就是「沿 乘 ,送到 」。想反解就沿原路除回去,于是
很小时 很大: 里一点噪声会被放大成巨大的解分量。这就是病态的几何图像——某个方向几乎被压扁,反解时就要把它撑开。
💡 一句话直觉:伪逆 = 沿可逆方向精确反演 + 沿太扁的方向放弃;放弃的标准是「 是否大于阈值」。
1.1 它在现实世界里对应什么
把 CT 重建想成「把每个方向的压缩比倒过来」:
| 数学对象 | CT 里的对应物 |
|---|---|
| 512×512 的衰减系数图,262,144 个未知数 | |
| 180 个角度 × 512 个探测器的读数,92,160 个方程 | |
| 第 个图案在投影数据里的可见度 | |
| 反演这个图案时的放大倍数 | |
| 低于它就当看不见,直接丢掉 |
大,说明这个图案在投影里对比度高,反演可靠; 小,说明它几乎被压平,要除以一个很小的数才能撑回来,噪声也跟着被撑大。伪逆做的就是「沿可逆方向精确反演,沿太扁方向放弃」。
1.2 这个类比在哪里失效
- 真实 CT 还有射束硬化、散射、运动伪影,它们不在线性方程组里;SVD 只处理「线性病态」这一半。
- 截断不是「算不出来」,而是主动用偏差换稳定:被丢掉的方向不是简单变模糊,而是没有对应结构。
- 伪逆给的是最小范数解。如果真实解在零空间里有分量(欠定时完全可能),伪逆不会恢复它,只会挑范数最小的那个。
1.3 量级直觉
时, 从 到 ,动态范围是 dB。探测器噪声 按最坏方向放大,相对误差上界是
也就是相对误差上界 5000 倍。这个上界很悲观——实际误差取决于噪声方向与最坏奇异方向的夹角——但重建图上的放射状条纹,就是它的小号版本。只要 小于噪声水平, 就不再是信息,而是噪声放大器。
2. 定义
2.1 伪逆(pseudoinverse)的 SVD 形式
设 是瘦 SVD,,定义
非零奇异值取倒数,零保持为零。形状是 ——转置了。这组性质由 Penrose 在 1955 年用四条方程公理化,本页后面反复用的正是这四条。
2.2 一个公式,三种情形
的定义是:先在所有使 最小的 里挑,再挑其中 最小者。
| 情形 | 秩 | 结果 |
|---|---|---|
| 超定(,满列秩) | 普通最小二乘解,唯一 | |
| 欠定(,满行秩) | 残差为 0 的解中范数最小者 | |
| 秩亏 | 两者同时:最小残差 + 最小范数 |
2.3 数值秩与截断
浮点数里没有「恰好为零」。给定容差 ,**数值秩(numerical rank)**为 。常用取值为 (NumPy matrix_rank 的默认),也可自己给(如 );数值秩与条件数的标准处理见 Golub 与 Van Loan。**截断伪逆(truncated pseudoinverse)**只保留 的项:。
2.4 条件数(condition number)
是「输入相对误差被放大倍数的上界」;秩亏时约定 。数值上要区分 无穷与 :后者对双精度而言已经「实际不可逆」。
3. 为什么这样定义
四个子空间各归各位。 把行空间同构送到列空间,把零空间压成 0。伪逆要做三件事:列空间上取真逆( 的项取 );左零空间上输出 0(没有输入能到达那里,反解无从谈起);零空间上输出 0(这些方向本就不可观测,取 0 顺便实现最小范数)。
为什么阈值是必需的? 「 是否等于零」取决于精度与噪声:双精度、无噪声时它是真实维度;bf16 或测量有 噪声时它和 0 没区别。数值秩不是 的固有属性,而是 加精度加噪声的联合属性。
3.1 反事实:用绝对阈值判秩会坏在哪
假设你图省事,把阈值写成一个绝对常数 ,单位是伏特。取一个对角矩阵
在伏特下,,数值秩判为 1,第二个方向被截掉。
现在换一个工程师,用微伏记录同一个物理量:。同一个 ,,数值秩判为 2,第二个方向保留。
同一个矩阵、同一台设备,只是换了单位,数值秩从 1 变成 2;下游一个做截断、一个不做,解和重建结果完全不同。阈值绑在单位上,结论就绑在单位上。
换成相对阈值 :
- 伏特版:, 远大于它,秩 2;
- 微伏版:, 也远大于它,秩 2。
两边的结论一致,因为阈值随 一起缩放。
但相对阈值也不是终点:若测量噪声本身有 (伏特), 仍然不可信——这时阈值应该定在噪声水平,而不是机器精度。判秩的阈值要随噪声走,不能随单位走,也不能只随 走。
4. 性质与推导
4.1 两个投影
,而 是对角元为 的对角阵,所以 是到 的正交投影;同理 投影到 。
4.2 误差放大: 从哪来
设 可逆, 有扰动 ,解变为 ,则 。展开到奇异坐标:
两式相除得 。这个式子说的是:相对误差最多被放大 倍。它也解释了为什么不能先算 :, 会变成 ,直接吃光双精度。
4.3 截断的偏差—方差权衡
用 时,解与真解的差别分两部分:被丢掉的方向带来偏差(量级 ),保留的方向带来噪声放大(量级 )。 增大,偏差增大、方差减小;最佳 与噪声水平同量级。
4.4 满秩时的退化
满列秩()时 ;满行秩()时 。两者都能从 直接推出,不需要额外假设。
5. 例子
5.1 超定:最小二乘
的特征值为 ,故 、,(良态)。右奇异向量 、;左奇异向量 、。
的奇异坐标为 、,于是
核对:残差 ,与两列都正交()✓;,投影分量 ,残差平方 ,与 一致 ✓。
5.2 欠定:最小范数
、。,故 、,;、,、。于是
核对: ✓。解集为 ,由于 与特解正交,, 时最小 ✓。
5.3 数值秩:什么时候该截断
,,。真解 对应 。
把 扰动 (),新解变成 ——相对误差 。而 ,与观测到的放大同量级。
若取 ,数值秩 ,截断伪逆给出 。噪声被压掉,答案反而更接近真解——这就是 TSVD(截断奇异值分解)作为正则化的直观来源;Hansen 把这类截断的偏差—方差权衡写成了系统分析。
5.4 场景闭环:512×512 的 CT 切片
输入: 重建,262,144 个未知数;180 个角度 × 512 个探测器,92,160 个方程。系统矩阵稀疏,每条射线约穿过 512 个像素,非零元约 ,按每非零 8 B 存约 377 MB;sinogram 本身 B≈0.37 MB,重建图 1 MB。
计算:不形成完整 SVD—— 会是 个数,fp64 约 68 GB。实际用 Lanczos/svds 只求前 个奇异三元组,每次迭代两次稀疏矩阵-向量乘,约 FLOP; 跑 50–100 次迭代约 – FLOP。伪逆解按 组装。
输出:一张重建图,以及阈值 (或等价的截断秩 )。决策还包括是否叠加 Tikhonov/TV 正则、是否重扫。
成本:主要成本是稀疏 matvec 和存 的 377 MB;单张按 FLOP、10 GFLOP/s 估约 1 s,符合「病人在扫描床上等」的预算。图像本身只占 1 MB,相比系统矩阵可以忽略。
失败条件:
- 太小:0.5% 的探测器噪声被 放大,重建出现放射状条纹。兜底:按残差范数约等于噪声范数来选 (偏差原理),或加 TV 正则。
- 太大:钙化点、小裂纹一起被抹平。兜底:用体模(phantom)标定 ,并保留原始 sinogram 以便换参重重建。
- 模型误差:射束硬化、散射不在 里,截断 SVD 救不了。兜底:先做硬化校正,或改用带物理模型的迭代重建。
6. 常见误区
- 误区: 是「近似的逆」,。 纠正: 是到行空间的精确投影,秩亏时离 很远;只有满列秩时才是 。
- 误区: 一定满足 。 纠正:只有 时残差为零,否则它是最小二乘解(见 5.1)。
- 误区:数值秩是矩阵的客观属性,算出来多少就是多少; 大说明代码有 bug。 纠正:数值秩依赖容差与精度——同一个 在 fp64 下可能秩 512、bf16 下秩 200。 是问题的属性;良态问题加坏算法才出错,病态问题加好算法也只能得到 倍的误差。
7. 概念网络
- 前置:4.5 伪逆与最小范数解 —— 代数定义与四条件。
- 前置:7.2 计算与性质 —— 的来历。
- 后续:7.5 SVD 应用 —— 闭式编辑、PCA、推荐都用伪逆。
- 关联:4.6 条件数与病态、7.3 低秩近似、1.6 正交与投影 —— 误差放大、秩约束、两个投影。
8. 通往大模型:编辑、微调与「不敢反演」
出现位置:闭式模型编辑(把一条事实写入某一层)、求最小改动微调、以及任何需要「反解」权重的地方。
形状:要让 在 个输入 上满足 ,取 ,其中 、,且 。 时只有 8 个非零奇异值,其余 4088 维完全没动。
为什么需要条件数: 的稳定性由 决定。若 8 个编辑输入的表示几乎共线, 很小, 会爆炸,并对未观测输入产生巨大扰动。上线前检查 是必要步骤:常见做法是 就减少 ,或改用 做 Tikhonov 正则。
低精度的天花板:bf16 相对精度约 , 的方向实际不可反演。也就是说,低精度训练里「秩」有一个由精度决定的上限:超过它的方向即使数学上非零,也无法可靠更新。
可检验结论: 在浮点误差内精确成立,;若把 的某一列复制一份(人为制造秩亏), 变为无穷,此时必须截断,否则解出现 inf/nan。
算错时下游看到什么:若 的 8 个编辑输入几乎共线( 很大), 的范数量级是 ,会顺带改掉未观测输入的行为。用户看到的是:想让模型记住一条新事实,它却在无关问题上开始胡说,或者旧知识被覆盖。兜底是编辑前检查 、限制 、用 Tikhonov 正则,并在编辑后跑一组回归问题。
9. 练习
- 概念:为什么伪逆解一定落在行空间里?这和「最小范数」是同一件事吗?
- 计算:,,求 、残差,并验证残差与列空间正交。
- 计算:,求 ,解 的最小二乘解与残差。
- 场景:某层 的 ,做闭式编辑会发生什么?给出两种补救办法。
- 开放:既然截断能提高稳定性,为什么不全截断到秩 1?
参考答案
- 的列是 的列的线性组合,而 的前 列张成行空间。解集 中只有行空间分量影响 ,去掉零空间分量既保持残差又减小范数,所以两件事是一体的。
- 、,,。残差 ,与 的内积 ✓。
- ,;残差 ,与 正交 ✓。
- 很小, 的范数约为 , 爆炸并破坏其他输入。补救:(a) 减少 ,只保留独立方向;(b) Tikhonov 正则 ,等价于做 TSVD 截断。
- 偏差会失控:秩 1 近似只保留一个方向, 可能接近 ,残差巨大。截断的收益有上限,最优 在「噪声放大」与「丢信息」之间取平衡。
10. 一页速记
- :非零奇异值取倒数、零留零,形状 ;一个公式统一超定(最小二乘)、欠定(最小范数)与秩亏(两者同时)。
- 数值秩 , 依赖精度与噪声,不是固有属性。
- ,相对误差最多放大 倍;。
- 截断伪逆用偏差换稳定,是最简单的正则化;bf16 下秩有精度天花板。
- 物理意义 / 现实对应:伪逆是「把每个方向的压缩比倒过来」; 是被压扁的程度, 是反演时的放大倍数, 是「低于噪声就当看不见」的分界线。
11. 参考文献与致谢
这一页的知识不是凭空来的。下面列出本页直接借用的原始工作与权威整理;正文中的人名、定理名已链接到对应条目。链接优先指向 DOI、arXiv 或可长期访问的原文存档。
- 彭罗斯(Roger Penrose, 1955):A Generalized Inverse for Matrices。用四条方程唯一刻画了广义逆 (也就是伪逆),本页第 2.1 节的 就是这组方程在 SVD 下的解。Math. Proc. Cambridge Philos. Soc. 51(3)
- Hansen(Per Christian Hansen, 1998):Rank-Deficient and Discrete Ill-Posed Problems。系统分析了 TSVD 作为正则化的偏差—方差权衡,本页第 5.3 节「截断反而更接近真解」与第 4.3 节的最佳 都出自这一框架。SIAM
- Golub 与 Van Loan(Gene H. Golub & Charles F. Van Loan, 2013):Matrix Computations(4th ed.)。对数值秩、条件数与伪逆给出系统处理;本页第 2.3 节用 判零、第 4.2 节用 界误差,都是这一框架里的标准结论。Johns Hopkins University Press
下一篇 → 7.5 SVD 应用:PCA、推荐与 LoRA
随堂测 · 5 题
源文件:07-SVD/04-伪逆与数值秩.md