低秩分解的本质是通过基矩阵和系数矩阵的线性组合,以最小的存储和计算代价近似表示复杂矩阵
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} a1a2⋮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= u1u2u3 。
- 本质:向量是“带方向的量”,但初学者可先理解为“有序数组”。
向量的线性组合
- 用常数乘以向量再相加,如 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=(a11a21a12a22a13a23)=(142536)- 第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} (1001))。
四、矩阵乘法:从点积到“行列配对”
向量点积(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=a1b1+a2b2+⋯+anbn
- 例子: 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=(1324)(2×2),B=(5768)(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=(19432250)
- 计算 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=(122436)- 第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= 102013 (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=(122436),各列与基矩阵 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=(122436), 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×11×22×21×32×3)=(122436)=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 │ │
│ └─────────────┘ │
└──────────────────────────────────────┘