本文的閱讀等級:中級
奇異值分解 (singular value decomposition,以下簡稱 SVD) 被譽為矩陣分解的「瑞士刀」和「勞斯萊斯」[1],前者說明它的用途非常廣泛,後者意味它是值得珍藏的精品。在“線性代數基本定理 (四)”一文,我們介紹了 SVD 的推導,並於矩陣的四個子空間分析平台解釋其幾何涵義,本文簡述 SVD 重點並舉一例說明分解式的計算步驟。
設 為一 階實矩陣,,SVD 具有以下形式:
其中 是 階, 是 階, 是 階。方陣 和 都是實正交矩陣 (orthogonal matrix),也就是說,,, 是主對角矩陣,如下:
主對角元 ,,,,稱為奇異值 (singular values)。注意,SVD 的分解結果並非唯一的。為了方便應用,我們習慣將奇異值由大至小排序:。
利用圖示可以幫助我們了解 SVD 的矩陣結構,SVD 最特別的地方是 的多數元為零,下圖的白色區塊以及黃色區塊的非對角元皆為零。
令 的行向量為 , 的行向量為 , 可以表示為 個秩-1(rank-one)矩陣之和:
這指出 僅由 的前 個行向量 (以 表示), 的前 個列向量 (以 表示),以及 的左上 分塊決定 (以 表示),稱為「瘦」奇異值分解,如下圖所示。這個結果看似不起眼,其實它有重大的意義。矩陣 總共有 個元, 有 個元, 有 個元, 則只需儲存主對角的 個非零元,若以 SVD 形式儲存,總計有 個元。當 遠小於 和 時,利用矩陣的 SVD 可以大幅減少儲存量。
我們可以將 SVD 想成把變換矩陣 分解為旋轉 ,伸縮 ,再旋轉 三個步驟,下圖為 階矩陣的分解變換。另一方面, 也可以視為變換矩陣 參考了基底 和 的主對角變換矩陣 (見“線性變換觀點下的奇異值分解”)。
SVD 的計算主要是利用下面幾個性質:
(1) 和 的非零特徵值為 ,,。注意, 和 是半正定 (positive semidefinite) 矩陣,其特徵值必定不為負數。
(2) 的單位特徵向量為 ,
(3) 的單位特徵向量為 ,
(4) 對於 , 和 具有以下關係:
對應奇異值 , 稱為左奇異向量, 稱為右奇異向量。
下面試舉一例說明奇異值分解計算程序,考慮 階矩陣[2]
步驟一:計算交互乘積矩陣 :
步驟二:求 的特徵值和特徵向量,並由大至小排序:
對應的單位特徵向量依序為
非零奇異值為 ,,。
步驟三:設定 和 :
步驟四:最後計算 。對於 ,此例 ,可直接計算 ,結果如下:
而 則由 Gram-Schmidt 正交化程序求出:
合併得到
在“通過推導偽逆矩陣認識線性代數的深層結構”一文,我曾經介紹 SVD 於最小平方近似解的應用並一路推導出偽逆矩陣,從而徹底解決了線性方程的求解問題。了解該篇專欄內容需要相當的耐心與毅力,但付出絕對值得,因為這個主題是線性代數的聖母峰。
參考來源:
[1] Gene H. Golub, Michacel W. Mahoney, Petros Drineas, and Lek-Heng Lim, Bridging the Gap Between Numerical Linear Algebra, Theoretical Computer Science, and Data Applications, SIAM News, Vol. 39, No. 8, 2006.
[2] 維基百科:Singular value decomposition