跳到主要内容

模型编辑 — 给已固化的知识做手术

这一章讲三件事: 为什么需要「只改一条知识」的技术;五个性质怎么给编辑定标准;两族方法(外部拓展/内部修改)各自的思路与代表,以及全章最重要的实验发现——FFN 是键值记忆体。 链条位置:Prompt(第 06–08 章)改的是输入,PEFT(第 09–10 章)改的是行为;模型编辑改的是内容——知识错了、过时了、危险了,动刀的地方在参数里。

1. 顶层全景

病:模型输出偏见 / 毒性 / 知识错误(「斑马的皮肤是肉色」——实际是黑色)
├─ 药方一 重新预训练:洗干净数据从头再练 → 贵,且知识会过期
├─ 药方二 微调:用纠错样本调参 → 纠错样本太少,过拟合+灾难性遗忘
└─ 药方三 模型编辑:精准、高效地修改一个知识点,不惊动其他知识
├─ 外部拓展法:知识缓存(技能书)/ 附加参数(装备)
└─ 内部修改法:元学习(学怎么编辑)/ 定位编辑(先定位后动刀)
图说:书的比喻是冒险游戏升级——外购装备 vs 锻炼自身。

2. 五个性质:编辑的验收标准

书把编辑对象统称知识点(问题+答案对,如「斑马的皮肤是什么颜色的?→黑色」)1。真正的难点在知识的内在关联性:改一条知识可能「牵一发而动全身」,连坐到相关问题上——所以精确控制编辑范围是核心挑战2。由此立起五个验收性质,书用同一个斑马例把五者串成一组考题3:

性质考题及格线
准确性「斑马的皮肤是什么颜色的?」答黑色编辑本身有效
泛化性「剃毛后的斑马是什么颜色?」「请告诉我斑马的肤色」也答黑色换个问法不破功
可迁移性反向问题(「皮肤为黑色的马是什么马?」)、推理问题(「肤色与毛色相同吗?」)、实体替换,答案不是黑色也能答对相关知识跟着更新
局部性「赤兔马的皮肤?」「斑马吃什么?」照旧无关问题不被连坐
高效性批量并行编辑还是只能依次来时间与资源(时间、算力、显存的账)可承受

两个书里点明的事实值得记住:可迁移性是普遍短板,大多数编辑方法做不好;而局部性是编辑相比朴素微调的核心改进——微调是全局动土,编辑承诺只动这一处4

3. 外部拓展法:不动原模型

外部拓展的思路:新知识放外面,原模型保持不动——对原知识零干扰5

知识缓存法像给模型配一本「技能书」:三个组件——编辑缓存存需要修改的知识;门控单元判断输入与缓存里的知识相不相关;推理模块拿着缓存知识作答。走查一遍:缓存里存着「斑马的肤色→黑色」,问「鸵鸟会飞吗」→门控判无关→原模型作答;问「皮肤为黑色的马是什么马」→判相关→推理模块作答6。缓存里存什么形式有三种:事实知识(问答对,代表方法 SERAC)、自然语言补丁(「如果……那么……」句式,像 Prompt,便于人工增删)、正则表达式(早期做法,编写复杂泛化低,已不常用)7。书对这个路线的批评一针见血:这是「求助」,不是「内化」——知识没进模型,只是挂在外面查8

附加参数法把外部参数整合进模型(思想与第 09 章 PEFT 的附加法同源):CaliNET 在最后一层 FFN 加新参数矩阵;T-Patcher 在最后 FFN 引入可训练神经元、一个神经元对应一个知识点(下一章解剖);GRACE 在特定层插「码本」适配器——错误知识作 key、修正值作 value,还带一个延迟半径判断当前输入与哪个错误足够相似,码本随时间持续更新9

4. 内部修改法:动原模型的参数

元学习法:让模型「学习如何编辑」(Learning to Edit)——从一系列编辑任务里提取通用的元知识,再拿元知识去快速执行没见过的编辑10。元训练是个双层优化:内层在各编辑任务上更新模型参数,外层在验证集上综合优化元知识,让「以后每次编辑」都更快收敛11。代表演进:ENN 把元知识看作优化器参数(只在 ResNet 小网络上验证过);KE 把元知识看作超网络(损失里同时放准确性和局部性两项);MEND 用低秩分解优化——利用 FFN 梯度的秩-1 特性,把「要更新的梯度」拆成两个向量的乘积,超网络只处理拆开的向量再乘回去,省算省存12。短板:训练复杂、大模型成本高,而且从全局视角更新参数,加了局部性损失也可能伤到原有知识13

定位编辑法:先定位知识存在哪些参数里,再只动那一小块。它的地基是一个重要实验——

4.1 主走查:FFN 是键值记忆体

在 16 层 Transformer 语言模型上做的实验14:

实验①:key 认前缀。把 FFN 的每个 key 与所有 query 算内积,
收集激活值高的 query——它们对应的句子前缀高度同质:
某个 key 的「高激活 query」全都以「斑马的」结尾
→ 这个 key 存的就是「斑马的」这类文本模式。
实验②:value 吐分布。把对应 value 乘输出嵌入、softmax 成概率分布:
「斑马的」之后,「条纹」概率最大——与真实下一个词相符。
结论:FFN 的 key 总结句子前缀特征,value 给出下一词的概率分布
——FFN 就是一个键值存储体,知识存在里面。
图说:这解释了第 02 章的伏笔「FFN 占 2/3 参数、是记忆体」——记忆的机制长这样。

顺着这个发现:KN(知识神经元)把 FFN 的每个中间激活值定义为一个知识神经元,用归因方法算出每个神经元对目标知识的贡献,直接改对应键向量完成编辑;ROME 做了因果跟踪实验进一步优化定位(下一章解剖);MEMIT 在 ROME 基础上扩展到同时执行数千次编辑的大规模批量15

5. 方法横评

书汇总了一张定性对照表(高/中/低三档,高效性以「3=支持批量编辑 / 7=需依次编辑」标注)16:

方法准确泛化可迁移局部高效
SERAC知识缓存3
T-Patcher附加参数7
KE / MEND元学习低/中低/高-/中3
KN定位-7
ROME / MEMIT定位7 / 3

书挑出综合最优的 T-Patcher 与 ROME 作为下一章的解剖对象;同时注明 ROME/MEMIT 主要为 decoder-only 模型设计,T-Patcher 批量编辑时内存需求高17

6. 作者的判断与证据

  • 给了证据的:斑马编辑前后对照;16 层 Transformer 的两组实验(key 认前缀、value 吐分布);表 5.2 的定性横评(注明引自文献的实验结果)。
  • 作者的分类学:外部/内部、缓存/附加、元学习/定位这棵分类树是书(综合已有综述)的整理,不是某个原始论文的划分——引用时按本书框架定位,按论文找细节。
  • 作者保留的余地:「尚缺乏统一标准,不同研究对相关概念的定义各不相同」——书开场就承认这个领域连术语都未统一18

7. 边界与局限

  • 五性质里的「高效性」只有定性标注;实际选型还要算显存与延迟,书在 T-Patcher 一节补了一句内存警告。
  • 知识缓存法的「求助而非内化」批评成立的前提是:你要的是模型真学会;若只要输出正确,外部缓存反而是最安全的方案。
  • 键值存储体实验是 16 层小模型上的结论,直接外推到千亿模型需谨慎;ROME 的因果跟踪(下一章)在大模型上补了证据。
  • 数据集一节列了 16 个数据集(zsRE 24 万级、COUNTERFACT 2.2 万级等),本章只点名,评测细节不在书内。

8. 可带走的

  1. 模型编辑解决的是「改一条知识」:重训太贵、微调会过拟合(把纠错样本背下来却没学会规律)加灾难性遗忘(学新的把旧的冲掉)。
  2. 五性质验收:准确/泛化/可迁移/局部/高效;可迁移性是普遍短板,局部性是编辑的立身之本。
  3. 知识缓存=外挂问答(门控+缓存+推理模块),是求助不是内化。
  4. GRACE 用「key=错误知识、value=修正值、延迟半径判相似」的码本持续编辑。
  5. 元学习=学怎么编辑,双层优化训元知识;MEND 靠梯度秩-1 分解省算力。
  6. FFN 是键值存储体:key 认「斑马的」前缀,value 吐「条纹」分布——第 02 章「FFN 是记忆」的机制版。
  7. 选型先看表:ROME/MEMIT 四高,T-Patcher 高可迁移但批量编辑内存高。

9. 原文地图

主题原书章原文位置
斑马知识错误例5.1 模型编辑简介text/14-ch05-01-5-1.txt:9(搜「斑马的皮肤」)
两种旧药方5.1 模型编辑简介text/14-ch05-01-5-1.txt:44(搜「灾难性遗忘」)
思想钢印类比5.1.1 模型编辑思想text/14-ch05-01-5-1.txt:58(搜「希恩斯」)
统一为知识点5.1.2 模型编辑定义text/14-ch05-01-5-1.txt:95(搜「知识点」)
牵一发而动全身5.1.2 模型编辑定义text/14-ch05-01-5-1.txt:130(搜「牵一发而动全身」)
五性质与考题5.1.3 模型编辑性质text/14-ch05-01-5-1.txt:174(搜「五个方面」) · text/14-ch05-01-5-1.txt:185(搜「准确性衡量」) · text/14-ch05-01-5-1.txt:251(搜「实体替换」)
可迁移短板与局部性意义5.1.3 模型编辑性质text/14-ch05-01-5-1.txt:161(搜「可迁移性」) · text/14-ch05-01-5-1.txt:287(搜「朴素微调」)
zsRE 与 COUNTERFACT5.1.4 常用数据集text/14-ch05-01-5-1.txt:313(搜「zsRE」) · text/14-ch05-01-5-1.txt:358(搜「COUNTERFACT」) · text/14-ch05-01-5-1.txt:360(搜「表面变化」)
勇者类比与方法分类5.2 模型编辑经典方法text/15-ch05-02-5-2.txt:35(搜「勇者」) · text/15-ch05-02-5-2.txt:48(搜「知识缓存法」)
知识缓存三组件5.2.1 外部拓展法text/15-ch05-02-5-2.txt:107(搜「门控单元」) · text/15-ch05-02-5-2.txt:54(搜「推理模块」)
三种存储形式5.2.1 外部拓展法text/15-ch05-02-5-2.txt:152(搜「SERAC」) · text/15-ch05-02-5-2.txt:154(搜「句式」) · text/15-ch05-02-5-2.txt:164(搜「并不常用」)
求助非内化5.2.1 外部拓展法text/15-ch05-02-5-2.txt:170(搜「内化」)
CaliNET/GRACE5.2.1 外部拓展法text/15-ch05-02-5-2.txt:184(搜「CALINET」) · text/15-ch05-02-5-2.txt:220(搜「codebook」) · text/15-ch05-02-5-2.txt:222(搜「延迟半径」)
元学习双层优化5.2.2 内部修改法text/15-ch05-02-5-2.txt:251(搜「学习如何学习」) · text/15-ch05-02-5-2.txt:275(搜「双层优化」)
ENN/KE/MEND5.2.2 内部修改法text/15-ch05-02-5-2.txt:327(搜「ENN」) · text/15-ch05-02-5-2.txt:336(搜「超网络」) · text/15-ch05-02-5-2.txt:348(搜「秩-1」)
键值存储体实验5.2.2 内部修改法text/15-ch05-02-5-2.txt:383(搜「16 层」) · text/15-ch05-02-5-2.txt:385(搜「键值存储体」) · text/15-ch05-02-5-2.txt:428(搜「斑马的」) · text/15-ch05-02-5-2.txt:434(搜「下一个词」)
KN/ROME/MEMIT5.2.2 内部修改法text/15-ch05-02-5-2.txt:445(搜「知识神经元」) · text/15-ch05-02-5-2.txt:463(搜「因果跟踪」) · text/15-ch05-02-5-2.txt:477(搜「数千次编辑」)
方法横评表5.2.3 方法比较text/15-ch05-02-5-2.txt:512(搜「ROME」) · text/15-ch05-02-5-2.txt:525(搜「内存的需求较高」)

Footnotes

  1. 出处:「5.1.2 模型编辑定义」第 95 段(text/14-ch05-01-5-1.txt:95,搜「知识点」)。KME/KE 等术语统一为模型编辑在同段(text/14-ch05-01-5-1.txt:89,搜「统一为模型编辑」)。

  2. 出处:「5.1.2 模型编辑定义」第 130 段(text/14-ch05-01-5-1.txt:130,搜「牵一发而动全身」)。

  3. 出处:「5.1.3 模型编辑性质」第 174 段(text/14-ch05-01-5-1.txt:174,搜「五个方面」)。五道考题(准确性/泛化/迁移/局部)与图 5.3 在第 157 段(text/14-ch05-01-5-1.txt:157,搜「剃毛后的斑马」);实体替换、反向、推理三类问题在第 251 段(text/14-ch05-01-5-1.txt:251,搜「实体替换」)。

  4. 出处:「5.1.3 模型编辑性质」第 161 段(text/14-ch05-01-5-1.txt:161,搜「可迁移性」)与第 287 段(text/14-ch05-01-5-1.txt:287,搜「朴素微调」)。

  5. 出处:「5.2.1 外部拓展法」第 90 段(text/15-ch05-02-5-2.txt:90,搜「外部参数或外部知识库」)。

  6. 出处:「5.2.1 外部拓展法」第 117 段(text/15-ch05-02-5-2.txt:117,搜「门控单元」)与图 5.5 走查(text/15-ch05-02-5-2.txt:54,搜「推理模块」;text/15-ch05-02-5-2.txt:131,搜「鸵鸟会飞吗」)。

  7. 出处:「5.2.1 外部拓展法」第 152 段(text/15-ch05-02-5-2.txt:152,搜「SERAC」)、第 154 段(text/15-ch05-02-5-2.txt:154,搜「句式」)与第 164 段(text/15-ch05-02-5-2.txt:164,搜「并不常用」)。

  8. 出处:「5.2.1 外部拓展法」第 170 段(text/15-ch05-02-5-2.txt:170,搜「内化」)。原文:「相当于在让大语言模型进行求助,而并非将新的知识真正内化为自己的一部分」。

  9. 出处:「5.2.1 外部拓展法」第 184 段(text/15-ch05-02-5-2.txt:184,搜「CALINET」)与第 220 段(text/15-ch05-02-5-2.txt:220,搜「codebook」)、第 222 段(text/15-ch05-02-5-2.txt:222,搜「延迟半径」)。

  10. 出处:「5.2.2 内部修改法」第 251 段(text/15-ch05-02-5-2.txt:251,搜「学习如何学习」)与第 269 段(text/15-ch05-02-5-2.txt:269,搜「元知识」)。

  11. 出处:「5.2.2 内部修改法」第 275 段(text/15-ch05-02-5-2.txt:275,搜「双层优化」)。内层编辑任务优化、外层验证集综合优化(式 5.5)在同段至第 317 段(text/15-ch05-02-5-2.txt:317,搜「外层优化」)。

  12. 出处:「5.2.2 内部修改法」第 327 段(text/15-ch05-02-5-2.txt:327,搜「ENN」)、第 336 段(text/15-ch05-02-5-2.txt:336,搜「超网络」)与第 348 段(text/15-ch05-02-5-2.txt:348,搜「秩-1」)。

  13. 出处:「5.2.2 内部修改法」第 162 段(text/15-ch05-02-5-2.txt:162,搜「复杂」)与第 374 段(text/15-ch05-02-5-2.txt:374,搜「不稳定」)。

  14. 出处:「5.2.2 内部修改法」第 383 段(text/15-ch05-02-5-2.txt:383,搜「16 层」)与第 385 段(text/15-ch05-02-5-2.txt:385,搜「键值存储体」)。实验 1(激活值大的 query 前缀同质)在第 428 段(text/15-ch05-02-5-2.txt:428,搜「斑马的」);实验 2(value 的概率分布与下一词相符)在第 436 段(text/15-ch05-02-5-2.txt:436,搜「条纹」)。

  15. 出处:「5.2.2 内部修改法」第 445 段(text/15-ch05-02-5-2.txt:445,搜「知识神经元」)、第 463 段(text/15-ch05-02-5-2.txt:463,搜「因果跟踪」)与第 477 段(text/15-ch05-02-5-2.txt:477,搜「数千次编辑」)。

  16. 出处:「5.2.3 方法比较」表 5.2(text/15-ch05-02-5-2.txt:152,搜「SERAC」)与(text/15-ch05-02-5-2.txt:512,搜「ROME」)。三档标注规则在第 496 段(text/15-ch05-02-5-2.txt:496,搜「批量」)。

  17. 出处:「5.2.3 方法比较」第 525 段(text/15-ch05-02-5-2.txt:525,搜「内存的需求较高」)与「5.3 附加参数法:T-Patcher」前的过渡(text/16-ch05-03-5-3-t-patcher.txt:3,搜「decoder-only」)。

  18. 出处:「5.1.2 模型编辑定义」第 85 段(text/14-ch05-01-5-1.txt:85,搜「缺乏统一标准」)。