SVD(奇异值分解)的核心价值在于:它能把任意矩阵(无论是否方阵、无论是否满秩、无论是否病态)分解成三个具有明确几何/代数意义的正交/对角矩阵,从而解决大量传统方法无法处理或处理不好的问题。
一、数学定义
对于任意m×nm \times nm×n实矩阵AAA,SVD 将其分解为:
A=UΣVTA = U \Sigma V^TA=UΣVT
其中:
- UUU(m×mm \times mm×m):正交矩阵,列向量为左奇异向量(AAA的行空间/值域的标准正交基)
- Σ\SigmaΣ(m×nm \times nm×n):对角矩阵,对角线元素σ1≥σ2≥⋯≥0\sigma_1 \geq \sigma_2 \geq \dots \geq 0σ1≥σ2≥⋯≥0为奇异值
- VVV(n×nn \times nn×n):正交矩阵,列向量为右奇异向量(AAA的列空间/定义域的标准正交基)
二、SVD 能解决的核心问题
1. 广义求逆(Pseudo-inverse)—— 非方阵与秩亏矩阵的救星
问题:Ax=bAx = bAx=b中AAA不是方阵,或AAA是方阵但奇异(行列式为 0,逆矩阵不存在)。
解法:利用 SVD 计算Moore-Penrose 伪逆:
A+=VΣ+UTA^+ = V \Sigma^+ U^TA+=VΣ+UT
其中Σ+\Sigma^+Σ+将非零奇异值取倒数,零奇异值保持为 0。
应用:
- 最小二乘问题(超定方程组)
- 最小范数问题(欠定方程组)
- 当AAA接近奇异(条件数很大)时,可通过截断小奇异值实现数值稳定求逆
2. 最优低秩逼近与降维 —— PCA 的数学本质
问题:给定含噪声或冗余的数据矩阵,如何提取主要信息、压缩数据?
解法:Eckart-Young-Mirsky 定理指出,SVD 给出的截断分解是最优低秩逼近。
若只保留前kkk个最大奇异值,得到Ak=UkΣkVkTA_k = U_k \Sigma_k V_k^TAk=UkΣkVkT,则:
minrank(B)=k∥A−B∥F=∥A−Ak∥F\min_{\text{rank}(B)=k} \|A - B\|_F = \|A - A_k\|_Frank(B)=kmin∥A−B∥F=∥A−Ak∥F
应用:
- PCA(主成分分析):对中心化数据做 SVD,右奇异向量VVV就是主成分方向
- 图像压缩(保留前 10% 奇异值可恢复 90% 信息)
- 文本语义分析(LSA)
- 推荐系统(协同过滤)
3. 噪声过滤与矩阵补全
问题:数据被噪声污染,或矩阵部分元素缺失。
解法:小奇异值通常对应噪声/高频成分,置零后重构矩阵即可去噪。
应用:
- 图像去噪
- 信号恢复
- Netflix 矩阵补全问题(推荐系统)
4. 齐次线性方程组的最小二乘解 —— 计算机视觉的基石
问题:求解Ax=0Ax = 0Ax=0(AAA行数多于列数,超定),要求∥x∥=1\|x\| = 1∥x∥=1(非平凡解)。
解法:对AAA做 SVD,解就是VVV的最后一列(对应最小奇异值的右奇异向量)。
应用:
- 八点法(8-point algorithm):估计本质矩阵/基础矩阵
- 直接线性变换(DLT):相机标定、单应性矩阵估计
- 三焦张量估计
- PPF 精修后的位姿验证(如从点对应求变换)
5. 刚性变换估计(Procrustes / Kabsch 算法)—— 与 PPF 直接相关
问题:给定两组 3D 点对应{pi}\{p_i\}{pi}和{qi}\{q_i\}{qi},求最优旋转RRR和平移ttt使得∑∥Rpi+t−qi∥2\sum \|Rp_i + t - q_i\|^2∑∥Rpi+t−qi∥2最小。
解法(Kabsch 算法):
- 去中心化得到X,YX, YX,Y
- 计算协方差矩阵H=XYTH = X Y^TH=XYT
- 对HHH做 SVD:H=UΣVTH = U \Sigma V^TH=UΣVT
- 旋转矩阵R=VUTR = V U^TR=VUT(需处理反射情况:det(R)=−1\det(R) = -1det(R)=−1时VVV最后一列取反)
- 平移t=qˉ−Rpˉt = \bar{q} - R\bar{p}t=qˉ−Rpˉ
应用:
- ICP(迭代最近点)算法的核心步骤
- PPF 匹配后的位姿精修
- 分子结构比对(蛋白质折叠)
- 形状对齐
6. 矩阵的秩、零空间与值域分析
问题:判断矩阵的秩、求零空间(null space)、确定线性相关性。
解法:
- 秩= 非零奇异值的个数
- 零空间=VVV中对应零奇异值的列向量张成的空间
- 值域(列空间)=UUU中对应非零奇异值的列向量张成的空间
应用:
- 判断系统是否可观测/可控
- 计算机视觉中的退化配置分析
- 结构力学中的自由度分析
7. 条件数与数值稳定性分析
问题:判断矩阵是否病态(输入微小扰动导致输出巨大变化)。
解法:条件数κ(A)=σmaxσmin\kappa(A) = \frac{\sigma_{\max}}{\sigma_{\min}}κ(A)=σminσmax。
- 条件数越大,矩阵越接近奇异,数值计算越不稳定。
- 通过 SVD 可诊断问题,并通过正则化(截断小奇异值)改善稳定性。
8. 协方差与不确定性估计
问题:估计参数的不确定性。
解法:在最小二乘中,参数协方差矩阵与(ATA)−1(A^T A)^{-1}(ATA)−1成正比。利用 SVD 可得:
(ATA)−1=VΣ−2VT(A^T A)^{-1} = V \Sigma^{-2} V^T(ATA)−1=VΣ−2VT
这避免了直接求逆的数值问题。
三、与 PPF 话题的关联(上下文呼应)
在之前的 PPF 讨论中,SVD 至少出现在以下环节:
| 环节 | SVD 的作用 |
|---|---|
| 法向量估计 | 对邻域点做 PCA(SVD)估计切平面法向 |
| 位姿精修(ICP) | Kabsch 算法通过 SVD 求解最优R,tR, tR,t |
| 位姿验证 | 从 3D-3D 对应点求解绝对定向(Absolute Orientation) |
| 外点剔除 | 利用条件数判断位姿估计是否退化 |
四、一句话总结
SVD 是线性代数中的"瑞士军刀":它通过将矩阵分解到一组正交基上,把"求逆、降维、去噪、拟合、对齐"等原本困难的问题,转化为对奇异值的简单操作(保留、截断、取倒数)。