奇异值分解(Singular Value Decomposition, SVD)详解——从特征值到奇异值
奇异值分解(Singular Value Decomposition, SVD)。
1. 动机:从特征值分解到奇异值分解
我们知道,对于一个方阵 A∈Rn×nA \in \mathbb{R}^{n \times n}A∈Rn×n,特征值分解寻找一组特殊的向量 v\mathbf{v}v,使得 AAA 对 v\mathbf{v}v 的作用仅仅是进行缩放,即 Av=λvA\mathbf{v} = \lambda\mathbf{v}Av=λv。这个强大的工具仅限于方阵。
SVD 的目标是将这一概念推广到任意形状的矩阵 A∈Rm×nA \in \mathbb{R}^{m \times n}A∈Rm×n。它寻找两组标准正交基(一组在定义域 Rn\mathbb{R}^nRn,另一组在值域 Rm\mathbb{R}^mRm),使得矩阵 AAA 能将第一组基向量映射为第二组基向量的非负倍数。
2. 核心构造:利用对称矩阵的特征值
对于任意矩阵 A∈Rm×nA \in \mathbb{R}^{m \times n}A∈Rm×n,我们无法直接求其特征值。但是,我们可以构造两个特殊的对称半正定方阵:
- ATA∈Rn×nA^{\mathsf{T}}A \in \mathbb{R}^{n \times n}ATA∈Rn×n
- AAT∈Rm×mAA^{\mathsf{T}} \in \mathbb{R}^{m \times m}AAT∈Rm×m
这两个矩阵是SVD理论的基石,因为:
-
它们是对称的,因此保证存在一组标准正交的特征向量。
-
它们是半正定的,因此它们的特征值均为非负实数。
证明:设 v\mathbf{v}v 是 ATAA^{\mathsf{T}}AATA 的一个特征向量,对应特征值为 λ\lambdaλ。则:
∥Av∥22=(Av)T(Av)=vTATAv=vT(λv)=λvTv=λ∥v∥22∥Av∥22=(Av)T(Av)=vTATAv=vT(λv)=λvTv=λ∥v∥22 \|A\mathbf{v}\|_2^2 = (A\mathbf{v})^{\mathsf{T}}(A\mathbf{v}) = \mathbf{v}^{\mathsf{T}}A^{\mathsf{T}}A\mathbf{v} = \mathbf{v}^{\mathsf{T}}(\lambda\mathbf{v}) = \lambda \mathbf{v}^{\mathsf{T}}\mathbf{v} = \lambda \|\mathbf{v}\|_2^2\|A\mathbf{v}\|_2^2 = (A\mathbf{v})^{\mathsf{T}}(A\mathbf{v}) = \mathbf{v}^{\mathsf{T}}A^{\mathsf{T}}A\mathbf{v} = \mathbf{v}^{\mathsf{T}}(\lambda\mathbf{v}) = \lambda \mathbf{v}^{\mathsf{T}}\mathbf{v} = \lambda \|\mathbf{v}\|_2^2∥Av∥22=(Av)T(Av)=vTATAv=vT(λv)=λvTv=λ∥v∥22∥Av∥22=(Av)T(Av)=vTATAv=vT(λv)=λvTv=λ∥v∥22
因为 ∥Av∥22≥0\|A\mathbf{v}\|_2^2 \ge 0∥Av∥22≥0 且 ∥v∥22>0\|\mathbf{v}\|_2^2 > 0∥v∥22>0,所以 λ≥0\lambda \ge 0λ≥0。
3. SVD的数学推导与构造
步骤 1:定义奇异值与右奇异向量 (V)
- 考虑 n×nn \times nn×n 的对称半正定矩阵 ATAA^{\mathsf{T}}AATA。根据谱定理,它有 nnn 个非负实特征值,记为 λ1≥λ2≥⋯≥λn≥0\lambda_1 \ge \lambda_2 \ge \dots \ge \lambda_n \ge 0λ1≥λ2≥⋯≥λn≥0。
- 定义矩阵 AAA 的奇异值 (Singular Values) 为这些特征值的平方根:
σi=λi,i=1,…,n\sigma_i = \sqrt{\lambda_i}, \quad i=1, \dots, nσi=λi,i=1,…,n - ATAA^{\mathsf{T}}AATA 对应于这些特征值的 nnn 个特征向量构成 Rn\mathbb{R}^nRn 的一组标准正交基 {v1,v2,…,vn}\{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_n\}{v1,v2,…,vn}。这些向量被称为矩阵 AAA 的右奇异向量 (Right Singular Vectors)。
- 我们将这些右奇异向量作为列,构成一个 n×nn \times nn×n 的正交矩阵 VVV:
V=[v1,v2,…,V=[v1,v2,…,vn] V = [\mathbf{v}_1, \mathbf{v}_2, \dots,V = [\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_n]V=[v1,v2,…,V=[v1,v2,…,vn]
它满足 VTV=InV^{\mathsf{T}}V = I_nVTV=In。
步骤 2:构造左奇异向量 (U)
- 设矩阵 AAA 的秩为 rrr。可以证明,秩 rrr 等于非零奇异值的个数。因此,σ1≥⋯≥σr>0\sigma_1 \ge \dots \ge \sigma_r > 0σ1≥⋯≥σr>0,且 σr+1=⋯=σn=0\sigma_{r+1} = \dots = \sigma_n = 0σr+1=⋯=σn=0。
- 对于前 rrr 个非零奇异值所对应的右奇异向量 vi\mathbf{v}_ivi (i=1,…,ri=1, \dots, ri=1,…,r),我们定义一组新的向量 ui∈Rm\mathbf{u}_i \in \mathbb{R}^mui∈Rm:
ui=1σiAvi,ui=1σiAvi,i=1,…,r \mathbf{u}_i = \frac{1}{\sigma_i} A \mathbf{v}_i,\mathbf{u}_i = \frac{1}{\sigma_i} A \mathbf{v}_i, \quad i=1, \dots, rui=σi1Avi,ui=σi1Avi,i=1,…,r - 可以证明这组向量 {u1,…,ur}\{\mathbf{u}_1, \dots, \mathbf{u}_r\}{u1,…,ur} 是标准正交的。
- 正交性证明:对于 i≠ji \neq ji=j:
uiTuj=(1σiAvi)T(1σjAvj)=1σiσjviT(ATA)vj=1σiσjviT(λjvj)=λjσiσj(viTvj)uiTuj=(1σiAvi)T(1σjAvj)=1σiσjviT(ATA)vj=1σiσjviT(λjvj)=λjσiσj(viTvj)=0 \mathbf{u}_i^{\mathsf{T}}\mathbf{u}_j = \left(\frac{1}{\sigma_i} A \mathbf{v}_i\right)^{\mathsf{T}}\left(\frac{1}{\sigma_j} A \mathbf{v}_j\right) = \frac{1}{\sigma_i\sigma_j}\mathbf{v}_i^{\mathsf{T}}(A^{\mathsf{T}}A)\mathbf{v}_j = \frac{1}{\sigma_i\sigma_j}\mathbf{v}_i^{\mathsf{T}}(\lambda_j\mathbf{v}_j) = \frac{\lambda_j}{\sigma_i\sigma_j}(\mathbf{v}_i^{\mathsf{T}}\mathbf{v}_j)\mathbf{u}_i^{\mathsf{T}}\mathbf{u}_j = \left(\frac{1}{\sigma_i} A \mathbf{v}_i\right)^{\mathsf{T}}\left(\frac{1}{\sigma_j} A \mathbf{v}_j\right) = \frac{1}{\sigma_i\sigma_j}\mathbf{v}_i^{\mathsf{T}}(A^{\mathsf{T}}A)\mathbf{v}_j = \frac{1}{\sigma_i\sigma_j}\mathbf{v}_i^{\mathsf{T}}(\lambda_j\mathbf{v}_j) = \frac{\lambda_j}{\sigma_i\sigma_j}(\mathbf{v}_i^{\mathsf{T}}\mathbf{v}_j) = 0uiTuj=(σi1Avi)T(σj1Avj)=σiσj1viT(ATA)vj=σiσj1viT(λjvj)=σiσjλj(viTvj)uiTuj=(σi1Avi)T(σj1Avj)=σiσj1viT(ATA)vj=σiσj1viT(λjvj)=σiσjλj(viTvj)=0 - 单位长度证明:∥ui∥22=uiTui=1σi2∥Avi∥22=1λiλi=1\|\mathbf{u}_i\|_2^2 = \mathbf{u}_i^{\mathsf{T}}\mathbf{u}_i = \frac{1}{\sigma_i^2}\|A\mathbf{v}_i\|_2^2 = \frac{1}{\lambda_i}\lambda_i = 1∥ui∥22=uiTui=σi21∥Avi∥22=λi1λi=1。
- 正交性证明:对于 i≠ji \neq ji=j:
- 这 rrr 个向量构成了 Col(A)\text{Col}(A)Col(A)(AAA 的列空间)的一组标准正交基。我们可以通过Gram-Schmidt等方法,将这组基扩充为整个 Rm\mathbb{R}^mRm 空间的一组标准正交基 {u1,…,um}\{\mathbf{u}_1, \dots, \mathbf{u}_m\}{u1,…,um}。这些向量被称为矩阵 AAA 的左奇异向量 (Left Singular Vectors)。
- 我们将这些左奇异向量作为列,构成一个 m×mm \times mm×m 的正交矩阵 UUU:
U=[u1,uU=[u1,u2,…,um] U = [\mathbf{u}_1, \mathbf{u}_U = [\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_m]U=[u1,uU=[u1,u2,…,um]
它满足 UTU=ImU^{\mathsf{T}}U = I_mUTU=Im。同时,这些 ui\mathbf{u}_iui 恰好是矩阵 AATAA^{\mathsf{T}}AAT 的特征向量。
步骤 3:组建SVD
由步骤2的定义,我们有 Avi=σiuiA\mathbf{v}_i = \sigma_i \mathbf{u}_iAvi=σiui 对于 i=1,…,ri=1, \dots, ri=1,…,r 成立。
对于 i>ri > ri>r,奇异值 σi=0\sigma_i=0σi=0,此时 ∥Avi∥22=λi=0\|A\mathbf{v}_i\|_2^2 = \lambda_i = 0∥Avi∥22=λi=0,这意味着 Avi=0A\mathbf{v}_i = \mathbf{0}Avi=0。因此,关系式 Avi=σiuiA\mathbf{v}_i = \sigma_i \mathbf{u}_iAvi=σiui 对所有 i=1,…,ni=1, \dots, ni=1,…,n 均成立。
将此关系写成矩阵形式:
AV=A[v1,…,vn]=[Av1,…,Avn]=[σ1u1,…,σrur,0,…,AV=A[v1,…,vn]=[Av1,…,Avn]=[σ1u1,…,σrur,0,…,0] A V = A[\mathbf{v}_1, \dots, \mathbf{v}_n] = [A\mathbf{v}_1, \dots, A\mathbf{v}_n] = [\sigma_1\mathbf{u}_1, \dots, \sigma_r\mathbf{u}_r, \mathbf{0}, \dots,A V = A[\mathbf{v}_1, \dots, \mathbf{v}_n] = [A\mathbf{v}_1, \dots, A\mathbf{v}_n] = [\sigma_1\mathbf{u}_1, \dots, \sigma_r\mathbf{u}_r, \mathbf{0}, \dots, \mathbf{0}]AV=A[v1,…,vn]=[Av1,…,Avn]=[σ1u1,…,σrur,0,…,AV=A[v1,…,vn]=[Av1,…,Avn]=[σ1u1,…,σrur,0,…,0]
另一方面,我们构造一个 m×nm \times nm×n 的对角矩阵 Σ\SigmaΣ,其对角线元素为奇异值:
Σ=(σ1σ2⋱σr0⋱)m×n \Sigma = \begin{pmatrix}
\sigma_1 & & & & \\
& \sigma_2 & & & \\
& & \ddots & & \\
& & & \sigma_r & \\
& & & & 0 & \\
& & & & & \ddots
\end{pmatrix}_{m \times n} Σ=σ1σ2⋱σr0⋱m×n计算 UΣU\SigmaUΣ:UΣ=[u1,…,um]Σ=[σ1u1,…,σrur,0,…,0] U\Sigma = [\mathbf{u}_1, \dots, \mathbf{u}_m] \Sigma = [\sigma_1\mathbf{u}_1, \dots, \sigma_r\mathbf{u}_r, \mathbf{0}, \dots, \mathbf{0}] UΣ=[u1,…,um]Σ=[σ1u1,…,σrur,0,…,0]
因此,我们得到 AV=UΣAV = U\SigmaAV=UΣ。由于 VVV 是正交矩阵,V−1=VTV^{-1} = V^{\mathsf{T}}V−1=VT,两边右乘 VTV^{\mathsf{T}}VT 得到最终因此,我们得到 AV=UΣAV = U\SigmaAV=UΣ。由于 VVV 是正交矩阵,V−1=VTV^{-1} = V^{\mathsf{T}}V−1=VT,两边右乘 VTV^{\mathsf{T}}VT 得到最终的SVD形式:A=UΣVT A = U \Sigma V^{\mathsf{T}} A=UΣVT
4. SVD定理的完整陈述
定理 (奇异值分解):对于任意矩阵 A∈Rm×nA \in \mathbb{R}^{m \times n}A∈Rm×n,其秩为 rrr,必存在两个正交矩阵 U∈Rm×mU \in \mathbb{R}^{m \times m}U∈Rm×m 和 V∈Rn×nV \in \mathbb{R}^{n \times n}V∈Rn×n,以及一个 m×nm \times nm×n 的对角矩阵 Σ\SigmaΣ,使得:
A=UΣVTA = U \Sigma V^{\mathsf{T}}A=UΣVT
其中矩阵 Σ\SigmaΣ 的对角线元素 σ1≥σ2≥⋯≥σr>0\sigma_1 \ge \sigma_2 \ge \dots \ge \sigma_r > 0σ1≥σ2≥⋯≥σr>0 且 σi=0\sigma_i=0σi=0 对于 i>ri>ri>r,被称为 AAA 的奇异值。UUU 的列向量 ui\mathbf{u}_iui 称为左奇异向量,VVV 的列向量 vi\mathbf{v}_ivi 称为右奇异向量。
5. 几何意义
SVD的几何意义是:任意线性变换 A:Rn→RmA: \mathbb{R}^n \to \mathbb{R}^mA:Rn→Rm 都可以被分解为三步操作:
- 一个旋转或反射 (VTV^{\mathsf{T}}VT),将 Rn\mathbb{R}^nRn 中的标准正交基旋转到右奇异向量基 {vi}\{\mathbf{v}_i\}{vi}。
- 一个缩放 (Σ\SigmaΣ),沿着新的坐标轴方向,将分量进行 σi\sigma_iσi 倍的缩放,并将维度从 nnn 调整到 mmm。
- 另一个旋转或反射 (UUU),将 Rm\mathbb{R}^mRm 中的坐标轴旋转到左奇异向量基 {ui}\{\mathbf{u}_i\}{ui}。
本质上,SVD表明任何线性变换都会将 Rn\mathbb{R}^nRn 中的一个单位球体,映射为 Rm\mathbb{R}^mRm 中的一个椭球体(可能是退化的)。右奇异向量 vi\mathbf{v}_ivi 是球体上的正交轴,左奇异向量 ui\mathbf{u}_iui 是椭球体的主轴方向,而奇异值 σi\sigma_iσi 则是对应主轴的半轴长度。