EngramEdit:给大模型做知识手术,不用重训就能改事实

想象你有一个百科全书编辑,他什么都会,但有一条写错了:他说"法国首都是伦敦"。你怎么办?

目录
  1. 当大模型说错了事实,你怎么办?
  2. 三个难题
  3. 坑一:共享嵌入冲突
  4. 坑二:表达泛化
  5. 坑三:无关知识污染
  6. EngramEdit 的三步手术
  7. 第一步:生成多表达,算目标记忆
  8. 第二步:映射到 n-gram 嵌入
  9. 第三步:惩罚高频嵌入的大改动
  10. 实验结果:近乎完美的知识手术
  11. 为什么这很重要?
  12. 知识与推理的真正解耦
  13. 可编辑的知识接口
  14. "共享资源更新"的一般框架
  15. 诚实评价
  16. 结语

当大模型说错了事实,你怎么办?

想象你有一个百科全书编辑,他什么都会,但有一条写错了:他说"法国首都是伦敦"。你怎么办?

传统做法有三种,但都有问题:

1. 重新训练:相当于让编辑重新读四年大学——太贵了 2. 微调:相当于让他上几天补习班——但可能把别的知识也搞乱 3. RAG 检索增强:相当于给他配个助手随时提醒——但每次都要提醒,治标不治本

DeepSeek Engram 架构给了一个新思路:把事实知识和推理能力分开存储。事实存在"条件记忆"里(用 n-gram 查表),推理由 Transformer 主干负责。这就像把百科全书和编辑的大脑分开——改百科全书不影响编辑的思维能力。

但问题来了:怎么改百科全书?

三个难题

EngramEdit 的作者发现,改条件记忆里的知识,比想象中难得多。有三个坑:

坑一:共享嵌入冲突

同一个 n-gram 嵌入可能被多个事实共用。比如 "法国" 这个 n-gram,既出现在"法国首都"也出现在"法国人口"的上下文里。你改了"法国首都"对应的嵌入,"法国人口"的答案可能也跟着变了。

这就像你在一本共享笔记本上改了一条,结果发现别的条目也引用了这一页,全跟着错了。

坑二:表达泛化

同一个事实可以有多种说法。"法国的首都是巴黎"、"巴黎是法国的首都"、"法国的首都城市叫什么?巴黎"。这些不同表达会激活不同的 n-gram,你只改其中一个表达对应的嵌入,换个说法就失效了。

这就像你只告诉编辑"法国首都是巴黎"这一种说法,他遇到"巴黎是哪国首都"就又答错了。

坑三:无关知识污染

越短、越常用的 n-gram,被激活的次数越多。改这些高频 n-gram 的嵌入,会影响大量无关事实。

这就像你改了笔记本的目录页,结果所有引用目录的条目都跟着变了。

EngramEdit 的三步手术

EngramEdit 的核心思路是:先算出目标记忆表征,再联合更新嵌入。分三步:

第一步:生成多表达,算目标记忆

先让每个事实生成多种表达(比如"法国首都是巴黎"的 5 种说法),然后给每个表达的记忆表征加一个可学习的扰动(perturbation)。只优化这个扰动,让模型预测出正确的新事实。优化完成后,就得到了每个表达的"目标记忆表征"。

这一步的关键是:不直接改嵌入,而是先算出"记忆应该长什么样"。

第二步:映射到 n-gram 嵌入

把每个目标记忆表征映射回它所使用的 n-gram 嵌入。不同表达可能共用一些嵌入,不同编辑也可能共用同一批嵌入。EngramEdit 把所有编辑的嵌入更新联合求解,让一个嵌入只更新一次,同时满足所有用到它的表达和编辑。

这就像多个手术同时进行,但共享的器官只动一次刀。

第三步:惩罚高频嵌入的大改动

在联合优化中,对被频繁复用的嵌入施加更强的惩罚——如果这个嵌入被 1000 个事实用到,改它的代价就比被 3 个事实用到的高 1000 倍。这样保护无关知识不被污染。

这就像改目录页的代价远高于改某个冷门条目——因为目录页影响面太大。

实验结果:近乎完美的知识手术

论文在 CounterFact 和 ZsRE 两个知识编辑基准上测试,结果惊人:

  • 编辑成功率接近 100%:只改条件记忆就能让模型预测出更新后的事实
  • 泛化到未见表达:改了"法国首都是巴黎",模型遇到"巴黎是哪国首都"也能答对
  • 多跳推理可用:在 MQuAKE 多跳推理基准上,EngramEdit 的准确率是最强基线的 3 倍(CoT 提示下)
  • 无关知识保持:即使不断累积事实更新,无关知识和通用能力也基本不受影响

为什么这很重要?

知识与推理的真正解耦

EngramEdit 不只是做了一个知识编辑工具,它验证了一个更深的假设:条件记忆架构确实把知识和推理分开了。你可以只改知识,不碰推理。这在传统 Transformer 架构上是做不到的——改一个权重,知识和推理同时受影响。

这就像你终于找到了大脑里"知识库"和"思维引擎"的解剖边界,可以单独对知识库做手术。

可编辑的知识接口

条件记忆不再只是"扩容工具"(让模型记住更多东西),而是变成了"可编辑的知识接口"(让模型的知识可以独立更新)。这意味着:

  • 事实纠错:模型说错了,直接改条件记忆,不用重训
  • 知识更新:世界变了(总统换了、公司被收购了),批量更新条件记忆
  • 个性化:不同用户看到不同的事实版本,只改各自的记忆层

"共享资源更新"的一般框架

EngramEdit 解决的"共享嵌入冲突"问题,其实是一个很一般的问题:当多个用户共用一个资源,怎么更新这个资源而不互相干扰?

这个框架不只适用于条件记忆,也适用于:

  • MoE 专家网络:多个 token 共用专家,怎么改专家不影响其他 token
  • RAG 向量库:多个查询共用文档,怎么更新文档不影响其他查询
  • 知识图谱:多个实体共用关系,怎么改关系不影响其他实体

诚实评价

EngramEdit 不是万能的:

1. 依赖条件记忆架构:只在 DeepSeek Engram 这类架构上有效,传统 Transformer 用不了 2. 编辑规模有限:论文测试的是单条或少量事实编辑,大规模知识更新(比如改一万条事实)的效果未知 3. n-gram 覆盖问题:如果某个事实的表达方式太罕见,生成的表达可能覆盖不到所有 n-gram 4. 联合优化的计算开销:多编辑联合求解的计算量随编辑数量增长

但作为一个"概念验证",它已经足够有力:条件记忆架构让知识变得可编辑了。

结语

EngramEdit 让我想到一个类比:传统 Transformer 像一块整体铸造的铁疙瘩,你没法只改一个角而不影响整体;而条件记忆架构像乐高积木,你可以单独替换某一块。EngramEdit 做的就是找到那块需要替换的积木,精准换掉,其他积木不动。

当大模型的知识可以像数据库一样增删改查,我们离"永远不落伍的模型"又近了一步。


论文:EngramEdit: Decoupled Knowledge Updates in LLMs through Conditional Memory

代码:github.com/ModalityDance/EngramEdit

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens