奇異值分解(SVD)原理

轉自:https://blog.csdn.net/u013108511/article/details/79016939#commentBox

奇異值分解是一個有着很明顯的物理意義的一種方法,它可以將一個比較複雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,這些小矩陣描述的是矩陣的重要的特性。就像是描述一個人一樣,給別人描述說這個人長得濃眉大眼,方臉,絡腮鬍,而且帶個黑框的眼鏡,這樣寥寥的幾個特徵,就讓別人腦海裏面就有一個較爲清楚的認識,實際上,人臉上的特徵是有着無數種的,之所以能這麼描述,是因爲人天生就有着非常好的抽取重要特徵的能力,讓機器學會抽取重要的特徵,SVD是一個重要的方法。
所以SVD不僅是一個數學問題,在工程應用方面很多地方都有其身影,如PCA,推薦系統、任意矩陣的滿秩分解。
博主整理這篇博客就是爲後面深度神經網絡的模型壓縮做準備。

參考論文:A Singularly Valuable Decomposition The SVD of a Matrix
1、特徵值

如果說一個向量v是方陣A的特徵向量,將一定可以表示成下面的形式:

          這裏寫圖片描述
這時候λ被稱爲特徵向量v對應的特徵值,一個矩陣的一組特徵向量是一組正交向量。特徵值分解是將一個矩陣分解成以下形式:
          這裏是圖片描述

其中Q是這個矩陣A的特徵向量組成的矩陣,Σ是一個對角陣,每個對角線上的元素就是一個特徵值。和矩陣相乘其實就是一次線性變換。如一下兩個例子:

          這裏是圖片描述
其對應的線形變換是一下形式:
          這裏是圖片描述
我們可以根據數學的計算看到更加直觀的結果:

 

          這裏是圖片描述

注意兩點:
1、對角陣對角線上的特徵值的絕對值大於1時,特徵值越大拉伸的幅度越大,特徵值絕對值小於1,特徵值越小壓縮的幅度越大;
2、這只是矩陣爲對角陣的情況下,拉伸和收縮都是沿着座標軸(也就是特徵向量)的方向,而對於非對稱的非對角陣,會有非座標軸方向的拉伸和收縮
我們想要描述好一個變換,那我們就描述好這個變換主要的變化方向就好了,而對角陣Σ裏面的特徵值是由大到小排列的,特徵值對應的特徵向量就是描述矩陣的變化方向。
當矩陣是高緯度的時候,矩陣就是高緯度空間下的線形變換,通過特徵值分解得到的前N個向量就是矩陣最主要的N個變化的方向。利用這N個方向的變化來近似這個矩陣。也就是:提取這個矩陣最重要的一部分特徵。(而特徵值分解的侷限就是變換的矩陣必須爲方陣)
2、正交矩陣

正交矩陣是在歐幾里得空間裏的叫法,在酉空間裏叫酉矩陣,一個正交矩陣對應的變換叫正交變換,這個變換的特點是不改變向量的尺寸和向量間的夾角。下圖是一個直觀的認識:

這裏寫圖片描述
  假設二維空間中的向量OA,它在標準座標系(也就是e1和e2表示的座標系)中的表示爲(a,b)’(‘表示轉置);現在用另一組座標e1’、e2’表示爲(a’,b’)’;那麼存在矩陣U使得(a’,b’)’=U(a,b)’,而矩陣U就是正交矩陣。
通過上圖可知,正交變換隻是將變換向量用另一組正交基來表示,在這個過程中並沒有罪向量作拉伸,也不改變向量的空間位置,對兩個向量同時做正交變換,變換的前後兩個向量的夾角顯然也不會改變。上圖是一個旋轉的正交變換,可以把e1’、e2’座標系看做是e1、e2座標系經過旋轉某個θ角度得到,具體的旋轉規則如下:

            這裏寫圖片描述
        這裏寫圖片描述
        這裏寫圖片描述

注意兩點:
a’和b’實際上是x在e1’和e2’軸上投影的大小,所以直接做內積可得:
        這裏寫圖片描述
從圖中可以看到:
        這裏寫圖片描述這裏寫圖片描述
所以:
        這裏寫圖片描述

正交矩陣U的行(列)之間都是單位正交向量,它對向量做旋轉變換。這裏解釋一下:旋轉是相對的,就那上面的圖來說,我們可以說向量的空間位置沒有變,標準參考系向左旋轉了θ角度,而如果我選擇了e1’、e2’作爲新的標準座標系,那麼在新座標系中OA(原標準座標系的表示)就變成了OA’,這樣看來就好像座標系不動,把OA往順時針方向旋轉了θ角度,這個操作實現起來很簡單:將變換後的向量座標仍然表示在當前座標系中。
正交變換的另一個方面是反射變換,也即e1’的方向與圖中方向相反。
總結:正交矩陣的行(列)向量都是兩兩正交的單位向量,正交矩陣對應的變換爲正交變換,它有兩種表現:旋轉和反射。正交矩陣將標準正交基映射爲標準正交基(即圖中從e1、e2到e1’、e2’)。
3、特徵值的分解 - EVD

在討論SVD之前,先了解矩陣的特徵值分解(EVD),這裏選擇特殊的矩陣——對角陣,對稱矩陣又一個性質就是總能相似對角化,對稱矩陣不同特徵值對應的特徵向量兩兩正交。一個矩陣能能相似對角化即說明其特徵子空間即爲其列空間,若不能對角化則其特徵子空間爲列空間的子空間。現在假設存在m * m的滿秩對稱矩陣A,它有m個不同的特徵值,設特徵值爲:

          
對應的單位特徵向量:
          
則有:  
進而:
        
        
        

所以可得到A的特徵值分解(由於對稱陣特徵向量兩兩正交,所以U爲正交陣,正交陣的逆矩陣等於其轉置):
        
這裏假設A有m個不同的特徵值,實際上,只要A是對稱陣其均有如上分解。
矩陣A分解了,相應的,其對應的映射也分解爲三個映射。現在假設有x向量,用A將其變換到A的列空間中,那麼首先由UT先對x做變換:
        

U是正交陣UT也是正交陣,所以UT對x的變換是正交變換,它將x用新的座標系來表示,這個座標系就是A的所有正交的特徵向量構成的座標系。比如將x用A的所有特徵向量表示爲:
        

則通過第一個變換就可以把x表示爲[a1 a2 … am]T:

緊接着,在新的座標系表示下,由中間那個對角矩陣對新的向量座標換,其結果就是將向量往各個軸方向拉伸或壓縮:

從上圖可以看到,如果A不是滿秩的話,那麼就是說對角陣的對角線上元素存在0,這時候就會導致維度退化,這樣就會使映射後的向量落入m維空間的子空間中。
最後一個變換就是U對拉伸或壓縮後的向量做變換,由於U和UT是互爲逆矩陣,所以U變換是UT變換的逆變換。
因此,從對稱陣的分解對應的映射分解來分析一個矩陣的變換特點是非常直觀的。假設對稱陣特徵值全爲1那麼顯然它就是單位陣,如果對稱陣的特徵值有個別是0其他全是1,那麼它就是一個正交投影矩陣,它將m維向量投影到它的列空間中。
根據對稱陣A的特徵向量,如果A是2 * 2的,那麼就可以在二維平面中找到這樣一個矩形,是的這個矩形經過A變換後還是矩形:

這裏寫圖片描述
這個矩形的選擇就是讓其邊都落在A的特徵向量方向上,如果選擇其他矩形的話變換後的圖形就不是矩形了!

4、奇異值

上面說過了特徵值分解是提取矩陣特徵很不錯的方法,但這只是針對方陣而言的,在現實世界中大部分的矩陣並不是方針,這時描述這些普通矩陣的重要特徵就會用到:奇異值分解。他是可以適應任意矩陣分解的方法:

假設A是一個M * N的矩陣,那麼得到的U是一個M * M的方陣(裏面的向量是正交的,U裏面的向量稱爲左奇異向量),Σ是一個M * N的矩陣(除了對角線的元素都是0,對角線上的元素稱爲奇異值),V’(V的轉置)是一個N * N的矩陣,裏面的向量也是正交的,V裏面的向量稱爲右奇異向量),從圖片來反映幾個相乘的矩陣的大小可得下面的圖片:


那麼矩陣A的奇異值和方陣的特徵值是如何對應的?
我們將一個矩陣AT * A,將會得到一個方陣,我們用這個方陣求特徵值可以得到:
          

這裏得到的Vi就是上面的右奇異向量,此外,我們可以得到:
          

這裏的σi就是上面說的奇異值。ui就是上面的左奇異向量。奇異值σ跟特徵值相似,在矩陣Σ中也是按從大到小的方式排列,而且σ的值減小的特別的快,在很多的情況下前10%甚至1%的奇異值之和就佔了全部奇異值之和的99%以上。也就是說可以用前r個大的奇異值來近似的描述矩陣,這裏定義奇異值的分解:
     
r是一個遠遠小於m和n的值,矩陣的乘法看起來是這個樣子:

右邊的三個矩陣相乘的結果將會是一個接近於A的矩陣,在這兒,r越接近於n,則相乘的結果越接近於A。而這三個矩陣的面積之和(在存儲觀點來說,矩陣面積越小,存儲量就越小)要遠遠小於原始的矩陣A,我們如果想要壓縮空間來表示原矩陣A,我們存下這裏的三個矩陣:U、Σ、V就好了。
5、奇異值分解 - SVD

上面的特徵值分解的A矩陣是對稱陣,根據EVD可以找到一個(超)矩形使得變換後還是(超)矩形,也即A可以將一組正交基映射到另一組正交基!那麼現在來分析:對任意M*N的矩陣,能否找到一組正交基使得經過它變換後還是正交基?答案是肯定的,它就是SVD分解的精髓所在。
現在假設存在M*N矩陣A,事實上,A矩陣將n維空間中的向量映射到k(k<=m)維空間中,k=Rank(A)。現在的目標就是:在n維空間中找一組正交基,使得經過A變換後還是正交的。假設已經找到這樣一組正交基:
{v1,v2,v3,…,vn}
則A矩陣將這組基映射爲:
{Av1,Av2,Av3,…,Avn}
如果要使他們兩兩正交,即:
Avi · Avj = (Avi)TAvj = viTATAvj = 0
根據假設,存在:
viTvj = vivj = 0
所以如果正交基v選擇爲ATA的特徵向量的話,由於ATA是對稱陣,v之間兩兩正交,那麼:

              
這樣就找到了正交基使其映射後還是正交基了,現在,將映射後的正交基單位化,因爲:
              
所以有:
              
所以取單位向量:
              

當k < i <= m時,對u1,u2,…,uk進行擴展u(k+1),…,um,使得u1,u2,…,um爲m維空間中的一組正交基,即將{u1,u2,…,uk}正交基擴展成{u1,u2,…,um}Rm空間的單位正交基,同樣的,對v1,v2,…,vk進行擴展v(k+1),…,vn(這n-k個向量存在於A的零空間中,即Ax=0的解空間的基),使得v1,v2,…,vn爲n維空間中的一組正交基,即:
在A的零空間中選擇{vk+1,vk+2,…,vn}使得AvI = 0,i > k並取σ = 0則可得到:


繼而得到A矩陣的奇異值分解:
              

V是n*n的正交矩陣,U是m*m的正交矩陣,Σ是m*n的對角陣
現在可以來對A矩陣的映射過程進行分析了:如果在n維空間中找到一個(超)矩形,其邊都落在ATA的特徵向量的方向上,那麼經過A變換後的形狀仍然爲(超)矩形!
vi爲ATA的特徵向量,稱爲A的右奇異向量,ui=Avi實際上爲AAT的特徵向量,稱爲A的左奇異向量。下面利用SVD證明文章一開始的滿秩分解:


利用矩陣分塊乘法展開得:

可以看到第二項爲0,有:

令:


則A=XY即是A的滿秩分解。

 

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