从特征分解推导奇异值分解(SVD)的方法咨询
嗨,这个问题问到了SVD推导的核心逻辑,其实只要把对称矩阵$A AT$和$AT A$的特征分解结果关联起来,一步步验证推导,就能得到SVD的表达式。我来给你拆解整个过程:
先明确前提共识
首先要记住一个关键结论:$S_L=AAT$($m×m$矩阵)和$S_R=ATA$($n×n$矩阵)的非零特征值完全相同。假设$A$的秩为$r$,这些非零特征值可以记为$\sigma_1^2, \sigma_2^2, ..., \sigma_r^2$,对应的对角矩阵$\Lambda$就是把这些值(包括后面补的$m-r$或$n-r$个0)放在对角线上的矩阵,那么$\sqrt{\Lambda}$就是对角元为$\sigma_1, \sigma_2, ..., \sigma_r, 0, ..., 0$的对角矩阵,这些$\sigma_i$就是$A$的奇异值。
第一步:从$AA^T$的特征分解构造$V$的列向量
已知$AA^T = U \Lambda_{S_L} U^T$,把$U$按列分块为$U = [u_1, u_2, ..., u_m]$,其中$u_i$是$AAT$的单位特征向量,满足$AAT u_i = \sigma_i^2 u_i$(当$i≤r$时$\sigma_i≠0$,$i>r$时$\sigma_i=0$)。
对于$i≤r$,我们构造向量$v_i = \frac{1}{\sigma_i} A^T u_i$,先验证它是单位向量:
$$
v_i^T v_i = \frac{1}{\sigma_i^2} u_i^T A A^T u_i = \frac{1}{\sigma_i^2} u_i^T (\sigma_i^2 u_i) = u_i^T u_i = 1
$$
因为$u_i$是单位特征向量,所以$v_i$也是单位向量。
第二步:验证$v_i$是$A^TA$的特征向量
对$v_i$左乘$A^TA$:
$$
A^TA v_i = A^TA \left( \frac{1}{\sigma_i} A^T u_i \right) = \frac{1}{\sigma_i} A^T (AA^T u_i) = \frac{1}{\sigma_i} A^T (\sigma_i^2 u_i) = \sigma_i A^T u_i = \sigma_i^2 \cdot \frac{1}{\sigma_i} A^T u_i = \sigma_i^2 v_i
$$
这说明$v_i$正是$ATA$对应特征值$\sigma_i2$的单位特征向量,也就是$S_R=A^TA=V \Lambda_{S_R} VT$中$V$的列向量。对于$i>r$的情况,$u_i$是$AAT$的零特征向量($AA^T u_i=0$),此时$A^T u_i=0$,我们可以取$A^TA$的零空间正交基作为$V$的后$n-r$列,保证$V$是正交矩阵。
第三步:推导$A = U \sqrt{\Lambda} V^T$
因为$U$和$V$都是正交矩阵,满足$U^T U = I_m$、$V^T V = I_n$,所以可以把$A$改写为:
$$
A = I_m A I_n = U U^T A V V^T
$$
现在只需要证明$U^T A V = \sqrt{\Lambda}$:
- 当$i,j ≤ r$时,由$A v_j = \sigma_j u_j$(从$v_j = \frac{1}{\sigma_j} A^T u_j$变形可得),结合$U$的正交性,$u_i^T u_j = \delta_{ij}$(克罗内克函数,仅当$i=j$时为1,否则为0),所以$u_i^T A v_j = \sigma_j u_i^T u_j = \sigma_i \delta_{ij}$。
- 当$i > r$时,$u_i$是$AAT$的零特征向量,即$AT u_i = 0$,所以$u_i^T A = 0$,此时$u_i^T A v_j = 0$对任意$j$成立。
- 当$j > r$时,$v_j$是$A^TA$的零特征向量,即$A v_j = 0$,所以$u_i^T A v_j = 0$对任意$i$成立。
这说明$U^T A V$就是对角元为$\sigma_1, \sigma_2, ..., \sigma_r, 0, ..., 0$的对角矩阵,也就是$\sqrt{\Lambda}$。代入回之前的式子,就得到:
$$
A = U \sqrt{\Lambda} V^T
$$
这就是标准的奇异值分解形式啦。
备注:内容来源于stack exchange,提问作者ady

