【Math for ML】矩陣分解(Matrix Decompositions) (下)

【Math for ML】矩陣分解(Matrix Decompositions) (上)html

I. 奇異值分解(Singular Value Decomposition)

1. 定義

Singular Value Decomposition (SVD)是線性代數中十分重要的矩陣分解方法,被稱爲「線性代數的基本理論」,由於它不只能夠運用於全部矩陣(不像特徵值分解只能用於方陣),並且奇異值老是存在的。app

  • SVD定理dom

    設一個矩陣\(A^{m×n}\)的秩爲\(r∈[0,min(m,n)]\),矩陣\(A\)的奇異值分解形式以下:
    \[A=U\Sigma V^T \tag{1.1.1}\]spa


    其中\(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\]3d

上面的\(\sigma_i\)稱爲奇異值(singular values),\(u_i\)稱爲左奇異值(left-singular values),\(v_i\)稱爲右奇異值(right-singular values)。另外一般默認有\(\sigma_1≥...≥\sigma_r≥0\)htm

注意:矩陣\(A\)是一個長方形矩陣,不必定是方陣,另外\(\Sigma\)和矩陣\(A\)的維度相同,而且其包含一個對角子矩陣(diagonal submatrix)。blog

2. 圖解SVD

對於奇異值分解能夠從兩個角度進行理解:一是將SVD視爲對基向量組(bases),即座標系的一順序變換,二是將SVD視爲對於數據點的變換。排序

通常來講要讓矩陣\(A\)做用於另外一個矩陣,都是左乘\(A\),因此由公式(1)可知道首先是\(V^T\),而後是\(\Sigma\),最後是矩陣\(U\)變換。因此矩陣\(A\)的變換其實是通過了三個步驟,以下圖所示(爲方便理解使用了二維和三維圖像進行說明):get

假設左上角的單位圓是在\(R^n\)空間,其標準基用\(B=[v_1,v_2]\)表示。左下角的圓也在\(R^n\)空間裏,其標準基用\(\tilde{B}=[e_1,e_2]\)表示,右下角的圓在\(R^m\)空間裏,其標準基用\(\tilde{C}\)表示。右上角的圓在\(R^m\)空間裏。it

  • 由左上角到左下角:能夠很清楚的看到\(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) (下)中介紹過任何對稱矩陣都能對角化,其公式以下:
\[S=S^T=PDP^T\]
因此一個對稱矩陣的奇異值分解是十分類似的,即
\[S=U\Sigma V^T\]
對比以後可知有\(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\)
\[ \begin{align} A^TA=PDP^T=P \left[ \begin{matrix} λ_1 & \cdots & 0 \\ \vdots & \ddots & \vdots \\ 0 & \cdots & λ_n \end{matrix} \right] P^T \tag{1.3.1} \\ \end{align} \]

由於任何矩陣均可作奇異值分解,故有
\[ A^TA=(U\Sigma V^T)^T(U\Sigma V^T)=V\Sigma^TU^TU\Sigma V^T \tag{1.3.2} \]

由於\(U\)爲正交矩陣,因此\(U^TU=I\),因此(1.3.2)式進一步簡化可得
\[ \begin{align} A^TA=V\Sigma^T\Sigma V^T=V \left[ \begin{matrix} \sigma_1^2 & \cdots & 0 \\ \vdots & \ddots & \vdots \\ 0 & \cdots & \sigma_n^2 \end{matrix} \right] V^T \tag{1.3.3} \\ \end{align} \]

由(1.3.1)和(1.3.3)可得
\[ V=P \\ \sigma_i^2=\lambda_i \tag{1.3.4} \]

因此任意矩陣\(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



MARSGGBO原創




2018-12-21

相關文章
相關標籤/搜索