摘要
SVD(Singular Value Decomposition, 奇異值分解)是線性代數中既優雅又強大的工具, 它揭示了矩陣最本質的變換. 使用SVD對矩陣進行分解, 能得到代表矩陣最本質變化的矩陣元素. 這就好比一個合數能表示為若干質數之積, 分解合數能得到表示該合數的質因數; 複雜周期信號可以表示為若干簡單的正弦波和餘弦波之和, 使用傅里葉變換能得到表示該信號的簡單波; 複雜矩陣所代表的線性變換可由若干個簡單矩陣所代表的線性變換組合起來, 使用SVD能找到這些簡單矩陣. 本文由以下章節, 對SVD進行闡述:
- 闡述SVD的數學涵義;
- 闡述SVD的幾何涵義;
- 闡述SVD的求解過程;
- 闡述SVD的具體應用;
- 總結.
SVD的數學涵義
矩陣在線性代數系統中是一個核心的概念, 其從不同的角度出發都能擁豐富的內涵. 對於矩陣 , 當其參與運算
時, 我們可以從以下三個角度看待其角色:
- 矩陣 是線性方程組(1)的係數組成的矩陣, 其每一行是(1)中每一個方程式的係數部分, 通過分析矩陣的秩 和其極大線性無關組的情況, 我們可以了解(1)的解的情況, 同時, 對於使用高斯消元法等進行求解也比較方便;
- 當 時, 矩陣 是 空間中的一個基, 在這個基上面, 有向量 , 而此向量在標準正交基上表示為 , 此時(1)隱含著一個基變換的關係, 即 , 為標準正交基;
- 矩陣 本身表示一個線性變換, (1)表示其對向量 進行線性變換得到向量 的過程.
上述的關於矩陣的各種角色與我們闡述SVD有什麼關係呢? 當我們將矩陣視為一種線性變換時, SVD可以幫我們揭示組成該線性變換的最本質的變換, 具體地, SVD揭示了這樣的一個事實: 對於任意的矩陣 , 我們總能找到一組單位正交基, 使得 對其進行變換之後, 得到的向量組仍然是正交的. 這樣的表述還是相當地晦澀, 我們不妨在二維平面中舉一個例子.
設有矩陣 , 其對單位正交基 進行線性變換, 得到的向量仍然是彼此正交的, 即 仍然是正交的. 設 方向上的單位向量是 , 長度是 , 則我們可得
現在利用矩陣 對向量 進行線性變換. 我們先將向量 在單位正交基 上進行表示, 即
由(2), (3), (4), 我們有
至此, 我們由"對於任意的矩陣 , 我們總能找到一組單位正交基, 使得 對其進行變換之後, 得到的向量組仍然是正交的", 即(2)(3)出發, 得到了矩陣 最終的分解形式(6). (6)表達了這樣一個事實, 對於任意的矩陣 , 我們總可以將其分解為一個酉矩陣 , 一個對角矩陣 和另一個酉矩陣的轉置 的乘積, 這便是SVD的核心內容.
SVD的幾何涵義
現在我們知道, 對於任意的矩陣 , 我們總可以將其分解為一個酉矩陣 , 一個對角矩陣 和另一個酉矩陣的轉置 的乘積, 即等式(6)所表述的內容. 表示矩陣 所代表的線性變換可以由更簡單的旋轉, 拉伸變換進行合成. 這些更簡單的變換是怎麼進行生效的呢? 我們還是在二維平面中舉例說明.
當使用矩陣 對向量 進行變化時, 我們可以先將向量 在單位正交基 上進行表示, 即(4)所表述. 我們不妨令 , 則 是向量 在單位正交基 上的坐標, 即
由(6), (7)我們有
現在我們仔細地來分析(8)中各矩陣的具體操作效果.
如(9)所示, 矩陣 對向量 進行線性變換, 其先將向量 用單位正交基 進行表示. 然後使用酉矩陣 進行旋轉, 由酉矩陣的性質我們可知 , 所以旋轉之後我們可得到標準正交基 . 然後使用矩陣 對標準正交基 進行拉伸, 使得 分別拉伸 倍的長度. 最後再使用酉矩陣 對拉伸之後的正交基進行旋轉, 得到最終的基, 從而得到最終的向量為
上述過程可表示為下圖