把对话写进神经突触:SKIM 让冻结的语言模型用参数记住一切
arXiv: 2610.36948 — Self-Keyed In-Parameter Memorization for External Memory-Free Dialogue Recall in Frozen Language Models
一个反直觉的问题
你刚和 AI 助手聊了 30 轮,从今天的工作汇报聊到周末计划,从孩子的学校聊到冰箱里还剩什么。这个 AI 助手是怎么记住这些的?
答案在今天几乎是唯一的:外部存储。每轮对话都被存进一个向量数据库,下次你问问题时,系统用语义搜索把相关片段捞出来,塞进 prompt 里。这个数据库会随着对话不断膨胀——10 轮、100 轮、1000 轮——存储成本线性增长,检索延迟也线性增长。
但 XinYu Piao 等人(韩国高丽大学)提出了一个反直觉的问题:
如果模型参数本身就是存储介质呢?如果对话可以直接"写进"神经网络的权重里,不需要任何外部存储呢?
这不是科幻。他们做出来了,方法叫 SKIM(Self-Keyed In-Parameter Memorization,自键入参数记忆)。
从 ROME 说起:知识编辑的启发
要理解 SKIM,得先知道它的"祖宗"——ROME(Rank-One Model Editing)。
2022 年,Meng 等人发现了一个惊人的事实:Transformer 的前馈层(FFN)存储着事实知识。比如"GPT-2 知道埃菲尔铁塔在巴黎"这件事,就编码在某几层 FFN 的权重矩阵里。他们发明了一种"闭式更新"(closed-form update)方法:给定一个主语-关系-宾语三元组(比如"埃菲尔铁塔-位于-柏林"),可以直接计算出一个权重修改量 ΔW,把这个事实"写进"模型参数里,让模型在下次被问到"埃菲尔铁塔在哪"时回答"柏林"。
这就像你不用重新训练整个模型,只需要在权重矩阵上做一次"外科手术",就能植入一条新知识。
ROME 之后又有了 MEMIT(Mass Editing Memory in a Transformer),可以同时编辑多条事实。但这些方法都有一个限制:你必须在编辑时就知道"问题"和"答案"是什么——给定 (subject, relation, object),才能算出 ΔW。
SKIM 的核心创新:让模型自己生成"钥匙"
SKIM 解决的是一个更难的问题:对话存储。
对话和事实知识不一样。事实是"埃菲尔铁塔在巴黎"这种结构化三元组,但对话是:
"今天我去了超市,买了牛奶和鸡蛋,然后去学校接了孩子。回来的路上车胎爆了,等了 40 分钟拖车。"
这段话里藏着无数可能被问到的问题:买了什么?去了哪些地方?发生了什么意外?等了多久拖车?
你不可能预先列出所有问题。那 SKIM 怎么做?
让模型自己生成问题。
具体来说,SKIM 的流程是这样的:
第一步:自键构造(Self-Keyed Construction)
对于每一轮对话,SKIM 让模型自己生成一批"可能被问到的问题"。比如对上面那段话,模型可能生成:
- "今天去了哪里?"
- "买了什么?"
- "路上发生了什么?"
- "等了多久拖车?"
- "谁去接了孩子?"
这些问题就是"钥匙"(keys)——它们将被写进模型参数,作为未来检索这段对话的入口。
第二步:联合编辑(Joint Edit in One Feed-Forward Layer)
SKIM 用一个闭式解(closed-form solve),把所有 (问题, 对话内容) 对一次性写进某一层 FFN 的权重矩阵。这个数学操作类似于 ROME/MEMIT,但有一个关键区别:钥匙不是人给的,是模型自己生成的。
这就是"Self-Keyed"的含义——模型自己给自己造钥匙。
第三步:召回与自探测选择(Recall and Self-Probed Selection)
当用户后来问"今天路上发生了什么?"时,模型会:
- 用用户的问题去匹配存储在参数里的"钥匙"
- 如果匹配到(比如匹配到"路上发生了什么?"这把钥匙),对应的对话内容就会被"召回"
- 召回的内容从模型参数里直接读出,不需要任何外部存储
流式写入 = 批量写入:没有遗忘
SKIM 最漂亮的实验结果之一是:流式写入和批量写入的召回率完全一样。
这是什么意思?想象两种场景:
- 批量写入:把 32 轮对话全部收集好,一次性算出 ΔW,写入参数。这是"最强"的写入方式,因为所有信息都在同一个优化里考虑了。
- 流式写入:对话一轮一轮来,每来一轮就写入一次,不知道后面还会来什么。
通常来说,流式写入会有"遗忘"问题——新写入的内容会干扰之前写入的内容,就像在一张纸上反复写东西,旧的字迹会被新的覆盖。
但 SKIM 的闭式解有一个数学性质:逐轮写入的累积效果,等价于一次性批量写入。论文里画了一张图,流式召回率和批量召回率完全落在 y=x 的对角线上——每一个点都在线上,没有一个点偏离。
这意味着:SKIM 可以实时地、增量地把对话写进参数,而且不会遗忘之前的内容。
63.1% 的召回率:够用吗?
在 5 个语言模型上的实验结果:
- 5 模型平均召回率:63.1%
- 最强模型召回率:75.0%
- 对比基线(无缓存):远低于此
63.1% 听起来不高?但要注意几个前提:
- 模型是冻结的——SKIM 不修改模型权重以外的任何东西,不微调,不增加参数量
- 没有外部存储——不需要向量数据库,不需要 KV cache
- 问题是开放式的——模型自己生成钥匙,不是人预设的
更重要的是,论文做了一个"召回归因"实验,发现召回的瓶颈不在存储或寻址,而在自提取(self-extraction)——即模型从参数中读出内容这一步。这意味着如果模型本身更强(比如用更大的模型),召回率会自然提升。
失败模式:在哪里、什么时候
论文的诚实之处在于详细分析了失败模式:
- 按位置分析:对话中间的内容比开头和结尾更容易被遗忘
- 按答案类型分析:专有名词(人名、地名)比描述性短语更容易召回——这和 ROME 发现"FFN 善于存储实体知识"一致
- 多词答案比单词答案难——因为需要连续生成多个 token,每一步都可能出错
这些失败模式不是 SKIM 的 bug,而是"在参数里存储信息"这种范式本身的特性。理解了这些特性,才能知道 SKIM 适合什么场景:短期对话回忆,不是长期事实存储。
为什么这件事重要
1. 从"外挂存储"到"参数存储"的范式转变
当前所有主流的 LLM 记忆方案——RAG、向量数据库、KV cache——都是"外挂存储":信息存在模型外面,用的时候再捞进来。这带来了存储成本、检索延迟、隐私风险(外部存储可以被直接读取)等一系列问题。
SKIM 代表的是另一条路:信息就在模型参数里,和模型本身融为一体。没有外部数据库可以被黑客攻破,没有检索延迟,存储成本是零(参数量不变)。
2. 和知识编辑的深层连接
SKIM 不是凭空出现的。它站在 ROME、MEMIT 这条"知识编辑"研究线的肩膀上。这些研究证明了:Transformer 的 FFN 层就是一个可写的知识库,你可以用闭式解直接修改权重来写入信息。
SKIM 的贡献是把这个能力从"结构化事实"扩展到了"非结构化对话"——而关键创新就是"让模型自己生成钥匙"。这个思路非常优雅:既然我们不知道用户会问什么,那就让模型猜可能会问什么,把这些猜测作为钥匙存起来。
3. 流式 = 批量的数学美感
从工程角度看,"流式写入等于批量写入"这个性质极其重要。它意味着 SKIM 可以部署在实时对话场景中——每轮对话来了就写入,不需要等整个对话结束。而通常的增量学习/持续学习方法都会遇到"灾难性遗忘"问题,SKIM 的闭式解巧妙地绕过了这个陷阱。
诚实的边界
论文没有夸大 SKIM 的能力:
- 63.1% 的召回率离实用还有距离——你不能指望它记住 100 轮对话的所有细节
- 只在中小模型上测试了(最大 9B),更大模型的表现未知
- 对话长度有限(N=32 轮),更长对话的表现未验证
- 没有和最强的 RAG 系统直接对比——SKIM 的优势是"无外部存储",但 RAG 的召回率可能更高
但这些限制不影响核心贡献:SKIM 证明了"把对话写进参数"是可行的,而且流式写入不会遗忘。这是一个概念验证(proof of concept),不是生产系统。
一句话总结
SKIM 让冻结的语言模型自己生成问题作为钥匙,用闭式解把对话直接写进 FFN 权重——不需要外部存储,不需要微调,流式写入和批量写入效果一样。63.1% 的召回率证明了"参数即存储"不是科幻,而是正在到来的范式。
论文链接:arXiv:2610.36948
相关研究:
- ROME: Rank-One Model Editing — 知识编辑的奠基工作
- MEMIT: Mass Editing Memory in a Transformer — 批量知识编辑
许可证:arXiv.org perpetual non-exclusive license
讨论回复
加载中...正在加载回复...
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。