第03章:SVD与矩阵分解
核心思想:任何矩阵都可以看作"旋转-拉伸-旋转"的组合。SVD 是线性代数的终极武器。
前言
如果说线性代数有皇冠,那么奇异值分解 (SVD) 就是皇冠上的明珠。Gilbert Strang 教授称其为"线性代数的顶峰"。
在机器学习中,数据往往是矩阵,而 SVD 是理解数据结构(Data Structure)、降维(PCA)、去噪和推荐系统的万能钥匙。
本章我们将从几何变换 的视角出发,一步步揭开 SVD 的面纱,并证明任何矩阵(无论方圆)都可以被分解为旋转、拉伸、再旋转。
目录
-
- 3.1 核心思想:让非方阵也能对角化
- 3.2 [推导 SVD](#推导 SVD)
- 3.3 [SVD 的几何图景:旋转-拉伸-旋转](#SVD 的几何图景:旋转-拉伸-旋转)
- 3.4 [薄 SVD(Reduced SVD)](#薄 SVD(Reduced SVD))
- 3.5 [外积形式(Dyadic Expansion)](#外积形式(Dyadic Expansion))
-
[四个基本子空间的 SVD 视角](#四个基本子空间的 SVD 视角)
- 4.1 回顾:四个基本子空间
- 4.2 [SVD 的完美切分](#SVD 的完美切分)
- 4.3 正交关系图
- 4.4 伪逆的几何意义
-
[低秩近似:SVD 的杀手级应用](#低秩近似:SVD 的杀手级应用)
- 5.1 问题设定
- 5.2 [Eckart-Young-Mirsky 定理](#Eckart-Young-Mirsky 定理)
- 5.3 [直觉:丢弃小奇异值 = 去噪](#直觉:丢弃小奇异值 = 去噪)
- 5.4 [应用 1:图像压缩](#应用 1:图像压缩)
- 5.5 [应用 2:推荐系统与矩阵补全](#应用 2:推荐系统与矩阵补全)
- 5.6 [应用 3:主成分分析(PCA)](#应用 3:主成分分析(PCA))
-
[SVD 与 EVD 的联系](#SVD 与 EVD 的联系)
-
- 8.1 [SVD 的核心价值](#SVD 的核心价值)
- 8.2 [SVD 的应用场景](#SVD 的应用场景)
- 8.3 [理解 SVD 的三个层次](#理解 SVD 的三个层次)
- 8.4 最终洞察
1. 引言:从圆到椭圆
1.1 矩阵变换的本质
想象在二维平面上画一个单位圆:所有满足 x 2 + y 2 = 1 x^2 + y^2 = 1 x2+y2=1 的点。现在对这个圆施加一个矩阵变换 A A A:
x ′ y ′ \] = A \[ x y \] \\begin{bmatrix} x' \\\\ y' \\end{bmatrix} = A \\begin{bmatrix} x \\\\ y \\end{bmatrix} \[x′y′\]=A\[xy
奇妙的事情发生了:圆变成了椭圆!
- 椭圆的长轴、短轴方向:矩阵 A A A 的"主方向"
- 椭圆的长轴、短轴长度:矩阵 A A A 的"拉伸程度"
深刻的问题 :能否找到一组特殊的基,使得矩阵 A A A 的作用变得简单(仅仅是沿着坐标轴拉伸)?
1.2 特征值分解的局限
如果 A A A 是方阵,我们有特征值分解:
A v = λ v A v = \lambda v Av=λv
物理意义 :特征向量 v v v 的方向在变换后保持不变,只是长度变为 λ \lambda λ 倍。
但是:
- 特征值分解只适用于方阵
- 即使是方阵,也不一定可以对角化(如果特征向量不够)
- 非对称矩阵的特征向量不正交,失去几何直观性
我们需要更强大的工具 :适用于任意 m × n m \times n m×n 矩阵,始终存在,且具有优美几何意义的分解。
这就是奇异值分解(SVD)。
2. 特征分解(EVD):对称矩阵的美学
在讨论 SVD 之前,先理解对称矩阵的特殊性质。
2.1 谱定理(Spectral Theorem)
定理 :设 A ∈ R n × n A \in \mathbb{R}^{n \times n} A∈Rn×n 是实对称矩阵( A = A T A = A^T A=AT),则:
A = Q Λ Q T A = Q \Lambda Q^T A=QΛQT
其中:
- Q Q Q 是正交矩阵 ( Q T Q = I Q^T Q = I QTQ=I),列向量是 A A A 的特征向量
- Λ \Lambda Λ 是对角矩阵 ,对角元素是 A A A 的特征值
- 特征值都是实数
- 特征向量相互正交
2.2 几何直觉
对称矩阵有什么特殊性?
关键洞察 :对称矩阵表示的变换不产生切变,只有旋转和伸缩。
分解 A = Q Λ Q T A = Q \Lambda Q^T A=QΛQT 的三步曲:
- Q T Q^T QT:旋转到特征向量构成的坐标系
- Λ \Lambda Λ:沿着新坐标轴拉伸(特征值决定拉伸倍数)
- Q Q Q:旋转回原坐标系
例子:协方差矩阵
协方差矩阵 Σ = E [ ( X − μ ) ( X − μ ) T ] \Sigma = \mathbb{E}[(X - \mu)(X - \mu)^T] Σ=E[(X−μ)(X−μ)T] 是对称的。特征分解告诉我们:
- 特征向量:数据的主方向(PCA 的基础)
- 特征值:数据在各主方向上的方差
2.3 正定性:碗的形状
考虑二次型:
f ( x ) = x T A x f(x) = x^T A x f(x)=xTAx
如果 A = Q Λ Q T A = Q \Lambda Q^T A=QΛQT,令 y = Q T x y = Q^T x y=QTx,则:
f ( x ) = y T Λ y = ∑ i = 1 n λ i y i 2 f(x) = y^T \Lambda y = \sum_{i=1}^{n} \lambda_i y_i^2 f(x)=yTΛy=i=1∑nλiyi2
几何意义:
- 所有 λ i > 0 \lambda_i > 0 λi>0(正定):向上开口的碗,有唯一最小值
- 存在 λ i < 0 \lambda_i < 0 λi<0(不定):马鞍面,有鞍点
- 所有 λ i ≥ 0 \lambda_i \geq 0 λi≥0,某些为 0(半正定):退化的碗
这在优化中至关重要:Hessian 矩阵的特征值决定了临界点的性质。
3. 奇异值分解(SVD):万能钥匙
3.1 核心思想:让非方阵也能对角化
问题 :对于一般的 A ∈ R m × n A \in \mathbb{R}^{m \times n} A∈Rm×n( m ≠ n m \neq n m=n),如何分解?
关键洞察 :虽然 A A A 不是对称矩阵,但 A T A A^T A ATA 和 A A T A A^T AAT 是!
- A T A ∈ R n × n A^T A \in \mathbb{R}^{n \times n} ATA∈Rn×n,对称半正定
- A A T ∈ R m × m A A^T \in \mathbb{R}^{m \times m} AAT∈Rm×m,对称半正定
3.2 推导 SVD
步骤 1 :对 A T A A^T A ATA 做特征分解
A T A = V Λ V T A^T A = V \Lambda V^T ATA=VΛVT
其中 V ∈ R n × n V \in \mathbb{R}^{n \times n} V∈Rn×n 正交, Λ = diag ( λ 1 , ... , λ n ) \Lambda = \text{diag}(\lambda_1, \ldots, \lambda_n) Λ=diag(λ1,...,λn), λ i ≥ 0 \lambda_i \geq 0 λi≥0。
步骤 2:定义奇异值
令 σ i = λ i \sigma_i = \sqrt{\lambda_i} σi=λi ,这些 σ i \sigma_i σi 称为 A A A 的奇异值。按降序排列:
σ 1 ≥ σ 2 ≥ ⋯ ≥ σ r > 0 = σ r + 1 = ⋯ = σ min ( m , n ) \sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_r > 0 = \sigma_{r+1} = \cdots = \sigma_{\min(m,n)} σ1≥σ2≥⋯≥σr>0=σr+1=⋯=σmin(m,n)
其中 r = rank ( A ) r = \text{rank}(A) r=rank(A)。
步骤 3:构造左奇异向量
对于前 r r r 个特征向量 v i v_i vi(对应非零奇异值),定义:
u i = 1 σ i A v i , i = 1 , ... , r u_i = \frac{1}{\sigma_i} A v_i, \quad i = 1, \ldots, r ui=σi1Avi,i=1,...,r
验证正交性:
u i T u j = 1 σ i σ j v i T A T A v j = 1 σ i σ j v i T ( λ j v j ) = λ j σ i σ j v i T v j u_i^T u_j = \frac{1}{\sigma_i \sigma_j} v_i^T A^T A v_j = \frac{1}{\sigma_i \sigma_j} v_i^T (\lambda_j v_j) = \frac{\lambda_j}{\sigma_i \sigma_j} v_i^T v_j uiTuj=σiσj1viTATAvj=σiσj1viT(λjvj)=σiσjλjviTvj
当 i = j i = j i=j 时, u i T u i = σ i 2 σ i 2 = 1 u_i^T u_i = \frac{\sigma_i^2}{\sigma_i^2} = 1 uiTui=σi2σi2=1;当 i ≠ j i \neq j i=j 时, u i T u j = 0 u_i^T u_j = 0 uiTuj=0。
步骤 4:扩展为完整的正交基
将 { u 1 , ... , u r } \{u_1, \ldots, u_r\} {u1,...,ur} 扩展为 R m \mathbb{R}^m Rm 的标准正交基 { u 1 , ... , u m } \{u_1, \ldots, u_m\} {u1,...,um}(后面的向量在 A A A 的左零空间中)。
最终形式:
A = U Σ V T A = U \Sigma V^T A=UΣVT
其中:
- U ∈ R m × m U \in \mathbb{R}^{m \times m} U∈Rm×m:左奇异向量,正交矩阵
- Σ ∈ R m × n \Sigma \in \mathbb{R}^{m \times n} Σ∈Rm×n:对角矩阵(广义,矩形),对角线是奇异值
- V ∈ R n × n V \in \mathbb{R}^{n \times n} V∈Rn×n:右奇异向量,正交矩阵
3.3 SVD 的几何图景:旋转-拉伸-旋转
三步曲(这是理解 SVD 的最直观方式):
对于任意向量 x ∈ R n x \in \mathbb{R}^n x∈Rn,计算 A x Ax Ax:
A x = U Σ V T x A x = U \Sigma V^T x Ax=UΣVTx
-
第一步: V T x V^T x VTx(旋转到行空间基)
- V T V^T VT 是正交变换,将 x x x 旋转到由 V V V 的列向量( A T A A^T A ATA 的特征向量)张成的坐标系
- 物理意义:选择"最合适"的输入方向
-
第二步: Σ ( V T x ) \Sigma (V^T x) Σ(VTx)(沿主轴拉伸)
- 对角矩阵,沿着各坐标轴独立缩放
- 第 i i i 个分量乘以 σ i \sigma_i σi
- 物理意义:信息的放大/缩小
-
第三步: U ( Σ V T x ) U (\Sigma V^T x) U(ΣVTx)(旋转到列空间)
- U U U 是正交变换,将结果旋转到由 U U U 的列向量( A A T AA^T AAT 的特征向量)张成的坐标系
- 物理意义:映射到"最合适"的输出方向
核心洞察:任何矩阵变换都可以分解为"选择方向 → 缩放 → 输出方向"。
3.4 薄 SVD(Reduced SVD)
当 m > n m > n m>n 时, Σ \Sigma Σ 的后面 m − n m - n m−n 行全是零,对应的 U U U 的列向量没有贡献。我们可以截断:
A = U r Σ r V r T A = U_r \Sigma_r V_r^T A=UrΣrVrT
其中:
- U r ∈ R m × r U_r \in \mathbb{R}^{m \times r} Ur∈Rm×r:前 r r r 个左奇异向量
- Σ r ∈ R r × r \Sigma_r \in \mathbb{R}^{r \times r} Σr∈Rr×r:非零奇异值组成的对角矩阵
- V r ∈ R n × r V_r \in \mathbb{R}^{n \times r} Vr∈Rn×r:前 r r r 个右奇异向量
这是最常用的形式,避免了冗余。
3.5 外积形式(Dyadic Expansion)
SVD 还可以写成外积和的形式:
A = ∑ i = 1 r σ i u i v i T A = \sum_{i=1}^{r} \sigma_i u_i v_i^T A=i=1∑rσiuiviT
物理意义:
- 每个 u i v i T u_i v_i^T uiviT 是一个秩-1 矩阵
- A A A 是 r r r 个秩-1 矩阵的加权和
- σ i \sigma_i σi 是第 i i i 个"成分"的重要性
这为低秩近似奠定了基础。
4. 四个基本子空间的 SVD 视角
这是 SVD 最深刻的几何洞察之一。
4.1 回顾:四个基本子空间
对于矩阵 A ∈ R m × n A \in \mathbb{R}^{m \times n} A∈Rm×n,有四个基本子空间:
- 列空间 (Column Space): C ( A ) ⊆ R m \mathcal{C}(A) \subseteq \mathbb{R}^m C(A)⊆Rm,维度 r r r
- 零空间 (Null Space): N ( A ) ⊆ R n \mathcal{N}(A) \subseteq \mathbb{R}^n N(A)⊆Rn,维度 n − r n - r n−r
- 行空间 (Row Space): C ( A T ) ⊆ R n \mathcal{C}(A^T) \subseteq \mathbb{R}^n C(AT)⊆Rn,维度 r r r
- 左零空间 (Left Null Space): N ( A T ) ⊆ R m \mathcal{N}(A^T) \subseteq \mathbb{R}^m N(AT)⊆Rm,维度 m − r m - r m−r
4.2 SVD 的完美切分
SVD 的 U U U 和 V V V 恰好给出了这四个子空间的标准正交基:
V = [ v 1 ⋯ v r ⏟ 行空间 v r + 1 ⋯ v n ⏟ 零空间 ] V = \begin{bmatrix} \underbrace{v_1 \cdots v_r}{\text{行空间}} & \underbrace{v{r+1} \cdots v_n}_{\text{零空间}} \end{bmatrix} V=[行空间 v1⋯vr零空间 vr+1⋯vn]
U = [ u 1 ⋯ u r ⏟ 列空间 u r + 1 ⋯ u m ⏟ 左零空间 ] U = \begin{bmatrix} \underbrace{u_1 \cdots u_r}{\text{列空间}} & \underbrace{u{r+1} \cdots u_m}_{\text{左零空间}} \end{bmatrix} U=[列空间 u1⋯ur左零空间 ur+1⋯um]
验证:
- 行空间 : A T A v i = σ i 2 v i A^T A v_i = \sigma_i^2 v_i ATAvi=σi2vi( i ≤ r i \leq r i≤r),所以 A T ( A v i ) ≠ 0 A^T (A v_i) \neq 0 AT(Avi)=0,即 A v i A v_i Avi 在 C ( A T ) \mathcal{C}(A^T) C(AT) 中
- 零空间 : A T A v i = 0 A^T A v_i = 0 ATAvi=0( i > r i > r i>r),所以 A v i = 0 A v_i = 0 Avi=0,即 v i ∈ N ( A ) v_i \in \mathcal{N}(A) vi∈N(A)
- 列空间 : u i = 1 σ i A v i u_i = \frac{1}{\sigma_i} A v_i ui=σi1Avi( i ≤ r i \leq r i≤r),是 A A A 的列向量的线性组合
- 左零空间 : A T u i = 0 A^T u_i = 0 ATui=0( i > r i > r i>r),由构造保证
4.3 正交关系图
用文字描述的几何图景:
输入空间 ℝⁿ 输出空间 ℝᵐ
┌─────────────────┐ ┌─────────────────┐
│ │ │ │
│ 行空间 │ A │ 列空间 │
│ (v₁...vᵣ) │ ────────> │ (u₁...uᵣ) │
│ 维度 r │ │ 维度 r │
│ │ │ │
├─────────────────┤ ├─────────────────┤
│ │ │ │
│ 零空间 │ A │ 左零空间 │
│ (vᵣ₊₁...vₙ) │ ────────> │ (uᵣ₊₁...uₘ) │
│ 维度 n-r │ ↓0 │ 维度 m-r │
│ │ │ │
└─────────────────┘ └─────────────────┘
⊥ ⊥
关键性质:
- 行空间 ⊥ 零空间(在 R n \mathbb{R}^n Rn 中)
- 列空间 ⊥ 左零空间(在 R m \mathbb{R}^m Rm 中)
- A A A 将行空间一一映射到列空间(可逆)
- A A A 将零空间全部映射到零向量
4.4 伪逆的几何意义
基于 SVD,我们可以定义Moore-Penrose 伪逆:
A + = V Σ + U T A^+ = V \Sigma^+ U^T A+=VΣ+UT
其中 Σ + \Sigma^+ Σ+ 是将非零奇异值取倒数:
Σ + = [ 1 / σ 1 ⋱ 1 / σ r 0 ( n − r ) × ( m − r ) ] \Sigma^+ = \begin{bmatrix} 1/\sigma_1 & & & \\ & \ddots & & \\ & & 1/\sigma_r & \\ & & & 0_{(n-r) \times (m-r)} \end{bmatrix} Σ+= 1/σ1⋱1/σr0(n−r)×(m−r)
几何意义:
- 在列空间中, A + A^+ A+ 是 A A A 的逆( A + A = I A^+ A = I A+A=I 在行空间上)
- 在左零空间中, A + A^+ A+ 映射到零
- A + A^+ A+ 给出线性方程组 A x = b Ax = b Ax=b 的最小范数解
5. 低秩近似:SVD 的杀手级应用
5.1 问题设定
问题 :给定矩阵 A ∈ R m × n A \in \mathbb{R}^{m \times n} A∈Rm×n,秩为 r r r。如何找到秩为 k k k 的矩阵 A k A_k Ak( k < r k < r k<r),使得:
min rank ( B ) = k ∥ A − B ∥ F \min_{\text{rank}(B) = k} \|A - B\|_F rank(B)=kmin∥A−B∥F
其中 ∥ M ∥ F = ∑ i , j M i j 2 \|M\|F = \sqrt{\sum{i,j} M_{ij}^2} ∥M∥F=∑i,jMij2 是 Frobenius 范数(所有元素平方和的平方根)。
直觉:用更少的信息(低秩)来近似原矩阵。
5.2 Eckart-Young-Mirsky 定理
定理 :设 A = U Σ V T A = U \Sigma V^T A=UΣVT 是 SVD,定义截断 SVD:
A k = ∑ i = 1 k σ i u i v i T = U k Σ k V k T A_k = \sum_{i=1}^{k} \sigma_i u_i v_i^T = U_k \Sigma_k V_k^T Ak=i=1∑kσiuiviT=UkΣkVkT
则 A k A_k Ak 是所有秩为 k k k 的矩阵中,Frobenius 范数下距离 A A A 最近的矩阵:
∥ A − A k ∥ F = ∑ i = k + 1 r σ i 2 = 最小可能误差 \|A - A_k\|F = \sqrt{\sum{i=k+1}^{r} \sigma_i^2} = \text{最小可能误差} ∥A−Ak∥F=i=k+1∑rσi2 =最小可能误差
证明思路(不严格,但有启发性):
由外积形式:
A − A k = ∑ i = k + 1 r σ i u i v i T A - A_k = \sum_{i=k+1}^{r} \sigma_i u_i v_i^T A−Ak=i=k+1∑rσiuiviT
因为 u i u_i ui 和 v i v_i vi 都是标准正交的,所以:
∥ A − A k ∥ F 2 = ∑ i = k + 1 r σ i 2 ∥ u i v i T ∥ F 2 = ∑ i = k + 1 r σ i 2 \|A - A_k\|F^2 = \sum{i=k+1}^{r} \sigma_i^2 \|u_i v_i^T\|F^2 = \sum{i=k+1}^{r} \sigma_i^2 ∥A−Ak∥F2=i=k+1∑rσi2∥uiviT∥F2=i=k+1∑rσi2
任何其他秩为 k k k 的近似都无法做得更好(需要变分法严格证明)。
5.3 直觉:丢弃小奇异值 = 去噪
信号 vs 噪声:
- 大的奇异值:主要信息、结构化模式
- 小的奇异值:细节、噪声、随机性
截断 SVD 相当于自动去噪 :只保留最重要的 k k k 个"模式"。
能量视角:
矩阵的"总能量":
∥ A ∥ F 2 = ∑ i = 1 r σ i 2 \|A\|F^2 = \sum{i=1}^{r} \sigma_i^2 ∥A∥F2=i=1∑rσi2
前 k k k 个奇异值捕获的能量占比:
∑ i = 1 k σ i 2 ∑ i = 1 r σ i 2 \frac{\sum_{i=1}^{k} \sigma_i^2}{\sum_{i=1}^{r} \sigma_i^2} ∑i=1rσi2∑i=1kσi2
如果前几个奇异值远大于后面的(快速衰减),则低秩近似非常有效。
5.4 应用 1:图像压缩
设定 :灰度图像是 m × n m \times n m×n 的矩阵(每个元素是像素值)。
原始存储 : m n mn mn 个数。
SVD 压缩 :只存储前 k k k 个奇异值和对应的奇异向量:
- σ 1 , ... , σ k \sigma_1, \ldots, \sigma_k σ1,...,σk: k k k 个数
- u 1 , ... , u k u_1, \ldots, u_k u1,...,uk: m k mk mk 个数
- v 1 , ... , v k v_1, \ldots, v_k v1,...,vk: n k nk nk 个数
总存储量 : k ( m + n + 1 ) k(m + n + 1) k(m+n+1)。
压缩比:
k ( m + n + 1 ) m n \frac{k(m + n + 1)}{mn} mnk(m+n+1)
例如, m = n = 1000 m = n = 1000 m=n=1000, k = 50 k = 50 k=50,压缩比约为 10 % 10\% 10%。
效果:如果图像有结构(自然图像通常如此),前几个奇异值就能捕获主要轮廓,重建质量很好。
5.5 应用 2:推荐系统与矩阵补全
设定 :用户-物品评分矩阵 R ∈ R m × n R \in \mathbb{R}^{m \times n} R∈Rm×n:
- R i j R_{ij} Rij:用户 i i i 对物品 j j j 的评分
- 问题:大部分元素是缺失的(用户没有评价所有物品)
低秩假设:
- 假设用户的偏好由少数几个"隐因子"决定(如电影的类型)
- 因此 R R R 应该是低秩的(或近似低秩)
策略:
- 对已观测的评分,用 SVD(或矩阵分解)找到低秩近似 R k R_k Rk
- 用 R k R_k Rk 的对应元素来预测缺失的评分
Netflix Prize:这一思想的成功应用。
5.6 应用 3:主成分分析(PCA)
PCA 本质上就是对数据的协方差矩阵(或数据矩阵本身)做 SVD。
设定 :数据矩阵 X ∈ R n × d X \in \mathbb{R}^{n \times d} X∈Rn×d( n n n 个样本, d d d 个特征),已中心化(每列均值为 0)。
目标 :找到 k k k 个方向,使得数据在这些方向上的投影方差最大。
方法 :对 X X X 做 SVD:
X = U Σ V T X = U \Sigma V^T X=UΣVT
- V V V 的列向量:主成分方向(特征)
- Σ \Sigma Σ 的对角元素:对应方向上的标准差(奇异值)
- U Σ U \Sigma UΣ:降维后的数据(前 k k k 列)
降维:
X k = U k Σ k V k T X_k = U_k \Sigma_k V_k^T Xk=UkΣkVkT
保留最大的 k k k 个奇异值,重构误差最小。
6. SVD 与 EVD 的联系
6.1 核心关系
对于任意矩阵 A A A:
A T A = ( V Σ U T ) ( U Σ V T ) = V Σ 2 V T A^T A = (V \Sigma U^T)(U \Sigma V^T) = V \Sigma^2 V^T ATA=(VΣUT)(UΣVT)=VΣ2VT
A A T = ( U Σ V T ) ( V Σ U T ) = U Σ 2 U T A A^T = (U \Sigma V^T)(V \Sigma U^T) = U \Sigma^2 U^T AAT=(UΣVT)(VΣUT)=UΣ2UT
结论:
- V V V 是 A T A A^T A ATA 的特征向量矩阵
- U U U 是 A A T A A^T AAT 的特征向量矩阵
- A A A 的奇异值 σ i \sigma_i σi 是 A T A A^T A ATA(或 A A T A A^T AAT)的特征值 λ i \lambda_i λi 的平方根:
σ i = λ i \sigma_i = \sqrt{\lambda_i} σi=λi
6.2 特殊情况:对称矩阵
如果 A = A T A = A^T A=AT(对称矩阵),则:
A T A = A 2 A^T A = A^2 ATA=A2
设 A = Q Λ Q T A = Q \Lambda Q^T A=QΛQT 是特征分解,则:
A 2 = Q Λ 2 Q T A^2 = Q \Lambda^2 Q^T A2=QΛ2QT
此时 SVD 退化为:
A = Q ∣ Λ ∣ Q T A = Q |\Lambda| Q^T A=Q∣Λ∣QT
其中 ∣ Λ ∣ |\Lambda| ∣Λ∣ 是特征值的绝对值组成的对角矩阵。
注意:对称矩阵的特征值可以是负数,但奇异值始终非负。
例子:
A = [ 0 1 1 0 ] A = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} A=[0110]
- 特征值: λ 1 = 1 , λ 2 = − 1 \lambda_1 = 1, \lambda_2 = -1 λ1=1,λ2=−1
- 奇异值: σ 1 = 1 , σ 2 = 1 \sigma_1 = 1, \sigma_2 = 1 σ1=1,σ2=1
7. 计算方法简述
7.1 直接方法(不推荐)
理论上可以:
- 计算 A T A A^T A ATA
- 求 A T A A^T A ATA 的特征值和特征向量
- 计算奇异值和左奇异向量
问题:
- A T A A^T A ATA 的条件数是 A A A 的平方,数值不稳定
- 计算量大
7.2 实际算法
实际使用的是Golub-Kahan 双对角化 或分而治之法:
- 将 A A A 约化为双对角矩阵(通过正交变换)
- 对双对角矩阵求 SVD(高效且数值稳定)
现代库(NumPy、MATLAB、LAPACK)都实现了这些算法,直接调用即可。
Python 示例:
python
import numpy as np
A = np.random.randn(100, 50)
U, s, Vt = np.linalg.svd(A, full_matrices=False)
# 低秩近似
k = 10
A_k = U[:, :k] @ np.diag(s[:k]) @ Vt[:k, :]
error = np.linalg.norm(A - A_k, 'fro')
8. 总结
8.1 SVD 的核心价值
- 通用性:适用于任何矩阵(方阵、长矩阵、宽矩阵)
- 存在性:始终存在,且数值稳定
- 几何直观性:旋转-拉伸-旋转,清晰的物理意义
- 正交性 : U U U 和 V V V 都是正交矩阵,保持几何结构
8.2 SVD 的应用场景
| 应用 | 核心思想 |
|---|---|
| 低秩近似 | 截断小奇异值,去噪/压缩 |
| PCA | 找到方差最大的方向 |
| 推荐系统 | 矩阵补全,隐因子模型 |
| 图像处理 | 压缩、去噪、特征提取 |
| 伪逆计算 | 求解欠定/超定方程组 |
| 矩阵秩估计 | 通过奇异值分布判断数值秩 |
| 最小二乘 | min ∣ A x − b ∣ 2 \min |Ax - b|_2 min∣Ax−b∣2 的稳定解法 |
8.3 理解 SVD 的三个层次
- 代数层次 : A = U Σ V T A = U \Sigma V^T A=UΣVT,矩阵的分解
- 几何层次:任何线性变换 = 旋转 + 拉伸 + 旋转
- 语义层次:提取数据的"主要模式",过滤噪声
8.4 最终洞察
SVD 是线性代数的顶峰:
- 它统一了特征值分解(对称矩阵的特例)
- 它揭示了矩阵的四个基本子空间的完美结构
- 它是现代数据科学的基石(PCA、推荐系统、自然语言处理中的 LSA 等)
记住这句话:
"Every matrix is a rotation, followed by a stretch, followed by another rotation."
--- Gilbert Strang
SVD 将这个直觉变成了严格的数学定理,并赋予了它强大的计算能力。
附录:关键公式速查
| 概念 | 公式 |
|---|---|
| SVD 完整形式 | A = U Σ V T A = U \Sigma V^T A=UΣVT, U T U = I U^T U = I UTU=I, V T V = I V^T V = I VTV=I |
| 薄 SVD | A = U r Σ r V r T A = U_r \Sigma_r V_r^T A=UrΣrVrT, r = rank ( A ) r = \text{rank}(A) r=rank(A) |
| 外积形式 | A = ∑ i = 1 r σ i u i v i T A = \sum_{i=1}^{r} \sigma_i u_i v_i^T A=∑i=1rσiuiviT |
| 奇异值与特征值 | σ i = λ i ( A T A ) = λ i ( A A T ) \sigma_i = \sqrt{\lambda_i(A^T A)} = \sqrt{\lambda_i(A A^T)} σi=λi(ATA) =λi(AAT) |
| 低秩近似 | A k = ∑ i = 1 k σ i u i v i T A_k = \sum_{i=1}^{k} \sigma_i u_i v_i^T Ak=∑i=1kσiuiviT |
| 近似误差 | ∣ A − A k ∣ F = ∑ i = k + 1 r σ i 2 |A - A_k|F = \sqrt{\sum{i=k+1}^{r} \sigma_i^2} ∣A−Ak∣F=∑i=k+1rσi2 |
| 伪逆 | A + = V Σ + U T A^+ = V \Sigma^+ U^T A+=VΣ+UT, Σ i i + = 1 / σ i \Sigma^+_{ii} = 1/\sigma_i Σii+=1/σi (若 σ i ≠ 0 \sigma_i \neq 0 σi=0) |
| 四个子空间 | C ( A ) = span ( u 1 , ... , u r ) \mathcal{C}(A) = \text{span}(u_1, \ldots, u_r) C(A)=span(u1,...,ur) N ( A ) = span ( v r + 1 , ... , v n ) \mathcal{N}(A) = \text{span}(v_{r+1}, \ldots, v_n) N(A)=span(vr+1,...,vn) C ( A T ) = span ( v 1 , ... , v r ) \mathcal{C}(A^T) = \text{span}(v_1, \ldots, v_r) C(AT)=span(v1,...,vr) N ( A T ) = span ( u r + 1 , ... , u m ) \mathcal{N}(A^T) = \text{span}(u_{r+1}, \ldots, u_m) N(AT)=span(ur+1,...,um) |
下一章预告:我们将把这些线性代数工具应用到概率论中,理解多元高斯分布的几何结构,以及协方差矩阵的特征分解如何揭示数据的内在结构。