【机器学习教程】第03章:SVD与矩阵分解

第03章:SVD与矩阵分解

核心思想:任何矩阵都可以看作"旋转-拉伸-旋转"的组合。SVD 是线性代数的终极武器。


前言

如果说线性代数有皇冠,那么奇异值分解 (SVD) 就是皇冠上的明珠。Gilbert Strang 教授称其为"线性代数的顶峰"。

在机器学习中,数据往往是矩阵,而 SVD 是理解数据结构(Data Structure)、降维(PCA)、去噪和推荐系统的万能钥匙

本章我们将从几何变换 的视角出发,一步步揭开 SVD 的面纱,并证明任何矩阵(无论方圆)都可以被分解为旋转、拉伸、再旋转


目录

  1. 引言:从圆到椭圆

  2. 特征分解(EVD):对称矩阵的美学

  3. 奇异值分解(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))
  4. [四个基本子空间的 SVD 视角](#四个基本子空间的 SVD 视角)

  5. [低秩近似: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))
  6. [SVD 与 EVD 的联系](#SVD 与 EVD 的联系)

  7. 计算方法简述

  8. 总结

    • 8.1 [SVD 的核心价值](#SVD 的核心价值)
    • 8.2 [SVD 的应用场景](#SVD 的应用场景)
    • 8.3 [理解 SVD 的三个层次](#理解 SVD 的三个层次)
    • 8.4 最终洞察
  9. 附录:关键公式速查


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 的三步曲:

  1. Q T Q^T QT:旋转到特征向量构成的坐标系
  2. Λ \Lambda Λ:沿着新坐标轴拉伸(特征值决定拉伸倍数)
  3. 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

  1. 第一步: 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 的特征向量)张成的坐标系
    • 物理意义:选择"最合适"的输入方向
  2. 第二步: Σ ( V T x ) \Sigma (V^T x) Σ(VTx)(沿主轴拉伸)

    • 对角矩阵,沿着各坐标轴独立缩放
    • 第 i i i 个分量乘以 σ i \sigma_i σi
    • 物理意义:信息的放大/缩小
  3. 第三步: 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,有四个基本子空间:

  1. 列空间 (Column Space): C ( A ) ⊆ R m \mathcal{C}(A) \subseteq \mathbb{R}^m C(A)⊆Rm,维度 r r r
  2. 零空间 (Null Space): N ( A ) ⊆ R n \mathcal{N}(A) \subseteq \mathbb{R}^n N(A)⊆Rn,维度 n − r n - r n−r
  3. 行空间 (Row Space): C ( A T ) ⊆ R n \mathcal{C}(A^T) \subseteq \mathbb{R}^n C(AT)⊆Rn,维度 r r r
  4. 左零空间 (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 应该是低秩的(或近似低秩)

策略

  1. 对已观测的评分,用 SVD(或矩阵分解)找到低秩近似 R k R_k Rk
  2. 用 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 直接方法(不推荐)

理论上可以:

  1. 计算 A T A A^T A ATA
  2. 求 A T A A^T A ATA 的特征值和特征向量
  3. 计算奇异值和左奇异向量

问题

  • A T A A^T A ATA 的条件数是 A A A 的平方,数值不稳定
  • 计算量大

7.2 实际算法

实际使用的是Golub-Kahan 双对角化分而治之法

  1. 将 A A A 约化为双对角矩阵(通过正交变换)
  2. 对双对角矩阵求 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 的核心价值

  1. 通用性:适用于任何矩阵(方阵、长矩阵、宽矩阵)
  2. 存在性:始终存在,且数值稳定
  3. 几何直观性:旋转-拉伸-旋转,清晰的物理意义
  4. 正交性 : 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 的三个层次

  1. 代数层次 : A = U Σ V T A = U \Sigma V^T A=UΣVT,矩阵的分解
  2. 几何层次:任何线性变换 = 旋转 + 拉伸 + 旋转
  3. 语义层次:提取数据的"主要模式",过滤噪声

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)

下一章预告:我们将把这些线性代数工具应用到概率论中,理解多元高斯分布的几何结构,以及协方差矩阵的特征分解如何揭示数据的内在结构。

相关推荐
EmbedLinX3 小时前
FreeRTOS 学习笔记
c语言·笔记·学习
minhuan3 小时前
大模型应用:算力分层治理:基于大模型算力四层匹配体系的优化方案.72
人工智能·机器学习·算力的核心构成·算力分层治理
BlackWolfSky3 小时前
鸿蒙中级课程笔记8—Native适配开发
笔记·华为·harmonyos
liliangcsdn3 小时前
GRPO优化函数和改进策略的探索分析
人工智能·机器学习
AI视觉网奇3 小时前
ue 模拟说话
笔记·学习·ue5
孞㐑¥3 小时前
算法—链表
开发语言·c++·经验分享·笔记·算法
BlackWolfSky3 小时前
鸿蒙中级课程笔记7—给应用添加通知
笔记·华为·harmonyos
xqqxqxxq3 小时前
结构体(Java 类)实战题解笔记(持续更新)
java·笔记·算法
Gain_chance3 小时前
27-学习笔记尚硅谷数仓搭建-数据仓库DWD层介绍及其事务表(行为)相关概念
大数据·数据仓库·笔记·学习