低秩分解的本質是通過基矩陣和系數矩陣的線性組合,以最小的存儲和計算代價近似表示復雜矩陣
flyfish
一、最基礎起點:數字與數組
-
數字與標量(Scalar)
- 單獨的數,如 1 , 2.5 , ? 3 1, 2.5, -3 1,2.5,?3,只表示大小,沒有方向。
- 例子:蘋果單價5元,“5”是標量。
-
數組(Array):數字的有序排列
- 按順序排列的一組數,用括號括起來,如 ( 1 , 2 , 3 ) (1, 2, 3) (1,2,3) 或 ( 1 2 3 ) \begin{pmatrix}1\\2\\3\end{pmatrix} ?123? ?。
- 區別:
- 橫排叫行數組: ( a 1 , a 2 , … , a n ) (a_1, a_2, \dots, a_n) (a1?,a2?,…,an?),
- 豎排叫列數組: ( a 1 a 2 ? a n ) \begin{pmatrix}a_1\\a_2\\\vdots\\a_n\end{pmatrix} ?a1?a2??an?? ?。
二、向量:一維數組的數學名稱
-
向量(Vector)的定義
- 行向量:1行n列的數組,如 v ? = ( v 1 , v 2 , v 3 ) \vec{v} = (v_1, v_2, v_3) v=(v1?,v2?,v3?),
- 列向量:n行1列的數組,如 u ? = ( u 1 u 2 u 3 ) \vec{u} = \begin{pmatrix}u_1\\u_2\\u_3\end{pmatrix} u= ?u1?u2?u3?? ?。
- 本質:向量是“帶方向的量”,但初學者可先理解為“有序數組”。
-
向量的線性組合
- 用常數乘以向量再相加,如 2 v ? + 3 u ? 2\vec{v} + 3\vec{u} 2v+3u,結果仍是向量。
- 例子: v ? = ( 1 , 2 ) \vec{v}=(1,2) v=(1,2), u ? = ( 3 , 4 ) \vec{u}=(3,4) u=(3,4),則 2 v ? + 3 u ? = ( 2 × 1 + 3 × 3 , 2 × 2 + 3 × 4 ) = ( 11 , 16 ) 2\vec{v}+3\vec{u}=(2×1+3×3, 2×2+3×4)=(11,16) 2v+3u=(2×1+3×3,2×2+3×4)=(11,16)。
三、矩陣:二維數組的“表格”
-
矩陣(Matrix)的結構
- 由行和列組成的表格,如 m m m 行 n n n 列矩陣記作 m × n m×n m×n,每個位置元素用 a i j a_{ij} aij? 表示(第 i i i 行第 j j j 列)。
- 例子:2×3矩陣
A = ( a 11 a 12 a 13 a 21 a 22 a 23 ) = ( 1 2 3 4 5 6 ) A = \begin{pmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \end{pmatrix} = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{pmatrix} A=(a11?a21??a12?a22??a13?a23??)=(14?25?36?)- 第1行: ( 1 , 2 , 3 ) (1,2,3) (1,2,3),第2行: ( 4 , 5 , 6 ) (4,5,6) (4,5,6),
- 第1列: ( 1 4 ) \begin{pmatrix}1\\4\end{pmatrix} (14?),第2列: ( 2 5 ) \begin{pmatrix}2\\5\end{pmatrix} (25?),第3列: ( 3 6 ) \begin{pmatrix}3\\6\end{pmatrix} (36?)。
-
特殊矩陣:向量的擴展
- 行向量 = 1×n矩陣,列向量 = n×1矩陣,
- 單位矩陣 I I I:主對角線為1,其余為0的方陣(如 ( 1 0 0 1 ) \begin{pmatrix}1&0\\0&1\end{pmatrix} (10?01?))。
四、矩陣乘法:從點積到“行列配對”
-
向量點積(Dot Product):兩個向量的“匹配度”
- 條件:兩個向量長度相同,對應元素相乘后求和,結果是一個數。
- 公式: a ? ? b ? = a 1 b 1 + a 2 b 2 + ? + a n b n \vec{a} \cdot \vec{b} = a_1b_1 + a_2b_2 + \dots + a_nb_n a?b=a1?b1?+a2?b2?+?+an?bn?
- 例子: a ? = ( 1 , 2 , 3 ) \vec{a}=(1,2,3) a=(1,2,3), b ? = ( 4 , 5 , 6 ) \vec{b}=(4,5,6) b=(4,5,6),
a ? ? b ? = 1 × 4 + 2 × 5 + 3 × 6 = 4 + 10 + 18 = 32 \vec{a} \cdot \vec{b} = 1×4 + 2×5 + 3×6 = 4 + 10 + 18 = 32 a?b=1×4+2×5+3×6=4+10+18=32
-
矩陣乘法:行與列的點積組合
- 條件:左矩陣的列數 = 右矩陣的行數,如 m × n m×n m×n 矩陣 × n × p n×p n×p 矩陣 = m × p m×p m×p 矩陣。
- 計算步驟:結果矩陣的第 i i i 行第 j j j 列元素 = 左矩陣第 i i i 行與右矩陣第 j j j 列的點積。
- 例子:
A = ( 1 2 3 4 ) ( 2 × 2 ) , B = ( 5 6 7 8 ) ( 2 × 2 ) A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} \quad (2×2), \quad B = \begin{pmatrix} 5 & 6 \\ 7 & 8 \end{pmatrix} \quad (2×2) A=(13?24?)(2×2),B=(57?68?)(2×2)- 計算 A B AB AB 的第1行第1列:
A A A 第1行 ( 1 , 2 ) (1,2) (1,2) · B B B 第1列 ( 5 7 ) = 1 × 5 + 2 × 7 = 19 \begin{pmatrix}5\\7\end{pmatrix} = 1×5 + 2×7 = 19 (57?)=1×5+2×7=19, - 第1行第2列: ( 1 , 2 ) ? ( 6 8 ) = 1 × 6 + 2 × 8 = 22 (1,2) \cdot \begin{pmatrix}6\\8\end{pmatrix} = 1×6 + 2×8 = 22 (1,2)?(68?)=1×6+2×8=22,
- 第2行第1列: ( 3 , 4 ) ? ( 5 7 ) = 3 × 5 + 4 × 7 = 43 (3,4) \cdot \begin{pmatrix}5\\7\end{pmatrix} = 3×5 + 4×7 = 43 (3,4)?(57?)=3×5+4×7=43,
- 第2行第2列: ( 3 , 4 ) ? ( 6 8 ) = 3 × 6 + 4 × 8 = 50 (3,4) \cdot \begin{pmatrix}6\\8\end{pmatrix} = 3×6 + 4×8 = 50 (3,4)?(68?)=3×6+4×8=50,
- 結果:
A B = ( 19 22 43 50 ) AB = \begin{pmatrix}19 & 22 \\ 43 & 50\end{pmatrix} AB=(1943?2250?)
- 計算 A B AB AB 的第1行第1列:
五、秩(Rank):矩陣的“獨立信息數量”
-
線性相關與無關:向量間的“依賴關系”
- 線性相關:存在非零常數 k k k,使向量 a ? = k b ? \vec{a} = k\vec{b} a=kb(即一個向量是另一個的倍數)。
- 例子: a ? = ( 1 , 2 ) \vec{a}=(1,2) a=(1,2), b ? = ( 2 , 4 ) \vec{b}=(2,4) b=(2,4),因 b ? = 2 a ? \vec{b}=2\vec{a} b=2a,二者線性相關。
- 線性無關:不存在非零常數使 a ? = k b ? \vec{a} = k\vec{b} a=kb,即向量“互不依賴”。
- 例子: a ? = ( 1 , 2 ) \vec{a}=(1,2) a=(1,2), b ? = ( 2 , 1 ) \vec{b}=(2,1) b=(2,1),無法用倍數關系表示,線性無關。
- 線性相關:存在非零常數 k k k,使向量 a ? = k b ? \vec{a} = k\vec{b} a=kb(即一個向量是另一個的倍數)。
-
秩的定義:矩陣中線性無關的行/列向量數
- 矩陣 A A A 的秩 rank ( A ) = r \text{rank}(A) = r rank(A)=r,表示:
- 有 r r r 個行向量線性無關,其余行可由它們組合而成;
- 或有 r r r 個列向量線性無關,其余列可由它們組合而成。
- 例子:
A = ( 1 2 3 2 4 6 ) A = \begin{pmatrix} 1 & 2 & 3 \\ 2 & 4 & 6 \end{pmatrix} A=(12?24?36?)- 第2行是第1行的2倍,行向量線性相關,故 rank ( A ) = 1 \text{rank}(A)=1 rank(A)=1;
- 列向量中,第2列=2×第1列,第3列=3×第1列,所有列可由第1列表示,故線性無關的列數=1,秩=1。
- 矩陣 A A A 的秩 rank ( A ) = r \text{rank}(A) = r rank(A)=r,表示:
六、滿秩矩陣:秩與行列數的“相等關系”
-
列滿秩(Column Full Rank)
- 若矩陣 B B B 的列向量都線性無關,則 rank ( B ) = \text{rank}(B) = rank(B)= 列數 r r r,稱 B B B 列滿秩。
- 例子:
B = ( 1 0 0 1 2 3 ) ( 3 × 2 矩陣 ) B = \begin{pmatrix} 1 & 0 \\ 0 & 1 \\ 2 & 3 \end{pmatrix} \quad (3×2 \text{矩陣}) B= ?102?013? ?(3×2矩陣)- 列向量 ( 1 0 2 ) \begin{pmatrix}1\\0\\2\end{pmatrix} ?102? ? 和 ( 0 1 3 ) \begin{pmatrix}0\\1\\3\end{pmatrix} ?013? ? 不成倍數,線性無關,故 rank ( B ) = 2 = \text{rank}(B)=2= rank(B)=2= 列數,列滿秩。
-
行滿秩與滿秩方陣
- 行滿秩:行向量線性無關, rank = \text{rank}= rank= 行數;
- 滿秩方陣:行列數相同且 rank = \text{rank}= rank= 行數=列數(如單位矩陣)。
七、基矩陣:構建矩陣的“基礎零件”
-
基向量(Basis Vector):空間的“最小零件”
- 一組線性無關的向量,能通過線性組合表示空間中所有向量,且數量最少。
- 例子:二維平面中, e ? 1 = ( 1 , 0 ) \vec{e}_1=(1,0) e1?=(1,0) 和 e ? 2 = ( 0 , 1 ) \vec{e}_2=(0,1) e2?=(0,1) 是一組基向量,任意向量 ( a , b ) = a e ? 1 + b e ? 2 (a,b) = a\vec{e}_1 + b\vec{e}_2 (a,b)=ae1?+be2?。
-
基矩陣(Basis Matrix):基向量的集合
- 由基向量組成的矩陣,每一列是一個基向量,且列滿秩。
- 例子:若矩陣 A A A 的列向量為 ( 1 2 ) , ( 2 4 ) , ( 3 6 ) \begin{pmatrix}1\\2\end{pmatrix}, \begin{pmatrix}2\\4\end{pmatrix}, \begin{pmatrix}3\\6\end{pmatrix} (12?),(24?),(36?),所有列都是 ( 1 2 ) \begin{pmatrix}1\\2\end{pmatrix} (12?) 的倍數,故基矩陣取第一列:
B = ( 1 2 ) ( 基矩陣,1列,列滿秩 ) B = \begin{pmatrix}1\\2\end{pmatrix} \quad (\text{基矩陣,1列,列滿秩}) B=(12?)(基矩陣,1列,列滿秩)
八、系數矩陣:基向量的“組裝說明書”
-
系數(Coefficient):基向量的“用量”
- 表示目標向量由多少倍的基向量組合而成,如 ( 3 , 6 ) = 3 × ( 1 2 ) (3,6) = 3×\begin{pmatrix}1\\2\end{pmatrix} (3,6)=3×(12?),“3”是系數。
-
系數矩陣(Coefficient Matrix):所有系數的表格
- 若原矩陣 A A A 的每一列都是基矩陣 B B B 的線性組合,則系數按列排列成矩陣 C C C。
- 例子: A = ( 1 2 3 2 4 6 ) A = \begin{pmatrix}1 & 2 & 3 \\ 2 & 4 & 6\end{pmatrix} A=(12?24?36?),各列與基矩陣 B = ( 1 2 ) B = \begin{pmatrix}1\\2\end{pmatrix} B=(12?) 的關系:
- 第1列: 1 × B 1×B 1×B,系數1;
- 第2列: 2 × B 2×B 2×B,系數2;
- 第3列: 3 × B 3×B 3×B,系數3;
故系數矩陣為行矩陣:
C = ( 1 2 3 ) ( 1行3列,每行對應A的一列系數 ) C = (1 \quad 2 \quad 3) \quad (\text{1行3列,每行對應A的一列系數}) C=(123)(1行3列,每行對應A的一列系數)
九、矩陣分解:用“基×系數”還原原矩陣
-
分解公式: A = B C A = BC A=BC 的計算驗證
- 基矩陣 B B B( m × r m×r m×r) × 系數矩陣 C C C( r × n r×n r×n) = 原矩陣 A A A( m × n m×n m×n),其中 r = rank ( A ) r = \text{rank}(A) r=rank(A)。
- 例子:分解 A = ( 1 2 3 2 4 6 ) A = \begin{pmatrix}1 & 2 & 3 \\ 2 & 4 & 6\end{pmatrix} A=(12?24?36?), r = 1 r=1 r=1:
B = ( 1 2 ) ( 2 × 1 ) , C = ( 1 2 3 ) ( 1 × 3 ) B = \begin{pmatrix}1\\2\end{pmatrix} \quad (2×1), \quad C = (1 \quad 2 \quad 3) \quad (1×3) B=(12?)(2×1),C=(123)(1×3)
計算 B C BC BC:
( 1 2 ) ( 1 2 3 ) = ( 1 × 1 1 × 2 1 × 3 2 × 1 2 × 2 2 × 3 ) = ( 1 2 3 2 4 6 ) = A \begin{pmatrix}1\\2\end{pmatrix} (1 \quad 2 \quad 3) = \begin{pmatrix}1×1 & 1×2 & 1×3 \\ 2×1 & 2×2 & 2×3\end{pmatrix} = \begin{pmatrix}1 & 2 & 3 \\ 2 & 4 & 6\end{pmatrix} = A (12?)(123)=(1×12×1?1×22×2?1×32×3?)=(12?24?36?)=A- 每一行的計算: B B B 的每行(其實是每個元素)與 C C C 的每列點積,因 B B B 和 C C C 只有1列/行,點積即數值相乘。
-
低秩分解的本質:壓縮信息的“核心邏輯”
- 原矩陣 A A A 有 m × n m×n m×n 個元素,分解后 B B B 和 C C C 共有 m × r + r × n m×r + r×n m×r+r×n 個元素,當 r ? m , n r \ll m,n r?m,n 時,元素量大幅減少(如 m = n = 1000 , r = 10 m=n=1000, r=10 m=n=1000,r=10,原100萬元素→分解后2萬元素,壓縮50倍)。
- 類比:基矩陣 B B B 是“不同顏色的積木塊”,系數矩陣 C C C 是“每個積木用多少塊”,原矩陣 A A A 是“搭好的模型”,分解即“拆模型為積木+圖紙”,存儲量減少。
十、圖示
數字 → 數組 → 向量(行/列) → 矩陣(行列表格)
↓ ↓ ↓
線性組合 點積 矩陣乘法(行×列點積)
↓ ↓ ↓
線性相關/無關 → 秩(獨立向量數) → 滿秩(秩=行列數)
↓ ↓
基向量(線性無關組) → 基矩陣(列滿秩)
↓ ↓
系數(基的用量) → 系數矩陣(記錄所有用量)
↓ ↓ 矩陣分解(基矩陣×系數矩陣=原矩陣)
低秩分解的本質是通過基矩陣和系數矩陣的線性組合,以最小的存儲和計算代價近似表示復雜矩陣
### 基礎層:數據結構的演化
┌──────────────────────────────────────┐
│ 基礎層:數據結構的演化 │
├──────────────────────────────────────┤
│ 數字(標量):5, -3, 2.5 │
└──────────────────────────────────────┘↓(有序排列)
┌──────────────────────────────────────┐
│ 一維數組:[1, 2, 3] │
└──────────────────────────────────────┘↓(抽象為向量)
┌──────────────────────────────────────┐
│ 向量: │
│ ┌───────────────┐ ┌──────────────┐ │
│ │ 行向量:(1,2,3) │ │ 列向量:?1? │ │
│ └───────────────┘ │ ?2? │ │
│ │ ?3? │ │
│ └──────────────┘ │
└──────────────────────────────────────┘↓(二維擴展)
┌──────────────────────────────────────┐
│ 矩陣 A = ?1 2 3? (2×3矩陣,a??=3) │
│ ?2 4 6? │
└──────────────────────────────────────┘
### 運算層:從向量到矩陣的運算
┌──────────────────────────────────────┐
│ 運算層:矩陣的基本運算 │
├──────────────────────────────────────┤
│ ┌──────────────┐ ┌─────────────┐ │
│ │ 線性組合 │ │ 點積 │ │
│ └──────────────┘ └─────────────┘ │
│ ↑ ↑ │
│ ↓ ↓ │
│ ┌──────────────┐ ┌─────────────┐ │
│ │ 2×(1,2,3) │ │ (1,2)·(3,4) │ │
│ │ =(2,4,6) │ │ =11 │ │
│ └──────────────┘ └─────────────┘ │
│ ┌───────────────────────────────┐ │
│ │ 矩陣乘法(行×列點積) │ │
│ └───────────────────────────────┘ │
│ ↑ │
│ ↓ │
│ ┌───────────────────────────────┐ │
│ │ ?1 2?×?5 6?=?19 22? │ │
│ │ ?3 4? ?7 8? ?43 50? │ │
│ └───────────────────────────────┘ │
└──────────────────────────────────────┘
### 性質層:矩陣的代數性質
┌──────────────────────────────────────┐
│ 性質層:矩陣的代數性質 │
├──────────────────────────────────────┤
│ ┌───────────────┐ ┌─────────────┐ │
│ │ 線性相關/無關 │ │ 秩 │ │
│ └───────────────┘ └─────────────┘ │
│ ↑ ↑ │
│ ↓ ↓ │
│ ┌───────────────┐ ┌─────────────┐ │
│ │ A的列向量: │ │ A中線性無關 │ │
│ │ 2→1=2×1列 │ │ 列數=1 │ │
│ └───────────────┘ └─────────────┘ │
│ ┌───────────────────────────────┐ │
│ │ 滿秩(秩=行列數) │ │
│ └───────────────────────────────┘ │
│ ↑ │
│ ↓ │
│ ┌───────────────────────────────┐ │
│ │ 若矩陣B=?1 0?,秩=2=列數,列滿秩│ │
│ │ ?0 1? │ │
│ └───────────────────────────────┘ │
└──────────────────────────────────────┘
### 分解層:矩陣的低秩分解
┌──────────────────────────────────────┐
│ 分解層:矩陣的低秩分解原理 │
├──────────────────────────────────────┤
│ ┌───────────────┐ ┌─────────────┐ │
│ │ 基向量 │ │ 基矩陣 │ │
│ │ (線性無關組) │ │ (列滿秩) │ │
│ └───────────────┘ └─────────────┘ │
│ ↑ ↑ │
│ ↓ ↓ │
│ ┌───────────────┐ ┌─────────────┐ │
│ │ A的基向量: │ │ 基矩陣B=?1? │ │
│ │ ?1? │ │ ?2? │ │
│ │ ?2? │ └─────────────┘ │
│ └───────────────┘ │
│ ↑ │
│ ↓ │
│ ┌───────────────┐ ┌─────────────┐ │
│ │ 系數 │ │ 系數矩陣C=│ │ │
│ │ (基的用量) │ │ (1 2 3) │ │ │
│ │ │ │ (1×3,秩=1)│ │
│ └───────────────┘ └─────────────┘ │
│ ┌─────────────┐ │
│ │ 矩陣分解 B×C=A │ │
│ └─────────────┘ │
└──────────────────────────────────────┘