理解BERT Transformer:Attention is not all you need!

ML 2021 Attention is Not All You Need: Pure Attention Loses Rank Doubly Exponentially with Depth 动机 基于注意力的架构在机器学习中已经无处不在,并在transformer网络中发现了有效的用途。因此,开发工具来理解transformer的内部工作原理和一般注意力是至关重要的,这既有助于阐明现有的模型,也有助于设计更有效的未来模型。然而,对于基于注意力的架构,其具有效用的原因的理解仍然有限。 方法 这项工作提出了一种理解自注意网络(SANs)的新方法。这项工作提供了关于由多个自我注意层堆叠而成的网络的操作和感应偏向的新见解。它们的输出可以分解为一个较小项的总和,每个项都涉及一个跨层注意头序列的操作。 阅读详情

BERT是谷歌近期发布的一种自然语言处理模型,它在问答系统、自然语言推理和释义检测(paraphrase detection)等许多任务中都取得了突破性的进展。在这篇文章中,作者提出了一些新的见解和假设,来解释BERT强大能力的来源。作者将语言理解框架分解为解析和组合两个部分,注意力机制主要体现在解析过程,而组合过程也在BERT中起到了重要作用,因此作者提出对于BERT Transformer来说:attention isn’t all you need!

为什么BERT很重要

BERT是谷歌近期发布的一个自然语言处理模型,它在问答系统、自然语言推理和释义检测(paraphrase detection)等许多任务中都取得了突破性的进展。并且由于BERT是开源的,因此它在学界很受欢迎。

下图显示了GLUE基准分数的演变,GLUE基准分数是多种NLP评估任务的平均分数。
 
\"image\"

虽然目前还不清楚是否所有的GLUE任务都是非常有意义的,但是基于Transformer编码器的通用模型(open-GPT、BERT和BigBird)在不到一年的时间内就缩小了任务专用模型与人类的差距。
 
然而,正如Yoav Goldberg在论文《Assessing BERT’s Syntactic Abilities》中所指出的,我们并不能完全理解Transformer是如何编码句子的。

与RNN相比,Transformer完全依赖注意力机制,并且,除了用单词的绝对位置嵌入来标记每个单词之外,Transformer对单词顺序没有明确的概念。这种对注意力的依赖可能导致它在对语法敏感的任务上表现较差,而RNN(LSTM)模型能够直接对单词顺序建模,并显式跟踪句子状态。

目前已有一些文章探讨了BERT的技术细节。在这里,我们尝试提出一些新的见解和假设,来解释BERT强大能力的来源。

语言理解的框架:解析-组合

人类理解语言的方式是一个长期存在的哲学问题。在20世纪,两个互补的理论揭示了这个问题:

  • 组合性原理(Compositionality principle):词组的含义来源于单个单词的含义,以及这些单词组合的方式。根据这一原理,名词短语“食肉植物(carnivorous plants)”的含义可以通过“食肉(carnivorous)”和“植物(plant)”的组合过程中推导出来。[Szabó 2017]

  • 另一个原理是语言的层次结构:通过分析,句子可以分解成简单的结构,如从句。而从句又可以进一步分解为动词短语和名词短语,等等。

通过对句子的层次结构进行解析,并递归地从其组成部分中推导含义,直到达到句子层面,这是一个很好的语言理解方法。假设这样一句话,“Bart watched a squirrel with binoculars(巴特用望远镜观察一只松鼠)”。一个好的解析组件可以生成下面的分析树:

\"image\"

基于组件的“巴特用望远镜观察松鼠”句子的分析树

句子的意思可以从连续的组合中推导出来,首先是“a”和“squirrel”的组合,然后是“watched”和“a squirrel”的组合,最后是“watched a squirrel”和“with binoculars”的组合,直到得到整个句子的意思。

向量空间(词嵌入)可用于表示单词、词组和句子的其他成分。组合过程可以构造为函数f,该函数将(“a”、“squirrel”)组合成一个有意义的向量表示,“a squirrel”=f(“a”、“squirrel”)。[Baroni 2014]

然而,组合和解析都是很困难的任务,并且它们互相依赖。

显然,组合过程需要依靠解析的结果来确定应该组合什么。但即使有了正确的输入,组合也是一个难题。例如,形容词的含义会根据它所描述的单词而变化:“white wine(白葡萄酒)”的颜色实际上是黄色的,而“white cat(白猫)”确实是白色的。这种现象称为共同组合(co-composition)。[Pustejovsky 2017]

\"image\"

“白葡萄酒”和“白猫”在二维语义空间中的表现(颜色维度)

更广泛的上下文环境对于组合过程也是必要的。例如,“green light(绿灯)”中的词应该如何组合取决于具体情况。“绿灯”可以表示授权,或实际绿色的灯。有些习惯用语的含义需要某种形式的记忆,而不单单是组合。因此,在向量空间中完成这种组合需要强大的非线性函数,如深度神经网络(也具有记忆功能 [Arpit 2017])。

相反,解析操作在某些情况下可能需要组合才能工作。例如同一句子“Bart watched a squirrel with binoculars”的另一种解析树:

\"image\"

尽管它在语法上是成立的,但是这种解析导致了对句子的一种奇怪的解释:巴特看着一只松鼠拿着望远镜。然而,必须用某种形式的组合才能证明“一只松鼠拿着望远镜”是不太可能发生的事情。通常,在推导出恰当的结构之前,必须对背景知识进行消歧和整合。但是这个过程也可以通过某种形式的解析和组合来实现。

一些模型试图将解析和组合一起应用到实践中 [Socher 2013年],但是它们有一个限制条件,即依赖于手动标注的标准解析树,此外,它们已经被更简单的模型所超越了。

BERT如何实现解析和组合

我们假设Transformer在很大程度上依赖于这两个操作,但是以一种创新的方式:由于合成和解析互相需要,Transformer通过迭代过程,连续的执行解析和合成步骤,以解决相互依赖的问题。Transformer是由几个堆叠的层(也称为块)组成的。每个块由一个注意力层和其后的非线性函数(应用于token)组成。

我们将主要解释这些结构与解析-组合框架之间的联系。

\"image\"

Transformer中一个块的结构,可以看作是连续的解析和组合步骤

注意力机制作为解析步骤

在BERT中,注意力机制让输入序列(由单词或子单词token构成的句子)中的每个token注意到其它的token。

为了说明这一点,我们使用《Deconstructing BERT, Part 2: Visualizing the Inner Workings of Att-ention》中的可视化工具深入研究了注意力头(attention head),并在预训练的BERT base Uncased模型上(谷歌发布的4种预训练的BERT模型的一种)测试了我们的假设。在下面一个注意力头的例子中,“it”这个词注意到了其他所有的token,并且似乎注意力集中在“street”和“animal”上。

\"image\"

第0层注意力头 1对于token“it”的注意力值可视化图

BERT的每一层包含12个独立的注意力机制。因此,在每一层,每个token都可以关注其他token的12个不同方面。由于Transformer使用许多不同的注意力头(这里的base BERT模型用了12*12=144个),每个注意力头可以集中关注不同类型成分的组合。

我们省去了与“[CLS]”和“[SEP]”token相关的注意力值。我们用几个句子做了测试,发现很难做到不过度解释结果,所以你可以随意用不同的句子在这个colab笔记本上测试我们的假设。请注意,在图中,左侧的序列关注右侧的序列。

在第2层中,注意力头 1似乎会基于相关性形成组合成分。

\"image\"

更有意思的是,在第3层中,注意力头 11似乎显示了更高级别的成分:一些token关注相同的中心词(if、keep、have)。

\"image\"

在第5层中,注意力头6采取的匹配过程似乎关注特定的组合,尤其是涉及动词的组合。像[SEP]这样的特殊token似乎被用来表示匹配关系的缺失。这可以使注意力头发现适合组合的特定结构。这种一致的结构可以输入给组合函数。

\"image\"

第5层注意力头6:(we, have), (if, we), (keep, up) (get, angry)这些组合受到了更多关注

任意树可以用连续的浅层解析层表示,如下图所示:

\"image\"

不同层的注意力可以表示树结构

通过对BERT注意力头的查看,我们没有发现如此清晰的树状结构,但是Transformer仍然有可能对其进行表示。我们注意到,由于编码是在所有层上同时进行的,因此很难正确地解释BERT在做什么。对给定层的分析只对其下一层和上一层有意义。解析也分布在各个注意力头上。

下图以两个注意力头为例,显示了BERT的注意力机制实际的情况:

\"image\"

BERT注意力值的实际情况

然而,正如我们之前所见,解析树是一个高级别的表示,它可能建立在更复杂的“根茎”结构上[Deleuze 1987]。 例如,我们可能需要找出代词所引用的内容,以便对输入进行编码(共指消解 coreference resolution:将现实世界中同一实体的不同描述合并到一起的过程,共指在自然语言中起到了超链接的作用,但也在其中增加了新的模糊成分)。在其他情况下,也可能需要全局上下文来消除歧义。

令人惊讶的是,我们发现一个注意力头(第6层注意力头 0)似乎真的进行了共指消解。 而且,正如文章《Understanding BERT Part 2: BERT Specifics》所指出的,一些注意力头似乎为每个单词提供了全局上下文(第0层注意力头0)。

\"image\"

第6层注意力头0出现了共指消解。

\"image\"

在一个句子中,每个词都注意到其他的词,这或许可以对每个词进行粗略的语境化。

组合过程

在每一层中,所有注意力头的输出被级接,并输入到一个可以表示复杂非线性函数的神经网络(这是实现一个有表达能力的组合过程所需要的)。

依靠来自注意力头的结构化输入,该神经网络可以进行各种组合。 在之前展示的第5层中,注意力头6可以引导模型进行以下组合: (we, have),(if, we),(keep, up),(get, angry)。 该模型将它们进行非线性组合,并返回组合后的表示。因此,多注意力头可以视作为组合过程铺平道路的工具。

\"image\"

注意力头如何用于为特定的组合,例如形容词/名词

虽然我们没有发现注意力头关注某些更一致的组合,如形容词/名词,但是动词/副词的组合与模型所利用的其他组合之间可能存在一些共同点。

除了以上的组合,还存在许多可能相关的组合(单词-子词,形容词-名词,动词-介词,从句-从句)。进一步讲,我们可以将消歧(disambiguation)看作是把一个歧义词(bank)和相关语境词(river或cashier)进行组合的过程。在组合期间,模型也可以将给定上下文中与概念相关的背景知识进行整合。这种消歧也可能出现在其他层面(例如句子层面,从句层面)。

\"image\"

消歧作为组合过程

此外,组合过程还可能涉及词序推理。有人认为,位置编码(positional encoding)(位置编码是一个矢量,与输入内嵌表示求平均,以便生成输入序列中每个token的位置感知表示)可能不足以正确地编码单词的顺序。然而,位置编码的目的是编码每个token粗粒度、细粒度,甚至准确的位置。因此,基于两个位置编码,非线性合成在理论上可以基于单词相对位置进行关系推理。

综上所述,我们认为在BERT自然语言理解中,组合阶段也起到了重要作用,因此你所需要的并不只有注意力(Attention isn’t all you need)。

总结

我们提出了对Transformer的归纳偏置的一些见解。然而,我们必须记住,我们的解释可能对Transformer的能力持乐观态度。需要注意的是,LSTM能够隐式处理树状结构[Bowman 2015]和组合过程[Tai 2015]。但是LSTM有其局限性,其中一些是由于梯度消失问题所导致的[Hochreiter 1998]。因此,要解释Transformer的局限性还需要进一步的工作。

查看英文原文:Understanding BERT Transformer: Attention isn’t all you need

Attention Is All You Need 中文翻译 立即下载

相关推荐

ParaphraseDetection

ParaphraseDetection

Attention is Not All You Need:我们堆叠了万亿参数,却失去了“深度”

Recurrence-Complete Frame-based Action Models》这篇论文的真正价值,是促使我们重新审视“深度”的含义。过去,我们习惯用网络层数和参数量来衡量模型的深度与容量。而该研究有力地证明,如果一个模型在时间维度上不具备递归更新状态的能力,其理论表达力将受到结构性的限制。FBAM 架构及其展现出的新型缩放定律,为我们指明了一条通往更长时程、更强交互智能的可能路径。

1039

数字化车间智能排产调度挑战赛(一)—— 数学模型

科大讯飞——数字化车间智能排产调度挑战赛。

Lyyyp的博客 5652

Attention Is All You Need

Attention Is All You Need 注意力机制是你需要的全部 Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin attention [ə'tenʃ(ə)n]:n. 注意,关注,注意力,关心 int. 注意,立正 attention mechanism:注意力机制 Computer Science,CS:

程永强 4万+

scRNA-seq | 吐血整理的单细胞入门教程(从原理到代码实操)(二)

scRNA-seq | 吐血整理的单细胞入门教程(从原理到代码实操)(二)

m0_72224305的博客 4306

STM32H745xI双核芯片SMPS/LDO配置误区:从复位失败到精准排查的实战复盘

本文详细分析了STM32H745xI双核芯片在SMPS/LDO配置中的常见误区,特别是复位失败问题的排查过程。通过对比参考板与故障板的波形数据,揭示了电感选型不当导致的电源稳定性问题,并提供了硬件设计检查清单和调试技巧,帮助开发者避免类似陷阱。

weixin_42531588的博客 265

【转载】常见26种NLP任务的练手项目

文章目录1.分词 Word Segmentation2.词预测 Word Prediction3. 文本蕴涵 Textual Entailment4. 语音识别 Automatic Speech Recognition5. 自动摘要 Automatic Summarisation6. 文本纠错 Text Correct7.字音转换 Grapheme to Phoneme8. 复述检测 Paraph...

沙师弟专栏 2万+

Codex 100个真实案例 - 用AI自动生成API测试用例(接口测试全覆盖)

API 测试是保障后端质量的关键环节,但手写测试用例既枯燥又容易遗漏。本案例将展示如何用 Codex 从 Swagger/OpenAPI 规范文档自动生成 pytest 测试用例——包括正常流程测试、边界值测试、异常参数测试、性能压力测试,还能自动生成 Mock 数据和精美的 HTML 测试报告。全程自然语言驱动,让 API 测试覆盖率从 0 飙到 90%+!

yueyeguzhuo的专栏 271

RNN的高级应用

本文结构:四个问题 每个问题是什么 应用什么模型 模型效果 CS224d-Day 11: Recursive neural networks – for different tasks (e.g. sentiment analysis) 课程链接 视频链接 课件链接四个问题这次课主要讲了标准的 Recursive neural networks 模型及其扩展模型在3个问题上的应用和效果,最

aliceyangxi1987的博客 2657

26届数字IC秋招笔试面试全攻略 - CPU基础架构-数字IC设计专家

本文介绍了CPU基础架构的三大关键技术:流水线、冒险处理和指令集设计。首先解析了经典五级流水线结构(取指、译码、执行、访存、写回)及其性能指标。其次详细阐述了三种流水线冒险(数据、控制、结构)及解决方案,如数据前递、分支预测等。最后对比了RISC与CISC指令集特点,并以RISC-V为例说明指令格式设计原则。全文系统梳理了CPU核心架构知识,为数字IC设计提供重要参考。

2301_79143213的博客 931

halcon3d点云补全方法

属于halcon实例中的内容,后面还接了一部分的匹配

Tianwen_running的博客 1232

嵌入式蜂窝+网状网络方案:XB3-24Z8UM与R7KA8T2LFLCAC实战

在工业物联网与边缘计算场景中,蜂窝网络与网状网络的融合是实现广域回传与本地自组网的关键。蜂窝通信负责远程数据上云,网状网络则通过多跳路由与自愈能力解决高密度节点覆盖。这种架构依赖高性能MCU实现双核任务隔离与低功耗管理,从而提升系统实时性与可靠性。典型应用包括工业设备监控、农业环境监测和远程抄表等。XB3-24Z8UM模块与R7KA8T2LFLCAC芯片的组合,正是面向此类嵌入式蜂窝加网状网络方案的工程实践,兼顾协议栈配置、双核通信与现场部署优化。

weixin_33766168的博客 220

杰理AC696N系列芯片外部中断使用教程

本教程详细介绍了杰理AC696N芯片的GPIO引脚中断唤醒功能实现方法。主要内容包括: 功能特点: 支持任意GPIO引脚配置为中断源 可灵活选择上升沿或下降沿触发 提供自定义中断回调函数接口 核心实现: 通过port_wkup_interrupt_init()函数配置GPIO属性 使用request_irq()注册中断服务程序 提供中断使能/关闭接口 注意事项: 此功能在低功耗模式下无效 需注意引脚冲突和中断优先级设置 建议在回调函数中实现简洁的逻辑 应用场景: 按键检测 外部信号监测 事件触发等 本方案提

qq_42014563的博客 944
上一篇: 阿里开源混沌工程工具 ChaosBlade
下一篇: Apache HBase的现状和发展
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值