Differential Transformer
Differential Transformer 会用一张 softmax 注意力图减去另一张,以抵消注意力噪声,从而改善长上下文检索和量化效果。
差分 Transformer(也称 DIFF Transformer)是一种 Transformer架构,其注意力头会计算两张 softmax注意力图,并将其中一张从另一张中减去,从而抵消两张图都分配给无关上下文的权重。Microsoft Research 和 Tsinghua University 的 Tianzhu Ye、Li Dong、Furu Wei 及其同事于 2024 年 10 月提出了该架构,并在 ICLR 2025 以口头报告论文形式发表《差分 Transformer》。该设计借鉴了差分放大器和降噪耳机的原理:通过对两个信号作差,消除它们共有的噪声。在语言建模中,DIFF Transformer 只需约 65% 的参数量或训练 token数,就能达到标准 Transformer 相同的损失:一个 68 亿参数模型的表现可与 110 亿参数的 Transformer 相当。
差分注意力的工作原理#
标准的 自注意力 会为每个 token 分配非负权重,因此总有一些权重落在无关 token 上,作者称之为注意力噪声。差分注意力将每个头的查询和键投影拆成两半,根据每对投影计算一个 softmax 映射,再将两个映射组合为 (map1 − λ × map2) × V。两个映射都会给相同的无关 token 分配权重,因此相减会抵消这部分权重,而只有 map1 分配权重的 token 则会保留下来。由于每个映射的权重总和为 1,结果的每一行总和为 1 − λ,而单个权重可能为负数:
import torch
torch.manual_seed(0)
n, d, lam = 6, 8, 0.8 # 6 tokens, head size 8, lambda near the paper's 0.8 initialization
q1, k1, q2, k2 = torch.randn(4, n, d)
v = torch.randn(n, 2 * d) # values are twice as wide as each query-key pair
# Two ordinary softmax attention maps from separate query and key projections
map1 = torch.softmax(q1 @ k1.T / d**0.5, dim=-1)
map2 = torch.softmax(q2 @ k2.T / d**0.5, dim=-1)
# Subtracting cancels weight that both maps place on the same tokens
diff = map1 - lam * map2
out = diff @ v
print(f"Each row sums to {diff.sum(dim=-1)[0]:.2f}; {(diff < 0).sum().item()} of {n * n} weights are negative")它会打印 Each row sums to 0.20; 13 of 36 weights are negative,而 softmax 注意力映射不可能具有这两个属性。在真实模型中,λ 通过四个小向量学习得到,并在第 l 层以 0.8 − 0.6 × exp(−0.3 × (l − 1)) 作为初始值,因此较深层的初始值更接近 0.8。每个头的输出都会单独归一化,论文将其写作 GroupNorm,然后按 (1 − λ 的初始值) 缩放,以使梯度大小与标准 Transformer 相同。模型使用的头数减半,每个头的值宽度加倍,因此参数量与基线模型相同。每个映射都是普通的 softmax 注意力,因此实现可以复用 flash attention 内核;在 H100 GPU 上的训练吞吐量比同等规模的 Transformer 低 6% 到 12%。
报告的优势#
在一个包含 6 个线索和 2 个问题、上下文窗口为 4K token 的 大海捞针 测试中,上下文窗口内的 DIFF Transformer 得分为 0.85,标准 Transformer 为 0.55;论文的注意力分析将这一差异归因于注意力集中度:DIFF Transformer 将 0.27 到 0.40 的注意力放在答案上,而 Transformer 只有 0.03 到 0.09。它在文本摘要和问答中产生的幻觉也更少,并且在少样本上下文学习中准确率更高,对示例顺序也不那么敏感。
激活值离群点也有所减少。它最大的注意力 logit 为 38.8,而标准 Transformer 为 318.0;它最大的隐藏状态激活值为 1,688,而标准 Transformer 为 3,609。将注意力 logit 量化为 4 位时,它的准确率与 6 位的标准 Transformer 相当,并比 4 位 Transformer 的准确率高约 25%。
这个结果对模型量化很重要,因为少数极端激活值会决定其他所有值都必须共享的范围。视觉模型也同样如此:当Ultralytics YOLO26使用 quantize=8 进行导出时,导出器会使用 data 数据集中的图像校准激活值范围,并建议至少使用 300 张图像;而 quantize="w8a16" 在 LiteRT、Core ML 和 QNN 导出中将权重保持为 8 位、激活值保持为 16 位。
DIFF Transformer 与相关术语对比#
- 扩散 Transformer(DiT): 一种在扩散模型中取代 U-Net、用于生成图像和视频的 Transformer。
- 差分隐私: 一种针对训练数据的数学隐私保证。
- 稀疏注意力: 只为固定的一部分 token 对计算分数,并预先将其他所有权重设为零。
- 线性可变差动变压器: 一种测量线性位移的电气传感器。










