Deep Learning基礎--SVD奇異值分解


矩陣奇異值的物理意義是什么?如何更好地理解奇異值分解?下面我們用圖片的例子來扼要分析。

矩陣的奇異值是一個數學意義上的概念,一般是由奇異值分解(Singular Value Decomposition,簡稱SVD分解)得到。如果要問奇異值表示什么物理意義,那么就必須考慮在不同的實際工程應用中奇異值所對應的含義。下面先盡量避開嚴格的數學符號推導,直觀的從一張圖片出發,讓我們來看看奇異值代表什么意義。

這是女神上野樹里(Ueno Juri)的一張照片,像素為高度450*寬度333。

我們都知道,圖片實際上對應着一個矩陣,矩陣的大小就是像素大小,比如這張圖對應的矩陣階數就是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的每個奇異值恰好就是超橢球的每條半軸長度

 
作者:鄭寧
鏈接:https://www.zhihu.com/question/22237507/answer/53804902
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM