奇异值分解(SVD) --- 几何意义2
在這篇文章中,我們以幾何的視角去觀察矩陣奇異值分解的過程,并且列舉一些奇異值分解的應(yīng)用。
介紹
矩陣奇異值分解是本科數(shù)學課程中的必學部分,但往往被大家忽略。這個分解除了很直觀,更重要的是非常具有實用價值。譬如,Netflix(在線電影租賃公司)對能夠提高其電影推薦系統(tǒng)準確率10%的人提供100萬美元的豐厚獎金。令人驚奇的是,這個看似簡單的問題卻非常具有挑戰(zhàn)性,相關(guān)的團隊正在使用非常復雜的技術(shù)解決之,而這些技術(shù)的本質(zhì)都是奇異值分解。
奇異值分解簡單來講,就是以一種方便快捷的方式將我們感興趣的矩陣分解成更簡單且有直觀意義的矩陣的乘積。本文以幾何的視角去觀察奇異值分解的過程,并且列舉一些奇異值分解的應(yīng)用。
?線性變換的幾何解釋
首先,我們來看一個只有兩行兩列的簡單矩陣。第一個例子是對角矩陣
從幾何的角度,矩陣可以描述為一個變換:用矩陣乘法將平面上的點(x, y)變換成另外一個點(3x, y):
這種變換的效果如下:平面在水平方向被拉伸了3倍,在豎直方向無變化。
?
再看下這個矩陣
它會產(chǎn)生如下的效果
不過這張圖貌似也并沒有能夠簡潔、清晰的描述出上述矩陣變換的幾何效果。然而,如果我們把網(wǎng)格旋轉(zhuǎn)45度,再觀察一下。
?
啊哈!我們看到現(xiàn)在這個新的網(wǎng)格被轉(zhuǎn)換的方式與原始的網(wǎng)格被對角矩陣轉(zhuǎn)換的方式是完全一致的:網(wǎng)格在某一方向上被拉伸了3倍。
當然這是一種特殊的結(jié)果,因為矩陣M是對稱的,換句話說,M的轉(zhuǎn)置(通過互換矩陣的對角項得到)還等于M。如果我們有一個2*2的對稱矩陣,可以證明,我們總是可以通過在平面上旋轉(zhuǎn)網(wǎng)格,使得矩陣變換的效果恰好是在兩個垂直的方向上對網(wǎng)格的拉伸或鏡面反射。換句話說,對稱矩陣表現(xiàn)得像對角矩陣一樣。
說的更數(shù)學化一些,給定一個對稱矩陣M,我們可以找到一組正交向量vi使得Mvi等于vi和標量的乘積;那就是
Mvi?= λivi
這里λi是標量。從幾何意義上講,這意味著當vi乘上矩陣M時被簡單地拉伸或者反射了。因為這個性質(zhì),我們稱vi是M的特征向量;標量λi被稱為特征值。一個可以被證明的重要的事實是:對稱矩陣不同的特征值對應(yīng)的特征向量是正交的。如果我們把對稱矩陣的特征向量和網(wǎng)格對齊,那么矩陣對網(wǎng)格的拉伸或反射的方式,與矩陣對特征向量的拉伸或反射的方式,兩者是完全一致的。
上述線性變換的幾何解釋非常簡單:網(wǎng)格在某個方向上被簡單地拉伸了。對于更一般的矩陣,我們將要問的問題是: 能否能找到某個正交網(wǎng)格,在矩陣變換之下,變成另一個正交網(wǎng)格? 讓我們最后來考慮一個非對稱矩陣的例子:
這個矩陣產(chǎn)生的幾何效果是切變(shear)。
?
很容易找到一族沿水平軸的特征向量。但是從上圖可以看出,這些特征向量無法把某個正交網(wǎng)格變換到另外一個正交網(wǎng)格。盡管如此,我們先嘗試將網(wǎng)格旋轉(zhuǎn)30度,然后看看發(fā)生了什么,
?
注意右側(cè)紅色平行四邊形在原點形成的夾角已經(jīng)增加。(譯者注:這暗示了,如果我們增加旋轉(zhuǎn)角度,平行四邊形在原點形成的夾角可能增加到90度,從而變成正交網(wǎng)格。) ?接下來將左側(cè)網(wǎng)格旋轉(zhuǎn)到60度:
?
右側(cè)的網(wǎng)格現(xiàn)在幾乎是正交的。事實上,如果將左側(cè)網(wǎng)格旋轉(zhuǎn)58.28度,左右兩個網(wǎng)格就都是正交的了。
?
奇異值分解
2*2矩陣奇異值分解的幾何實質(zhì)是:對于任意2*2矩陣,總能找到某個正交網(wǎng)格到另一個正交網(wǎng)格的轉(zhuǎn)換與矩陣變換相對應(yīng)。
用向量解釋這個現(xiàn)象:選擇適當?shù)恼坏膯挝幌蛄縱1和v2,向量Mv1和Mv2也是正交的。
?
用u1和u2來表示Mv1和Mv2方向上的單位向量。Mv1和Mv2的長度用σ1?和 σ2來表示——量化了網(wǎng)格在特定方向上被拉伸的效果。σ1?和 σ2被稱為M的奇異值。(在本例中,奇異值就是黃金比例及其倒數(shù),但它在此不是很重要。)
由此,我們有
Mv1?= σ1u1
Mv2?= σ2u2
現(xiàn)在給出矩陣M作用于向量x的簡單描述。因為向量v1和v2是正交的單位向量,我們有
x?= (v1?·?x)?v1?+ (v2?·?x)?v2
這意味著
Mx?= (v1?·?x)?Mv1?+ (v2?·?x)?Mv2
Mx?= (v1?·?x) σ1u1?+ (v2?·?x) σ2u2
注意點積可以用向量的轉(zhuǎn)置來計算
v?·?x?=?vTx
我們有
Mx?=?u1σ1?v1Tx?+?u2σ2?v2Tx
M?=?u1σ1?v1T?+?u2σ2?v2T
通常表述成
M =?UΣVT
這里U是列向量u1和u2組成的矩陣,Σ是非零項為σ1?和 σ2的對角矩陣,V是列向量v1和v2組成的矩陣。帶有上標T的矩陣V是矩陣V的轉(zhuǎn)置。
上面描述了怎樣將矩陣M分解成三個矩陣的乘積:V描述了原始空間中的正交基,U描述了相關(guān)空間的正交基,Σ描述了V中的向量變成U中的向量時被拉伸的倍數(shù)。
怎樣做奇異值分解?
奇異值分解的魅力在于任何矩陣都可以找到奇異值。怎么做?讓我們來看下先前的例子,這回在空間中加入單位圓。在變換后的空間中,單位圓變成了橢圓,其長軸和短軸定義了正交網(wǎng)格。
?
注意長軸和短軸用Mv1和Mv2定義。這兩個向量因此成為單位圓里的所有向量中最長的和最短的向量。
?
換句話講,單位圓上的向量函數(shù)|Mx|在v1上有最大值而在v2上有最小值。這就把原始問題簡化為了一個標準的微積分問題:我們在單位圓上去優(yōu)化一個函數(shù)的極值。而這個函數(shù)的極值點正好恰恰是矩陣MTM的特征向量。由于該矩陣是對稱的,其不同的特征值對應(yīng)的特征向量之間是正交的。這就產(chǎn)生了向量族vi。
奇異值通過σi?= |Mvi|得到,ui是Mvi方向上的單位向量。但是ui之間為什么是正交的呢?
為了解釋這個問題,我們假設(shè)σi和σj是不同的奇異值。我們有
Mvi?= σiui
Mvj?= σjuj
讓我們從表達式MviMvj開始,為了方便,假定奇異值是非零的。一方面,MviMvj是零,因為作為矩陣MTM的特征向量vi之間是正交的:
Mvi?·?Mvj?=?viTMT?Mvj?=?vi?·?MTMvj?= λjvi?·?vj?= 0
另一方面,我們有
Mvi?·?Mvj?= σiσj?ui?·?uj?= 0
因此ui和uj是正交的,所以我們已經(jīng)找到能夠轉(zhuǎn)換成某個正交向量集ui的正交向量集vi。奇異值描述了在不同方向上拉伸的倍數(shù)。
在實踐中,這不是獲得矩陣奇異值分解的步驟,因為這個方法不是特別高效,或者在數(shù)值計算中的表現(xiàn)也不夠好。
另外一個例子
讓我們看一個奇異矩陣
矩陣的幾何效果如下:
在這個例子中,第二個奇異值是零,所以我們可以這樣寫:
M =?u1σ1?v1T
換句話講,如果一些奇異值為零,相應(yīng)的項將不會出現(xiàn)在M的分解中。因此,矩陣M的秩(即線性獨立的行或列的個數(shù))等于非零奇異值的個數(shù)。
數(shù)據(jù)壓縮
奇異值分解可以高效的表示數(shù)據(jù)。例如,假設(shè)我們想傳送下列圖片,包含15*25個黑色或者白色的像素陣列。
因為在圖像中只有三種類型的列(如下),它可以以更緊湊的形式被表示。
? ? ??? ? ??我們用15*25的矩陣來表示這個圖像,其中每個元素非0即1,0表示黑色像素,1表示白色像素。如下所示,共有375個元素。
如果對M進行奇異值分解的話,我們只會得到三個非零的奇異值。
σ1?= 14.72
σ2?= 5.22
σ3?= 3.31
因此,矩陣可以如下表示
M=u1σ1?v1T?+?u2σ2?v2T?+?u3σ3?v3T
我們有三個包含15個元素的向量vi,三個包含25個元素的向量ui,以及三個奇異值σi。這意味著我們可以只用123個數(shù)字就能表示這個矩陣而不是出現(xiàn)在矩陣中的375個元素。在這種方式下,我們看到在矩陣中有3個線性獨立的列,也就是說矩陣的秩是3。
降噪
從之前的例子看出我們利用了矩陣中有很多奇異值為0的特殊性。通常來說,越大的奇異值對應(yīng)的信息越令人感興趣。例如,想象我們用掃描儀將上面的圖片輸入到我們的計算機。但是,我們的掃描機會在圖片上產(chǎn)生一些缺陷(通常稱作“噪聲”)。
我們以同樣的方式處理:用15*25矩陣來表示圖像,然后進行奇異值分解。我們得到以下奇異值:
σ1?= 14.15
σ2?= 4.67
σ3?= 3.00
σ4?= 0.21
σ5?= 0.19
…
σ15?= 0.05
很明顯,頭三個奇異值是最重要的,所以我們假定其他的都是圖像上的噪聲,并假設(shè)假設(shè)
M≈u1σ1?v1T?+?u2σ2?v2T?+?u3σ3?v3T
這就產(chǎn)生了如下的優(yōu)化后的圖片
Noisy image???????????? Improved image
數(shù)據(jù)分析
我們在收集數(shù)據(jù)的時候經(jīng)常會遇到噪聲:無論工具多好,總有一些誤差在測量過程中。如果我們記得大的奇異值指向矩陣中重要的特征,很自然地想到用奇異值分解去研究被收集的數(shù)據(jù)。
例如,我們收集了一些數(shù)據(jù)如下:
如下是我們獲得的數(shù)據(jù),將其放入矩陣中:
| -1.03 | 0.74 | -0.02 | 0.51 | -1.31 | 0.99 | 0.69 | -0.12 | -0.72 | 1.11 |
| -2.23 | 1.61 | -0.02 | 0.88 | -2.39 | 2.02 | 1.62 | -0.35 | -1.67 | 2.46 |
然后進行奇異值分解。我們得到奇異值
σ1?= 6.04
σ2?= 0.22
其中第一個奇異值遠遠大于另外一個,很安全的假設(shè)小的奇異值σ2是數(shù)據(jù)中的噪聲并且可以理想地認為是0。這個例子中的矩陣的秩是1,意味著所有數(shù)據(jù)都位于ui定義的線上。
這個簡短的例子引出了主成分分析領(lǐng)域,展示了一系列用奇異值分解來檢測數(shù)據(jù)依賴和冗余的技術(shù)。
同樣地,奇異值分解可以用來檢測數(shù)據(jù)中的簇,這就解釋了奇異值分解可以用來嘗試優(yōu)化Netflix的電影推薦系統(tǒng)。程序會根據(jù)你看過的電影來對與你看過的電影相似的未看過的電影進行排序。推薦系統(tǒng)會挑選出你未看過的電影集合中預(yù)估分高的電影。
總結(jié)
如文章的開頭所述,奇異值分解應(yīng)該是本科數(shù)學專業(yè)線性代數(shù)課程的核心部分。除了擁有無比簡單的幾何解釋,奇異值分解提供了將線性代數(shù)想法應(yīng)用于現(xiàn)實的極其有效的技術(shù)。然而大家對本科線性代數(shù)課程的通常都缺乏足夠的重視。
本文可能有點印象派的風格:我的目的是為奇異值分解背后的中心思想提供直觀的解釋,并通過具體的例子來說明怎么將奇異值分解的思想付諸實踐。
References:
- Gilbert Strang,?Linear Algebra and Its Applications. Brooks Cole.Strang’s book is something of a classic though some may find it to be a little too formal.
- William H. Press?et al,?Numercial Recipes in C: The Art of Scientific Computing. Cambridge University Press.Authoritative, yet highly readable. Older versions?are available online.
- Dan Kalman,?A Singularly Valuable Decomposition: The SVD of a Matrix,?The College Mathematics Journal?27?(1996), 2-23.Kalman’s article, like this one, aims to improve the profile of the singular value decomposition. It also a description of how least-squares computations are facilitated by the decomposition.
- If You Liked This, You’re Sure to Love That,?The New York Times, November 21, 2008.This article describes Netflix’s prize competition as well as some of the challenges associated with it.
本文鏈接:奇異值分解(We Recommend a Singular Value Decomposition)
本站文章若無特別說明,皆為原創(chuàng),轉(zhuǎn)載請注明來源:火光搖曳,謝謝!^^
總結(jié)
以上是生活随笔為你收集整理的奇异值分解(SVD) --- 几何意义2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 奇异值分解(SVD) --- 几何意义
- 下一篇: 奇异值分解和图像压缩