Singular Values Decomposition 奇异值分解(SVD)


1. Significance 意义

SVD也是对矩阵进行分解,但是和特征分解不同,SVD并不要求要分解的矩阵为方阵。


2. SVD Conception 奇异值分解思想

奇异值分解(SVD)是特征分解的延伸与拓展。因为特征分解只能对方阵进行分解,所以我们把一般矩阵转化成方阵,再对方阵进行特征分解,最后整理一下分解的结果,归纳出一般矩阵的奇异值分解形式。

转化
矩阵
方阵
特征值分解

甚至可以把奇异值理解为特征值的一般形式,特征值为奇异值的方阵形式。

一般形式
方阵形式
特征值
奇异值

3. Matrix SVD Exression 矩阵奇异值分解形式

A = U Σ V T A=UΣV^T A=UΣVT

其中 U U U是一个 m × m m×m m×m的左奇异矩阵, V V V是一个 n × n n×n n×n的右奇异矩阵, U U U V V V都是正交矩阵,即满足 U T U = I U^TU=I UTU=I V T V = I V^TV=I VTV=I Σ Σ Σ是一个 m × n m×n m×n的奇异值矩阵,并且是一个对角矩阵,除了主对角线上的元素以外全为0,即满足 Σ T Σ = Σ Σ T = Σ 2 Σ^TΣ=ΣΣ^T=Σ^2 ΣTΣ=ΣΣT=Σ2,主对角线上的每个元素都称为奇异值,下图可以很形象的看出上面SVD的定义:
Singular Values Decomposition 奇异值分解(SVD)


4. SVD Derivation 奇异值分解推导

4.1 The Derivation of Right Singular Matrix V V V 右奇异矩阵V的推导

我们将矩阵 A A A的转置和矩阵 A A A本身做矩阵乘法,就会得到 n × n n×n n×n的一个方阵 A T A A^TA ATA这里要注意矩阵乘法的顺序是 A T A A^TA ATA,而不是 A A T AA^T AAT,如果你没注意到这个点,可以看完文章之后再来回顾)。既然 A T A A^TA ATA是方阵,那么我们就可以进行特征分解,得到的特征值和特征向量满足下式:

( A T A ) v i = λ i v i (A^TA)v_i=λ_iv_i (ATA)vi=λivi

这样我们就可以得到矩阵 A T A A^TA ATA n n n个特征值和对应的 n n n个特征向量 v v v了。将矩阵 A T A A^TA ATA的所有特征向量张成一个 n × n n×n n×n的特征矩阵 V V V,就是我们矩阵 A A A的SVD分解形式的右奇异矩阵 V V V。一般我们将右奇异矩阵 V V V中的每个特征向量 v v v叫做矩阵 A A A的右奇异向量。

这个问题如果没注意到,也是要回顾。
问:为什么矩阵 A T A A^TA ATA的特征矩阵 V V V就是矩阵 A A A的SVD分解形式的右奇异矩阵 V V V呢?

证明思路:

  1. 先证明矩阵 A A A的SVD分解形式的右奇异矩阵 V V V就是矩阵 A T A A^TA ATA的特征矩阵 V V V
  2. 再推出矩阵 A T A A^TA ATA的特征分解形式的特征矩阵 V V V就是矩阵 A A A的SVD分解形式的右奇异矩阵 V V V
SVD分解
证明
反向推出
矩阵A
右奇异矩阵V
矩阵A^TA的特征矩阵

证明:

如果矩阵 V V V是矩阵矩阵 A A A的SVD分解形式的右奇异矩阵,则矩阵 V V V满足

A = U Σ V T A=UΣV^T A=UΣVT

对矩阵 A A A转置得

A T = V Σ T U T A^T=VΣ^TU^T AT=VΣTUT

于是

A T A = V Σ T U T U Σ V T = V Σ T Σ V T = V Σ 2 V T A^TA=V\varSigma ^TU^TU\varSigma V^T \\ =V\varSigma ^T\varSigma V^T \\ =V\varSigma ^2V^T ATA=VΣTUTUΣVT=VΣTΣVT=VΣ2VT

这就是特征分解的形式 A = V Σ V T A=V\varSigma V^T A=VΣVT,矩阵 A T A A^TA ATA对应的特征值矩阵为 Σ 2 \varSigma ^2 Σ2。所以,矩阵 A A A的SVD分解形式的右奇异矩阵 V V V就是矩阵 A T A A^TA ATA的特征矩阵 V V V

如果矩阵 V V V是矩阵 A T A A^TA ATA的特征矩阵,假设对应的特征值矩阵是 Σ 2 \varSigma ^2 Σ2(这种形式对角矩阵是可以实现的),以及一个正交矩阵 U U U,则可以推出

A T A = V Σ T U T U Σ V T ⇓ A = U Σ V T A^TA=V\varSigma ^TU^TU\varSigma V^T \\ \Downarrow \\ A=UΣV^T ATA=VΣTUTUΣVTA=UΣVT

所以,矩阵 A T A A^TA ATA的特征矩阵 V V V就是矩阵 A A A的SVD分解形式的右奇异矩阵 V V V

4.1 The Derivation of Right Singular Matrix U U U 左奇异矩阵U的推导

左奇异矩阵 U U U的推导类似于右奇异矩阵 V V V的推导。

我们将矩阵 A A A本身和矩阵 A A A的转置做矩阵乘法,就会得到 n × n n×n n×n的一个方阵 A A T AA^T AAT。既然 A A T AA^T AAT方阵,那么我们就可以进行特征分解,得到的特征值和特征向量满足下式:

( A A T ) u i = λ i u i (AA^T)u_i=λ_iu_i (AAT)ui=λiui

这样我们就可以得到矩阵 A A T AA^T AAT n n n个特征值和对应的 n n n个特征向量 u u u了。将矩阵 A A T AA^T AAT的所有特征向量张成一个 n × n n×n n×n的特征矩阵 U U U,就是我们矩阵 A A A的SVD分解形式的左奇异矩阵 U U U。一般我们将左奇异矩阵 U U U中的每个特征向量 u u u叫做矩阵 A A A的左奇异向量。

4.3 The Derivation of Matrix Σ Σ Σ 奇异值矩阵Σ的推导

4.3.1 方法一

A = U Σ V T ⇓ A V = U Σ ⇓ A v i = u i σ i ⇓ σ i = A v i u i A=UΣV^T \\ \Downarrow \\ AV=UΣ \\ \Downarrow \\ Av_i=u_i \sigma_i \\ \Downarrow \\ \sigma_i = \frac{Av_i}{u_i} A=UΣVTAV=UΣAvi=uiσiσi=uiAvi

其中,最中间的步骤,由矩阵变化成向量的形式,是通过矩阵计算过程得到的,可以找个例子,实际计算一下。

用这个方法,可以直接算出奇异值矩阵 Σ Σ Σ的所有奇异值 σ i \sigma_i σi

4.3.2 方法二

根据上面的证明,存在这样的关系

A T A = V Σ 2 V T A^TA=V\varSigma ^2V^T ATA=VΣ2VT

可以看出矩阵 A T A A^TA ATA特征值矩阵 Σ 2 \varSigma ^2 Σ2等于矩阵 A A A奇异值矩阵 Σ \varSigma Σ的平方,也就是说特征值和奇异值满足如下关系:

σ i = λ i \sigma_i=\sqrt{λ_i} σi=λi

用这个方法,可以先计算矩阵 A T A A^TA ATA的特征值 λ i λ_i λi,在计算矩阵 A A A奇异值 σ i \sigma_i σi


5. Conclusion 小结

  1. SVD的计算用计算机计算就可以了,更重要的是理解它的原理。
  2. SVD的缺点是分解出的矩阵解释性不强。

6. Reference 参考文献

  1. Eigen Decomposition 特征分解