每日一式 · No.016
✦ 第三季 · 收官
A = U·Σ·VT
奇異值分解 · Singular Value Decomposition
任何矩陣 —— 再歪、甚至壓扁 —— 都是「轉 → 拉 → 轉」的三步舞。
📜 公式的身世
百萬美元懸賞的結局
2006 年,Netflix 開出百萬美元懸賞:把推薦準確度提高 10%,獎金就是你的 —— 四萬多支隊伍鏖戰三年,冠軍方案的核心武器正是 SVD 家族:把「觀眾 × 電影」的巨大評分矩陣,拆出一根根看不見的品味軸。結局出人意料:奪冠演算法太複雜,Netflix 評估後從未部署上線。獎金照發、論文長存,連同一條工程鐵律:最強的模型,不一定是最能上工的模型。
🌍 它今天在哪裡上工
🖼
圖片瘦身術 —— 一張照片就是一顆大矩陣;只留最大的前 50 個奇異值,檔案剩幾個百分比、人眼幾乎看不出差別。
🧠
從腦波裡撈訊號 —— 腦電圖混著眨眼與心跳的雜訊,SVD 把「大動作」與「小訊號」分層 —— 醫師才看得到真正的腦活動。
🔎
搜尋引擎的同義詞 —— 「筆電」和「laptop」從沒同時出現也能互通 —— 潛在語意分析用 SVD 把詞壓進同一條語意軸。
第三季走到這裡,還欠一個交代。013 的皇冠很美,但很挑:旋轉沒有實數特徵向量、剪切的軸線擠成一團、長方形矩陣連資格都沒有。收官這課給出線性代數最後、也最寬容的定理:任何矩陣,都能拆成 U·Σ·Vᵀ —— 一個旋轉、一個純拉伸、再一個旋轉。沒有例外。
💃白話版:再複雜的變換,也只是「換個角度進場(Vᵀ)、沿正交軸拉伸(Σ)、換個角度出場(U)」的三步舞。歪,是因為你站錯了角度看它。
四章:先看三步舞現場拆解(拿 013 翻車的剪切開刀);再認識 σ 的身分 —— 單位圓變橢圓,σ 就是橢圓的軸(順便給 015 的「病態」正名);然後是加課薄片的完全體:用 SVD 壓縮一條小魚;最後,一張走廊收整季 —— 包括 015 那句「無解就認了嗎?」的救贖。
Part 1 · 拉了就懂(白話)
I
第一章 · 三步舞:轉、拉、轉 —— 現場拆解
013 翻車的剪切,在 SVD 眼裡也只是:進場角度 → 純拉伸 → 出場角度。
💃選一顆「歪」矩陣 —— 比如剪切,013 拿它沒轍(特徵向量擠成一條)。SVD 說:別急,它只是舞步被你看糊了。按播放,看同一顆矩陣被拆成三步:第一步 Vᵀ,整個平面轉一個進場角;第二步 Σ,沿著兩條互相垂直的軸純拉伸(σ₁ 倍與 σ₂ 倍,零攪和);第三步 U,再轉一個出場角 —— 落點,與直接施工 A 分毫不差。
互動 · 播放三步,終點 = 直接套 A 的結果
進場旋轉 Vᵀ—
拉伸 Σ = diag(σ₁, σ₂)—
出場旋轉 U—
驗收 U·Σ·Vᵀ—
玩玩看,注意這些
- 播「剪切」:進場轉約 −56°、拉伸 (1.48, 0.68)、出場轉約 +34° —— 三步的終點,就是剪切。013 治不了的病人,SVD 三步收工。
- 切「對稱 [2 1/1 2]」:σ = (3, 1) —— 正好是 013 的特徵值!對稱矩陣是 SVD 與特徵分解重合的乖孩子(U = V);SVD 是皇冠的推廣,不是取代。
- 關鍵差異:013 找「方向不變」的軸(挑剔);SVD 找「互相垂直進、互相垂直出」的軸 —— 這樣的軸永遠存在,連長方形矩陣都有。寬容,是它稱王的原因。
一句話帶走:任何 A = U·Σ·Vᵀ = 轉·拉·轉;對稱矩陣時退化回 013 的特徵分解 —— SVD 是人人適用的皇冠。
II
第二章 · σ 是什麼:單位圓變橢圓,σ 就是軸
013 獵「不轉向」,今天獵「最大增益」—— σ₁ 是這顆矩陣的最強放大率。
🥚把單位圓餵給任何矩陣,吐出來的永遠是一顆橢圓(012 你已見過那圈淡青)。SVD 給了這顆蛋精確的身分證:橢圓的半長軸 = σ₁、半短軸 = σ₂;長軸方向 = U 的第一欄。換句話說:σ₁ 是這顆矩陣「最猛的放大率」、σ₂ 是最弱的。來獵一次 —— 這回不獵方向,獵增益:轉動 v,盯著 |Av| 的長度計,找它登頂的瞬間。
互動 · A = [1.6 −0.4 / 0.6 1.2] · 獵最大增益 σ₁
目前增益 |Av|—
σ₁ / σ₂(最大 / 最小)—
條件數 κ = σ₁/σ₂—
玩玩看,注意這些
- 掃 θ:青箭頭 Av 的頭沿著橢圓滑,增益計起起伏伏 —— 巔峰 = σ₁,谷底 = σ₂,兩個極值方向互相垂直(V 的兩欄)。
- 按 🎯:跳到最大增益方向 —— 進場走 V 第一欄、出場沿 U 第一欄(橢圓長軸)。σ 把「這顆矩陣最多能放大多少」一句話說死。
- 015 的伏筆兌現:條件數 κ = σ₁/σ₂ —— 最猛與最弱放大率的比。κ 大 = 有些方向被狂放大、有些被壓死 = 解方程時輸入的小抖動被放大 κ 倍 —— 「病態」的正身,就是這個比值。
✦ σ 從哪來(一行):AᵀA 永遠是對稱矩陣 —— 對稱就能用 013 的皇冠!它的特徵值恰是 σ²、特徵向量就是 V。SVD = 借道對稱矩陣,把皇冠的福利發給所有人。(順帶:det A = ±σ₁σ₂ —— 面積帳單,換了個算法又對上了。)
一句話帶走:單位圓 → 橢圓,σ = 橢圓的軸 = 最大/最小放大率;κ = σ₁/σ₂ 是病態的正式度量;σ² 是 AᵀA 的特徵值 —— 皇冠借道,人人受惠。
Part 2 · 帶入深度
III
第三章 · 薄片完全體:用 σ 壓縮一條小魚
加課說「乘積是一疊薄片」—— SVD 給出最重要的那幾片,而且保證是最佳的。
📸加課第四章埋的種子,今天開花:任何矩陣都能寫成 A = σ₁·u₁v₁ᵀ + σ₂·u₂v₂ᵀ + ⋯ —— 一疊 rank-1 薄片,而且 σ 由大到小,把「重要性」排好了序。把一張 10×10 的小魚像素圖(100 個數字)只留前 k 片重組:k=1 已見魚形、k=3 眉目清楚、k=5 幾可亂真 —— Eckart–Young 定理保證:取前 k 片,是所有 rank-k 近似裡誤差最小的。沒有更聰明的切法了。
互動 · 左:原圖(100 格)· 右:只用前 k 片重組 · 下:σ 排行榜
k2
能量保留 Σσ²(前k) / Σσ²—
儲存量:原 100 個數字 →—
玩玩看,注意這些
- k=1:一片薄片(21 個數字)就浮出魚的大勢 —— 因為 σ₁ 一片就扛走大半能量。
- k=3:身形、尾巴到位,能量已逾九成 —— 用 63 個數字講完 100 個數字的故事,後面的 σ 小到只剩細節與雜訊。
- 拉到 k=10:逐格還原(數字量反而超過原圖 —— 壓縮只在「σ 衰減快」時划算,而真實世界的圖片、評分表、資料雲,σ 幾乎總是衰減得很快:世界是低秩的)。
🎬 同一招的三張臉:照片壓縮與去噪(小 σ ≈ 雜訊,砍掉反而更乾淨)、推薦系統(用戶×電影評分表 ≈ 少數幾片「口味薄片」—— Netflix 百萬美元大獎賽的主角)、PCA(資料矩陣的 SVD:V 的前幾欄 = 資料伸展最開的方向,013 走廊那張卡的引擎)。
一句話帶走:A = Σ σᵢ·uᵢvᵢᵀ,σ 排好重要性;取前 k 片 = 最佳 rank-k 近似(Eckart–Young)—— 壓縮、去噪、推薦、PCA,同一把刀。
IV
第四章 · 收官走廊:一張地圖,收完第三季
包括 015 留下的那句:「無解,就認了嗎?」
🛰️偽逆 A⁺ —— 無解的救贖(015 收尾)
方程無解時,SVD 造出偽逆:把 σ 取倒數(0 的照舊放 0)拼回去 —— 給出「誤差最小的妥協解」= 最小平方法。GPS 定位、迴歸分析,天天在用。
🧯條件數 κ = σ₁/σₙ
數值計算的安全帽:κ 大就別信你的解。015 的「病態」在此領到正式身分證。
🔢秩 rank = 非零 σ 的個數
012 的壓扁、015 的無限解,統一成一句:少一個非零 σ,就塌掉一個維度。
🗜️低秩世界
語言的詞×文件矩陣做 SVD = 潛在語義分析 —— 今日 embedding 與推薦引擎的直系祖先。
🗺️ 第三季六課,一行一課:012 矩陣是動詞(兩欄=基底去向)→ 加課 乘法是接力的記帳法(四種讀法)→ 013 特徵向量是性格軸線(Av=λv)→ 014 馬可夫鏈讓機率上了矩陣的車(π=Pπ)→ 015 反矩陣是倒帶鍵(det=0 則失效)→ 016 SVD 說:以上全部,不過是轉·拉·轉。行列式 = ±σ 連乘、秩 = 非零 σ 個數、病態 = σ 的比值、特徵分解 = 對稱時的特例、薄片 = σ 排序的完全體 —— 一顆分解,收攏一季。
一句話帶走:SVD 是線性代數的總站:偽逆救無解、κ 量病態、rank 數維度、薄片做壓縮 —— 而這一切,只因為任何矩陣都是三步舞。
第三季,收官 ——
任何線性動作,無論多歪:轉、拉、轉。
σ 是增益的排行榜、橢圓的軸、病態的量尺;
薄片由大到小,壓縮了圖片、口味與語言;
連「無解」都領到了最好的妥協。
從「矩陣是動詞」出發,六課之後 ——
所有動詞,原來共用同一套舞步。