奇異值分解(SVD)小結

hearthougan發表於2018-08-15

目錄

陣的簡單理解

矩陣作用於向量

用矩陣的表達一個實體

特徵值和特徵向量

奇異值分解

Hermitian矩陣

共軛轉置

酉矩陣

談談《數學之美》對SVD的理解


陣的簡單理解

矩陣從我的理解來看,可以從兩個角度來看。一個是矩陣是作用於向量,一個是矩陣表達一個實體。

矩陣作用於向量

對於線性空間中,對向量的變換就是通過矩陣對向量的作用來實現的,矩陣本身就表示著一種變換。假設目前所討論的矩陣是非奇異的n階方陣。對矩陣對向量的變換,可以從兩個不同的角度來看:一、從同一個座標系來看,矩陣對向量的變換就是伸縮或者旋轉。二、同一個向量,在不同座標系下的度量。比如:

                                                                                             Ax = b

1、從第一個角度來看就是,向量x經過矩陣A的作用變成了向量b,矩陣表示一種執行方式。


2、從第二個角度來看就是,那麼矩陣A就表示著一個座標系(因為非奇異,故矩陣A是有n個線性無關的向量組成),x就是在座標系A下的一個度量結果,只不過這裡的矩陣A不一定是單位矩陣,所以座標軸上度量單位不一定是單位1。而向量b是單位矩陣I所表示的座標系下的度量結果。即:Ax=Ib

由上式可以看的出,一個向量,他在座標系A中的表示結果是向量x,它在座標系I中的表示結果是向量b,這表明什麼?向量x和向量b,表示的是同一個向量,只不過是在不同的座標系下,每個向量的度量結果不一樣而已,即表現形式不同,但本質是一個東西。

我們知道一個向量在不同基下的座標是不一樣的,即向量在不同空間的測量結果是不一樣的。如果舉一個不恰當的例子,比如水,在零度以下是冰,在100度以上是水蒸氣,你可以這樣理解,水在0度的環境下的表現形式是冰,在100度的環境下的表現形式是水蒸氣,他們只不過存在形式不同,但都是H_{2}O。那麼矩陣是不是也可以看成向量所處的環境呢?(我們目前都是假設矩陣是非奇異的),我想是可以的。無論是把矩陣看成是向量所處環境也好,還是看成空間座標系也好,不可否認的是,矩陣包含著度量的能力,他可以表達一種空間資訊,此時矩陣表示一種度量方式。

由此矩陣作用於向量或者矩陣,可以把矩陣看成是動態的形式。

用矩陣的表達一個實體

一副影象在計算時,它是以一個矩陣的形式表達的;在NLP中,文字與詞的關係,也是以矩陣的形式存在的。此時矩陣A表達一個具體的事物,此時矩陣就是一種靜態的表示結果。

囉裡囉嗦了那麼多,就是為了加深理解矩陣的意義,矩陣在不同的情況下,其作用是不一樣的。


特徵值和特徵向量

如果A是n階方陣,如果存在一個非零的常數\lambda和一個n維的向量v使得:Av = \lambda v,則稱\lambda是矩陣A的特徵值,v就是其對應的特徵向量。翻譯成白話就是:如果矩陣A使得一個向量伸縮,那麼該向量就是矩陣A 的一個特徵向量,伸縮的尺度就是特徵值。

如果你覺得矩陣表達運動時比較好理解,那麼特徵向量就是,各個分運動的方向,對應的特徵值,就是運動的距離。如果你覺得矩陣作為表達實體時比較好理解,那麼特徵向量,就是該實體的某一特徵,對應的特徵值就是該特徵的重要程度。

尤其是矩陣表達一個實體時,矩陣的特徵分解顯得尤為重要,因為此時的矩陣往往是稀疏的,維度比較大的,在儲存或者計算時會浪費很多資源,此時特徵值和特徵向量的作用就顯得尤為重要了,我們可以選擇幾個特徵值最大的向量,就可以表達該實體,這樣就可以對原來的矩陣起到了很好的降維作用,而且可以消除很多噪聲。可以參考這個例子 。

奇異值分解

之前說的方陣都是n階方陣,那麼對於機器學習中很多時候面對的矩陣都是m\times n的,這個時候,我們也想跟方陣一樣找出對應的特徵值和特徵向量,那麼有什麼方法?答案就是奇異值分解,此時的奇異值就是對應n階方陣的特徵值,只不過此時不再稱呼特徵值和特徵向量了,因為解法不同以及分解出來的矩陣表達的意義也不同。在說奇異值分解之前,先交代兩個概念。Hermitian矩陣和酉矩陣。


Hermitian矩陣

如果n階複方陣A是對稱的,且對稱單元互為共軛,即,矩陣A的共軛轉置矩陣等於它本身,稱A為Hermitian矩陣。例如:

                                                                                       A= \begin{bmatrix} 2& 9+i\\ 9-i &7 \end{bmatrix}

共軛轉置

矩陣有實數矩陣和複數矩陣。轉置矩陣僅僅是將矩陣的行與列對換,而共軛轉置矩陣在將行與列對換後還要讓每個元素共軛一下。共軛,就是將形如a+bi的數變成a-bi,實數的共軛是它本身。

故,實數矩陣的共軛轉置矩陣就是轉置矩陣,複數矩陣的共軛轉置矩陣就是上面所說的行列互換後每個元素取共軛

酉矩陣

我們說的正交矩陣是屬於\mathbb{R}^{n*n}的,是實數域上的。那麼推廣到複數域:

假設U\in C^{n\times n},C為複數域,若:

                                                                            U^{T}U=UU^{T}=I

則稱U就是酉矩陣。


定理:令A\in \mathbb{R}^{m\times n}(or\, \mathbb{C}^{m\times n}),則存在正交矩陣(或者酉矩陣)U\in \mathbb{R}^{m\times n}(or\, \mathbb{C}^{m\times n})V\in \mathbb{R}^{m\times n}(or\, \mathbb{C}^{m\times n}),使得:

                                                                                  A=U\Sigma V^{T}

其中\Sigma =\begin{bmatrix} \Sigma_{1} &O \\ O& O \end{bmatrix},且\Sigma _{1}=diag(\sigma _{1},\sigma _{2},......,\sigma _{r}),其對角線元素是按照從大到小的順序排列的,即,\sigma _{1}\geq \sigma _{2}\geq ......\geq \sigma _{r}\geq 0r=rank(A)

現在證明這個定理是怎麼來的,為了方便理解,先交代幾個引理。

引理一、Hermitian矩陣A^{T}A可酉對角化,且特徵值是非負的。

引理二、rank(A)=rank(A^{T}A)=rank(AA^{T})

引理三、A=O的充要條件是A^{T}A=O


證明A=U\Sigma V^{T}


rank(A)=r,根據引理一和引理二,可知A^{T}A可以酉對角化,且rank(A^{T}A)=r,那麼存在一個n階的酉矩陣V使得:

                                                          V^{T}(A^{T}A)V=\begin{bmatrix} \lambda _{1} & 0 & ......& 0\\ 0 & \lambda _{2} & ...... & 0\\ \vdots & \vdots & ...... & \vdots \\ 0 & 0 & ...... & \lambda _{r} \end{bmatrix}=diag(\lambda _{1},\lambda _{2},......\lambda _{n})

即:A^{T}A=V\Sigma ^{2}V^{T},其中\lambda _{1}\geq \lambda _{2}\geq ......\lambda _{r}> 0=\lambda _{r+1}=......=\lambda _{n}A^{T}A的非負特徵根。

\Sigma _{1}=diag(\sigma _{1},\sigma _{2},......,\sigma _{r})=diag(\sqrt{\lambda _{1}},\sqrt{\lambda _{2}},......\sqrt{\lambda _{r}}),我們把酉矩陣V拆分成兩個子矩陣V_{1}V_{2},有:

                                                                                        V_{1}=\begin{bmatrix} v_{1},v_{2},......,v_{r} \end{bmatrix}

                                                                                        V_{2}=\begin{bmatrix} v_{r+1},v_{r+2},......,v_{n} \end{bmatrix}

易知,A^{T}AV_{2}=V_{2}O\Rightarrow V_{2}^{T}A^{T}AV_{2}=O,根據引理三可知AV_{2}=O

則有

                                                                          A^{T}AV_{1}=V_{1}\begin{bmatrix} \lambda _{1} & 0 & ......& 0\\ 0 & \lambda _{2} & ...... & 0\\ \vdots & \vdots & ...... & \vdots \\ 0 & 0 & ...... & \lambda _{r} \end{bmatrix}=V_{1}\Sigma _{1}^{2}

由於\Sigma是對角矩陣,故,\Sigma ^{T}=\Sigma ,(\Sigma^{-1})^{T}=\Sigma^{-1}V^{T}=V^{-1}由此可得:

                                                                         \Rightarrow V_{1}^{T}A^{T}AV_{1}=\Sigma ^{2}

                                                                         \Rightarrow \Sigma_{1}^{-1}V_{1}^{T}A^{T}AV_{1}=\Sigma

                                                                          \Rightarrow \Sigma_{1}^{-1}V_{1}^{T}A^{T}AV_{1}\Sigma_{1}^{-1}=I

U_{1}=AV_{1}\Sigma_{1}^{-1},則有:U_{1}^{T}U_{1}=I。我們構造一個酉矩陣U_{2},使得U_{1}^{T}U_{2}=O,也就是各向量之間是相互正交的,然拼接成和酉矩陣V同等規模的酉矩陣U=\begin{bmatrix} U_{1} & U_{2} \end{bmatrix}

                                                                        U^{T}AV=\begin{bmatrix} U_{1}\\ U_{2} \end{bmatrix}A\begin{bmatrix} V_{1} & V_{2} \end{bmatrix}

                                                                                    =\begin{bmatrix} U_{1}^{T}AV_{1} &U_{1}^{T}AV_{2} \\ U_{2}^{T}AV_{1}& U_{2}^{T}AV_{2} \end{bmatrix}

                                                                                    =\begin{bmatrix} \Sigma _{1} &O \\ U_{2}^{T}U_{1}\Sigma _{1}& O \end{bmatrix}

                                                                                    =\begin{bmatrix} \Sigma_{1} &O \\ O & O \end{bmatrix}

A=U\Sigma V^{T},證畢。


我們對酉矩陣AA^{T}進行奇異值分解,同理可以得出:

                                                                              AA^{T}=U\Sigma^{2} U^{T}

我們已經知道對A^{T}A的奇異值分解為:

                                                                             A^{T}A=V\Sigma ^{2}V^{T}

如果矩陣A_{m\times n}的秩是r,則有:

m\times m酉矩陣U的前r列組成矩陣A的列空間的標準正交基。

n\times n酉矩陣V的前r列組成矩陣A的行空間(或者A^{T}的列空間)的標準正交基。

U的後m-r列組成矩陣A^{T}的零空間的標準正交基。

V的後n-r列組成矩陣A的零空間的標準正交基。

我們之前說過,奇異值分解,就是為了找到最重要的特徵,用這些特徵來表示原來的矩陣,這樣可以起到降維的作用,也可以起到消除噪聲的作用。那麼,當矩陣A的秩r=rank(A)<h=min\begin{Bmatrix} m,n \end{Bmatrix}時,由於奇異值\sigma _{r+1}=\sigma _{r+2}=.....\sigma _{h}=0,因此矩陣A的奇異值分解就可以寫成:

                                                                                      A=U_{r}\Sigma_{r} V_{r}^{T}

這種情況就稱為矩陣A的截尾奇異值分解。

但是大多數的時候,有些奇異值不為0對應的特徵向量我們也會捨棄,只會選取以少部分,就是大家常說的前10%甚至1%的奇異值會佔總的奇異值的99%。如下圖所示:

SVD


談談《數學之美》對SVD的理解

首先說明一下,吳軍老師在數學之美講解SVD的時候,有點是描述錯誤的,可能版本比較老,新版不知是否已經更正。在這裡敘述時,會更正。

假如對新聞進行分類,把詞和文字放到一個矩陣中,可以利用餘弦定理來計算相似性;還可以利用對矩陣直接進行SVD分解一次解決。

矩陣A描述了詞和文章的關聯性,每一行代表一個詞,每一列代表一篇文章,如果有N個詞,M篇文章,那麼對應的矩陣如下:

A= \begin{bmatrix} a_{11}& \cdots & a_{1j}& \cdots &a_{1M} \\ \vdots & \ddots & \vdots & \ddots &\vdots \\ a_{i1}& \cdots & a_{ij} & \cdots & a _{iM}\\ \vdots &\ddots & \vdots & \ddots &\vdots \\ a_{N1} &\cdots &a_{Ni} &\cdots & a_{NM} \end{bmatrix}

其中第i行第j列的元素a_{ij}表示,字典中第i個單詞出現在第j篇文章中的加權詞頻(如TF-IDF),那麼被分解的三個小矩陣:

  • 第一個矩陣U,表示對詞進行分類的一個結果。矩陣UAA^{T}的特徵向量組成的矩陣,A^{T}AN\times N的,\times的,表示的就是詞與詞之間的關係。UA^{T}A的一個基,它可以表示詞與詞之間的空間分佈,也就是語義相近與否,所以我們分解出來的第一個矩陣U就是對詞進行的分類結果。它的每一行表示一個詞,每一列表示一個語義相近的詞類。每個非零元素表述該詞在相應語義中的相關性(重要性),數值越大越相關。
  • 最後一個矩陣V,表示是對文字的一個分類結果。矩陣VA^{T}A的特徵向量組成的空間,A^{T}AM\times M的,文章\times文章,表示的是文章與文章之間的關係,它的每一列表示一篇文章,每一行表示一個主題,這一列中的每個元素表示在不同主題中的相關性。
  • 第二個矩陣,表示詞的語義類和文章的主題之間的關係。如下面這個矩陣:

                                                                                  \Sigma =\begin{bmatrix} 0.7 &0.21 \\ 018&0.63 \end{bmatrix}

在矩陣\Sigma中,每一行表示一個語義,每一列表示一個主題。每一行的每個元素,表示該語義與主題之間的關係。0.7表示第一個語義與第一個主題相關,0.21表示第一個語義與第二個主題不相關。同理,0.18表示第二個語義與第一個主題不相關,0.63表示第二個語義與第二個主題相關。

到此SVD講解完成,從理論到實際的物理意義,花了近兩天的複習和總結,囉裡囉嗦了這麼多,也不知道是否闡述的明白。如有錯誤,歡迎指正。

 

參考:

《理解矩陣》孟巖

《數學之美》吳軍

《矩陣分析》張賢達

 

 

相關文章