论文解读:Locating and Editing Factual Associations in GPT(ROME)

news2025/6/7 23:46:19

  论文发表于人工智能顶会NeurIPS(原文链接),研究了GPT(Generative Pre-trained Transformer)中事实关联的存储和回忆,发现这些关联与局部化、可直接编辑的计算相对应。因此:

  1、开发了一种因果干预方法,用于识别对模型的事实预测起决定性作用的神经元。

  2、为了验证这些神经元是否对应于事实关联的回忆,使用秩一模型编辑 (Rank-One Model Editing, ROME) 修改前馈权重来更新特定的事实关联。

  3、提出一个反事实断言数据集来评估ROME。

  阅读本文请同时参考原始论文图表。

方法

  如图1所示,将自回归模型的中间表示与输出之间的关系表示为图节点的形式,从而可以分析输出与中间表示之间的因果关系。定义输入语言变量为$x=[x_1,…,x_T]$,则第$i$个输入变量的第$l$层激活为$h_i^{(l)}$。模型各层计算可以表示为文中式(1):

  本文使用最后一个输入的最后一层激活$h^{(L)}_T$映射到词汇空间作为模型输出。实验使用包含事实三元组$(s,r,o)$的头$s$和关系$r$的句子作为输入,预测尾实体$o$

因果中介分析

  为了分析哪些中间激活对正确事实预测的贡献最大,使用三种配置对模型$G$推理三次:

  1、Clean run:输入干净的句子,得到干净的中间激活$\{h_i^{(l)}|i\in [1,T],l\in[1,L]\}$和模型对尾实体$o$的预测概率$\mathbb{P}[o]$

  2、Corrupted run:用噪声污染每个$s$的词嵌入$h_i^{(0)}$,得到污染的中间激活$\{h_{i*}^{(l)}|i\in [1,T],l\in[1,L]\}$和模型对尾实体$o$的预测概率$\mathbb{P}_*[o]$

  3、Corrupted-with-restoration run:使用干净的中间激活替换污染的中间激活,得到替换$h_i^{(l)}$时模型对尾实体$o$的预测概率$\mathbb{P}_{*,clean\, h_i^{(l)}}[o]$

  定义总效应 $\text{TE}=\mathbb{P}[o]-\mathbb{P}_*[o]$,表示受污染的输入对模型性能的损害程度。

  定义间接效应 $\text{IE}=\mathbb{P}_{*,clean\, h_i^{(l)}}[o]-\mathbb{P}_*[o]$,表示输入被污染后,恢复中间激活$h_i^{(l)}$对模型性能的恢复程度。下面关于各层模块输出的影响程度都是通过Average IE (AIE) 来评估。

  其实验代码汇总并不是每次只恢复污染一个表示,而是一个窗口。如当窗口为10时,恢复层数为$[l-5,l+5]$11个表示。

分析结果1

  图1e/f/g 可视化了模型在一个样本上分别恢复层激活$h_i^{l}$、FFN激活$m_i^{(l)}$、注意力激活$a_i^{(l)}$的影响,以恢复模型中间状态在正确答案上的概率来衡量。

  图2a/b/c 可视化了模型在超过1000个样本上分别恢复三个激活对正确预测的平均影响程度,以IE来衡量。

  根据图1/2,可以看出:

  1、较前层的FFN在句子主体$s$的最后一个token位置的激活$m_i^{(l)}$对预测的影响较大。这说明本文提出的因果分析方法可以有效定位影响模型预测的中间激活,也和之前认为FFN保存知识的研究结果一致。

  2、较后层的注意力模块在句子的最后一个token位置的激活$a_i^{(l)}$对预测影响较大,这是比较正常的现象。

  3、可以看出层激活$h_i^{(l)}$对预测的影响是以上两者的综合。

  附录B.2 图7进一步展示了模型三类模块在句子各部分的激活对模型输出的影响。

结果分析2

  为了对FFN在句子的前半部分所起的作用有更清晰的理解,作者进一步修改因果图来研究其因果效应。如图3左所示,当把主体$s$最后一个token的层激活$h_{i}^{(l)}$修正(使用干净激活替换污染激活)时,对于其后面的隐藏状态$h^{(k)}_{i},k>l$,使用原始保存的没修正时(污染)的FFN输出$m_{i*}^{(k)}$代替后续计算出的$m_{i}^{(k)}$,从而在关于$h_i^{(l)}$对模型预测的影响中去除FFN的效应。从右图可以看出,FFN计算的去除使得较前层的$h_i^{(l)}$对模型预测的影响显著降低,说明$h_i^{(l)}$后续的FFN计算(读取记忆)对预测是至关重要的,而注意力模块(粉色)则没有这个结果。

秩一模型编辑 (ROME)

  根据前面的分析,作者期望通过修改中间层FFN的权重来修改模型存储的事实。相较于之前的论文把FFN的第一层权重$W_{fc}^{(l)}$和第二层权重$W_{prop}^{(l)}$对应的行列向量看成键值对,本文:

  1、把FFN的第二层权重$W_{prop}^{(l)}\in\R^{d_2\times d_1}$的工作机制看成Linear Associative Memory(线性相联存储器,不知道是不是这个意思)。

  2、把FFN第一层的输出$K=[k_1,...,k_t]\in \R^{d_1\times t}$看成键。

  3、把通过第二层权重$W_{prop}^{(l)}$的输出$V=WK=[v_1,…,v_t]\in\R^{d_2\times t}$看成值。

  其中$t$表示训练过程中出现的所有可能的键值对的数量。在已知$K,V$的情况下,$W_{prop}^{(l)}$可以直接通过广义逆计算$W_{prop}^{(l)}=VK^+$。当我们需要新增一个知识时,就是给$K,V$新增一个键$k_*$和值$v_*$。此时就是在满足$\hat{W}k_*=v_*$的情况下,最小化$\|\hat{W}K-V\|$。可以通过拉格朗日方法得到闭式解,如式(2)所示。

  其中$C=KK^T$是一个通过预训练数据计算得到的常数矩阵,$W$为原始矩阵,$\Lambda=(v_*-Wk_*)/(C^{-1}k_*)^Tk_*$是相较于原始矩阵的残差。

  接下来就是计算新增知识的键值对$k_*,v_*$,如图4所示:

  1、把句子输入模型,取主体$s$的最后一个token在需要修改的第$l^*$层的FFN的第一层激活作为$k_*$。为了获得更鲁棒的结果,计算多个以$s$结尾的句子的激活值的均值,如文中式(3)所示。

  2、通过优化相应位置的向量来获得$v_*$,损失函数如式(4)所示,目的就是让$v_*$编码$(r,o^*)$

  3、用式(2)和$k_*,v_*$更新$W_{prop}^{(l)}$

  所谓的秩一,应该就是给$K,V$都增加一列,从而更新的$W$矩阵的秩可能加一。

实验

zsRE上的对比

  在Zero-Shot关系抽取(zsRE)数据集上对GPT-2 XL的编辑实验。数据示例如附录图22所示,实验流程就是把模型关于输入”src”的输出修改为”answer”。实验结果如表1所示,对比了元学习方法MEND和KE。其中”+L”表示微调的同时使用无穷范数限制参数的更新,”-zsRE”表示相关基于元学习的超网络方法先在zsRE训练集上进行训练后再进行修改。Efficacy是模型输入”src”时的判断准确率,Paraphrase是模型输入同义句子时的预测准确率,Specificity是模型输入不相关句子时的预测准确率。Efficacy和Paraphrase指标可以看出ROME的确能正确修改事实,但是Specificity指标看起来是一个没有意义的指标。

反事实数据集上的对比

  由于以上对比的指标差异并不显著,为了让方法效果更容易区分,作者构建了一个反事实 (COUNTERFACT) 数据集,旨在将模型携带的正确事实$(s,r,o^c)$修改为错误事实$(s,r,o^*)$。这是因为模型对正确事实的预测分数通常比错误事实高,如果编辑方法能使错误事实的预测分数比正确事实高,就能更好地说明方法的有效性。数据集汇总和对比如表2/3所示。

  定义$\mathbb{P}[o^*],\mathbb{P}[o^c]$分别为模型编辑后对错误事实和正确事实的预测分数。评价指标如下:

  1、Efficacy Score (ES)为$\mathbb{P}[o^*]>\mathbb{P}[o^c]$的测试样本的比例,Efficacy Magnitude (EM)为$\mathbb{P}[o^*]-\mathbb{P}[o^c]$的测试均值。

  2、同上定义在同义句子上测试的Paraphrase Scores (PS)和Paraphrase Magnitude (PM)。

  3、搜集有正确答案$o^c$的不同事实$(s_n,r,o^c)$,在将模型进行事实编辑$(s,r,o^*)$后,测试模型对于$(s_n,r,?)$的预测是否依旧有$\mathbb{P}[o^c]>\mathbb{P}[o^*]$,定义相应的Neighborhood Score (NS)和Neighborhood Magnitude (NM)。

  4、cos similarity (CS):让编辑后的模型生成以$s$开头的文本,计算其unigram TF-IDF,然后与包含$s,o^*$的参考文本的unigram TF-IDF计算余弦相似度。

  5、GE:评估模型生成的流利退化程度。也就是计算生成句子$x$的bi-/tri-gram熵$H(f(x))$,其中$f(x)$表示n-gram的频率分布。指标越高,生成句子的多样性越高,但不知道和流利度有什么关系。

  图5展示了对模型不同层和句子不同位置的组合对应的FFN权重进行编辑,得到的结果。可以看出对主体$s$的最后一个token(红线)在模型中间层的激活进行编辑得到最好的结果,有最高的准确率和泛化率,以及对邻居事实最低的损害度。

  表4展示了各模型在反事实数据上的结果,其中”-CF” 表示先在其训练集上进行训练后再进行测试。本文方法有较好地修改效果的同时,能保持相邻事实的不变性(Specificity),而其它方法都不能实现。

与集成梯度归因的对比

  图10:本文因果干预方法归因的中间激活对预测的影响可视化。

  图16:KN的集成梯度方法归因的中间激活对预测的影响可视化。

  可以看出集成梯度方法没有明确揭示出事实主体$s$对预测的重要性,归因出几乎所有token的激活对最终预测都有影响,这是不合理的。当然,这里的归因与KN不同的是,KN论文中仅仅对[MASK]位置的激活进行归因,而且是在激活的元素层面上进行的,而这里是对所有激活向量进行归因。

Attention模块对预测的影响

  附录第I节,用微调对Att模块的各个注意力映射矩阵进行修改(取名为AttnEdit),与ROME方法进行对比,定性结果如表25所示。ROME和AttnEdit都能成功编辑,但是AttnEdit无法泛化到相近提问。

总结

  与KN的对比:

  1、KN通过集成梯度仅仅定位激活的一个元素,并修改FFN第二层权重对应的一个向量,并且直接通过翻倍或者置零实现,是一种很粗糙的编辑。

  2、ROME的定位比KN往上一个层级,用因果干预方法定位整个激活向量,然后修改FFN第二层的整个权重来实现编辑。简单来说就是把要编辑的事实对应于该权重的输入输出,加入模型原始训练数据对应于该权重的输入输出列表中,让这个权重重新适应这个列表。

  本文定位方法更有理论依据,编辑对其它知识的影响也可以从优化角度来量化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2403482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习设计模式《十二》——命令模式

一、基础概念 命令模式的本质是【封装请求】命令模式的关键是把请求封装成为命令对象,然后就可以对这个命令对象进行一系列的处理(如:参数化配置、可撤销操作、宏命令、队列请求、日志请求等)。 命令模式的定义:将一个…

十三、【核心功能篇】测试计划管理:组织和编排测试用例

【核心功能篇】测试计划管理:组织和编排测试用例 前言准备工作第一部分:后端实现 (Django)1. 定义 TestPlan 模型2. 生成并应用数据库迁移3. 创建 TestPlanSerializer4. 创建 TestPlanViewSet5. 注册路由6. 注册到 Django Admin 第二部分:前端…

手撕 K-Means

1. K-means 的原理 K-means 是一种经典的无监督学习算法,用于将数据集划分为 kk 个簇(cluster)。其核心思想是通过迭代优化,将数据点分配到最近的簇中心,并更新簇中心,直到簇中心不再变化或达到最大迭代次…

SmolVLA: 让机器人更懂 “看听说做” 的轻量化解决方案

🧭 TL;DR 今天,我们希望向大家介绍一个新的模型: SmolVLA,这是一个轻量级 (450M 参数) 的开源视觉 - 语言 - 动作 (VLA) 模型,专为机器人领域设计,并且可以在消费级硬件上运行。 SmolVLAhttps://hf.co/lerobot/smolvla…

day45python打卡

知识点回顾: tensorboard的发展历史和原理tensorboard的常见操作tensorboard在cifar上的实战:MLP和CNN模型 效果展示如下,很适合拿去组会汇报撑页数: 作业:对resnet18在cifar10上采用微调策略下,用tensorbo…

AIGC赋能前端开发

一、引言:AIGC对前端开发的影响 1. AIGC与前端开发的关系 从“写代码”到“生成代码”传统开发痛点:重复性编码工作、UI 设计稿还原、问题定位与调试...核心场景的AI化:需求转代码(P2C)、设计稿转代码(D2…

Web 3D协作平台开发案例:构建制造业远程设计与可视化协作

HOOPS Communicator为开发者提供了丰富的定制化能力,助力他们在实现强大 Web 3D 可视化功能的同时,灵活构建符合特定业务需求的工程应用。对于希望构建在线协同设计工具的企业而言,如何在保障性能与用户体验的前提下实现高效开发,…

AI Agent开发第78课-大模型结合Flink构建政务类长公文、长文件、OA应用Agent

开篇 AI Agent2025确定是进入了爆发期,到处都在冒出各种各样的实用AI Agent。很多人、组织都投身于开发AI Agent。 但是从3月份开始业界开始出现了一种这样的声音: AI开发入门并不难,一旦开发完后没法用! 经历过至少一个AI Agent从开发到上线的小伙伴们其实都听到过这种…

第三方测试机构进行科技成果鉴定测试有什么价值

在当今科技创新的浪潮中,科技成果的鉴定测试至关重要,而第三方测试机构凭借其独特优势,在这一领域发挥着不可替代的作用。那么,第三方测试机构进行科技成果鉴定测试究竟有什么价值呢? 一、第三方测试机构能提供独立、公…

华为云Flexus+DeepSeek征文|基于华为云Flexus X和DeepSeek-R1打造个人知识库问答系统

目录 前言 1 快速部署:一键搭建Dify平台 1.1 部署流程详解 1.2 初始配置与登录 2 构建专属知识库 2.1 进入知识库模块并创建新库 2.2 选择数据源导入内容 2.3 上传并识别多种文档格式 2.4 文本处理与索引构建 2.5 保存并完成知识库创建 3接入ModelArts S…

【数据结构】_排序

【本节目标】 排序的概念及其运用常见排序算法的实现排序算法复杂度及稳定性分析 1.排序的概念及其运用 1.1排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 1.2特性…

PPT转图片拼贴工具 v4.3

软件介绍 这个软件就是将PPT文件转换为图片并且拼接起来。 效果展示 支持导入文件和支持导入文件夹,也支持手动输入文件/文件夹路径 软件界面 这一次提供了源码和开箱即用版本,exe就是直接用就可以了。 软件源码 import os import re import sys …

Chrome安装代理插件ZeroOmega(保姆级别)

目录 本文直接讲解一下怎么本地安装ZeroOmega一、下载文件在GitHub直接下ZeroOmega 的文件(下最新版即可) 二、安装插件打开 Chrome 浏览器,访问 chrome://extensions/ 页面(扩展程序管理页面),并打开开发者…

Transformer-BiGRU多变量时序预测(Matlab完整源码和数据)

Transformer-BiGRU多变量时序预测(Matlab完整源码和数据) 目录 Transformer-BiGRU多变量时序预测(Matlab完整源码和数据)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现Transformer-BiGRU多变量时间序列预测&…

新华三H3CNE网络工程师认证—Easy IP

Easy IP 就是“用路由器自己的公网IP,给全家所有设备当共享门牌号”的技术!(省掉额外公网IP,省钱又省配置!) 生活场景对比,想象你住在一个小区:普通动态NAT:物业申请了 …

Excel 模拟分析之单变量求解简单应用

正向求解 利用公式根据贷款总额、还款期限、贷款利率,求每月还款金额 反向求解 根据每月还款能力,求最大能承受贷款金额 参数: 目标单元格:求的值所在的单元格 目标值:想要达到的预期值 可变单元格:变…

装备制造项目管理具备什么特征?如何选择适配的项目管理软件系统进行项目管控?

国内某大型半导体装备制造企业与奥博思软件达成战略合作,全面引入奥博思 PowerProject 打造企业专属项目管理平台,进一步提升智能制造领域的项目管理效率与协同能力。 该项目管理平台聚焦半导体装备研发与制造的业务特性,实现了从项目立项、…

FPGA 动态重构配置流程

触发FPGA 进行配置的方式有两种,一种是断电后上电,另一种是在FPGA运行过程中,将PROGRAM 管脚拉低。将PROGRAM 管脚拉低500ns 以上就可以触发FPGA 进行重构。 FPGA 的配置过程大致可以分为:配置的触发和建立阶段、加载配置文件和建…

网络安全逆向分析之rust逆向技巧

rust逆向技巧 rust逆向三板斧: 快速定位关键函数 (真正的main函数):观察输出、输入,字符串搜索,断点等方法。定位关键 加密区 :根据输入的flag,打硬件断点,快速捕获程序中对flag访问的位置&am…

Leetcode 2494. 合并在同一个大厅重叠的活动

1.题目基本信息 1.1.题目描述 表: HallEvents ----------------- | Column Name | Type | ----------------- | hall_id | int | | start_day | date | | end_day | date | ----------------- 该表可能包含重复字段。 该表的每一行表示活动的开始日期和结束日期&…