Transformer 与线性代数:统一矩阵框架
引言
Transformer 自 2017 年问世以来,已成为深度学习的主导架构。然而,其数学本质长期未被系统化理解。本文从线性代数角度重新审视 Transformer,揭示其所有核心操作都可以归结为矩阵运算:QKV 投影是三个矩阵乘法、注意力矩阵是带 softmax 的秩一更新、多头注意力是块对角低秩分解、FFN 是两层矩阵乘法、而 LoRA、线性注意力、谱条件化等现代变体本质上都是矩阵分解与近似。
2024-2026 年的研究进一步揭示:
- 注意力矩阵存在谱隙(spectral gap),softmax 操作使 ,导致 width-wise rank collapse
- LoRA 有效性的理论根源是训练梯度本身的低秩性
- 线性注意力(Mamba2、Gated DeltaNet、RetNet)都可统一为矩阵状态递推
- 谱条件化(Spectral Conditioning) 通过控制 Jacobian 条件数优化训练
本文将建立从基础矩阵运算到现代 Transformer 架构的统一框架。1
一、Transformer 操作的矩阵分解
1.1 整体架构的矩阵流
一个标准 Transformer block 可以表示为以下矩阵运算序列:
其中 ,,FFN 包含两个矩阵乘法(升维-激活-降维)。
import torch
import torch.nn as nn
import torch.nn.functional as F
import math
class TransformerBlock(nn.Module):
"""Transformer Block 的线性代数视角实现"""
def __init__(self, d_model, n_heads, d_ff, dropout=0.1):
super().__init__()
self.d_model = d_model
self.n_heads = n_heads
self.d_k = d_model // n_heads
# QKV 投影:三个矩阵
self.W_q = nn.Linear(d_model, d_model, bias=False)
self.W_k = nn.Linear(d_model, d_model, bias=False)
self.W_v = nn.Linear(d_model, d_model, bias=False)
self.W_o = nn.Linear(d_model, d_model)
# FFN:两个矩阵
self.ffn = nn.Sequential(
nn.Linear(d_model, d_ff),
nn.GELU(),
nn.Linear(d_ff, d_model)
)
self.ln1 = nn.LayerNorm(d_model)
self.ln2 = nn.LayerNorm(d_model)
self.dropout = nn.Dropout(dropout)
def forward(self, x, mask=None):
# 1. QKV 投影(三个矩阵乘法)
B, n, d = x.shape
Q = self.W_q(x).view(B, n, self.n_heads, self.d_k).transpose(1, 2)
K = self.W_k(x).view(B, n, self.n_heads, self.d_k).transpose(1, 2)
V = self.W_v(x).view(B, n, self.n_heads, self.d_k).transpose(1, 2)
# 2. 注意力矩阵(QR^T + softmax)
scores = Q @ K.transpose(-2, -1) / math.sqrt(self.d_k)
if mask is not_mask is not None:
scores = scores.masked_fill(mask == 0, -1e9)
A = F.softmax(scores, dim=-1)
# 3. 注意力输出(AV)
Y = A @ V
Y = Y.transpose(1, 2).contiguous().view(B, n, d)
# 4. 输出投影 + 残差
x = x + self.dropout(self.W_o(Y))
x = x + self.dropout(self.ffn(self.ln2(x)))
return x1.2 矩阵视角的关键观察
观察 1:注意力矩阵是行随机矩阵(Row-stochastic Matrix)。softmax 之后每一行非负且和为 1:
因此注意力矩阵是马尔可夫转移矩阵——这是后面”注意力作为图”与”扩散过程”联系的基础。
观察 2:多头注意力是块对角低秩分解。如果 个头,每头维度 ,则整个多头注意力等价于:
这是一个秩为 的块对角矩阵乘以输入。
观察 3:FFN 占总参数 2/3。在标准 Transformer 中:
FFN 存储了大部分事实知识(见 ROME 论文)。
二、注意力矩阵的谱性质
2.1 Perron-Frobenius 定理
由于注意力矩阵 是行随机矩阵,根据 Perron-Frobenius 定理:
- 有最大特征值 (必然,因为每行和为 1)
- 对应的左特征向量为 (全一向量)
- 其余特征值满足
这意味着注意力矩阵是随机矩阵的近似,可以用 PageRank 类型的迭代理解。
2.2 谱隙与 Rank Collapse
Nait Saada et al. (ICML 2025) 用随机矩阵理论 (RMT) 证明了关键的 width-wise rank collapse 现象:2
定理(谱隙定理):在 极限下,softmax 注意力矩阵 的前两个最大奇异值 满足
直观解释:
- 的经验谱分布收敛到 Marchenko-Pastur 律附近
- 但 表现为”outlier”,远大于其他奇异值
- 因此 是近似秩一的
import torch
def analyze_attention_spectrum(Q, K):
"""分析注意力矩阵的谱性质"""
d_k = Q.size(-1)
# 计算 QK^T
scores = Q @ K.transpose(-2, -1) / (d_k ** 0.5)
A = F.softmax(scores, dim=-1)
# 奇异值分解
U, S, Vh = torch.linalg.svd(A, full_matrices=False)
sigma_1 = S[:, :, 0] # 最大奇异值
sigma_2 = S[:, :, 1] # 第二大奇异值
spectral_gap = sigma_2 / (sigma_1 + 1e-8)
# 有效秩
S_norm = S / (S.sum(dim=-1, keepdim=True) + 1e-8)
entropy = -(S_norm * torch.log(S_norm + 1e-8)).sum(dim=-1)
effective_rank = torch.exp(entropy)
return {
'sigma_1': sigma_1,
'sigma_2': sigma_2,
'spectral_gap': spectral_gap, # 应该接近 0
'effective_rank': effective_rank, # 真实"信息维度"
}2.3 缩放因子的必要性
为什么需要 这个缩放因子?考虑:
- 假设 的元素是独立同分布
- 则 是 个独立随机变量之和
如果不缩放,softmax 的输入方差会随 增长,导致:
- 大值主导 softmax( one-hot)
- 梯度消失(softmax 梯度在饱和区几乎为 0)
缩放后 ,稳定了 softmax 的输入。
Chen et al. (MIT 2025) 进一步提出多项式对数缩放:3
其中 , 是经验最优。
2.4 注意力作为图扩散
由于 是行随机矩阵,Transformer 的前向传播可视为图上的扩散过程:
等价于:
在 极限下,多层 Transformer 趋近于图上的连续扩散过程(与 Neural ODE 联系)。
三、低秩分解与近似
3.1 LoRA:低秩适配
LoRA(Hu et al. 2021)的核心思想是权重更新 是低秩的:
其中 。
Balzano et al. (2025) 证明了 LoRA 有效性的理论根源:4
定理:训练梯度 本身是近似低秩的,且其有效秩随训练步数衰减。
这从理论上解释了为什么 用 或 就能匹配全参数微调。
3.2 DoRA:方向-幅度分解
DoRA(Liu et al. ICML 2024 Oral)将权重分解为幅度 与方向 :5
直觉:
- :控制整体幅度
- :保持单位范数,专注于方向更新
实验结果:在相同参数量下,DoRA 比 LoRA 更接近 full fine-tuning。
3.3 线性注意力:Nyström 近似
标准注意力的复杂度是 。线性注意力通过特征映射 实现 :
这是经典的 Nyström 近似:用一个低秩分解近似 :
代表工作:
- Performer (Choromanski et al. 2021):用随机 Fourier 特征
- Linear Transformer (Katharopoulos et al. 2020):用
- RetNet (Sun et al. 2023):用
- Mamba2 (Gu & Dao 2024):选择性 SSM
- Gated DeltaNet (Yang et al. ICLR 2025):delta rule + gating
3.4 隐式注意力统一
Zimerman et al. (2024) 证明 Mamba2/RWKV/RetNet/Gated DeltaNet 都可以写成隐式线性注意力:6
其中:
- :特征映射
- :门控因子
这是矩阵状态递推 的统一视角。
class GatedDeltaNet(nn.Module):
"""Gated DeltaNet 简化实现"""
def __init__(self, d_model, d_state=64):
super().__init__()
self.d_model = d_model
self.d_state = d_state
self.W_q = nn.Linear(d_model, d_state, bias=False)
self.W_k = nn.Linear(d_model, d_state, bias=False)
self.W_v = nn.Linear(d_model, d_model, bias=False)
self.W_beta = nn.Linear(d_model, 1) # delta rule beta
self.W_alpha = nn.Linear(d_model, 1) # gate
def forward(self, x):
B, n, d = x.shape
Q = self.W_q(x)
K = self.W_k(x)
V = self.W_v(x)
beta = torch.sigmoid(self.W_beta(x)) # (B, n, 1)
alpha = torch.sigmoid(self.W_alpha(x)) # (B, n, 1)
# 矩阵状态递推
S = torch.zeros(B, d, self.d_state, device=x.device)
outputs = []
for t in range(n):
# Delta rule: S = S - beta * (S @ k) k^T + beta * v k^T
S_k = torch.bmm(S, K[:, t:t+1, :].transpose(1, 2)) # (B, d, 1)
S = S - beta[:, t, :].unsqueeze(-1) * S_k @ K[:, t:t+1, :]
S = S + beta[:, t, :].unsqueeze(-1) * V[:, t:t+1, :].transpose(1, 2) @ K[:, t:t+1, :]
# Gate
S = alpha[:, t, :].view(B, 1, 1) * S
# 输出
y_t = torch.bmm(S, Q[:, t:t+1, :].transpose(1, 2)) # (B, d, 1)
outputs.append(y_t.squeeze(-1))
return torch.stack(outputs, dim=1)四、矩阵范数与优化
4.1 谱范数约束
Lipschitz 约束对 Transformer 训练稳定性至关重要。一个矩阵 的谱范数 等于其最大奇异值 。
Saratchandran & Lucey (NeurIPS 2025) 提出 Spectral Conditioning:7
关键洞察:Transformer block 的 Jacobian 的条件数 ,而非参数范数,主导优化效率。
Spectral Conditioning 修改 QKV 投影的谱,使 最小化:
class SpectralConditionedAttention(nn.Module):
"""谱条件化注意力"""
def __init__(self, d_model, n_heads, max_sigma=1.0, min_sigma=0.01):
super().__init__()
self.d_k = d_model // n_heads
self.n_heads = n_heads
self.max_sigma = max_sigma
self.min_sigma = min_sigma
# QKV 投影
self.W_qkv = nn.Linear(d_model, 3 * d_model, bias=False)
self.W_o = nn.Linear(d_model, d_model)
def spectral_condition(self, W):
"""将奇异值夹紧到 [min_sigma, max_sigma]"""
U, S, Vh = torch.linalg.svd(W, full_matrices=False)
S_clamped = S.clamp(min=self.min_sigma, max=self.max_sigma)
return U @ torch.diag_embed(S_clamped) @ Vh
def forward(self, x):
# 谱条件化
W_qkv = self.spectral_condition(self.W_qkv.weight)
qkv = F.linear(x, W_qkv)
# ... 标准注意力 ...4.2 Frobenius 范数与权重衰减
权重衰减(Weight Decay)本质上是最小化 Frobenius 范数:
其中 是所有奇异值的平方和。
4.3 核范数与稀疏化
核范数(Nuclear Norm) 是秩函数的凸近似,常用于:
- 权重矩阵稀疏化(迫使许多奇异值为 0)
- 模型压缩
- LoRA 的理论基础
五、矩阵微积分在 Transformer 中
5.1 Jacobian 与梯度流
Transformer 的前向传播 。根据链式法则:
每个 是 Jacobian 矩阵。残差连接的 Jacobian 接近单位矩阵:
这保证了梯度不会指数级消失(与 LSTM 的细胞状态类似)。
5.2 NTK 视角
NTK (Neural Tangent Kernel) 视角将 Transformer 视为在 NTK 特征空间中做核回归:
NTK 矩阵:
在 NTK 视角下,Transformer 的训练动力学是线性的,可以用闭式解分析。
5.3 Pre-norm 的谱优势
Pre-norm Transformer()相比 Post-norm 有以下谱优势:
- 残差路径上 Jacobian 严格为
- 各层更新是加性的,可以解耦
- 训练更稳定,允许更大学习率
Wu et al. (NeurIPS 2024) 证明了 Pre-norm 残差结构使 LayerNorm 后的 谱范数随深度指数衰减,加剧 rank collapse。8
六、特征值与图视角
6.1 邻接矩阵 = 动态全连接图
注意力矩阵 可以解释为动态构建的全连接图的邻接矩阵:
- 节点:每个 token
- 边权重: = token 对 token 的关注度
- 这是自适应的图结构
6.2 与 GNN 的统一视角
GNN 的消息传递:
Transformer 的注意力(节点 = token):
关键区别:
- GNN:图是静态的(输入决定)
- Transformer:图是动态的(注意力自适应构建)
6.3 拉普拉斯视角
定义 token 之间的拉普拉斯矩阵:
则 Transformer 前向传播可以重写为扩散过程:
这是图上的扩散方程,与 Neural ODE 联系。
七、完整实现:从零构建简化 Transformer
import torch
import torch.nn as nn
import torch.nn.functional as F
import math
class LinearAlgebraicTransformer(nn.Module):
"""完整展示线性代数视角的简化 Transformer"""
def __init__(self, vocab_size, d_model=256, n_heads=4, d_ff=1024,
n_layers=4, max_seq_len=512, dropout=0.1):
super().__init__()
self.d_model = d_model
self.n_heads = n_heads
self.d_k = d_model // n_heads
# 词嵌入
self.token_emb = nn.Embedding(vocab_size, d_model)
self.pos_emb = nn.Embedding(max_seq_len, d_model)
# Transformer blocks
self.blocks = nn.ModuleList([
LABlock(d_model, n_heads, d_ff, dropout) for _ in range(n_layers)
])
self.ln_f = nn.LayerNorm(d_model)
self.head = nn.Linear(d_model, vocab_size, bias=False)
def forward(self, ids):
B, n = ids.shape
pos = torch.arange(n, device=ids.device).unsqueeze(0)
x = self.token_emb(ids) + self.pos_emb(pos)
# 收集每一层的谱信息用于分析
spectral_info = []
for block in self.blocks:
x, info = block(x, return_spectral=True)
spectral_info.append(info)
x = self.ln_f(x)
logits = self.head(x)
return logits, spectral_info
class LABlock(nn.Module):
"""Linear-Algebraic Transformer Block"""
def __init__(self, d_model, n_heads, d_ff, dropout=0.1):
super().__init__()
self.d_model = d_model
self.n_heads = n_heads
self.d_k = d_model // n_heads
# QKV 投影(三个矩阵)
self.W_q = nn.Linear(d_model, d_model, bias=False)
self.W_k = nn.Linear(d_model, d_model, bias=False)
self.W_v = nn.Linear(d_model, d_model, bias=False)
self.W_o = nn.Linear(d_model, d_model)
# FFN
self.ffn = nn.Sequential(
nn.Linear(d_model, d_ff, bias=False),
nn.GELU(),
nn.Linear(d_ff, d_model, bias=False)
)
# Pre-norm
self.ln1 = nn.LayerNorm(d_model)
self.ln2 = nn.LayerNorm(d_model)
self.dropout = nn.Dropout(dropout)
def forward(self, x, return_spectral=False):
B, n, d = x.shape
# === Multi-Head Self-Attention ===
x_norm = self.ln1(x)
Q = self.W_q(x_norm).view(B, n, self.n_heads, self.d_k).transpose(1, 2)
K = self.W_k(x_norm).view(B, n, self.n_heads, self.d_k).transpose(1, 2)
V = self.W_v(x_norm).view(B, n, self.n_heads, self.d_k).transpose(1, 2)
# 注意力矩阵
scores = Q @ K.transpose(-2, -1) / math.sqrt(self.d_k)
A = F.softmax(scores, dim=-1)
# 谱信息
info = None
if return_spectral:
with torch.no_grad():
U, S, Vh = torch.linalg.svd(A, full_matrices=False)
sigma_1 = S[:, :, 0].mean()
sigma_2 = S[:, :, 1].mean()
effective_rank = self._effective_rank(S)
info = {
'sigma_1': sigma_1.item(),
'sigma_2': sigma_2.item(),
'spectral_gap': (sigma_2 / (sigma_1 + 1e-8)).item(),
'effective_rank': effective_rank,
}
# 注意力输出
Y = A @ V
Y = Y.transpose(1, 2).contiguous().view(B, n, d)
Y = self.W_o(Y)
# 残差
x = x + self.dropout(Y)
# === FFN ===
x = x + self.dropout(self.ffn(self.ln2(x)))
return x, info
@staticmethod
def _effective_rank(S):
"""有效秩(基于谱熵)"""
S_norm = S / (S.sum(dim=-1, keepdim=True) + 1e-8)
entropy = -(S_norm * torch.log(S_norm + 1e-8)).sum(dim=-1)
return torch.exp(entropy).mean().item()
# === 训练循环示例 ===
def train_transformer(model, dataloader, n_epochs=3):
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-4, weight_decay=0.1)
for epoch in range(n_epochs):
for batch_idx, (ids, targets) in enumerate(dataloader):
optimizer.zero_grad()
logits, spectral_info = model(ids)
loss = F.cross_entropy(logits.view(-1, logits.size(-1)), targets.view(-1))
loss.backward()
optimizer.step()
if batch_idx % 100 == 0:
avg_gap = sum(s['spectral_gap'] for s in spectral_info) / len(spectral_info)
avg_rank = sum(s['effective_rank'] for s in spectral_info) / len(spectral_info)
print(f"Epoch {epoch}, Batch {batch_idx}, "
f"Loss {loss.item():.4f}, "
f"Avg Spectral Gap {avg_gap:.4f}, "
f"Avg Eff Rank {avg_rank:.1f}")八、关键洞察总结
8.1 三大数学结构
Transformer 的核心可以归结为三种数学结构:
- 行随机矩阵(注意力矩阵):Perron-Frobenius 定理、谱分析
- 低秩分解(LoRA、QKV、FFN):矩阵分解的理论与实践
- 谱条件化(Spectral Conditioning):用奇异值控制优化
8.2 三大统一视角
- 图视角:注意力矩阵 = 动态全连接图的邻接矩阵
- 扩散视角:多层 Transformer = 图上的扩散过程
- 核视角:Transformer = 在 NTK 特征空间的核方法
8.3 三大现代进展
- 谱分析揭示 rank collapse(Nait Saada et al. 2025)
- LoRA 理论证明(Balzano et al. 2025)
- 谱条件化优化(Saratchandran & Lucey 2025)
九、与其他专题的连接
- CNN 数学基础:卷积 = 局部注意力,平移等变性
- ResNet 理论:残差连接 = 谱范数约束 + 动力系统视角
- GNN 理论:注意力 = 动态图消息传递
- 深度学习理论:NTK 视角下的训练动力学
参考资料
最后更新:2026-06-22
Footnotes
-
Vaswani, A. et al. (2017). Attention Is All You Need. NeurIPS 2017. arXiv:1706.03762 ↩
-
Nait Saada, T. et al. (2024). Mind the Gap: a Spectral Analysis of Rank Collapse and Signal Propagation in Attention Layers. ICML 2025. arXiv:2410.07799 ↩
-
Chen, Y. et al. (2025). Critical Attention Scaling. MIT LIDS Report 2025. PDF ↩
-
Balzano, L. et al. (2025). An Overview of Low-Rank Structures in the Training and Adaptation of Large Models. arXiv:2503.19859 ↩
-
Liu, S.-Y. et al. (2024). DoRA: Weight-Decomposed Low-Rank Adaptation. ICML 2024 Oral. arXiv:2402.09353 ↩
-
Zimerman, I. et al. (2024). Explaining Modern Gated-Linear RNNs via A Unified Implicit Attention Formulation. arXiv:2405.16504 ↩
-
Saratchandran, H. & Lucey, S. (2025). Spectral Conditioning of Attention Improves Transformer Performance. NeurIPS 2025. arXiv:2603.07162 ↩
-
Wu, X. et al. (2024). On the Role of Attention Masks and LayerNorm in Transformers. NeurIPS 2024. arXiv:2405.18781 ↩