1. 程式人生 > >奇異值分解的理解

奇異值分解的理解

我們都知道,圖片實際上對應著一個矩陣,矩陣的大小就是畫素大小,比如這張圖對應的矩陣階數就是450*333,矩陣上每個元素的數值對應著畫素值。我們記這個畫素矩陣為A

現在我們對矩陣A進行奇異值分解。直觀上,奇異值分解將矩陣分解成若干個秩一矩陣之和,用公式表示就是:
(1) \quad\quad \qquad A = \sigma_1 u_1v_1^{\rm T}+\sigma_2 u_2v_2^{\rm T}+...+\sigma_r u_rv_r^{\rm T}
其中等式右邊每一項前的係數\sigma就是奇異值,uv分別表示列向量,秩一矩陣的意思是矩陣秩為1。注意到每一項uv^{\rm T}都是秩為1的矩陣。我們假定奇異值滿足\sigma_1\geq\sigma_2\geq...\geq\sigma_r>0(奇異值大於0是個重要的性質,但這裡先別在意),如果不滿足的話重新排列順序即可,這無非是編號順序的問題。

既然奇異值有從大到小排列的順序,我們自然要問,如果只保留大的奇異值,捨去較小的奇異值,這樣(1)式裡的等式自然不再成立,那會得到怎樣的矩陣——也就是影象?

A_1=\sigma_1 u_1v_1^{\rm T},這隻保留(1)中等式右邊第一項,然後作圖:
結果就是完全看不清是啥……我們試著多增加幾項進來:A_5=\sigma_1 u_1v_1^{\rm T}+\sigma_2 u_2v_2^{\rm T}+\sigma_3 u_3v_3^{\rm T}+\sigma_4 u_4v_4^{\rm T}+\sigma_5 u_5v_5^{\rm T},再作圖
隱約可以辨別這是短髮伽椰子的臉……但還是很模糊,畢竟我們只取了5個奇異值而已。下面我們取20個奇異值試試,也就是(1)式等式右邊取前20項構成A_{20}

雖然還有些馬賽克般的模糊,但我們總算能辨別出這是Juri醬的臉。當我們取到(1)式等式右邊前50項時:
我們得到和原圖差別不大的影象。也就是說當k從1不斷增大時,A_k不斷的逼近A。讓我們回到公式
(1) \quad\quad \qquad A = \sigma_1 u_1v_1^{\rm T}+\sigma_2 u_2v_2^{\rm T}+...+\sigma_r u_rv_r^{\rm T}
矩陣A表示一個450*333的矩陣,需要儲存450\times 333=149850個元素的值。等式右邊uv分別是450*1和333*1的向量,每一項有1+450+333=784個元素。如果我們要儲存很多高清的圖片,而又受限於儲存空間的限制,在儘可能保證影象可被識別的精度的前提下,我們可以保留奇異值較大的若干項,捨去奇異值較小的項即可。例如在上面的例子中,如果我們只保留奇異值分解的前50項,則需要儲存的元素為784\times50=39200,和儲存原始矩陣A相比,儲存量僅為後者的26%。

下面可以回答題主的問題:奇異值往往對應著矩陣中隱含的重要資訊,且重要性和奇異值大小正相關。每個矩陣A
都可以表示為一系列秩為1的“小矩陣”之和,而奇異值則衡量了這些“小矩陣”對於A的權重。


在影象處理領域,奇異值不僅可以應用在資料壓縮上,還可以對影象去噪。如果一副影象包含噪聲,我們有理由相信那些較小的奇異值就是由於噪聲引起的。當我們強行令這些較小的奇異值為0時,就可以去除圖片中的噪聲。如下是一張25*15的影象(本例來源於[1])
但往往我們只能得到如下帶有噪聲的影象(和無噪聲影象相比,下圖的部分白格子中帶有灰色):
通過奇異值分解,我們發現矩陣的奇異值從大到小分別為:14.15,4.67,3.00,0.21,……,0.05。除了前3個奇異值較大以外,其餘奇異值相比之下都很小。強行令這些小奇異值為0,然後只用前3個奇異值構造新的矩陣,得到
可以明顯看出噪聲減少了(白格子上灰白相間的圖案減少了)。

奇異值分解還廣泛的用於主成分分析(Principle Component Analysis,簡稱PCA)和推薦系統(如Netflex的電影推薦系統)等。在這些應用領域,奇異值也有相應的意義。

考慮題主在問題描述中的敘述:“把m*n矩陣看作從m維空間到n維空間的一個線性對映,是否:各奇異向量就是座標軸,奇異值就是對應座標的係數?”我猜測,題主更想知道的是奇異值在數學上的幾何含義,而非應用中的物理意義。下面簡單介紹一下奇異值的幾何含義,主要參考文獻是美國數學協會網站上的文章[1]。

下面的討論需要一點點線性代數的知識。線性代數中最讓人印象深刻的一點是,要將矩陣和空間中的線性變換視為同樣的事物。比如對角矩陣M作用在任何一個向量上
\begin{bmatrix}3 & 0 \\0 & 1\end{bmatrix}\begin{bmatrix}x \\y\end{bmatrix}=\begin{bmatrix}3x \\y\end{bmatrix}
其幾何意義為在水平x方向上拉伸3倍,y方向保持不變的線性變換。換言之對角矩陣起到作用是將水平垂直網格作水平拉伸(或者反射後水平拉伸)的線性變換。
如果M不是對角矩陣,而是一個對稱矩陣
M=\begin{bmatrix}2 & 1 \\1 & 2\end{bmatrix}
那麼,我們也總可以找到一組網格線,使得矩陣作用在該網格上僅僅表現為(反射)拉伸變換,而沒有旋轉變換
考慮更一般的非對稱矩陣
M=\begin{bmatrix}1 & 1 \\0 & 1\end{bmatrix}
很遺憾,此時我們再也找不到一組網格,使得矩陣作用在該網格上之後只有拉伸變換(找不到背後的數學原因是對一般非對稱矩陣無法保證在實數域上可對角化,不明白也不要在意)。我們退求其次,找一組網格,使得矩陣作用在該網格上之後允許有拉伸變換旋轉變換,但要保證變換後的網格依舊互相垂直。這是可以做到的
下面我們就可以自然過渡到奇異值分解的引入。奇異值分解的幾何含義為:對於任何的一個矩陣,我們要找到一組兩兩正交單位向量序列,使得矩陣作用在此向量序列上後得到新的向量序列保持兩兩正交。下面我們要說明的是,奇異值的幾何含義為:這組變換後的新的向量序列的長度。
當矩陣M作用在正交單位向量v_1v_2上之後,得到Mv_1Mv_2也是正交的。令u_1u_2分別是Mv_1Mv_2方向上的單位向量,即Mv_1=\sigma_1 u_1Mv_2=\sigma_2 u_2,寫在一起就是M\left[ v_1\quad  v_2 \right]=\left[ \sigma_1u_1\quad  \sigma_2u_2 \right],整理得:

M=M\left[ v_1\quad  v_2 \right]\begin{bmatrix}v_1^{\rm T} \\v_2^{\rm T}\end{bmatrix}=\left[ \sigma_1u_1\quad  \sigma_2u_2 \right]\begin{bmatrix}v_1^{\rm T} \\v_2^{\rm T}\end{bmatrix}=\left[ u_1\quad  u_2 \right]\begin{bmatrix}\sigma_1 & 0 \\0 & \sigma_2\end{bmatrix}\begin{bmatrix}v_1^{\rm T} \\v_2^{\rm T}\end{bmatrix}

這樣就得到矩陣M的奇異值分解。奇異值\sigma_1\sigma_2分別是Mv_1Mv_2的長度。很容易可以把結論推廣到一般n維情形。

下面給出一個更簡潔更直觀的奇異值的幾何意義(參見[2])。先來一段線性代數的推導,不想看也可以略過,直接看黑體字幾何意義部分:

假設矩陣A的奇異值分解為
A=\left[ u_1\quad u_2 \right]\begin{bmatrix}3 & 0 \\0 & 1\end{bmatrix}\begin{bmatrix}v_1^{\rm T} \\v_2^{\rm T}\end{bmatrix}
其中u_1,~u_2,~v_1,~v_2是二維平面的向量。根據奇異值分解的性質,u_1,~u_2線性無關,v_1,~v_2線性無關。那麼對二維平面上任意的向量x,都可以表示為:x=\xi_1 v_1+\xi_2 v_2

A作用在x上時,
y=Ax=A[v_1\quad v_2]\begin{bmatrix}\xi_1 \\\xi_2\end{bmatrix}=\left[ u_1\quad u_2 \right]\begin{bmatrix}3 & 0 \\0 & 1\end{bmatrix}\begin{bmatrix}v_1^{\rm T} \\v_2^{\rm T}\end{bmatrix}[v_1\quad v_2]\begin{bmatrix}\xi_1 \\\xi_2\end{bmatrix}=3\xi_1u_1+\xi_2u_2

\eta_1=3\xi_1,~\eta_2=\xi_2,我們可以得出結論:如果x是在單位圓\xi_1^2+\xi_2^2=1上,那麼y正好在橢圓\eta_1^2/3^2+\eta_2^2/1^2=1上。這表明:矩陣A將二維平面中單位圓變換成橢圓,而兩個奇異值正好是橢圓的兩個半軸長,長軸所在的直線是{\rm span}\{u_1\},短軸所在的直線是{\rm span}\{u_2\}.

推廣到一般情形:一般矩陣A將單位球\|x\|_2=1變換為超橢球面E_m=\{y\in {\bf C}^m:~y=Ax,~x\in{\bf C}^n,~\|x\|_2=1\},那麼矩陣A的每個奇異值恰好就是超橢球的每條半軸長度




參考文獻:
[1] We Recommend a Singular Value Decomposition(Feature Column from the AMS
[2] 徐樹方,《矩陣計算的理論與方法》,北京大學出版社。