4.5 伪逆与最小范数解:给不可逆矩阵一个广义逆
本节位置:模块 4 · 线性方程组 | 前置:4.4 | 预计:35 分钟
一句话:伪逆是「不可逆矩阵的逆」:超定时给最小二乘解,欠定时给最小范数解,秩亏时两件事同时做。
0. 场景引入
一台 CT 做低剂量胸部扫描:探测器 128 个,转 90 个角度,得到 条射线投影;重建图像是 ,共 16384 个像素。11520 个方程、16384 个未知数——这是一个欠定系统,至少有 个自由方向。
医院要求 2 秒内出图,剂量比常规低 30%。投影数据总共不到 100 kB,却要还原 16384 个像素。欠定意味着:同一组投影数据对应无穷多张图像。选哪一张,直接决定 2 mm 的肺结节是留下还是被抹平。选错一次可能是漏诊;选得太慢,急诊排队。
数学上最自然的选择是「最小范数」:在所有与投影一致的图像里,取像素平方和最小的那张,它的物理名字叫最小能量图像。但能量最小不等于最像——它会把对比度摊平,也会在缺失角度上留下条纹。
问题:伪逆给出的到底是哪一张图?它的零空间里藏着什么?读完本节,你应该能回答三件事:
- 四条 Penrose 条件各自在保证什么?
- 为什么 一定落在行空间里,这为什么等价于「范数最小」?
- 截断阈值取大或取小,分别会把图像变成什么样?
1. 直觉
1.1 伪逆 = 奇异值取倒数,零保持为零
任何矩阵都有 SVD(第 7.1 节):。 的对角元 是奇异值,其余为零。若 可逆,,把每个 变成 。
若 不可逆,就只对非零奇异值取倒数,零仍然留为零:
伪逆(pseudoinverse) 对任意矩阵都存在,包括长方形矩阵。
1.2 两个极端
- 超定(,满列秩):,等价于 4.4 的最小二乘。
- 欠定(,满行秩):,给出最小范数解。
💡 一句话直觉:伪逆先投影到「能表示的方向」,再在剩下的自由方向里取范数最小的那个。
图:所有解在 上;以原点为圆心的圆与直线相切于 ,所以 是范数最小的解。
1.3 它在现实世界里对应什么
把 CT 的测量矩阵 写出来:每一行对应一条射线,行里的非零元是这条射线穿过的像素,右端是探测器读数。
| 数学对象 | CT 里的对应物 |
|---|---|
| 未知数 | 每个像素的衰减系数 |
| 第 行 | 第 条射线穿过哪些像素(Radon 变换的离散版) |
| 每条射线上的投影和 | |
| 在无穷多张「投影一致」的图像里,能量最小的那张 | |
| 改变图像却不改变任何投影的图案(有限角度条纹) |
量级直觉:90 个角度覆盖 180°,平均每 2° 一个视角;缺失的角度越多,零空间越大,最小范数解就越倾向于「在看不见的方向上什么都不放」。 个自由方向,约占总维度的 30%。
1.4 这个类比在哪里失效
第一,真实图像非负、分段光滑。最小能量解会出现负像素和振铃,看起来「不像人体」;临床用的是迭代重建加非负/全变分约束,不是裸伪逆。
第二,零空间不是「没有信息」,而是「这次测量看不到」。换角度、加剂量、加先验,都能把它变成可观测方向。
第三, 是近似:散射、束硬化、探测器串扰都不在这个线性模型里。模型误差不会被伪逆修好,只会被它忠实地反演成伪影。
2. 定义
2.1 Moore–Penrose 四条件
对任意 , 由以下四条唯一确定——这四条来自 Penrose(1955):
前两条说「 在 能作用的方向上是逆」,后两条说「两个投影矩阵都对称」。
2.2 用 SVD 定义
若 是瘦 SVD(、、,),则 。这是最稳的计算方式,np.linalg.pinv 就是这么做的。
2.3 最小范数最小二乘解
先在所有「残差最小」的解里挑,再在它们之中挑范数最小的;这个结果叫最小范数最小二乘解(minimum-norm least-squares solution)。超定时解唯一,这一步不产生差别;欠定时残差可以为零,于是直接挑最小范数解。
3. 为什么这样定义
为什么不用 的逆?因为 在不满列秩时不可逆。 把这套公式推广到所有矩阵:满列秩时退化为 ,满行秩时退化为 。
为什么恰好是这四条?四条来自「 在行空间上可逆、在零空间上为零」这一几何事实。设 的秩为 ,它把行空间同构地送到列空间。 要做的是:在列空间上取真正的逆(条件 1、2);在左零空间上输出零;两个方向的投影都正交(条件 3、4)。
可以证明满足四条的矩阵存在且唯一,所以「伪逆」不是一种选择,而是被几何逼出来的唯一对象。
3.1 反事实:伪逆的截断阈值取错
pinv 不是真的「把零奇异值留为零」,它有一个阈值:小于 rcond * σ_max 的奇异值被当作零扔掉。这个阈值决定「数值秩」,也决定解。看一个能手算的对角例子:
精确解是 。
- 取
rcond:,第二个奇异值被扔掉,解变成 。残差只有 ——残差小到看不出来,但第二个分量被整个删掉了。 - 取
rcond:第二个分量保留。可若 的第二个分量带 的噪声(变成 ), 就从 变成 ,这一个分量的相对误差是 100%,而整幅图的相对误差只有 0.1%。
两个阈值都「有道理」,但一个删掉真实结构,一个放大噪声;而残差和全图范数都看不见这两种错。阈值不是实现细节,它是一个必须由先验(噪声水平、结构稀疏性)来定的建模决定。
4. 性质与推导
4.1 两个投影
因此 就是 在列空间上的投影(4.4 的 ), 把 投到行空间。
4.2 满秩时的两个公式
满列秩():,验证条件 1、2 靠 消去,条件 3、4 由对称性得到。满行秩():。
4.3 零空间与最小范数
一定落在 里(因为 , 的列张成行空间)。而 与 正交,所以它是解集 中离原点最近的点——这就是「最小范数」。
4.4 与转置、乘积的关系
、、()。但 一般不成立,这是常见陷阱;成立所需的额外条件见 Ben-Israel & Greville。
5. 例子
5.1 手算:对角矩阵的伪逆
SVD 就是它自己(对角、非负)。非零奇异值是 和 ,取倒数;零保持为零:
验证四条件:, 相同;两者都对称,且 、 ✓
解方程 :、、 自由。,正是所有解里范数最小的(取 )。
5.2 手算:秩 1 矩阵
的秩为 1,不可逆。因为 (),伪逆为 :
最小二乘:,要让它与 最近,只能取 (此时残差 与列空间正交)。
最小范数:解集是 ,范数平方 ,在 取最小,值 ,与 一致 ✓
投影:,把任意向量投到 上。NumPy 复核:np.linalg.pinv(A) @ b 与 np.linalg.lstsq(A, b) 都返回 [0.5, 0.5]。
5.3 场景:最小改动
要让某层在 个输入 上产生指定变化 ,取 。这是所有满足 的矩阵里 Frobenius 范数最小的一个,且 。
5.4 场景闭环:11520 条射线、16384 个像素
输入:,每条射线约穿过 128 个像素,非零元约 。CSR 存 fp64 加 4 B 索引,约 MB;投影 是 kB。
计算:显式 是 ,约 个元素,fp64 要 1.5 GB,还要做一次 的 SVD——单是内存就超过一张消费级显卡,所以工程上根本不显式求伪逆。 实际用 CGLS:每次迭代两次矩阵-向量乘,约
迭代 20 次约 FLOP,8 核按 50 GFLOP/s 估约 0.3 s,落在 2 s 预算内。CGLS 从零向量出发,迭代点始终落在 张成的 Krylov 子空间里(也就是行空间内),极限正是最小范数最小二乘解。
输出:一张重建图像,加上残差 与迭代次数。决策是:直接出图,还是继续迭代/加正则。
成本:约 FLOP、18 MB 稀疏矩阵;若显式存 要 1.5 GB,是前者的 80 倍——这是「伪逆是定义、不是算法」最直接的例子。
失败条件:
- 有限角度:90 个角度覆盖不全,零空间大,最小范数解在缺失方向上全取 0,出现条纹。兜底:加全变分/非负约束,或在允许范围内增加角度。
- 噪声放大: 小,投影里的噪声被 放大。兜底:截断迭代(早停)或 Tikhonov 正则。
- 模型误差:散射与束硬化让 本身不准,残差收敛了图像还是偏。兜底:物理校正后再重建。
6. 常见误区
- 误区:伪逆就是「近似的逆」,。纠正: 是到行空间的精确投影,一般不等于 ;只有满列秩时才是 。
- 误区: 只能处理方阵。纠正:任意 矩阵都有伪逆,形状是 。
- 误区: 一定是 的解。纠正:只有 时才是;否则它是最小二乘解,残差非零。
- 误区:。纠正:一般不成立,需要额外条件。
- 误区:
pinv的阈值无关紧要。纠正:它会把小于rcond * σ_max的奇异值当作零,阈值改变「数值秩」,进而改变解;病态矩阵尤其敏感(4.6)。
7. 概念网络
- 前置:4.4 最小二乘与正规方程 —— 超定情形下的特例。
- 前置:4.2 解的存在性与通解 —— 欠定情形下的解集。
- 前置:4.3 齐次方程与零空间 —— 最小范数解落在行空间。
- 后续:第 7.4 节(伪逆、数值秩与条件数)—— 用 SVD 讨论截断与数值秩。
- 关联:4.6 条件数与病态问题 —— 奇异值比值决定稳定性。
- 关联:1.6 正交与投影 —— 与 都是投影。
8. 通往大模型:最小改动权重编辑
出现位置:闭式模型编辑、把一条事实「写入」某层、LoRA 合并前后的约束求解,以及需要「改动最小」的微调。
形状:要让权重 在 个输入上满足 ,取 。这里 、、。 时 ,改动只落在一个 维子空间里。
为什么需要:满足约束的 有无穷多个(4.2),伪逆给出的那个 Frobenius 范数最小。范数小意味着对未观测输入的扰动小,旧能力更可能保留;若改用「随便一个解」,权重可能被大幅改动,造成灾难性遗忘。
可检验结论: 精确成立(在浮点误差内);;当 时, 至多 8 个非零奇异值,其余 维完全没动。这正是「低秩编辑」的数学依据,也说明容量上限是 维。
import numpy as np
rng = np.random.default_rng(0)
D, K = 64, 3
W = rng.normal(size=(D, D)); H = rng.normal(size=(D, K)); Y = rng.normal(size=(D, K))
dW = (Y - W @ H) @ np.linalg.pinv(H)
print(dW.shape, np.linalg.matrix_rank(dW) <= K)
print(np.linalg.norm(W @ H + dW @ H - Y)) # ≈ 0
如果这一步算错,工程上看到什么现象:pinv 的默认阈值是相对 的(NumPy 默认 rcond=1e-15),对近奇异的 会把某些方向放大 倍。合并 LoRA 后,模型在大多数 prompt 上看起来正常,但在少数输入上突然输出乱码或重复——因为那些输入恰好落在被放大的方向上。反过来,阈值调大,编辑「没生效」,你会以为训练没收敛。
9. 练习
- 概念:四条 Penrose 条件分别在保证什么?
- 计算:求 的伪逆,并解 的最小二乘、最小范数解。
- 计算:(),求 ,并用它解 的最小范数解。
- 概念:为什么伪逆解一定落在行空间里?这和「最小范数」有什么关系?
- 开放:模型编辑时 取多大合适?增大 带来什么好处与风险?
参考答案
- (1) 在列空间上 是真逆;(2) 在列空间上的作用与逆一致,不会产生额外分量;(3)(4) 两个复合 、 是正交投影,因而对称。
- 非零奇异值 3,。;残差 与列空间 正交; 在最小二乘意义下不可定,取 0 即最小范数。
- ,。;由柯西–施瓦茨 ,等号在三分量相等时取到,故它是最小范数解。
- 的列是 的列的线性组合,而 的列张成行空间。把解拆成行空间分量与零空间分量,只有行空间分量影响 ;去掉零空间分量既保持残差又减小范数,故最优解在行空间。
- 越大,覆盖的约束方向越多、编辑越准;但 秩上升、范数上升,对其它输入干扰变大,且 可能变差使 不稳。通常取 远小于 ,并检查 。
10. 一页速记
- 由四条 Penrose 条件唯一确定,任意矩阵都有。
- 物理意义 / 现实对应:伪逆 = 在「能看见的方向」上取逆、在「看不见的方向」上取零;CT 里就是缺失角度上不编造信息,最小范数则选能量最小的那张图。
- SVD 定义:,非零奇异值取倒数。
- 满列秩:;满行秩:。
- = 最小二乘解中范数最小的那个;超定时就是普通最小二乘解。
- 投影到列空间, 投影到行空间。
11. 参考文献与致谢
这一页的知识不是凭空来的。下面列出本页直接借用的原始工作与权威整理;正文中的人名、定理名已链接到对应条目。链接优先指向 DOI、arXiv 或可长期访问的原文存档。
- 彭罗斯(Roger Penrose, 1955):A generalized inverse for matrices。给出第 2.1 节那四条条件,并证明满足它们的 存在且唯一;Moore 1920 年的早期定义由此变成可用的公理刻画。Proc. Cambridge Philos. Soc. 51(3), 406–413
- 本-伊斯雷尔与格雷维尔(Adi Ben-Israel & Thomas N. E. Greville, 2003):Generalized Inverses: Theory and Applications(2nd ed.)。系统整理各类广义逆的分类、最小范数最小二乘解的构造,以及 成立所需的条件,正是第 4.4 节那个反例的完整版。Springer
下一篇 → 4.6 条件数与病态问题
随堂测 · 7 题
源文件:04-线性方程组/05-伪逆与最小范数解.md