I. 奇異值分解(Singular Value Decomposition)
1. 定義
Singular Value Decomposition (SVD)是線性代數中十分重要的矩陣分解方法,被稱為“線性代數的基本理論”,因為它不僅可以運用於所有矩陣(不像特征值分解只能用於方陣),而且奇異值總是存在的。
- SVD定理
設一個矩陣\(A^{m×n}\)的秩為\(r∈[0,min(m,n)]\),矩陣\(A\)的奇異值分解形式如下:
\[A=U\Sigma V^T \tag{1.1.1} \]
其中\(U∈R^{m×m}\)是一個正交矩陣(即列向量\(u_i,i=1,...,m\)互相正交),\(V∈R^{n×n}\)也是一個正交矩陣(即列向量\(v_i,i=1,...,n\)互相正交),\(\Sigma\)是一個\(m×n\)的矩陣,且滿足$$\Sigma_{ii}=\sigma_i≥0 \ \Sigma_{ij}=0,i≠j$$
上面的\(\sigma_i\)稱為奇異值(singular values),\(u_i\)稱為左奇異值(left-singular values),\(v_i\)稱為右奇異值(right-singular values)。另外通常默認有\(\sigma_1≥...≥\sigma_r≥0\) 。
注意:矩陣\(A\)是一個長方形矩陣,不一定是方陣,另外\(\Sigma\)和矩陣\(A\)的維度相同,並且其包含一個對角子矩陣(diagonal submatrix)。
2. 圖解SVD
對於奇異值分解可以從兩個角度進行理解:一是將SVD視為對基向量組(bases),即坐標系的一順序變換,二是將SVD視為對於數據點的變換。
一般來說要讓矩陣\(A\)作用於另一個矩陣,都是左乘\(A\),所以由公式(1)可知道首先是\(V^T\),然后是\(\Sigma\),最后是矩陣\(U\)變換。所以矩陣\(A\)的變換實際上是經過了三個步驟,如下圖所示(為方便理解使用了二維和三維圖像進行說明):
假設左上角的單位圓是在\(R^n\)空間,其標准基用\(B=[v_1,v_2]\)表示。左下角的圓也在\(R^n\)空間里,其標准基用\(\tilde{B}=[e_1,e_2]\)表示,右下角的圓在\(R^m\)空間里,其標准基用\(\tilde{C}\)表示。右上角的圓在\(R^m\)空間里。
- 由左上角到左下角:可以很清楚的看到\(V^T∈R^{n×n}\)的作用是對最開始的坐標軸(或標准基)(\(B\))還原成canonical basis(\(\tilde{B}\))。所以\(V^T\)的作用是將坐標軸由\(B\)轉變成\(\tilde{B}\)。
- 由左下角到右下角:經過\(\Sigma\)矩陣變換后從\(R^n\)空間轉換到了\(R^m\)空間。上圖是從二維空間變成了三維空間,即增加了z軸。當然維度也可以減少。此外單位圓還是處在\([e_1,e_2]\)空間內(即\(x,y\)軸組成的空間內),而且還會根據奇異值的大小做相應比例的伸縮。
- 右下角到右上角: 矩陣\(U\)繼續對\([e_1,e_2]\)基做變換,增加的那個維度(z軸)方向不做變化。
下圖更加形象地展示了奇異值分解的作用,變換過程和上面一樣,故不再贅述:
3. SVD計算
本小節內容不證明SVD的存在性。
在介紹SVD如何計算之前,首先回顧一下【Math for ML】矩陣分解(Matrix Decompositions) (下)中介紹過任何對稱矩陣都能對角化,其公式如下:
所以一個對稱矩陣的奇異值分解是十分相似的,即
對比之后可知有\(U=P,V=P,\Sigma=D\)
另外我們還需要知道的是對於任意矩陣\(A∈R^{m×n}\),其轉置矩陣和其本身相乘之后得到的矩陣都是對稱矩陣,即\(A^TA∈R^{n×n}\)和\(AA^T∈R^{m×m}\)均為對稱矩陣。(證明略)
接下來結合SVD公式給出對任意矩陣\(A∈R^{m×n}\)SVD計算的推導過程:
- 計算\(V\)
已知\(A^TA\)可作如下對角化運算,且其特征值\(λ_i≥0\)
因為任何矩陣都可做奇異值分解,故有
因為\(U\)為正交矩陣,所以\(U^TU=I\),所以(1.3.2)式進一步簡化可得
由(1.3.1)和(1.3.3)可得
所以任意矩陣\(A\)的右奇異矩陣\(V\)是\(A^TA\)的特征矩陣\(P\)。
- 計算\(U\)
和求\(V\)類似,這里不再贅述。\(U\)即為\(AA^T\)的特征矩陣。
- 計算\(\Sigma\)
注意上面兩步中已經求出了\(\sigma_i^2\),接下來要做的就是把上面所求出的\(\sigma_i^2\)從大到小排序並開根號,且\(\Sigma\)要與\(A\)的維度保持一致
具體的SVD計算示例可參見奇異值分解(SVD)計算過程示例。
4. 特征值分解(EVD) vs. 奇異值分解(SVD)
下面對特征值分解\(A=PDP^{-1}\)和奇異值分解\(A=U\Sigma V^T\)作如下總結和對比:
- SVD對於任意矩陣都存在;而EVD只能在n階方陣的基礎上才能被定義,而且只有當方陣滿秩,即有n個獨立的特征向量條件下才可以做特征值分解;
- 特征值分解后得到的矩陣\(P\)不必須是正交矩陣,也就是說\(P\)可以起到伸縮和旋轉的作用;而SVD中的\(U,V\)矩陣都必須是正交矩陣,所以這兩個矩陣只能起到旋轉變換的作用,起伸縮變換作用的是矩陣\(\Sigma\)。
- 特征值分解和奇異值分解都由以下三個線性映射步驟組成:
1.Change of basis in the domain
2.Independent scaling of each new basis vector and mapping from domain to co-domain
3.Change of basis in the co-domain