想象一下,你刚刚部署了一个庞大的大语言模型 (LLM) 。它运行得很完美,直到有用户问: “英国首相是谁?”模型自信地回答了一位三年前就已经离任的政治家的名字。
重新训练模型是不可能的——那太费钱也太费时了。这就是 知识编辑 (Knowledge Editing) 派上用场的地方。像 MEMIT (Mass-Editing Memory in a Transformer,Transformer 中的大规模记忆编辑) 这样的技术允许我们要害性地修改模型的权重,以更新特定的事实,同时不破坏模型的通用能力。
但大多数论文都忽略了一个陷阱。在像 Llama-2 或 GPT-J 这样的模型中编辑哪怕一个事实之前,你必须执行一个巨大的 预计算步骤 (precomputation step) 。 这一步涉及将数百万个 Token 跑过模型以计算协方差统计数据,在高端 GPU 上这个过程可能需要长达 40 小时。这就好比为了去趟杂货店,需要先把车热上一整天。
在这篇文章中,我们将深入探讨研究论文 “Efficient Knowledge Editing via Minimal Precomputation” (通过最小化预计算实现高效知识编辑) 。 我们将探索研究人员是如何发现这种巨大的预计算开销其实在很大程度上是不必要的。通过理解模型编辑背后的线性代数原理,我们可以将该步骤所需的数据量减少 99% 以上,将 40 小时的等待时间缩短为几分钟。
问题所在: 模型编辑的隐形成本
要理解这篇论文的重要性,我们需要先看看当前最先进的编辑方法是如何工作的。
像 ROME 和 MEMIT 这样的方法属于“定位后编辑 (locate-then-edit) ”范式。其核心思想很简单: Transformer 中的特定层 (通常是多层感知机,即 MLPs) 充当键值 (Key-Value) 记忆存储。
- 键 (Key, \(k\)) : 代表主语或上下文 (例如,“The capital of France”) 。
- 值 (Value, \(v\)) : 代表检索到的知识 (例如,“Paris”) 。
要编辑一个事实,我们希望改变模型的权重,使得特定的键向量产生一个 新的 值向量。然而,我们有一个约束条件: 在改变权重以学习新事实的同时,我们必须确保 所有其他现有知识保持不变 。
编辑背后的数学原理
MEMIT 的数学目标试图平衡两个目标: 记忆 (Memorization) (学习新事实) 和 保留 (Preservation) (保持旧事实稳定) 。
研究人员将其公式化为一个最小二乘问题。我们希望找到一个权重变化量 (\(\Delta\)) ,使得新事实和旧知识上的误差最小化。这个优化问题的解给出了权重的更新规则:

在这个方程中:
- \(\hat{W}\) 是新的权重矩阵。
- \(K_E\) 和 \(V_E\) 代表 编辑 (新事实) 的键和值。
- \(C_0\) 是我们要 保留 的键的协方差矩阵。
这个 \(C_0\) 矩阵就是罪魁祸首。它代表了模型已经学到的“通用知识”的键分布。为了确保模型在学习新事实时不会“忘记”如何说英语,算法使用 \(C_0\) 来约束更新。
协方差矩阵 \(C_0\) 定义为保留键向量 (\(k_0\)) 的外积之和:

瓶颈所在
这正是效率低下的地方。在原始的 MEMIT 论文中,作者通过将一大块维基百科内容 (约 4400 万个 Token) 输入模型来计算 \(C_0\)。他们收集每个 Token 的键向量 \(k_0\),以建立一个稳健的协方差估计。
对于像 Llama-2-7B 这样的模型,计算这个矩阵需要:
- 加载 4400 万个 Token。
- 在模型中运行前向传播。
- 缓存被编辑层的隐藏状态。
正如论文中所指出的,这在单张 NVIDIA A6000 GPU 上,GPT-J 需要 36 小时 , 而 Llama-2 需要 40 小时 。 如果你想编辑不同的层,或者不同的模型,你就必须从头再来。这个瓶颈使得“快速”模型编辑在实践中变得极其缓慢。
理论洞察: 线性代数来救场
这篇论文的作者提出了一个根本性的问题: 我们真的需要 4400 万个向量来解这个方程吗?
让我们看看更新方程中需要求逆的那一项 (我们称之为 \(C_{\text{eff}}\)) 。这个矩阵决定了通过解的稳定性:

这是一个方阵,其维度等于该层的隐藏层大小 (设维度为 \(d\)) 。例如:
- 在 GPT-2 XL 中,隐藏维度 \(d\) 是 6,400。
- 在 GPT-J 中,\(d\) 大约是 16,000。
从线性代数的角度来看,对于一个 \(d \times d\) 大小的矩阵,要是 可逆的 (这是闭式解存在的前提) ,它必须是满秩的。这意味着你通常至少需要 \(d\) 个独立的向量来构建它。
最低要求
如果隐藏维度是 6,400,理论上你只需要 6,400 个独立向量 就能确保矩阵可逆。
原始的 MEMIT 方法使用了 44,000,000 个向量。这比理论要求高出了几个数量级。作者假设,只要我们有足够的向量来张成隐藏层的向量空间,编辑算法就应该能完美运行。
这导致了协方差矩阵计算的重新定义,我们将巨大的 \(P\) (4400 万) 替换为一个更小的 \(P'\):

这里,\(P'\) 计算如下:
\[P' = d_m \cdot d_k\]- \(d_k\): 键向量的维度 (理论最小值) 。
- \(d_m\): 动态倍数 (Dynamic Multiplier) 。 这是一个安全系数。由于来自维基百科的随机向量可能不是完全线性无关的,我们将最低要求乘以一个小系数 (如 2、4 或 10) 以保证可逆性和稳定性。
通过仅使用 2 或 3 的动态倍数,我们可以将预计算需求从数百万个 Token 减少到仅几千个。
“Fast” 系列方法
基于这一洞察,作者介绍了标准编辑算法的高效版本:
- FastMEMIT
- FastROME
- FastEMMET (EMMET 是 ROME 的通用批处理版本) 。
这些方法在算法上与其前身完全相同,只有一个变化: \(C_0\) 矩阵是使用极小部分的数据计算出来的。
我们节省了多少数据?
对于 GPT-J (6B):
- 原始 MEMIT: ~44,000,000 Token。
- FastMEMIT (\(d_m=2\)): ~32,000 Token。
这是 99.92% 的缩减。因此,准备模型进行编辑所需的时间从几天降到了几秒钟。
实验与结果
理论虽好,但实际有效吗?如果我们使用更少的数据点来估计“通用知识”的协方差,会有破坏模型的风险吗?研究人员在三个模型上进行了测试: GPT2-XL、GPT-J (6B) 和 Llama-2 (7B) , 使用的是 CounterFact 数据集。
他们使用标准指标评估性能:
- 有效性分数 (Efficacy Score, ES) : 模型学会新事实了吗?
- 改写分数 (Paraphrase Score, PS) : 即使表述不同,模型能识别出该事实吗?
- 邻域分数 (Neighborhood Score, NS) : 模型保留了不相关的知识吗 (局部性) ?
- 总分 (Overall Score, S) : 上述指标的调和平均数。
GPT-J 上的结果
让我们看看 FastEMMET 在 GPT-J 上的结果。下面的图表绘制了性能分数与 动态倍数 (Dynamic Multiplier) (x轴) 的关系。x轴上的值 “1” 代表 Token 的理论最小数量。符号 \(\infty\) 代表原始的、完整的 44M Token 预计算。

解读:
- 看 总分 (a) 图表。
- 当倍数为 1 (仅使用 \(d\) 个向量) 时,性能良好,但在特定批次大小下略显不稳定。
- 然而,一旦倍数达到 2,曲线就变平了。
- FastEMMET 的性能线几乎立即与虚线所示的“95% 阈值”相交。
- 这证明仅使用 两倍于理论最小值 的数据,就能产生与使用全部 4400 万个 Token 几乎相同的性能。
同样的趋势也适用于 FastMEMIT :

在这里,我们看到了更紧密的收敛。当动态倍数达到 10 时,“Fast” 方法与计算昂贵的原始方法已无法区分。
Llama-2 上的结果
Llama-2 是一个更复杂的模型,结果显示出更多的细微差别。

在 Llama-2 的 FastEMMET (图 3) 中,我们看到该方法非常有效。即使倍数为 2 或 3,总分也徘徊在全量计算版本的 95% 阈值附近。
然而,Llama-2 上的 FastMEMIT 呈现了一个有趣的边缘情况:

注意 有效性分数 (b) 和 总分 (a) 图表中的蓝线 (批大小 1) 。它在低倍数下表现挣扎。作者指出,对于 Llama-2,使用理论最小值 (\(d_m=1\)) 导致小批次大小时出现不可逆矩阵。这表明 Llama-2 中的隐藏表示具有高度相关性——来自不同维基百科句子的向量在数学上看起来很相似,未能张成整个向量空间。
解决方案:
- 增加倍数: 设置 \(d_m = 10\) 解决了大多数问题,使性能恢复正常。这仍然仅是原始 44M Token 的约 0.25%。
- 正则化: 作者提到,在闭式解中添加一个微小的正则化项 (在完整论文中讨论) 可以稳定这些小批次大小下的求逆过程。
详细数据细分
对于那些对原始数字感兴趣的人来说,改进是显而易见的。让我们看看 GPT2-XL 的数据。
当仅使用 1 的动态倍数 (绝对理论最小值) 时,FastMEMIT 在低批次大小下的有效性 (ES) 显著下降:

你可以从上表中看到,对于批大小 1,FastMEMIT 的有效性仅为 50.6% 。 这证实了由于向量相关性,绝对最小值并不完全稳健。
然而,仅仅将倍数增加到 4 就可以完全解决这个问题:

倍数为 4 时,有效性跳回 99.4% , 总分 (S) 甚至击败了原始 MEMIT 基线 (85.73 vs 83.56) 。这验证了“Fast”方法: 你需要在最小值之上留有一定的安全余量,但你绝对不需要数百万个 Token。
结论与启示
这篇论文的主要贡献是证明了效率的可能性。多年来,社区一直认为“定位后编辑”方法需要缴纳沉重的预计算税。这篇论文证明了这种税是人为造成的——是对计算协方差矩阵所需数据量的高估。
关键要点:
- 几分钟,而非几小时: 你可以用不到最初推荐的 0.3% 的预计算数据量,达到最先进的模型编辑性能。
- 神奇数字: 对于几乎所有模型 (GPT-J, Llama-2, GPT-2) , 10 的“动态倍数”是一个安全的选择。这既保证了数学稳定性,又不浪费算力。
- 可访问性: 这种缩减消除了一个主要的准入门槛。研究人员和工程师现在可以在消费级硬件上启动编辑流程,而无需等待两天让预处理脚本跑完。
通过理解问题的线性代数边界,作者本质上优化了模型编辑的“启动序列”,使得大语言模型更加适应性强且易于维护。随着大语言模型规模的不断扩大,像 FastMEMIT 这样的效率技巧对于保持这些系统与不断变化的世界同步将至关重要。
](https://deep-paper.org/en/paper/2506.04226/images/cover.png)