注意力无用?Apple新作:注意力替换成常数矩阵,效果差异不大

39571b02768de49845464fee27728554.jpeg

文|萧箫 发自 凹非寺
源|量子位

要说Transformer的核心亮点,当然是注意力机制了。

但现在,一篇新研究却突然提出了带点火药味的观点:

注意力机制对于预训练Transformer有多重要,这事儿得打个问号。

0284d7a2c151ab77db26c4e7831bc807.png

研究人员来自希伯来大学、艾伦人工智能研究所、苹果和华盛顿大学,他们提出了一种新的方法,用来衡量注意力机制在预训练Transformer模型中的重要性。

结果表明,即使去掉注意力机制,一些Transformer的性能也没太大变化,甚至与原来的模型差异不到十分之一!

这个结论让不少人感到惊讶,有网友调侃:

你亵渎了这个领域的神明!

ce04a164a3ce474f4e64ef88f48c547a.png

所以,究竟如何判断注意力机制对于Transformer模型的重要性?

把注意力换成常数矩阵

这种新测试方法名叫PAPA,全称“针对预训练语言模型注意力机制的探测分析”(Probing Analysis for PLMs’ Attention)。

PAPA采用的方法,是将预训练语言模型(PLMs)中依赖于输入的注意力矩阵替换成常数矩阵。

如下图所示,我们熟悉的注意力机制是通过Q和K矩阵,计算得到注意力权重,再作用于V得到整体权重和输出。

现在,Q和K的部分直接被替换成了一个常数矩阵C:

a1e5600cd29e8eccfedf5301713d5a6a.png

其中常数矩阵C的计算方式如下:

773387d40fdbeccab4734da45b88be19.png

随后,用6个下游任务测试这些模型(CoLA、MRPC、SST-2、MNLI、NER、POS),对比采用PAPA前后,模型的性能差距。

为了更好地检验注意力机制的重要性,模型的注意力矩阵并非一次性全换成常数矩阵,而是逐次减少注意力头的数量。

如下图,研究先用了BERT-BASE、RoBERTa-BASE和DeBERTa-BASE做实验,其中y轴表示性能,x轴是注意力头相比原来减少的情况:

b687d1669d0db9482b039673a8354b03.png

随后,研究又用了BERT-LARGE、RoBERTa-LARGE和DeBERTa-LARGE做实验:

fb1efac6ec9464aa9420c0cce6347ed3.png

通过比较结果,研究人员发现了一些有意思的现象:

首先,用常数矩阵替换一半的注意矩阵,对模型性能的影响极小,某些情况下甚至可能导致性能的提升(x值达到½时,图中有些模型数值不减反增)。

其次,即使注意力头数量降低为0,平均性能下降也就8%,与原始模型相比最多不超过20%。

研究认为,这种现象表明预训练语言模型对注意力机制的依赖没那么大(moderate)。

模型性能越好,越依赖注意力机制

不过,即使是预训练Transformer模型之间,性能表现也不完全一样。

作者们将表现更好的Transformer模型和更差的Transformer模型进行了对比,发现原本性能更好的模型,在经过PAPA的“测试”后,性能反而变得更差了。

如下图,其中y轴代表各模型原本的平均性能,x轴代表将所有注意力矩阵替换为常数矩阵时(经过PAPA测试)模型性能的相对降低分值:

0546eb64bcce59afd8ec1cf94663c714.png

可以看出,之前性能越好的模型,将注意力矩阵替换成常数矩阵受到的损失也越高。

这说明如果模型本身性能越好,对注意力机制的利用能力就越好。

对于这项研究,有网友感觉很赞:

听起来很酷,现在不少架构太重视各种计算和性能任务,却忽略了究竟是什么给模型带来的改变。

93d2518a99464d1ef807e338032ece89.png

但也有网友认为,不能单纯从数据来判断架构变化是否重要。

例如在某些情况下,注意力机制给隐空间(latent space)中数据点带来的幅度变化仅有2-3%:

难道这种情况下它就不够重要了吗?不一定。

9ac06d6bd2ead077cf76aff3f3bb957f.png

对于注意力机制在Transformer中的重要性,你怎么看?

论文地址:
https://arxiv.org/abs/2211.03495

1c67b0889a6fc77b8d38b6bd65f78287.jpeg后台回复关键词【入群

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

 454b086bde91f45cb57e8bf2537f0b17.png

[1] https://twitter.com/_akhaliq/status/1589808728538509312

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

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

相关文章

windows服务编程 注册InstallUtil.exe

dos命令下输入; C:\Windows\Microsoft.Net\Framework\v2.0.to727>InstallUtil.exe E:\Test\WindowsServiec1.exe 删除: C:\Windows\Microsoft.Net\Framework\v2.0.to727>InstallUtil.exe/u E:\Test\WindowsServiec1.exe 转载于:https://www.cnblogs.com/lgzh3/archive/2…

LeetCode 5. 最长回文子串(动态规划)

文章目录1. 题目2. 解题2.1 自己写的DP2.2 优化后的DP2.3 中心扩展法1. 题目 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有…

springboot整合kafka_springboot整合kafka实现消息的发送消费

如下是springboot整合kafka的一个案例,方便需要的小伙伴。启动kafka Servercd 到kafka的bin目录下:前提是启动zk./kafka-server-start.sh /Users/hz/programs/kafka_2.12-2.2.1/config/server.properties &kafka创建topic:kafka-topics.sh --create …

关于如何在BCB中使用CodeGuard

关于如何在BCB中使用CodeGuard点击数:231 录入时间:2007-6-7 一、 为什么写这篇东西 自己在使用 BCB5 写一些程序时需要检查很多东西,例如内存泄漏、资源是否有释放等等,在使用了很多工具后,发觉 BCB5 本…

港大腾讯提出DiffusionDet:第一个用于目标检测的扩散模型

编|杜伟、陈萍源|机器之心扩散模型不但在生成任务上非常成功,这次在目标检测任务上,更是超越了成熟的目标检测器。扩散模型( Diffusion Model )作为深度生成模型中的新 SOTA,已然在图像生成任务…

无监督学习概论

文章目录1. 无监督学习基本原理2. 基本问题2.1 聚类 Clustering2.2 降维 Dimensionality Reduction2.3 概率模型估计3. 机器学习三要素4. 无监督学习方法4.1 聚类4.2 降维4.3 话题分析4.4 图分析1. 无监督学习基本原理 机器学习或统计学习一般包括监督学习、无监督学习、强化学…

python xlrd使用_python处理Excel xlrd的简单使用

xlrd主要用于读取Excel文件,本文为大家分享了python处理Excel的具体代码,供大家参考,具体内容如下 安装 pip install xlrd api使用 import xlrd # 打开Excel文件读取数据 workbook xlrd.open_workbook(a.xlsx); # 打印所有的sheet列出所有的…

学习Duwamish7的MSDN说明及相关技术策略

(一).MSDN对Duwamish7的说明   Duwamish 7.0 是由 MSDN 开发的通用 Duwamish 系列应用程序的功能性端口(完全使用 .NET 技术)。尽管示例本身是围绕虚拟网上书店建立的,但本示例主要关注的方面却是性能,与…

程序员面试金典 - 面试题 17.08. 马戏团人塔(最长上升子序 DP/二分查找)

文章目录1. 题目2. 解题2.1 超时解2.2 二分查找1. 题目 有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上。出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一点。 已知马戏团每个人的身高和体重,请编写代码计算叠罗…

海洋分享lol皮肤插件_LOL战斗之夜客户端BUG频出服务器爆满!如何提前领取皮肤?...

Hello大家好,我是Taker!昨天的战斗之夜,小编可是单排奋战了一整晚~排位段位和箱子积分都定格在了钻石,不知道各位如何呢?(^o^)/~今天终于到了收获的日子了!之前我们打的积分所获得的皮肤箱子今天就可以打开…

socket异步处理问题

由于一个项目要和第三方软件做接口,第三方软件是Unix的操作系统,所以用了Socket来传输数据。具体结构是这样的:本项目作为服务器端,第三方软件是客户端,并且有多个客户端。通常情况下,要开多个线程来处理多…

2022爆火的AIGC,能给AI续命吗

文 | 陈彩娴源 | AI科技评论生产力如已成熟,想象力还会远吗?“你们是从什么时候开始注意到人类的?”“当第一个原始人开始仰望星空的时候。”AI 的类人猿,早已开始仰望人类。来自机器的审视在过去短短的两年间,算法从业…

LeetCode 354. 俄罗斯套娃信封问题(最长上升子序 DP/二分查找)

1. 题目 给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。 当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。 请计算最多能有多少个信封能组成一组“俄罗斯套娃”…

python语言语句块标记是_Python的基本语法——语句块

1.语句块是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语句; 2在代码前放置空格来缩进语句即可创建语句块,语句块中的每行必须是同样的缩进量; 3.缩进:Python开发者有意…

[导入]设计模式初学者系列-工厂方法

摘要: 闲谈工厂方法 设计模式系列到了第四篇了,如果还不谈谈工厂方法设计模式就太对不起GoF了,为什么有如此一说?实际上工厂方法模式是好些模式的基石,她们或多或少的使用了工厂方法模式或以工厂方法为模型。 工厂方法模式是一种类…

推荐一个好发论文的研究方向

今天给大家推荐一个研究的好方向—— 图神经网络。它是近些年学术界和工业界最新的研究热点!在社交网络、知识图谱、推荐系统等工业界有广阔的应用前景。最重要的是,图神经网络与CV和NLP交叉,容易有创新点,是出论文的好方向。对于…

LeetCode 31. 下一个排列(线性扫描)

1. 题目 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。…

Google工作10年的职场感悟

源|电子发烧友网、程序厨哈喽大家好,今天坐地铁读到了一位在 Google 工作10年的“老”工程师关于技术、管理和职场生涯的感悟。我看完后觉得很有收获,因此在这里也分享给大家。以下是全文,后文中的「我」均指「原作者」。我在 Goo…

博客堂joycode被黑掉了

博客堂现在用ie7已经打不开了&#xff0c;用telnet www.joycode.com 80 链接&#xff0c;链接成功之后输入大写的命令 GET / 然后连续两次回车&#xff0c;就可以看到第一行的木马代码<iframe src?????? width20 height0 frameborder0></iframe>。访问其中任…

python的注释符_Python3 注释和运算符

Python3 注释 确保对模块, 函数, 方法和行内注释使用正确的风格 Python中的注释有单行注释和多行注释&#xff1a; Python中单行注释以 # 开头&#xff0c;例如&#xff1a;&#xff1a; #这是一个注释 print("Hello, World!") 多行注释用三个单引号 或者三个双引号…