原文 | https://mp.weixin.qq.com/s/HrN8vno4obF_ey0ifCEvQw
奇異值分解(Singular value decomposition)簡稱SVD,是將矩陣分解為特征值和特征向量的另一種方法。奇異值分解可以將一個比較復雜的矩陣用更小更簡單的幾個子矩陣相乘來表示,這些小矩陣描述的都是矩陣的重要的特性。奇異值分解在圖形降噪、推薦系統中都有很重要的應用。
對於任意矩陣A,都可以奇異值分解成下面的形式,其中U和V是正交矩陣,Σ是對角矩陣:
如果A是正定矩陣,它的奇異值分解就是A=QΛQT,即用一個正交矩陣Q就可以使正定矩陣A進行奇異值分解,不需要兩個。對於可對角化的矩陣來說,A=SΛS-1,但這種形式下的特征向量矩陣S並不是正交矩陣,而SVD要求U和V都是正交矩陣。
奇異值分解的目標
A是m×n的矩陣,四個基本子空間的正交性可以用下圖表示,其中r是矩陣的秩:
可以把矩陣A看作一種線性變換操作,將其行空間中的每一個向量v,變換為列空間的向量u,即u=Av。類似地,我們也可以在行空間中找到一組正交基,通過矩陣A線性變換成列空間中的另一組正交基:
行空間中的一組正交基可以通過格拉姆-施密特正交化得到——任意一組基都可以通過格拉姆-施密特正交化變成一組正交基,但是隨便一組正交基經過矩陣A的線性變換后的向量卻未必正交,因此這組滿足要求的正交基非常特殊,它們需要滿足:
更進一步,在V中尋找標准正交向量,並使U中的向量標准化,從而使U和V標准正交:
其中vi和ui都是單位向量,σi是ui的倍數,稱為奇異值。上式就是奇異值分解的目標:尋找行空間的一組標准正交基,通過A變成列空間的一組標准正交基。
由於V中的向量的都是正交向量,因此VVT=I:
這正是奇異值分解的形式。如果A是正定矩陣,AQ=QΛ,它的奇異值分解就是A=QΛQT,此時U=V=Q,Σ=Λ。
如何分解
我們已經知道奇異值分解的目標是A=UΣVT,現在的問題是怎樣找到合適的正交矩陣U和V?
考慮首先解決U和V中的一個,先將U消去:
注意到ATA是一個對稱方陣,並且符合正定矩陣正交分解的形式,V就是ATA的標准化后的特征向量,σi2就是ATA的特征值,σi取特征值的正平方根。
正交向量的方向問題
,求A的奇異值分解。
目標是A=UΣVT,先求解V:
計算特征值和特征向量:
將特征向量標准化:
現在我們有了下面的式子:
通過上式可以進一步求得U。但是我們打算用和求V同樣的方式求得U:
好了,現在驗證一下奇異值分解的結果:
這個結果並不等於A。問題出在哪呢?
我們注意到,如果U的一個向量反向,U中的兩個向量仍然是正交向量,且此時可以完成奇異值分解:
這是因為在奇異值分解的過程中,一旦確認了V中向量的方向之后,U中向量的方向也一起被限定了,而在本例中,我們用一種和V無關的方式求得了U,而這種方法並不一定總是有效,需要嘗試改變向量的方向。通過將V代入AV=UΣ求得U,可以避免這個問題。
奇異矩陣的奇異值分解
奇異矩陣A也可以進行奇異值分解。,求奇異矩陣A的奇異值分解。
A是秩1矩陣。容易看出A的行空間的基是v1=(4, 3),行空間是一維的,與之垂直的向量在零空間上,v2=(3, -4)。相應地,A的列空間也是一維的,它的基是u1=(1, 2),與之垂直的向量在左零空間上,u2=(2, -1)。將上面的4個向量標准化,得到4個新的向量:
接下來通過AAT的特征向量求得Σ:
AAT也是一個秩1矩陣,因此可確定一個特征值是0,通過矩陣的跡可確定另一個特征值是125,由此得到了Σ:
長方矩陣的奇異值分解
長方矩陣也可以進行奇異值分解。
雖然A是一個3×2的長方矩陣,但這並不影響奇異值分解。
可以看出AAT的3個特征值是5,0,0,3個特征向量標准正交向量:
注意此時奇異值矩陣是3×2的矩陣,它的尺寸和A一致(通過ATA只能求得2個特征值):
同樣的方法可以求得U。最終:
出處:微信公眾號 "我是8位的"
本文以學習、研究和分享為主,如需轉載,請聯系本人,標明作者和出處,非商業用途!
掃描二維碼關注作者公眾號“我是8位的”