奇異值分解的揭祕(一):矩陣的奇異值分解過程

轉載來源:

作者:Xinyu Chen
鏈接:https://zhuanlan.zhihu.com/p/26306568
來源:知乎

 

矩陣的奇異值分解(singular value decomposition,簡稱SVD)是線性代數中很重要的內容,並且奇異值分解過程也是線性代數中相似對角化分解(也被稱爲特徵值分解,eigenvalue decomposition,簡稱EVD)的延伸。因此,以下將從線性代數中最基礎的矩陣分解開始講起,引出奇異值分解的定義,並最終給出奇異值分解的低秩逼近問題相關的證明過程。

1 線性代數中的矩陣分解

我們在學習線性代數時,就已經接觸了線性代數中的兩個重要定理,即對角化定理和相似對角化定理,在這裏,我們先簡單地回顧一下這兩個定理。另外,在接下來的篇幅裏,我們所提到的矩陣都是指由實數構成的矩陣,即實矩陣。

給定一個大小爲m\times m的矩陣A(是方陣),其對角化分解可以寫成

A=U\Lambda U^{-1}

其中,U的每一列都是特徵向量,\Lambda對角線上的元素是從大到小排列的特徵值,若將U記作U=\left( \vec{u}_1,\vec{u}_2,...,\vec{u}_m \right),則

AU=A\left(\vec{u}_1,\vec{u}_2,...,\vec{u}_m\right)=\left(\lambda_1 \vec{u}_1,\lambda_2 \vec{u}_2,...,\lambda_m \vec{u}_m\right)

=\left(\vec{u}_1,\vec{u}_2,...,\vec{u}_m\right) \left[ \begin{array}{ccc} \lambda_1 & \cdots & 0 \\ \vdots & \ddots & \vdots \\ 0 & \cdots & \lambda_m \\ \end{array} \right]

\Rightarrow AU=U\Lambda \Rightarrow A=U\Lambda U^{-1}

更爲特殊的是,當矩陣A是一個對稱矩陣時,則存在一個對稱對角化分解,即

A=Q\Lambda Q^T

其中,Q的每一列都是相互正交的特徵向量,且是單位向量,\Lambda對角線上的元素是從大到小排列的特徵值。

當然,將矩陣Q記作Q=\left(\vec{q}_1,\vec{q}_2,...,\vec{q}_m\right),則矩陣A也可以寫成如下形式:

A=\lambda_1 \vec{q}_1\vec{q}_1^T+\lambda_2 \vec{q}_2\vec{q}_2^T+...+\lambda_m \vec{q}_m\vec{q}_m^T

舉一個簡單的例子,如給定一個大小爲2\times 2的矩陣A=\left[ \begin{array}{cc} 2 & 1 \\ 1 & 2 \\ \end{array} \right],根據\left|\lambda I-A\right|=\left| \begin{array}{cc} \lambda-2 & -1 \\ -1 & \lambda-2 \\ \end{array} \right|=0求得特徵值爲\lambda_1=3\lambda_2=1,相應地,\vec{q}_1=\left(\frac{\sqrt{2}}{2}, \frac{\sqrt{2}}{2}\right)^T\vec{q}_2=\left(-\frac{\sqrt{2}}{2}, \frac{\sqrt{2}}{2}\right)^T,則

A=\lambda_1 \vec{q}_1\vec{q}_1^T+\lambda_2 \vec{q}_2\vec{q}_2^T =\left[ \begin{array}{cc} 2 & 1 \\ 1 & 2 \\ \end{array} \right].
這樣,我們就很容易地得到了矩陣A的對稱對角化分解。

2 奇異值分解的定義

在上面,對於對稱的方陣而言,我們能夠進行對稱對角化分解,試想:對稱對角化分解與奇異值分解有什麼本質關係呢?

當給定一個大小爲m\times n的矩陣A,雖然矩陣A不一定是方陣,但大小爲m\times mAA^Tn\times nA^TA卻是對稱矩陣,若AA^T=P\Lambda_1 P^TA^TA=Q\Lambda_2Q^T,則矩陣A的奇異值分解爲

A=P\Sigma Q^T

其中,矩陣P=\left(\vec{p}_1,\vec{p}_2,...,\vec{p}_m\right)的大小爲m\times m,列向量\vec{p}_1,\vec{p}_2,...,\vec{p}_mAA^T的特徵向量,也被稱爲矩陣A左奇異向量(left singular vector);矩陣Q=\left(\vec{q}_1,\vec{q}_2,...,\vec{q}_n\right)的大小爲n\times n,列向量\vec{q}_1,\vec{q}_2,...,\vec{q}_nA^TA的特徵向量,也被稱爲矩陣A右奇異向量(right singular vector);矩陣\Lambda_1大小爲m\times m,矩陣\Lambda_2大小爲n\times n,兩個矩陣對角線上的非零元素相同(即矩陣AA^T和矩陣A^TA的非零特徵值相同,推導過程見附錄1);矩陣\Sigma的大小爲m\times n,位於對角線上的元素被稱爲奇異值(singular value)。

接下來,我們來看看矩陣\Sigma與矩陣AA^T和矩陣A^TA的關係。令常數k是矩陣A的秩,則k\leq \min\left( m,n \right),當m\ne n時,很明顯,矩陣\Lambda_1和矩陣\Lambda_2的大小不同,但矩陣\Lambda_1和矩陣\Lambda_2對角線上的非零元素卻是相同的,若將矩陣\Lambda_1(或矩陣\Lambda_2)對角線上的非零元素分別爲\lambda_1,\lambda_2,...,\lambda_k,其中,這些特徵值也都是非負的,再令矩陣\Sigma對角線上的非零元素分別爲\sigma_1,\sigma_2,...,\sigma_k,則

\sigma_1=\sqrt{\lambda_1},\sigma_2=\sqrt{\lambda_2},...,\sigma_k=\sqrt{\lambda_k}

即非零奇異值的平方對應着矩陣\Lambda_1(或矩陣\Lambda_2)的非零特徵值,到這裏,我們就不難看出奇異值分解與對稱對角化分解的關係了,即我們可以由對稱對角化分解得到我們想要的奇異值分解。

爲了便於理解,在這裏,給定一個大小爲2\times 2的矩陣A=\left[ \begin{array}{cc} 4 & 4 \\ -3 & 3 \\ \end{array} \right],雖然這個矩陣是方陣,但卻不是對稱矩陣,我們來看看它的奇異值分解是怎樣的。

AA^T=\left[ \begin{array}{cc} 32 & 0 \\ 0 & 18 \\ \end{array} \right]進行對稱對角化分解,得到特徵值爲\lambda_1=32\lambda_2=18,相應地,特徵向量爲\vec{p}_1=\left( 1,0 \right) ^T\vec{p}_2=\left(0,1\right)^T;由A^TA=\left[ \begin{array}{cc} 25 & 7 \\ 7 & 25 \\ \end{array} \right]進行對稱對角化分解,得到特徵值爲\lambda_1=32\lambda_2=18,相應地,特徵向量爲\vec{q}_1=\left(\frac{\sqrt{2}}{2},\frac{\sqrt{2}}{2}\right)^T\vec{q}_2=\left(-\frac{\sqrt{2}}{2}, \frac{\sqrt{2}}{2}\right)^T。取\Sigma =\left[ \begin{array}{cc} 4\sqrt{2} & 0 \\ 0 & 3\sqrt{2} \\ \end{array} \right],則矩陣A的奇異值分解爲

A=P\Sigma Q^T=\left(\vec{p}_1,\vec{p}_2\right)\Sigma \left(\vec{q}_1,\vec{q}_2\right)^T

=\left[ \begin{array}{cc} 1 & 0 \\ 0 & 1 \\ \end{array} \right] \left[ \begin{array}{cc} 4\sqrt{2} & 0 \\ 0 & 3\sqrt{2} \\ \end{array} \right] \left[ \begin{array}{cc} \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} \\ -\frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} \\ \end{array} \right] =\left[ \begin{array}{cc} 4 & 4 \\ -3 & 3 \\ \end{array} \right].

若矩陣A不再是一個方陣,而是一個大小爲3\times 2A=\left[ \begin{array}{cc} 1 & 2 \\ 0 & 0 \\ 0 & 0 \\ \end{array} \right],由AA^T=\left[ \begin{array}{ccc} 5 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \\ \end{array} \right]得到特徵值爲\lambda_1=5\lambda_2=\lambda_3=0,特徵向量爲\vec{p}_1=\left(1,0,0\right)^T\vec{p}_2=\left(0,1,0\right)^T\vec{p}_3=\left(0,0,1\right)^T;由A^TA=\left[ \begin{array}{cc} 1 & 2 \\ 2 & 4 \\ \end{array} \right]得到特徵值爲\lambda_1=5\lambda_2=0,特徵向量爲\vec{q}_1=\left(\frac{\sqrt{5}}{5},\frac{2\sqrt{5}}{5}\right)^T\vec{q}_2=\left(-\frac{2\sqrt{5}}{5},\frac{\sqrt{5}}{5}\right)^T,令\Sigma=\left[ \begin{array}{cc} \sqrt{5} & 0 \\ 0 & 0 \\ 0 & 0 \\ \end{array} \right](注意:矩陣\Sigma大小爲3\times 2),此時,矩陣A的奇異值分解爲

A=P\Sigma Q^T=\left(\vec{p}_1,\vec{p}_2\right)\Sigma \left(\vec{q}_1,\vec{q}_2\right)^T

=\left[ \begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{array} \right] \left[ \begin{array}{cc} \sqrt{5} & 0 \\ 0 & 0 \\ 0 & 0 \\ \end{array} \right] \left[ \begin{array}{cc} \frac{\sqrt{5}}{5} & \frac{2\sqrt{5}}{5} \\ -\frac{2\sqrt{5}}{5} & \frac{\sqrt{5}}{5} \\ \end{array} \right] =\left[ \begin{array}{cc} 1 & 2 \\ 0 & 0 \\ 0 & 0 \\ \end{array} \right].

比較有趣的是,假設給定一個對稱矩陣A=\left[ \begin{array}{cc} 2 & 1 \\ 1 & 2 \\ \end{array} \right],它是對稱矩陣,則其奇異值分解是怎麼樣的呢?

分別計算AA^TA^TA,我們會發現,AA^T=A^TA=\left[ \begin{array}{cc} 2 & 1 \\ 1 & 2 \\ \end{array} \right] \left[ \begin{array}{cc} 2 & 1 \\ 1 & 2 \\ \end{array} \right]=\left[ \begin{array}{cc} 5 & 4 \\ 4 & 5 \\ \end{array} \right],左奇異向量和右奇異向量構成的矩陣也是相等的,即P=Q=\left[ \begin{array}{cc} \frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} \\ \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} \\ \end{array} \right],更爲神奇的是,該矩陣的奇異值分解和對稱對角化分解相同,都是A=\left[ \begin{array}{cc} \frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} \\ \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} \\ \end{array} \right] \left[ \begin{array}{cc} 3 & 0 \\ 0 & 1 \\ \end{array} \right] \left[ \begin{array}{cc} \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} \\ -\frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} \\ \end{array} \right]。這是由於對於正定對稱矩陣而言,奇異值分解和對稱對角化分解結果相同。

3 奇異值分解的低秩逼近

在對稱對角化分解中,若給定一個大小爲3\times 3的矩陣A=\left[ \begin{array}{ccc} 30 & 0 & 0 \\ 0 & 20 & 0 \\ 0 & 0 & 1 \\ \end{array} \right],很顯然,矩陣A的秩爲rank\left(A\right)=3,特徵值爲\lambda_1=30\lambda_2=20\lambda_3=1,對應的特徵向量分別爲\vec{q}_1=\left(1,0,0\right)^T\vec{q}_2=\left(0,1,0\right)^T\vec{q}_3=\left(0,0,1\right)^T,考慮任意一個向量\vec{v}=\left(2,4,6\right)^T=2\vec{q}_1+4\vec{q}_2+6\vec{q}_3,則

A\vec{v}=A\left(2\vec{q}_1+4\vec{q}_2+6\vec{q}_3\right)

=2\lambda_1\vec{q}_1+4\lambda_2\vec{q}_2+6\lambda_3\vec{q}_3=60\vec{q}_1+80\vec{q}_2+6\vec{q}_3

在這裏,我們會發現,即使\vec{v}是一個任意向量,用矩陣A去乘以\vec{v}的效果取決於A較大的特徵值及其特徵向量,類似地,在奇異值分解中,較大的奇異值會決定原矩陣的“主要特徵”,下面我們來看看奇異值分解的低秩逼近(有時也被稱爲截斷奇異值分解)。需要說明的是,接下來的部分是從文獻《A Singularly Valuable Decomposition: The SVD of a Matrix》整理而來的。

給定一個大小爲m\times n的矩陣A,由於A=P\Sigma Q^T可以寫成

A=\sum_{i=1}^{k}{\sigma_i\vec{p}_i\vec{q}_i^T}=\sigma_1\vec{p}_1\vec{q}_1^T+\sigma_2\vec{p}_2\vec{q}_2^T+...+\sigma_k\vec{p}_k\vec{q}_k^T

其中,向量\vec{p}_1,\vec{p}_2,...,\vec{p}_k之間相互正交,向量\vec{q}_1,\vec{q}_2,...,\vec{q}_k之間也相互正交,由內積\left<\sigma_i\vec{p}_i\vec{q}_i^T,\sigma_j\vec{p}_j\vec{q}_j^T\right>=0,1\leq i\leq k,1\leq j\leq k,i\ne j(有興趣的讀者可以自行推算)得到矩陣A的F-範數的平方爲

||A||_F^2=||\sigma_1\vec{p}_1\vec{q}_1^T+\sigma_2\vec{p}_2\vec{q}_2^T+...+\sigma_k\vec{p}_k\vec{q}_k^T||_F^2=\sigma_1^2||\vec p_1\vec q_1^T||_F^2+\sigma_2^2||\vec p_2\vec q_2^T||_F^2+...+\sigma_k^2||\vec p_k\vec q_k^T||_F^2=\sigma_1^2+\sigma_2^2+...+\sigma_k^2=\sum_{i=1}^{r}{\sigma_i^2}

知道了矩陣A的F-範數的平方等於其所有奇異值的平方和之後,假設A_1=\sigma_1\vec p_1\vec q_1^T是矩陣A的一個秩一逼近(rank one approximation),那麼,它所帶來的誤差則是\sigma_2^2+\sigma_3^2+...+\sigma_k^2k是矩陣A的秩),不過如何證明A_1=\sigma_1\vec p_1\vec q_1^T是最好的秩一逼近呢?

由於||A-A_1||_F^2=||P\Sigma Q^T-A_1||_F^2=||\Sigma-P^TA_1Q||_F^2(證明過程見附錄2),令P^TA_1Q=\alpha \vec x\vec y^T,其中,\alpha是一個正常數,向量\vec x\vec y分別是大小爲m\times 1n\times 1的單位向量,則

||\Sigma-P^TA_1Q||_F^2=||\Sigma-\alpha \vec x\vec y^T||_F^2=||\Sigma||_F^2+\alpha^2-2\alpha \left<\Sigma, \vec x\vec y^T\right>

單獨看大小爲m\times n的矩陣\Sigma\vec x\vec y^T的內積\left<\Sigma, \vec x\vec y^T\right>,我們會發現,

\left<\Sigma, \vec x\vec y^T\right>=\sum_{i=1}^{k}{\sigma_i x_i y_i}\leq \sum_{i=1}^{k}{\sigma_i\left| x_i\right|\left| y_i\right|}

\leq\sigma_1 \sum_{i=1}^{k}{\left| x_i\right|\left| y_i\right|}=\sigma_1\left<\vec x^*,\vec y^*\right>\leq \sigma_1||\vec x^*||\cdot ||\vec y^*||\leq \sigma_1||\vec x||\cdot ||\vec y||=\sigma_1

其中,需要注意的是,x_i,y_i分別是向量\vec x\vec y的第i個元素;向量\vec x^*=\left(\left|x_1\right|,\left|x_2\right|,...,\left|x_k\right|\right)^T的大小爲k\times 1,向量\vec y^*=\left(\left|y_1\right|,\left|y_2\right|,...,\left|y_k\right|\right)^T的大小也爲k\times 1,另外,以\vec x^*爲例,||\vec x^*||=\sqrt{x_1^2+x_2^2+...+x_k^2}是向量的模,則||A-A_1||_F^2(殘差矩陣的平方和)爲

||\Sigma-\alpha \vec x\vec y^T||_F^2\geq ||\Sigma||_F^2+\alpha^2-2\alpha \sigma_1=||\Sigma||_F^2+\left(\alpha-\sigma_1\right)^2-\sigma_1^2

當且僅當\alpha=\sigma_1時,||A-A_1||_F^2取得最小值\sigma_2^2+\sigma_3^2+...+\sigma_k^2,此時,矩陣A的秩一逼近恰好是A_1=\sigma_1\vec p_1\vec q_1^T.

當然,我們也可以證明A_2=\sigma_2\vec p_2\vec q_2^T是矩陣A-A_1的最佳秩一逼近,以此類推,A_r=\sigma_r\vec p_r\vec q_r^T,r< k是矩陣A-A_1-A_2-...-A_{r-1}的最佳秩一逼近。由於矩陣A_1+A_2+...+A_r的秩爲r,這樣,我們可以得到矩陣A的最佳秩r逼近(rank-r approximation),即

A\approx A_1+A_2+...+A_r=\sum_{i=1}^{r}{A_i}.

這裏得到的矩陣P_r的大小爲m\times r,矩陣\Sigma_r的大小爲r\times r,矩陣Q_r的大小爲n\times r,矩陣A可以用P_r\Sigma_rQ_r^T來做近似。

用低秩逼近去近似矩陣A有什麼價值呢?給定一個很大的矩陣,大小爲m\times n,我們需要存儲的元素數量是mn個,當矩陣A的秩k遠小於mn,我們只需要存儲k(m+n+1)個元素就能得到原矩陣A,即k個奇異值、km個左奇異向量的元素和kn個右奇異向量的元素;若採用一個秩r矩陣A_1+A_2+...+A_r去逼近,我們則只需要存儲更少的r(m+n+1)個元素。因此,奇異值分解是一種重要的數據壓縮方法。

另外,關於奇異值分解的應用將在該系列後續文章中進行詳述。

---------------------------------------------------------------

 

附錄1:相關鏈接:Largest eigenvalues of AA&amp;#x27; equals to A&amp;#x27;A,截圖如下:

附錄2:求證:||P\Sigma Q^T-A_1||_F^2=||\Sigma-P^TA_1Q||_F^2,其中,QQ^T=IPP^T=I.

證明:||P\Sigma Q^T-A_1||_F^2

=trace \left(\left(P\Sigma Q^T-A_1\right)\left(P\Sigma Q^T-A_1\right)^T\right)

=trace \left(\left(P\Sigma Q^T-A_1\right)QQ^T\left(P\Sigma Q^T-A_1\right)^T\right)

=trace \left(\left(P\Sigma -A_1Q\right)\left(\Sigma^T P^T-Q^TA_1^T\right)\right)

=trace \left(\left(\Sigma^T P^T-Q^TA_1^T\right)\left(P\Sigma -A_1Q\right)\right)

=trace \left(\left(\Sigma^T P^T-Q^TA_1^T\right)PP^T\left(P\Sigma -A_1Q\right)\right)

=trace \left(\left(\Sigma^T -Q^TA_1^TP\right)\left(\Sigma -P^TA_1Q\right)\right)

=||\Sigma-P^TA_1Q||_F^2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章