MIT发现语言模型内的事实知识可被修改??

news2025/1/17 3:04:39

7ab6f5239c37a1a5a6f4cf6fb35aa968.jpeg

文 | 小伟

a5ca642f7ee097f19a39aecefb18343f.png前言519059be89464c53097a5c52e8844360.png

众所周知,自回归语言模型(如GPT-2)里存储着大量的事实知识,比如语言模型可以正确的预测出埃菲尔铁塔所在的城市是巴黎市。

那么语言模型是在什么地方存储这些知识呢?我们是否可以修改存储在语言模型里的知识呢?

来自于MIT的这篇文章就对这些问题做出了解答。

它发现GPT中的事实知识对应于可以直接编辑的局部计算。通过对GPT的一小部分参数进行小的改变就可以修改其内部的知识,实现我们把埃菲尔铁塔搬到英国的小目标 :)

论文标题:
Locating and Editing Factual Associations in GPT

论文链接:
https://arxiv.org/abs/2202.05262

1c6c2d8e31c462a4d6a87b8a63cdb732.png概览b7b37a01b77264024c847ecf8c1a04ec.png

首先,什么是语言模型里的知识呢?我们可以用三元组 (s,r,o) 来代表这些事实知识,其中 so 分别是主体和客体,r 代表它们之间的关系。例如:

(s = Kevin Durant, r = plays sport professionally, o = basketball)

就表明了杜兰特是一名职业篮球运动员这一事实。

其次,为什么需要定位以及修改语言模型里的知识呢?显而易见,它可以帮助我们很容易地更新改正语言模型中存在的过时或者错误的知识。例如关于川普已经过时了的知识:

(s = Donald Trump, r = is President of, o = the US)

可以看到对语言模型里的知识进行定位和修改还是蛮有用的,让语言模型可以与时俱进。

那么本文具体是用什么方法来实现目标的呢?下面让我们一起来一探究竟。

292c7b3c4ed637c4227cd04d9b65b7f4.png定位46ef80b58f3192ad86cc02b59d7405a2.png

为了定位语言模型中的知识,本文采用了因果追踪的方法来量化每个隐藏状态对模型预测的因果影响。为了计算每个隐藏状态对正确的事实知识预测的贡献,本文设计了3种不同的运行模式:

  • 干净模式: 将输入正常喂给模型得到输出

  • 干扰模式: 给输入的embedding加上高斯分布的噪声来得到被干扰的输出

  • 干扰后恢复模式: 给输入的embedding加上高斯分布的噪声,同时调整模型在某一层的某个token index处的状态为对应的干净模式中的状态。直觉上来看,在许多其他状态被干扰的情况下,一些干净状态恢复正确事实的能力将表明它们在计算图中的因果重要性

通过把干扰模式以及干扰后恢复模式的输出进行对比(在本文中定义为average indirect effect),我们就可以知道模型的不同组成部分对最终模型预测的因果影响。

efba82555add46545bd6dc977312ab08.png

如上图所示,我们可以看到MLP模块在早期起到了决定性的作用 (MLP 6.6% AIE vs. attention 1.6% AIE),而attention模块则是在最后一个token处比较重要。

基于因果追踪的结论以及过往的工作,作者提出了一种存储事实知识的特定机制: 早期的MLP模块进行知识检索,然后后期的注意力机制将累积的信息带到计算结束(最后一个token)处来预测输出。

8a5f70047eee416c567e015958e7df32.png修改bbb22e92c233fe482f4201171bc67872.png

现在我们已经知道了事实知识主要存储在早期的MLP中,那我们应该怎么样来修改这些知识呢?本文引入了 Rank-One Model Editing (一阶模型编辑) 来修改模型里的知识。

a042ff0bfb2489262166861be62523d7.png

具体来说, 一阶模型编辑(ROME)把MLP视为简单的键值存储:如果键编码主体,值编码和主体相关的知识,MLP就可以通过检索与键对应的值来获取相应的知识。

在本文中,ROME使用针对MLP参数的一阶编辑来直接写入新的键值对,也就是为模型注入新的知识。如上图所示,(d) 处的向量表示要插入的主体的键,而 (e) 处的输出编码了有关该主体的知识。ROME通过对键值间映射矩阵 进行一阶编辑 (f) 来插入新的键值对 :

其中 是原始映射矩阵,是从维基百科文本中估计出的关于的协方差常量,以及 。

这样通过把 修改为 , 我们就实现了在语言模型中插入新的事实知识。

3646d2c7d54dfb2506b4556cc4d70302.png实验3ee58911baa8fa6ab0a9a002d876fd84.png

本文主要在两个基准上进行了实验,结果非常给力(ROME是本文方法)

8c2c1834dcb4d17b8c4ecae7f578c47c.png 876653c092b4af2c46b3835cf9672f08.png

我们可以看到:

  • 尽管ROME十分简单,它的性能和之前的方法相比还是很有竞争力

  • 除了ROME之外,之前所有的方法都或多或少有以下两个问题: (1) 对反事实陈述过度拟合,无法泛化 (Generalization); 以及 (2) 对不相关的一些主体欠拟合并预测相同的输出 (Specificity)。而ROME则避免了这些问题,很好的实现了 Generalization 以及 Specificity 的目标

最后本文还进行了人工评估来衡量ROME生成文本的质量,结果发现ROME生成的文本在一致性方面表现的更好,但在流畅性方面却略有不足,这说明ROME在流畅性方面引入了一些没有被相关指标 (表4中的Fluency) 度量到的损失。

c8e489a560f56fd5ef77985dbdbb1765.png总结b6170c810c034777528cea8653a57f6f.png

本文发现了在自回归语言模型中,事实知识是可以进行定位以及修改的,比如我们可以直接给语言模型注入知识: 埃菲尔铁塔在英国 (搬到大英博物馆 :))。与此同时,本文也存在着一些不足,比如它一次只能编辑一个事实知识,不能处理其他诸如逻辑、空间以及数学知识,以及会猜测出没有依据的似是而非的新知识等。但总体感觉这篇文章所做的内容还是很有趣的,相信未来也会有更多后续工作来解决这些问题 :)。

9a24d953d2771cb4a20923cd7bcd7029.png

卖萌屋作者:小伟

NTU-NLP小萌新,目前对few-shot learning有着浓厚的兴趣,也是偶尔玩玩kaggle的竞赛爱好者。个人主页: https://qcwthu.github.io/

作品推荐

1.NYU & Google: 知识蒸馏无处不在,但它真的有用吗?

2.谷歌 | 多任务学习,如何挑选有效的辅助任务?只需一个公式!

166ffc10f034da5010f8c6acca72ae53.jpeg后台回复关键词【入群

加入卖萌屋NLP、CV、搜广推与求职讨论群

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

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

相关文章

流媒体传输 - RTP 荷载 H265

H265 码流结构 H265 码流和是由很多 NAL Unit 组成,所有 NAL Unit 均存在一个 16 位数据的 NAL Unit Header ,一个 NAL Unit Header 的语法如下: ------------------------------|0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|----------------|F| Type | La…

电感啸叫产生的根本原因及解决方法

电感啸叫产生的根本原因及解决方法 【摘 要】环形电感或工形电感啸叫问题,在稳压电源电路的设计经常遇到,根据稳压电源芯片的不同和外围电路的不同,解决方法也各不相同,本文档的宗旨是分析电感啸叫的根本原因,并综合各…

使用Psycopg2连接openGauss

文章目录1.简介2.接口介绍开发流程接口说明3.使用3.1环境准备3.2下载并加载python驱动3.3创建数据库连接用户3.4示例4.常见报错1.简介 Psycopg是一种用于执行SQL语句的PythonAPI,可以为PostgreSQL、openGauss数据库提供统一访问接口,应用程序可基于它进…

我们为什么喜欢看疯狂科学家开飞艇?

很多人可能不是科幻迷,也在日常生活中接触过蒸汽朋克。为什么呢?很简单——蒸汽朋克几乎无处不在。相比其他科幻流派,蒸汽朋克可能算是最“出圈”的一种。简单地说,蒸汽朋克是一种科幻小说类型,由“蒸汽 ”(steam)和“…

微服务框架 SpringCloud微服务架构 3 Eureka 3.5 服务发现

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构3 Eureka3.5 服务发现3.5.1 在order-service完成服务拉取3.5.2 总结3 Eure…

实习day1

今天部署东西: docker compose -f docker-compose.yml up -d 知道这个命令是什么意思 先进入decays里面,再进去corepack ,在进入yarn安装代码。 需要进入路径然后run 这个东西 c:\Users\yuan\PycharmProjects\decsys\app\Decsys>dotnet…

IBM MQ命令:DEFINE AUTHINFO

此命令里有很多内容值得一看。 https://www.ibm.com/docs/en/ibm-mq/8.0?topiccommands-define-authinfo#q085490___6 一,CHCKCLNT CHCKCLNT This attribute determines the authentication requirements for client applications, and is valid only for an A…

复制淘宝宝贝上传,宝贝的属性是错误的,怎么修改为正确的属性?

大家都知道,淘宝的发布要求是在不断变化的,以前发布宝贝没有这要求,但现在有可能就有这要求了,比如说以前这一属性可以随便填,但现在发布必须按照他的要求去填,不然发布不成功。近期,小编就有收…

什么是联盟营销以及如何使用它在网上赚更多的钱

无需创建自己的任何产品即可通过您的网站、社交媒体或博客在线赚钱。您可以使用联盟网络营销。如果您听说过联盟营销,但不确定它是什么或它是如何运作的,那么本文是一个很好的起点。 如果您已经熟悉这个概念,并且想知道如何开始使用它从您的博…

【DL with Pytorch】第 3 章 :使用 DNN 的分类问题

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

尚硅谷ES6复习总结上(64th)

1. let 关键字 let 关键字用来声明变量,使用 let 声明的变量有几个特点: 1、不允许重复声明 2、块级作用域 if (true) {let a 10; } console.log(a) // a is not defined3、不存在变量提升 console.log(a); //报错let a 20;4、不影响作用域链 以后声…

ggrcs 包2.4绘制RCS(限制立方样条图)实际操作演示(1)

ggrcs 包2.4版本已经发布一段时间了,大概几个月了吧,收到不少好评, 没听说太大的问题,最主要的问题有两个: 1.是说变量不是数字变量。 2.是说数据超过10万,无法处理 第一个问题非常好处理,这…

【一文秒懂——Profile配置】

目录 1. Profile配置 2. 实例 1. Profile配置 Spring框架允许使用Profile配置,即某些“个性化配置文件”,这些配置文件默认并不会被应用,需要“激活”后才生效! 在Spring Boot项目中,简化了Profile配置的使用&…

智能型电动机保护器(马保)可应用在水泥厂,保证生产过程的连续不间断

安科瑞 李可欣 具体可咨询:Acrel_lkx 一、水泥厂的要求 水泥生产是一项较庞大的工程,生产环境比较恶劣,粉尘污染严重,受生产工艺的限制使得其工作场所的通风条件差且环境温度较高,而且需要设定大量的工作站点&…

NetCore路由的Endpoint模式

IdentityServer里有各种Endpoint,如TokenEndpoint,UserInfoEndpoint,Authorize Endpoint,Discovery Endpoint等等。Endpoint从字面意思来看是“终端节点"或者“终节点”的意思。无独有偶NetCore的路由也有Endpoint的概念。那么我们提出一个问题来,究竟什么是En…

R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计

全文链接:http://tecdat.cn/?p19664 MCMC是从复杂概率模型中采样的通用技术。蒙特卡洛马尔可夫链Metropolis-Hastings算法(点击文末“阅读原文”获取完整代码数据)。问题如果需要计算有复杂后验pdf p(θ| y)的随机变量…

中远通创业板IPO过会:上半年营收7.3亿 拟募资2.3亿

雷递网 雷建平 11月28日深圳市核达中远通电源技术股份有限公司(简称:“中远通”)日前IPO过会,准备在深交所创业板上市。中远通计划募资2.3亿元。其中,1.3亿元用于研发中心改造提升项目,3248万元用于企业信息…

规则引擎Drools在贷后催收业务中的应用

作者:vivo 互联网服务器团队- Feng Xiang 在日常业务开发工作中我们经常会遇到一些根据业务规则做决策的场景。为了让开发人员从大量的规则代码的开发维护中释放出来,把规则的维护和生成交由业务人员,为了达到这种目的通常我们会使用规则引擎…

(十八)Spring6集成MyBatis3.5

文章目录实现步骤具体实现第一步:准备数据库表第二步:IDEA中创建一个模块,并引入依赖第三步:基于三层架构实现,所以提前创建好所有的包第四步:编写pojo第五步:编写mapper接口第六步:…

怎么建网站?【模版建站】

关于怎么建网站,除了公司企业,甚至有些个人用户都想了解。大家印象中的建站网站都是要会编程,不然就是找外包公司解决。其实现在建网站也是比较简单的,模版建站一般都能解决基本的建站需求。下面我们一起来看看怎么建网站吧。 一…