Skip to content

线性代数基础

线性代数是深度学习的”操作系统”——神经网络的权重是矩阵,前向传播是矩阵乘法,反向传播是矩阵求导,连注意力机制都是一系列矩阵运算。本页系统梳理机器学习所需的线性代数核心知识。前置阅读:数值优化与数学基础。

把线性代数想象成一套”批量操作压缩工具”。当你要同时处理成千上万个数据点、成百上千万个参数时,逐个运算太慢——线性代数让你用矩阵和向量一次性表达和执行所有运算:

  • 向量(vector)= 一列数。可以理解为空间中的一个点,或一组特征的集合(如一个人的身高、体重、年龄)。
  • 矩阵(matrix)= 一个数的表格。可以理解为一组向量,或一个”变换规则”——输入一个向量,经过矩阵乘法后输出另一个向量(旋转、缩放、投影)。
  • 矩阵乘法= 批量的线性组合。把”对每个向量做同样的线性变换”打包成一次操作,GPU 天然擅长并行执行。
  • 特征值/特征向量= 矩阵变换中”方向不变只缩放”的特殊方向。找到了它们就找到了理解矩阵行为的关键。
  • SVD(奇异值分解)= 把任意矩阵拆解成”旋转-缩放-旋转”三步。任何矩阵都可以这么拆,是降维、压缩、推荐的数学根基。

向量(vector)是有序的数字列表,也称为 n 维空间中的点。一个 n 维向量写为 v=(v1,v2,…,vn)\mathbf{v} = (v_1, v_2, \ldots, v_n),每个 viv_i 称为分量(component)。在机器学习中,向量通常写成列向量(纵向排列),记作 v∈Rn\mathbf{v} \in \mathbb{R}^n(表示 v 是 n 维实数向量空间中的一个元素)。

核心运算:

  • 加法:对应分量相加。

v+w=(v1+w1v2+w2⋮vn+wn)\mathbf{v} + \mathbf{w} = \begin{pmatrix} v_1 + w_1 \\ v_2 + w_2 \\ \vdots \\ v_n + w_n \end{pmatrix}

几何上相当于两个向量首尾相接(平行四边形法则)。

  • 标量乘法:每个分量乘以同一个数 cc。c⋅v=(cv1,cv2,…,cvn)c \cdot \mathbf{v} = (cv_1, cv_2, \ldots, cv_n)。几何上相当于沿原方向缩放(c > 1 放大,0 < c < 1 缩小,c < 0 反向)。

  • 点积(dot product,又称内积 / inner product):

v⋅w=∑i=1nviwi=v1w1+v2w2+⋯+vnwn\mathbf{v} \cdot \mathbf{w} = \sum_{i=1}^{n} v_i w_i = v_1 w_1 + v_2 w_2 + \cdots + v_n w_n

结果是一个标量(单个数)。几何含义极为重要——点积等于两个向量长度之积再乘以夹角余弦:

v⋅w=∥v∥⋅∥w∥⋅cos⁡θ\mathbf{v} \cdot \mathbf{w} = \|\mathbf{v}\| \cdot \|\mathbf{w}\| \cdot \cos\theta

因此点积为零意味着两向量正交(orthogonal,即垂直)。点积为正值意味着夹角小于 90°,负值意味着大于 90°。在注意力机制中,Query 和 Key 的点积正是用来衡量两者的”匹配度”。

  • 范数(norm):衡量向量的”长度”。最常用的是 L2 范数(欧几里得长度):

∥v∥2=v12+v22+⋯+vn2\|\mathbf{v}\|_2 = \sqrt{v_1^2 + v_2^2 + \cdots + v_n^2}

L1 范数是分量绝对值之和 ∥v∥1=∑i∣vi∣\|\mathbf{v}\|_1 = \sum_i |v_i|,L∞ 范数是最大分量的绝对值 ∥v∥∞=max⁡i∣vi∣\|\mathbf{v}\|_\infty = \max_i |v_i|。

矩阵(matrix)是一个 mm 行 nn 列的数字表格,记作 A∈Rm×n\mathbf{A} \in \mathbb{R}^{m \times n},其中第 ii 行第 jj 列的元素记为 AijA_{ij} 或 aija_{ij}。若 m=nm = n 则称为方阵(square matrix)。

核心运算:

  • 矩阵加法:同形状矩阵对应元素相加。(A+B)ij=Aij+Bij(A + B)_{ij} = A_{ij} + B_{ij}。
  • 标量乘法:每个元素乘以同一个标量。(cA)ij=c⋅Aij(cA)_{ij} = c \cdot A_{ij}。
  • 矩阵乘法:A\mathbf{A}(m×km \times k)乘以 B\mathbf{B}(k×nk \times n)得到 C\mathbf{C}(m×nm \times n),其中:

Cij=∑l=1kAilBlj=ai⋅⋅b⋅jC_{ij} = \sum_{l=1}^{k} A_{il} B_{lj} = \mathbf{a}_{i\cdot} \cdot \mathbf{b}_{\cdot j}

即 CijC_{ij} 等于 A 第 ii 行与 B 第 jj 列的点积。矩阵乘法不满足交换律:AB≠BAAB \neq BA(通常情况下)。这一点至关重要——它意味着运算的顺序不可随意调换。

计算复杂度:朴素的矩阵乘法需要 O(m×k×n)O(m \times k \times n) 次乘加运算。对于 n×nn \times n 方阵,这是 O(n3)O(n^3)。深度学习中动辄处理几千维向量,一次矩阵乘法就需要数十亿次浮点运算——这就是为什么 GPU 的并行架构如此重要。

  • 转置(transpose):行列互换。A\mathbf{A} 的转置记为 AT\mathbf{A}^T,即 AijT=AjiA^T_{ij} = A_{ji}。一个 m×nm \times n 的矩阵转置后变为 n×mn \times m。性质:(AB)T=BTAT(AB)^T = B^T A^T(顺序翻转)。
  • 逐元素乘法(Hadamard product,又称 element-wise product):同形状矩阵对应元素相乘,记作 A⊙B\mathbf{A} \odot \mathbf{B}。(A⊙B)ij=Aij⋅Bij(A \odot B)_{ij} = A_{ij} \cdot B_{ij}。在深度学习中常用于掩码操作(如 Attention Mask)和梯度计算。

逆矩阵(inverse):对于方阵 A\mathbf{A},如果存在矩阵 A−1\mathbf{A}^{-1} 使得 A⋅A−1=I\mathbf{A} \cdot \mathbf{A}^{-1} = \mathbf{I}(单位矩阵,对角线为 1 其余为 0),则称 A 可逆。逆矩阵类似于”倒数”在矩阵世界的对应物。并非所有方阵都有逆——只有非奇异(行列式不为零)的方阵才可逆。

行列式(determinant):方阵的一个标量值,记 det⁡(A)\det(\mathbf{A}) 或 ∣A∣|\mathbf{A}|。几何含义是矩阵变换对空间的”体积缩放因子”。行列式为零意味着矩阵将空间压缩到更低的维度(信息丢失),此时矩阵不可逆。行列式为负表示翻转了空间方向(如镜像)。

对于 2×2 矩阵:

det⁡(abcd)=ad−bc\det \begin{pmatrix} a & b \\ c & d \end{pmatrix} = ad - bc

对于 3×3 矩阵,可按第一行展开(余子式展开):

det⁡(abcdefghi)=a(ei−fh)−b(di−fg)+c(dh−eg)\det \begin{pmatrix} a & b & c \\ d & e & f \\ g & h & i \end{pmatrix} = a(ei - fh) - b(di - fg) + c(dh - eg)

线性无关(linear independence):一组向量 {v1,v2,…,vk}\{\mathbf{v}_1, \mathbf{v}_2, \ldots, \mathbf{v}_k\} 中没有任何一个能用其他向量的线性组合表示,则称它们线性无关。换言之,不存在不全为零的标量 c1,c2,…,ckc_1, c_2, \ldots, c_k 使得 c1v1+c2v2+⋯+ckvk=0c_1\mathbf{v}_1 + c_2\mathbf{v}_2 + \cdots + c_k\mathbf{v}_k = \mathbf{0}。否则称为线性相关(有冗余信息)。

秩(rank):矩阵中线性无关的行(或列)的最大数目,记作 rank(A)\text{rank}(\mathbf{A})。秩反映了矩阵所携带的”有效信息维度”。一个 m×nm \times n 的矩阵,秩最多为 min⁡(m,n)\min(m, n)。秩小于行数或列数意味着存在冗余信息(某些行/列可由其他行/列线性表出)。

AI 中的意义:当数据的协方差矩阵不满秩时(特征数大于样本数,即”维数灾难”场景),PCA 等方法会遇到数值不稳定。深度学习中过参数化模型的权重矩阵往往是低秩的——这正是 LoRA(低秩自适应)方法的理论基础。

对于方阵 A\mathbf{A},如果存在非零向量 v\mathbf{v} 和标量 λ\lambda 使得:

Av=λv\mathbf{A}\mathbf{v} = \lambda \mathbf{v}

则称 v\mathbf{v} 为 A\mathbf{A} 的特征向量(eigenvector),λ\lambda 为对应的特征值(eigenvalue)。

直观理解:矩阵 A\mathbf{A} 对特征向量 v\mathbf{v} 的作用只是将其缩放了 λ\lambda 倍,不改变方向(λ\lambda 为负时方向翻转)。特征向量是理解矩阵变换的”骨架”——抓住了特征向量,就理解了这个矩阵在空间中做了什么。

特征值分解(eigendecomposition):如果方阵 A 有 n 个线性无关的特征向量,可以分解为:

A=QΛQ−1\mathbf{A} = \mathbf{Q} \boldsymbol{\Lambda} \mathbf{Q}^{-1}

其中 Q\mathbf{Q} 的列是特征向量,Λ\boldsymbol{\Lambda} 是对角线上排列特征值的对角矩阵。

对称矩阵的特殊性质:对称矩阵(A=ATA = A^T)的特征值全为实数,且特征向量可以选为相互正交的。此时 Q\mathbf{Q} 是正交矩阵(Q−1=QTQ^{-1} = Q^T),分解简化为 A=QΛQT\mathbf{A} = \mathbf{Q}\boldsymbol{\Lambda}\mathbf{Q}^T。许多重要矩阵(如协方差矩阵、图拉普拉斯矩阵、Hessian 矩阵)都是对称的,这一性质在 PCA、谱聚类中至关重要。

正定矩阵(positive definite):如果对所有非零向量 x\mathbf{x},都有 xTAx>0\mathbf{x}^T \mathbf{A} \mathbf{x} > 0,则称 A 正定。等价于所有特征值为正。Hessian 矩阵正定意味着损失函数在该点是局部凸的(极小值点)——这是二阶优化方法的核心判断条件。

奇异值分解(Singular Value Decomposition)是线性代数中最强大的工具之一。它将任意 m×nm \times n 矩阵 A\mathbf{A} 分解为三个矩阵的乘积:

A=UΣVT\mathbf{A} = \mathbf{U} \boldsymbol{\Sigma} \mathbf{V}^T

其中:

  • U\mathbf{U} 是 m×mm \times m 正交矩阵(列向量两两正交且长度为 1),称为左奇异向量。
  • V\mathbf{V} 是 n×nn \times n 正交矩阵,称为右奇异向量。
  • Σ\boldsymbol{\Sigma} 是 m×nm \times n 的对角矩阵,对角线上的值称为奇异值(singular values)σ1≥σ2≥⋯≥0\sigma_1 \geq \sigma_2 \geq \cdots \geq 0,按从大到小排列。

直觉:SVD 把任何线性变换拆成”旋转 → 沿各轴缩放 → 再旋转”三步。奇异值告诉你每个轴方向上的缩放强度。矩阵的谱范数(spectral norm,最大奇异值 σ1\sigma_1)在深度学习中用于衡量权重矩阵的”大小”,是谱归一化(Spectral Normalization)的理论基础。

最佳低秩近似(Eckart-Young 定理):保留前 kk 个最大奇异值、截掉其余的,就得到了矩阵的最佳秩-kk 近似(在 Frobenius 范数意义下最优):

Ak=∑i=1kσiuiviT\mathbf{A}_k = \sum_{i=1}^{k} \sigma_i \mathbf{u}_i \mathbf{v}_i^T

这就是 PCA、推荐系统、图像压缩的共同数学根基。

向量范数在机器学习中无处不在:

  • L2 范数(欧几里得):最常用,对应”直线距离”。正则化中的权重衰减(weight decay)用的就是 L2 范数的平方。详见正则化技术。
  • L1 范数:分量绝对值之和。产生稀疏解(大量分量为零),用于 L1 正则化(Lasso),能自动做特征选择。
  • L∞ 范数:最大分量的绝对值。
  • Frobenius 范数(矩阵范数):矩阵所有元素平方和的平方根 ∥A∥F=∑i,jAij2\|\mathbf{A}\|_F = \sqrt{\sum_{i,j} A_{ij}^2}。在损失函数中用于衡量两个矩阵的差异。

两个向量之间的距离常用:

  • L2 距离(差的 L2 范数):d(v,w)=∥v−w∥2d(\mathbf{v}, \mathbf{w}) = \|\mathbf{v} - \mathbf{w}\|_2
  • 余弦相似度(cosine similarity):

cos⁡(v,w)=v⋅w∥v∥⋅∥w∥\cos(\mathbf{v}, \mathbf{w}) = \frac{\mathbf{v} \cdot \mathbf{w}}{\|\mathbf{v}\| \cdot \|\mathbf{w}\|}

取值范围 [−1,1][-1, 1],1 表示方向完全相同,0 表示正交(无关),-1 表示方向相反。在 NLP 的词向量中,余弦相似度是衡量词义相似度的标准度量。详见词向量与嵌入模型。

矩阵乘法 Ax\mathbf{A}\mathbf{x} 的本质是将向量 x\mathbf{x} 进行线性变换。理解几种基本变换有助于建立几何直觉:

变换类型矩阵示例效果
缩放(2000.5)\begin{pmatrix} 2 & 0 \\ 0 & 0.5 \end{pmatrix}x 轴方向放大 2 倍,y 轴方向缩小为 0.5
旋转(cos⁡θ−sin⁡θsin⁡θcos⁡θ)\begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix}绕原点逆时针旋转 θ 角度
投影(1000)\begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}投影到 x 轴上(信息丢失,不可逆)
剪切(1101)\begin{pmatrix} 1 & 1 \\ 0 & 1 \end{pmatrix}顶部向右滑动,底部不动

为什么这对 AI 重要:神经网络的每一层本质上都是”线性变换(矩阵乘法)+ 非线性激活函数”。如果没有非线性激活函数,无论多深的网络都等价于一个单层线性变换(因为矩阵乘法的复合仍是矩阵乘法)。这就是为什么激活函数如此关键。

import numpy as np
# --- 矩阵乘法:神经网络的前向传播就是连续的矩阵乘法 ---
W = np.random.randn(3, 4) # 权重矩阵: 4维输入 → 3维输出
x = np.random.randn(4) # 输入向量
b = np.random.randn(3) # 偏置
y = W @ x + b # 前向传播: y = Wx + b
print(f"输出向量: {y}") # 3维向量
# --- 点积与余弦相似度:衡量向量方向的相似度 ---
v1 = np.array([1, 2, 3])
v2 = np.array([2, 4, 6]) # v2 = 2*v1,方向完全相同
cos_sim = np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
print(f"余弦相似度: {cos_sim:.4f}") # 1.0000(方向完全一致)
# --- 特征值分解:协方差矩阵 → 找到数据变化最大的方向 ---
np.random.seed(42)
data = np.random.randn(100, 3) * np.array([3, 1, 0.5]) # 3维数据, 各维度方差不同
cov = np.cov(data.T) # 协方差矩阵 (3x3),是对称矩阵
eigvals, eigvecs = np.linalg.eigh(cov) # 特征值分解(对称矩阵用eigh)
print(f"特征值(从小到大): {eigvals}")
print(f"最大特征值方向(主成分): {eigvecs[:, -1]}") # 最后一列是最大特征值对应的特征向量
import torch
# --- PyTorch 的核心:张量(Tensor)就是可以放在 GPU 上、支持自动求导的矩阵 ---
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
# 模拟一个简单的线性层 y = Wx + b
W = torch.randn(64, 128, device=device, requires_grad=True) # 权重: 128维输入 → 64维输出
b = torch.randn(64, device=device, requires_grad=True) # 偏置
x = torch.randn(32, 128, device=device) # batch_size=32, 输入维度=128
# 前向传播: 对整个 batch 同时计算(矩阵乘法天然批量处理)
y = x @ W.T + b # (32, 128) @ (128, 64) + (64,) → (32, 64) 广播加偏置
print(f"输出形状: {y.shape}") # torch.Size([32, 64])
# --- 反向传播: PyTorch 自动计算所有矩阵的梯度 ---
loss = y.pow(2).mean() # 简单的损失函数: 输出的平方均值
loss.backward() # 自动微分——本质是对矩阵运算链式求导
print(f"W 的梯度形状: {W.grad.shape}") # 与 W 同形状 (64, 128)
print(f"W 的梯度范数: {W.grad.norm():.4f}") # 梯度的 L2 范数

SVD 降维:用前 k 个奇异值近似矩阵

Section titled “SVD 降维:用前 k 个奇异值近似矩阵”
import numpy as np
# 构造一个低秩矩阵(大部分信息集中在前几个维度)
np.random.seed(42)
A = np.random.randn(20, 10) @ np.random.randn(10, 15) # 秩为10的 20×15 矩阵
# SVD 分解
U, S, Vt = np.linalg.svd(A, full_matrices=False)
print(f"奇异值: {np.round(S[:5], 2)}") # 前5个奇异值远大于后面的
# 只保留前 k 个奇异值 → 压缩矩阵
k = 3
A_approx = U[:, :k] @ np.diag(S[:k]) @ Vt[:k, :]
error = np.linalg.norm(A - A_approx) / np.linalg.norm(A) # 相对误差 (Frobenius 范数)
total_energy = np.sum(S**2) # 总能量 = 所有奇异值的平方和
kept_energy = np.sum(S[:k]**2) # 保留的能量
print(f"保留前 {k} 个奇异值, 相对误差 = {error:.4f}")
print(f"信息保留率: {kept_energy / total_energy:.2%}")

实战:用线性代数理解 Attention 机制

Section titled “实战:用线性代数理解 Attention 机制”

Attention 是 Transformer 的核心,其本质就是一系列矩阵运算:

import torch
import torch.nn.functional as F
batch_size, seq_len, d_model = 2, 10, 64
# Q, K, V 矩阵:将输入序列投影到三个不同的表示空间
Q = torch.randn(batch_size, seq_len, d_model) # Query: "我在找什么"
K = torch.randn(batch_size, seq_len, d_model) # Key: "我有什么"
V = torch.randn(batch_size, seq_len, d_model) # Value: "我的实际内容"
# 核心公式: Attention(Q,K,V) = softmax(Q·K^T / √d_k) · V
scores = Q @ K.transpose(-2, -1) # (batch, seq, seq) —— 矩阵乘法计算所有位置的相似度
scores = scores / (d_model ** 0.5) # 缩放:防止点积过大导致 softmax 梯度消失
attention_weights = F.softmax(scores, dim=-1) # 对每一行做 softmax,得到权重分布
output = attention_weights @ V # (batch, seq, d_model) —— 加权求和
print(f"Attention 权重形状: {attention_weights.shape}") # (2, 10, 10)
print(f"每行权重和应为1: {attention_weights[0, 0].sum():.4f}") # 1.0000
print(f"输出形状: {output.shape}") # (2, 10, 64)

这个例子揭示了 Attention 的线性代数本质:一次矩阵转置、两次矩阵乘法、一次逐元素缩放——仅此而已。详见 Flash Attention。

  • 矩阵乘法是性能瓶颈也是优化重点:深度学习 90% 的计算量在矩阵乘法上。GPU 的 Tensor Core 专为加速矩阵乘法设计,使用混合精度训练可进一步提速 2-3 倍。详见混合精度训练。
  • 几乎不存在真正的求逆:数值上,直接计算 A−1A^{-1} 既慢又不稳定。实际工程中解线性方程组 Ax=bAx = b 时,用 LU 分解或 QR 分解,而不是先求逆再乘——不仅快得多,数值也更稳定。经验法则:如果你的代码中有 np.linalg.inv,大概率应该用 np.linalg.solve 替代。
  • 注意维度匹配和广播规则:NumPy/PyTorch 的广播(broadcasting)机制非常方便但也极其危险——维度不匹配时不报错而是隐式广播,可能产生静默错误。调试时先检查 tensor 的 shape 是否符合预期。
  • SVD 是万能瑞士军刀:PCA 降维、推荐系统(协同过滤)、图像压缩、潜在语义分析(LSA)——当你需要”提取最重要的几个方向”时,SVD 几乎总是答案。详见降维方法。
  • 特征值分解只适用于方阵:非方阵需要用 SVD。但当你确实有方阵(特别是对称矩阵)时,特征值分解比 SVD 更快且物理含义更直接。
  • 条件数(condition number)决定数值稳定性:κ(A)=σmax⁡/σmin⁡\kappa(A) = \sigma_{\max} / \sigma_{\min}(最大奇异值与最小奇异值之比)。条件数很大的矩阵在数值运算中误差会急剧放大,是梯度爆炸/消失的数学根源之一。
  • 神经网络的前向传播:全连接层 y=Wx+b\mathbf{y} = \mathbf{W}\mathbf{x} + \mathbf{b} 本质就是矩阵乘法加向量加法。所有深度学习框架的核心计算都是优化的矩阵乘法。详见反向传播。
  • 主成分分析(PCA):用协方差矩阵的特征值分解或直接用 SVD,找到数据方差最大的方向,实现降维和数据可视化。详见降维方法。
  • 推荐系统:Netflix 竞赛冠军方案的核心就是对”用户-电影”评分矩阵做 SVD,分解出用户偏好和电影特征的低维表示。详见推荐系统。
  • 词向量与嵌入:Word2Vec、GloVe 等词嵌入方法将词表示为高维向量,用向量间的余弦相似度衡量词义相似度。详见嵌入模型。
  • PageRank:Google 搜索引擎的核心算法,本质是对网页链接矩阵求主特征向量——一个纯粹的特征值问题。
  • Transformer 的自注意力:Self-Attention 机制完全由矩阵运算构成:softmax(QKT/dk)V\text{softmax}(QK^T / \sqrt{d_k})V。理解矩阵乘法和 softmax 就理解了 Transformer 的计算核心。详见预训练架构。
  • 低秩微调(LoRA):将预训练权重的更新分解为两个低秩矩阵的乘积 ΔW=BA\Delta W = BA(其中 B∈Rd×r,A∈Rr×d,r≪dB \in \mathbb{R}^{d \times r}, A \in \mathbb{R}^{r \times d}, r \ll d),大幅减少可训练参数。详见参数高效微调。
类库语言说明
numpy.linalgPythonNumPy 线性代数模块:矩阵乘法、求逆、行列式、特征值分解、SVD 等
scipy.linalgPythonSciPy 线性代数模块,比 numpy.linalg 更全面,包含 LU/QR/Cholesky 分解
torch.linalg / torch.mmPythonPyTorch 线性代数与矩阵运算,支持 GPU 加速和自动微分
torch.nn.LinearPythonPyTorch 全连接层,封装了矩阵乘法 + 偏置,是构建神经网络的基本单元
LAPACKFortran/C底层线性代数库,几乎所有高级语言的线性代数实现都基于它
EigenC++高性能 C++ 模板线性代数库,广泛用于机器人、图形学、游戏引擎
cuBLAS / cuSOLVERCUDANVIDIA GPU 上的线性代数库,PyTorch/TensorFlow 底层调用它进行 GPU 加速
术语英文解释
向量Vector有序数字列表,表示空间中的一个点或一组特征
矩阵Matrixm 行 n 列的数字表格,可视为一组向量或一个线性变换
张量Tensor向量/矩阵的推广,可以有任意多个维度;在深度学习中是基本数据结构
点积 / 内积Dot Product / Inner Product两向量对应分量乘积之和,衡量方向一致性
范数Norm衡量向量”长度”的函数,L2 范数即欧几里得长度
矩阵乘法Matrix MultiplicationA(m×k) 乘以 B(k×n) 得到 C(m×n),不满足交换律
转置Transpose矩阵行列互换,A 的转置记为 A^T
逆矩阵Inverse MatrixA^(-1) 使 A·A^(-1) = I,只有非奇异方阵才可逆
行列式Determinant方阵的标量值,几何含义为变换的体积缩放因子,为零则矩阵不可逆
秩Rank矩阵中线性无关的行(列)的最大数,反映有效信息维度
特征值Eigenvalue满足 Av = λv 的标量 λ,反映变换在该方向的缩放强度
特征向量Eigenvector矩阵变换中方向不变只缩放的向量,是理解矩阵行为的关键
奇异值分解SVD将任意矩阵分解为 U·Σ·V^T,用于降维、压缩、推荐等
奇异值Singular ValueSVD 中对角矩阵 Σ 上的值,按从大到小排列,反映各轴的缩放强度
正交矩阵Orthogonal Matrix列向量两两正交且长度为 1 的方阵,其转置等于其逆
正定矩阵Positive Definite所有特征值为正的对称矩阵,x^T·A·x > 0 对所有非零 x 成立
条件数Condition Number最大奇异值与最小奇异值之比,衡量矩阵数值计算的稳定性
Frobenius 范数Frobenius Norm矩阵所有元素平方和的平方根,用于衡量矩阵”大小”或两个矩阵的差异
谱范数Spectral Norm矩阵的最大奇异值,用于谱归一化等深度学习技术
  • Strang,「Introduction to Linear Algebra」(6th Ed., 2023):MIT 经典教材(Gilbert Strang 著),从几何直觉出发讲解,配套免费公开课(MIT 18.06),入门首选。
  • Strang,「Linear Algebra and Its Applications」(5th Ed., 2017):Strang 的另一本进阶教材,侧重线性代数在工程和数据科学中的应用。
  • 3Blue1Brown,「Essence of Linear Algebra」视频系列:YouTube 上最受欢迎的线性代数可视化教程,15 个短视频建立完整的几何直觉,强烈推荐。
  • Trefethen & Bau,「Numerical Linear Algebra」(1997):从数值计算角度讲解矩阵分解和算法,适合需要深入理解底层实现的读者。
  • Goodfellow, Bengio & Courville,「Deep Learning」Ch.2 (2016):深度学习圣经的第二章,专门为机器学习读者提炼的线性代数速览,重点突出、实用性强。

线性代数作为数学基础学科已有百年历史,但其与深度学习的交叉在 2024-2026 年间涌现了多个重要研究方向。

矩阵乘法是神经网络的计算基石,但也占据了绝大部分算力消耗。2024-2025 年出现了一个引人注目的研究方向——MatMul-free(无矩阵乘法)语言模型。该工作 (arXiv:2406.02528) 证明,在高达 27 亿参数的规模下,可以用逐元素运算(element-wise multiplication)和加法替代 Transformer 中的密集矩阵乘法,同时保持与标准 Transformer 相当的性能。该方案在推理时可减少超过 10 倍内存消耗,并在神经形态硬件上实现 4 倍吞吐量和 10 倍能效提升。

这一方向的哲学启发是:矩阵乘法的 O(n2)O(n^2) 内存和 O(n3)O(n^3) 计算复杂度在大模型时代正在成为瓶颈,而低秩分解、稀疏运算、逐元素运算等线性代数替代方案可能开启新的架构范式。

低秩微调(LoRA)与线性代数的工程化

Section titled “低秩微调(LoRA)与线性代数的工程化”

LoRA(Low-Rank Adaptation)(arXiv:2106.09685) 是线性代数”低秩近似”思想在大模型微调中的直接应用。其核心假设是:预训练模型在下游任务上的权重更新 ΔW\Delta W 具有低秩结构(即”内蕴维度”远小于参数维度)。因此将更新分解为:

ΔW=BA,B∈Rd×r,A∈Rr×d,r≪d\Delta W = \mathbf{B}\mathbf{A}, \quad \mathbf{B} \in \mathbb{R}^{d \times r}, \quad \mathbf{A} \in \mathbb{R}^{r \times d}, \quad r \ll d

训练时冻结原始权重 WW,只训练 AA 和 BB,可训练参数减少上万倍。2025 年这一方向进一步演化出 DoRA(Weight-Decomposed Low-Rank Adaptation)、PiSSA(Principal Singular Values and Singular Vectors Adaptation)等改进方法,后者直接利用 SVD 分解初始化低秩矩阵,展现了线性代数工具在大模型工程中的持续价值。详见参数高效微调方法。

面对超大规模矩阵(如百亿参数模型的海量权重矩阵),精确的 SVD/特征值分解变得不可承受。随机化数值线性代数(Randomized Numerical Linear Algebra)通过随机投影(random projection)和随机采样,在数学保证下以极低的计算成本获得近似分解:

  • 随机化 SVD:先生成一个随机矩阵 Ω\boldsymbol{\Omega},计算 Y=AΩY = A\Omega,再做小规模 SVD。复杂度从 O(mn2)O(mn^2) 降低到 O(mnk)O(mnk)(kk 为目标秩),且可天然并行化。
  • 这一技术在 2025 年被广泛用于大规模推荐系统的实时协同过滤和 LLM 的 KV Cache 压缩中。

线性注意力与状态空间模型中的矩阵结构

Section titled “线性注意力与状态空间模型中的矩阵结构”

传统 Transformer 的注意力矩阵 QKTQK^T 规模为 O(n2)O(n^2)(nn 为序列长度),这限制了长文本处理。2024-2025 年的线性注意力(Linear Attention)和状态空间模型(SSM,如 Mamba、Griffin)(arXiv:2402.19427) 从矩阵结构入手:将密集的注意力矩阵替换为可递推计算的低秩或对角结构,将序列建模的复杂度从 O(n2)O(n^2) 降为 O(n)O(n)。其数学本质是利用矩阵的结合律重排计算顺序,避免显式构造完整的 n×nn \times n 注意力矩阵。

2024-2025 年,NVIDIA H100/H200 GPU 全面支持 FP8(8 位浮点)矩阵乘法。这在线性代数层面意味着:矩阵乘法的每个元素从 16 位(FP16/BF16)压缩到 8 位存储和计算,吞吐量翻倍的同时显存减半。但 FP8 的动态范围更小(有效位数更少),对矩阵运算的数值稳定性提出了更高要求——这正是条件数、缩放因子等线性代数概念在工程中的直接体现。详见混合精度训练。

张量分解(Tensor Decomposition)是矩阵 SVD 的高维推广,将多维张量分解为低秩组件的乘积。2025 年,Tensor-Train(TT)分解和 Tucker 分解被成功应用于压缩 LLM 的嵌入层和 FFN 层权重,在几乎不损失精度的前提下将模型体积压缩 5-10 倍。这一方向有望成为端侧大模型部署的关键技术之一。详见模型量化与压缩。