本文的閱讀等級:中級
奇異值分解 (singular value decomposition,以下簡稱 SVD) 被譽為矩陣分解的「瑞士刀」和「勞斯萊斯」[1],前者說明它的用途非常廣泛,後者意味它是值得珍藏的精品。在“線性代數基本定理 (四)”一文,我們介紹了 SVD 的推導,並於矩陣的四個子空間分析平台解釋其幾何涵義,本文簡述 SVD 重點並舉一例說明分解式的計算步驟。

美國史丹佛大學教授格魯布 (Gene Golub) 於矩陣運算的貢獻造就 SVD 成為今日最重要的線性代數應用 From https://i-blog.csdnimg.cn/blog_migrate/376b806328993264d6a71f2547e548f1.jpeg
設 為一
階實矩陣,
,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