现在位置: 首页 > AI 数学基础 > 正文

线性方程组与矩阵的秩

从鸡兔同笼到 AI 模型训练,线性方程组无处不在。矩阵的「秩」告诉我们方程组中真正有效的信息量有多少。

任何线性方程组都可以写成 Ax = b

A 是系数矩阵(m 个方程,n 个未知数),x 是未知数向量,b 是常数向量。

例如鸡兔同笼:\( \begin{cases} x+y=10 \\ 2x+4y=28 \end{cases} \) 写成矩阵形式:

\[ \begin{bmatrix} 1 & 1 \\ 2 & 4 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} 10 \\ 28 \end{bmatrix} \]

秩:独立信息的数量

秩(Rank)= 矩阵中真正「独立」的行数(或列数)。

如果某个方程可以由其他方程乘以系数得到,它就是冗余的——不增加新信息。

秩决定了方程组解的情况:

满秩

唯一解

方程之间无冗余

欠秩

无穷多解

有冗余方程

矛盾

无解

方程之间互相矛盾


生活例子

鸡兔同笼:满秩,唯一解

头数 10 + 脚数 28 → 鸡 6 只、兔 4 只。两个方程提供两条独立信息,刚好解出两个未知数。

冗余信息:欠秩,无穷多解

方程一:x + y = 5。方程二:2x + 2y = 10(就是方程一的 2 倍)。

两个方程其实是一条信息——有无穷多对 (x, y) 满足条件。


数学定义

秩的判定

条件解的情况
rank(A) = rank([A|b]) = n唯一解
rank(A) = rank([A|b]) < n无穷多解
rank(A) < rank([A|b])无解

其中 [A|b] 是把 b 拼在 A 右边的增广矩阵。


Python 动手实践

实例

import numpy as np

# 鸡兔同笼:满秩
A = np.array([[1,1],[2,4]])
b = np.array([10,28])
x = np.linalg.solve(A, b)
print("解:", x, "→ 鸡=6, 兔=4")
print("秩:", np.linalg.matrix_rank(A))  # 2(满秩)

# 冗余方程
A_red = np.array([[1,2],[2,4]])  # 第2行=2×第1行
print("\n冗余矩阵的秩:", np.linalg.matrix_rank(A_red))  # 1

# 随机大矩阵的秩
big = np.random.randn(100, 50)
print("100×50 随机矩阵的秩:", np.linalg.matrix_rank(big))  # 50
解: [6. 4.] → 鸡=6, 兔=4
秩: 2(满秩)
冗余矩阵的秩: 1
100×50 随机矩阵的秩: 50

AI 中的应用场景

LoRA 微调 = 低秩假设

LoRA(Low-Rank Adaptation)的核心假设:预训练权重的微调更新量 \Delta W 是低秩的。因此可以用两个小矩阵 A(d×r)和 B(r×d)的乘积来近似完整更新量 \Delta W = AB,其中 r << d。

例如对 GPT-3 的 12288 维权重矩阵,r 取 8 或 16 就够了——秩从 12288 降到 8,参数量减少上千倍。这就是利用「秩」的概念做参数高效微调。

特征共线性检测

数据矩阵的秩远小于列数 → 特征之间存在高度共线性(多重共线性)→ 线性回归的 X^TX 不可逆或接近奇异 → 需要正则化(Ridge/Lasso)或降维(PCA)。在实际 ML 项目中,这表现为特征矩阵的条件数过大。

推荐系统中的矩阵补全

用户-物品评分矩阵通常只有少数评分(稀疏),但假设它是由低秩结构生成的(相似用户有相似口味)。矩阵补全(Matrix Completion)利用秩的约束,通过已知评分推断缺失评分。这是 Netflix 推荐大赛获奖算法的核心思想。