← 回線性代數專區

Chapter 3 · 分解與譜論

🔱 奇異值分解 SVD

任何矩陣 — 不必方陣、不必可逆、不必對稱。三個步驟:先旋轉、再沿軸拉伸、再旋轉。

🎬 變換階段

🧪 低秩近似 (Low-Rank Approximation)

捨掉最小的奇異值,看 A 被「壓縮」後的近似 — 影像壓縮與推薦系統的核心。

🎯 預設矩陣

點按鈕,或直接編輯下面的矩陣。

任意矩陣
🌟 奇異值 (大→小)

秩 (rank)3
條件數 1

🔍 展開看 U 與 V 矩陣

📖 任何矩陣 = 旋轉 → 拉伸 → 旋轉

奇異值分解(Singular Value Decomposition)說的是一個驚人的事實:任何矩陣(不必方陣、不必可逆、不必對稱)都能拆成三步

其中:

  • 正交矩陣(純旋轉/反射,不會改變長度)
  • 對角矩陣,對角線上是奇異值(singular values)

🎬 用上面那個動畫看四個階段

按上面的「變換階段」按鈕,看單位球被 變形的過程:

  1. 階段 0:單位球 — 起點是個球。三條彩色箭頭是 的三個欄向量(「輸入主方向」)。
  2. 階段 1:套用 — 球還是球(旋轉不改變球形),但三條箭頭轉到 X/Y/Z 軸了。意思是「先把輸入空間轉到主方向對齊的座標系」。
  3. 階段 2:套用 — 球變橢球!沿著 X/Y/Z 軸各自被拉伸 倍。橢球的主軸長度就是奇異值。
  4. 階段 3:套用 — 橢球被旋轉到最終位置。三條箭頭現在是 (輸出主方向 × 對應奇異值)。

💎 SVD vs 特徵分解:誰大誰小

SVD 是特徵分解的進階推廣:

  • 特徵分解:只能用在方陣,特徵值可能是複數,可能不可對角化(需要 Jordan form)。
  • SVD任何矩陣都能做,奇異值永遠是實數且 ≥ 0永遠存在

數學上的關係: 的特徵值。也就是說,SVD 本質上是「先把矩陣弄成對稱的(乘上 ),再做特徵分解」。

🗜️ 低秩近似 — 影像壓縮的魔術

奇異值是按重要性排序的: 抓最多「能量」、 第二多… 最小的 可能比 小幾百倍。

把小的奇異值設成 0,就得到 的「低秩近似」:

Eckart-Young 定理說這個 是「保留 k 個成分下,最接近原矩陣的近似」。試試上面的低秩近似按鈕,看橢球變形 — 失去最小的軸幾乎看不出差別。

🚀 CS 上的核心應用

  • 影像壓縮:把影像當成矩陣,丟掉小的奇異值。保留前 10% 的 σ 就能還原 90% 的視覺內容。JPEG 的 DCT 是這個思路的近親。
  • 推薦系統:用戶 × 電影評分矩陣做 SVD,前幾個奇異值對應「潛在因子」(動作片偏好、文藝片偏好...)。Netflix Prize 的核心。
  • PCA (主成分分析):對中心化的資料矩陣做 SVD,左奇異向量就是主成分。比直接算 covariance 矩陣的特徵分解數值上更穩定。
  • LSA (潛在語意分析):文件 × 詞彙矩陣 SVD,奇異向量代表潛在的「主題」。
  • 偽反矩陣 (pseudoinverse):當 A 不是方陣或不可逆時,(把 σᵢ 取倒數,0 保留 0)給出最小平方意義下的「最佳解」。
  • 條件數判斷數值穩定性。κ 大代表矩陣「近乎奇異」,數值計算會放大誤差。

🎮 動手試試

  1. 沿軸拉伸 → σ = (3, 1.5, 0.5),秩 = 3。把低秩近似設成「保留 σ₁」 → 橢球變一條棒。
  2. 旋轉 45° → σ = (1, 1, 1)。雖然 U, V 都不是單位矩陣,但 Σ 是 — 純旋轉沒有主軸方向,每個方向都「等長」。
  3. Rank 2 → σ₃ = 0,橢球變成平面圓盤。這就是「降維」的視覺意義。
  4. 條件數大 → σ₁/σ₃ = 1000,看條件數 κ 飆高。這種矩陣求逆會放大誤差 1000 倍。
  5. 「變換階段」按鈕一步一步看 SVD 分解的過程。

💡 演算法細節

這頁的 SVD 用「 路線」:對 (對稱正半定)做特徵分解得到 V 跟 σ²,再用 算 U。實務上的 SVD 庫(LAPACK 等)用更穩定的雙對角化 + QR 迭代,但思路一樣。