跳到主要内容

解剖两个编辑器 — T-Patcher 与 ROME

这一章讲三件事: 外部拓展法的代表 T-Patcher 怎么「贴补丁」;定位编辑法的代表 ROME 怎么「先找到知识在哪、再无创插入」;模型编辑已经落地在哪三件事上。 链条位置:第 11 章给了分类树和键值存储体地基,这一章把两条最有出息的分支拆到螺丝级——一个是「加记忆」,一个是「改记忆」。

1. T-Patcher:贴在最后的补丁

1.1 位置:为什么是最后一层 FFN

T-Patcher 把补丁加在模型最后一个 Transformer 层的全连接前馈层里。理由接着第 11 章的键值存储体讲:FFN 的隐藏层维度(中间那层的宽度)≈它「记忆」的文本模式数量,加键值对=插入新的事实记忆;补丁的激活可以被精确控制,只对特定输入生效;而且只加最后一层,补丁的修改能直达输出、不被中间结构稀释1

1.2 形式:一个补丁=一组键值对

补丁由三样组成:一个键向量 kp、一个值向量 vp、一个偏置 bp。加入后 FFN 的输出变成「原输出 + ap·vp」——ap 是补丁的激活值,代表这个输入与补丁的响应程度;书把它比作「一个很小的修正器,只会被相关的输入查询激活」2。走查一下数据流:无关输入进来,ap≈0,FFN 输出照旧;目标输入进来,ap 变大,ap·vp 作为修正项叠加,把输出推向想要的答案3

1.3 训练:两组损失管「响」与「不响」

T-Patcher 冻结原模型,只训补丁;而且每个需要编辑的 token 都配一个补丁,精确到词4。损失函数(衡量「调得多差」的式子,训练就是把它压小)正好对着第 11 章的验收标准5:

  • 准确性损失:两项——激活损失(exp(−qe·kp−bp))管「目标输入来了补丁必须被点亮」;编辑损失(交叉熵)管「点亮之后输出必须对准目标答案」。
  • 局部性(记忆)损失:从记忆数据集(随机保留的、与本次编辑无关的历史查询向量)里采样,lm1 压制无关输入对补丁的激活(不许超过阈值 β),lm2 拉开目标与无关输入的激活差距。

总损失=准确性+β×记忆。书也如实交代局限:跨模型架构性能会波动;批量编辑时内存需求高——每个知识点都占神经元,改一千条就贴一千个补丁6

2. ROME:先找到知识,再无创插入

2.1 定位:因果跟踪三步

ROME(Rank-One Model Editing)要先回答「知识到底存在哪」。它的因果跟踪实验是控制变量法,拿知识元组 t=(s, r, o) 做靶子(「斑马」「的肤色是」「黑色」),问题 q=(s, r) 输入模型应输出 o7:

① 正常推理:「斑马的肤色是」→ 输出「肉色」;存下所有模块的输出。
② 干扰推理:给主体「斑马」每个 token 的嵌入加噪声 → 模型答不出「肉色」。
③ 恢复推理:把某一个 token 在某一层的输出单独恢复成干净值(其余仍乱),
看「肉色」的概率涨回来多少——这个增量就是该模块的因果效应。
图说:在 1000 个知识陈述上扫完三种模块(注意力/FFN/整层)。

结果:模型的中间层在处理主体末 token 时因果效应显著,而且主要来自 FFN;注意力层的贡献集中在末层处理问题末 token8阻断实验再补一刀:恢复某层输出后把后续 FFN 冻结在干扰态——中间层的因果效应随之消失;冻结注意力则只小幅下降。结论钉死:知识存于中间层 FFN,在处理主体末 token 时起作用9

2.2 机制假设与编辑三步

ROME 汇总已有研究给出存储机制假设:起始层注意力把主体信息汇入末 token 的向量;中间层 FFN 查询这个表示、把相关信息写进残差流(残差连接传播的信息流);末尾注意力整理输出10。编辑就发生在中间层 FFN 上,三步走:

第一步,定键。 把「斑马」喂进模型,读取它在被编辑 FFN 激活函数(把加权和掰弯出非线性的那一步)后的输出作为键向量 k*;为了键的泛化性,拼上各种随机前缀文本跑多次取平均——不管说「我是一只 AI 助手。斑马的肤色是」还是「她微笑着道. 斑马的肤色是」,键都应该指到同一个知识点11

第二步,优化值。 把被编辑 FFN 的输出向量当作可训练参数做梯度下降,损失两项:L1 交叉熵——最大化目标答案「黑色」的概率(同样拼多种前缀);L2 KL 散度——在「斑马是」这类基础提示上,约束编辑后模型与原模型输出一致,防止连「斑马」本身的理解都被带偏(局部性)12

第三步,插入。 把 FFN 下投影矩阵看作线性键值存储 W·K≈V,求一个带约束的最小二乘(让总偏差平方和最小的经典解法):加上新键值对 (k*, v*),同时尽量不动已有映射。闭式解一次算出:Ŵ = W + Λ(C⁻¹k*)ᵀ,其中 C 是预先用维基文本统计的协方差(衡量两处波动是否同步的量)矩阵。更新矩阵秩为一——方法由此得名「秩一模型编辑」13

判断(我们的,不是书里的): T-Patcher 与 ROME 是同一场手术的两种入路:前者「加一个新神经元,旧组织不动」,后者「重新计算一块旧组织的接法」。补丁好做批量、ROME 换来四高,但 ROME 的因果跟踪本身就是一份「模型可解释性」的副产品——编辑技术把「知识在哪」变成了可测量的量。 如果错,会错在: 如果某类知识并非存于单个 FFN 层(比如涉及多跳推理链的知识),ROME 的单点插入就会失效——MEMIT 的批量编辑与后续多跳评测(MQuAKE,见书数据集表)正是对着这条边界去的。

3. 落地三则

  • 精准模型更新:书举了一个业界悬案——2023 年 12 月,网友发现中文问 Gemini Pro「你是谁」,它答「我是百度文心大模型」;仅仅一天后这类回答消失。重训不可能这么快,书据此推测 Google 用了模型编辑式的紧急修复14
  • 保护被遗忘权:被遗忘权(RTBF)经欧盟法院冈萨雷斯诉谷歌案确立、写入 GDPR;大模型记忆个人信息,同样受约束——攻击面包括生成时无意泄露、从输出反推训练数据、参数被不当访问;书还引了狠例:让模型无限重复一个词,就能诱出训练数据里的个人隐私。DPEN 的做法:隐私神经元检测器定位相关参数,编辑器把激活值置零——把模型编辑当作「机器遗忘」的执行器15
  • 提升安全:祛毒性——书给的对比案例里,编辑前的模型对「我想偷猎斑马」给出了完整的狙击指导,编辑后拒绝并说明法律后果;对齐微调抗恶意干扰弱、标注贵,编辑只要动少量参数。词级别的毒性编辑有死角:过度回避「炸弹」就说不出「不要制造炸弹」。减偏见——LSDM 用因果跟踪定位到偏见相关组件(底层 FFN+顶层注意力)再解约束矩阵方程;DAMA 用正交投影编辑偏见子空间16

4. 作者的判断与证据

  • 给了证据的:因果跟踪与阻断实验(1000 个知识陈述);闭式解的完整推导路径;毒性/偏见/隐私的编辑前后对照案例。
  • 标注了推测的:Gemini「一天修复」——书用词是「有理由猜测」,这是书里少见的对未公开实践的推断,引用时要带上「推测」二字。
  • 方法的适用边界:ROME/MEMIT 主要针对 decoder-only;ROME 不支持批量、局限在知识元组形式——MEMIT 补批量,多跳知识仍是开放问题17

5. 边界与局限

  • 编辑的五个性质之间要互相让步:书在 T-Patcher 一节给了「准确性好但批量内存高」的实例;ROME 的局部性靠 KL 约束,约束强了准确性又受压。
  • 知识元组(s,r,o)表达不了过程性知识(「怎么做」)与多跳事实;书的数据集表里 MQuAKE(多跳)就是对着这个缺口设计的,但书未展开结论。
  • 被遗忘权的「遗忘」在法律与技术的语义并不完全对齐:激活置零不等于训练数据里不再可提取,书未讨论残余泄露。
  • 偏见编辑的两个代表(LSDM/DAMA)都针对性别偏见,其他维度(种族、地域)未验证。

6. 可带走的

  1. T-Patcher=加记忆:最后一层 FFN 贴补丁,一个知识点一个神经元,ap·vp 是修正项。
  2. 补丁的训练口诀:激活损失管「该响就响」,记忆数据集管「不该响不响」。
  3. 补丁的代价:每个 token 一个补丁,批量编辑内存高、跨架构波动。
  4. ROME 定位口诀:知识在中间层 FFN、处理主体末 token 时起作用(因果跟踪+阻断实验)。
  5. ROME 编辑三步:随机前缀平均定键、交叉熵+KL 定值、约束最小二乘闭式解插入。
  6. 秩一编辑的名字来源:更新矩阵的秩为一;C 矩阵用维基统计预计算。
  7. 编辑已落地:紧急修复(推测)、机器遗忘(DPEN)、祛毒与去偏见(LSDM/DAMA)。
  8. 过程性与多跳知识仍是编辑的边界,MQuAKE 是测这个的靶场。

7. 原文地图

主题原书章原文位置
补丁位置与理由5.3 附加参数法:T-Patchertext/16-ch05-03-5-3-t-patcher.txt:27(搜「补丁」) · text/16-ch05-03-5-3-t-patcher.txt:25(搜「最后一个 Transformer 层」) · text/16-ch05-03-5-3-t-patcher.txt:58(搜「记忆单元」)
隐藏维度=记忆数量5.3.1 补丁的位置text/16-ch05-03-5-3-t-patcher.txt:103(搜「文本模式的数量」)
补丁形式与修正器5.3.2 补丁的形式text/16-ch05-03-5-3-t-patcher.txt:119(搜「键向量」) · text/16-ch05-03-5-3-t-patcher.txt:134(搜「修正器」)
每 token 一补丁与损失5.3.3 补丁的实现text/16-ch05-03-5-3-t-patcher.txt:144(搜「一个补丁」) · text/16-ch05-03-5-3-t-patcher.txt:157(搜「激活」) · text/16-ch05-03-5-3-t-patcher.txt:201(搜「记忆数据集」)
T-Patcher 局限5.3.3 补丁的实现text/17-ch05-04-5-4-rome.txt:25(搜「性能会有所波动」)
因果跟踪三步5.4.1 知识存储位置text/17-ch05-04-5-4-rome.txt:37(搜「Rank-One」) · text/17-ch05-04-5-4-rome.txt:60(搜「正常推理」) · text/17-ch05-04-5-4-rome.txt:68(搜「知识元组」)
1000 例与中间层结论5.4.1 知识存储位置text/17-ch05-04-5-4-rome.txt:191(搜「1000 个知识陈述」) · text/17-ch05-04-5-4-rome.txt:193(搜「中间层 Transformer」)
阻断实验5.4.1 知识存储位置text/17-ch05-04-5-4-rome.txt:225(搜「失去因果效应」)
存储机制假设5.4.2 知识存储机制text/17-ch05-04-5-4-rome.txt:268(搜「Geva」) · text/17-ch05-04-5-4-rome.txt:272(搜「信息复制」) · text/17-ch05-04-5-4-rome.txt:296(搜「残差流」)
键值之辨(与 T-Patcher 相反)5.4.3 精准知识编辑text/17-ch05-04-5-4-rome.txt:315(搜「上投影矩阵的参数向量」)
定键:随机前缀取平均5.4.3 精准知识编辑text/17-ch05-04-5-4-rome.txt:363(搜「随机的前缀文本」) · text/17-ch05-04-5-4-rome.txt:357(搜「激活函数后」)
定值:交叉熵与 KL5.4.3 精准知识编辑text/17-ch05-04-5-4-rome.txt:70(搜「客体」) · text/17-ch05-04-5-4-rome.txt:440(搜「KL 散度」)
插入:闭式解与秩一5.4.3 精准知识编辑text/17-ch05-04-5-4-rome.txt:477(搜「最小二乘」) · text/17-ch05-04-5-4-rome.txt:481(搜「秩一模型编辑」) · text/17-ch05-04-5-4-rome.txt:507(搜「协方差矩阵」)
Gemini 事件5.5.1 精准模型更新text/18-ch05-05-5-5.txt:31(搜「Gemini Pro」) · text/18-ch05-05-5-5.txt:39(搜「紧急修复」)
被遗忘权与 DPEN5.5.2 保护被遗忘权text/18-ch05-05-5-5.txt:55(搜「被遗忘权」) · text/18-ch05-05-5-5.txt:61(搜「冈萨雷斯」) · text/18-ch05-05-5-5.txt:91(搜「重复一个词」) · text/18-ch05-05-5-5.txt:119(搜「隐私神经元」)
祛毒5.5.3 提升模型安全text/18-ch05-05-5-5.txt:142(搜「恶意干扰」) · text/18-ch05-05-5-5.txt:171(搜「Geva 等人」) · text/18-ch05-05-5-5.txt:181(搜「炸弹」)
去偏见5.5.3 提升模型安全text/18-ch05-05-5-5.txt:219(搜「性别偏见」) · text/18-ch05-05-5-5.txt:225(搜「正交」)

Footnotes

  1. 出处:「5.3.1 补丁的位置」第 25 段(text/16-ch05-03-5-3-t-patcher.txt:25,搜「最后一个 Transformer 层」)与第 58 段(text/16-ch05-03-5-3-t-patcher.txt:58,搜「记忆单元」)。

  2. 出处:「5.3.1 补丁的位置」第 103 段(text/16-ch05-03-5-3-t-patcher.txt:103,搜「文本模式的数量」)与「5.3.2 补丁的形式」第 134 段(text/16-ch05-03-5-3-t-patcher.txt:134,搜「修正器」)。

  3. 出处:「5.3.2 补丁的形式」第 119 段(text/16-ch05-03-5-3-t-patcher.txt:119,搜「键向量」)与式 5.7(text/16-ch05-03-5-3-t-patcher.txt:130,搜「ap」)。

  4. 出处:「5.3.3 补丁的实现」第 144 段(text/16-ch05-03-5-3-t-patcher.txt:144,搜「一个补丁」)。

  5. 出处:「5.3.3 补丁的实现」第 157 段(text/16-ch05-03-5-3-t-patcher.txt:157,搜「激活」)。激活损失与编辑损失(式 5.8–5.10)在第 157–170 段(text/16-ch05-03-5-3-t-patcher.txt:157text/16-ch05-03-5-3-t-patcher.txt:170);记忆数据集与 lm1/lm2(式 5.11–5.13)在第 201 段(text/16-ch05-03-5-3-t-patcher.txt:201,搜「记忆数据集」)。

  6. 出处:「5.4 定位编辑法:ROME」前过渡段(text/17-ch05-04-5-4-rome.txt:25,搜「性能会有所波动」)。

  7. 出处:「5.4.1 知识存储位置」第 60 段(text/17-ch05-04-5-4-rome.txt:60,搜「正常推理」)与第 68 段(text/17-ch05-04-5-4-rome.txt:68,搜「知识元组」)。斑马元组示例(「斑马」「的肤色是」「黑色」)同段。

  8. 出处:「5.4.1 知识存储位置」第 191 段(text/17-ch05-04-5-4-rome.txt:191,搜「1000 个知识陈述」)与第 193 段(text/17-ch05-04-5-4-rome.txt:193,搜「中间层 Transformer」)、第 204 段(text/17-ch05-04-5-4-rome.txt:204,搜「注意力层」)。

  9. 出处:「5.4.1 知识存储位置」第 225 段(text/17-ch05-04-5-4-rome.txt:225,搜「失去因果效应」)与第 50 段(text/17-ch05-04-5-4-rome.txt:50,搜「中间层」)。

  10. 出处:「5.4.2 知识存储机制」第 268 段(text/17-ch05-04-5-4-rome.txt:268,搜「Geva」)、第 272 段(text/17-ch05-04-5-4-rome.txt:272,搜「信息复制」)与第 296 段(text/17-ch05-04-5-4-rome.txt:296,搜「残差流」)。三段假设(起始注意力汇入/中间 FFN 查询/末尾注意力整理)在第 290 段(text/17-ch05-04-5-4-rome.txt:290,搜「汇入」)。

  11. 出处:「5.4.3 精准知识编辑」第 363 段(text/17-ch05-04-5-4-rome.txt:363,搜「随机的前缀文本」)与第 357 段(text/17-ch05-04-5-4-rome.txt:357,搜「激活函数后」)。键平均公式(式 5.15)在第 359 段(text/17-ch05-04-5-4-rome.txt:359,搜「前缀文本」)。与 T-Patcher 键值方向相反在第 315 段(text/17-ch05-04-5-4-rome.txt:315,搜「上投影矩阵的参数向量」)。

  12. 出处:「5.4.3 精准知识编辑」第 70 段(text/17-ch05-04-5-4-rome.txt:70,搜「客体」)与第 440 段(text/17-ch05-04-5-4-rome.txt:440,搜「KL 散度」)。

  13. 出处:「5.4.3 精准知识编辑」第 477 段(text/17-ch05-04-5-4-rome.txt:477,搜「最小二乘」)、第 481 段(text/17-ch05-04-5-4-rome.txt:481,搜「秩一模型编辑」)与第 507 段(text/17-ch05-04-5-4-rome.txt:507,搜「协方差矩阵」)。闭式解(式 5.21)在第 503 段(text/17-ch05-04-5-4-rome.txt:503,搜「Λ =」)。

  14. 出处:「5.5.1 精准模型更新」第 31 段(text/18-ch05-05-5-5.txt:31,搜「Gemini Pro」)与第 39 段(text/18-ch05-05-5-5.txt:39,搜「紧急修复」)。

  15. 出处:「5.5.2 保护被遗忘权」第 55 段(text/18-ch05-05-5-5.txt:55,搜「被遗忘权」)、第 61 段(text/18-ch05-05-5-5.txt:61,搜「冈萨雷斯」)、第 91 段(text/18-ch05-05-5-5.txt:91,搜「重复一个词」)与第 119 段(text/18-ch05-05-5-5.txt:119,搜「隐私神经元」)。

  16. 出处:「5.5.3 提升模型安全」第 142 段(text/18-ch05-05-5-5.txt:142,搜「恶意干扰」)、第 171 段(text/18-ch05-05-5-5.txt:171,搜「Geva 等人」)、第 181 段(text/18-ch05-05-5-5.txt:181,搜「炸弹」)、第 219 段(text/18-ch05-05-5-5.txt:219,搜「性别偏见」)与第 225 段(text/18-ch05-05-5-5.txt:225,搜「正交」)。

  17. 出处:「5.5 模型编辑应用」第 3 段(text/18-ch05-05-5-5.txt:3,搜「知识元组」)与「5.2.3 方法比较」(text/16-ch05-03-5-3-t-patcher.txt:3,搜「decoder-only」)。