JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

奇異值分解

[[singular-value-decomposition|SVD]] 把**任意**矩陣寫成 A = U*S*V^T——無論方不方、可不可逆都行。幾何上它說:每一個線性映射不過是旋轉、拉伸、再旋轉。拉伸量就是奇異值;它們揭示[[rank|秩]],並與[[eigenvalue|特徵值]]相聯繫。這是整個線性代數裡最一般、最有用的分解。

適用於一切矩陣的分解

譜定理很美,但它只對對稱矩陣成立。可大多數矩陣並不對稱——許多甚至不是方陣。奇異值分解(SVD)能處理它們全部。對任意 m-by-n 的矩陣 A:A = U*S*V^T,其中 U 和 V 是正交矩陣(旋轉/反射),S 是對角矩陣、元素非負。

A = U * S * V^T
  V^T : rotate the input  (orthogonal)
  S   : stretch each axis by sigma_1 >= sigma_2 >= ... >= 0
  U   : rotate into the output (orthogonal)
任何線性映射 = 旋轉,再沿各軸拉伸,再旋轉。永遠如此,對每個矩陣都成立。

幾何:旋轉、拉伸、旋轉

想像單位圓。作用 A 之後它變成一個橢圓。SVD 精確地命名了這個變換的各個部件。

  1. V^T 旋轉輸入空間,讓那些特殊的輸入方向對齊到座標軸上。
  2. S 按各自的奇異值 sigma_i 拉伸每個軸——它們就是橢圓各半軸的長度。
  3. U 把拉伸後的結果旋轉到它在輸出空間裡的最終朝向。

奇異值 sigma_1 >= sigma_2 >= ... >= 0 是 SVD 的核心。大的奇異值對應矩陣大幅拉伸的方向;近乎為零的奇異值對應它幾乎壓扁的方向。這一串有序的數幾乎告訴你矩陣行為的一切。

奇異值、秩與特徵值

非零奇異值的個數恰好就是 A 的。所以 SVD 透過數個數就讀出了秩——而且關鍵在於,它讓你能衡量*近似*秩:若某個奇異值很小但不完全為零,那麼這個矩陣*近乎*是更低的秩,這正是下一篇壓縮的全部根據。