阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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

  • 2019-04-05
  • 本文字数:4235 字

    阅读完需:约 14 分钟

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

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

为什么 BERT 很重要

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


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



虽然目前还不清楚是否所有的 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(巴特用望远镜观察一只松鼠)”。一个好的解析组件可以生成下面的分析树:


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


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


句子的意思可以从连续的组合中推导出来,首先是“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]


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


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


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


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



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


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

BERT 如何实现解析和组合

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


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


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


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”上。


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


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


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


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


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



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



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


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


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


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


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


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


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


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


BERT注意力值的实际情况


BERT 注意力值的实际情况


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


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


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


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



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

组合过程

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


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


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


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


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


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


消歧作为组合过程


消歧作为组合过程


此外,组合过程还可能涉及词序推理。有人认为,位置编码(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


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2019-04-05 08:004710
用户头像

发布了 52 篇内容, 共 28.1 次阅读, 收获喜欢 72 次。

关注

评论

发布
暂无评论
发现更多内容

LLMs 诸神之战:LangChain ,以【奥德赛】之名

Zilliz

Milvus AIGC LLM langchain

Golden Gate (GGX) 启动公测,下一代创新DeFi和跨链 dApps 征程开始

股市老人

Django笔记三十之log日志记录详解

Hunter熊

Python django 日志 log

4大特性看Huawei Cloud EulerOS为开发者带来平滑迁移体验

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

国产操作系统如何构建自己的生态

Onegun

国产化 国产操作系统

2023 年度中国 DevOps 现状调查|有奖问卷

CODING DevOps

DevOps 云端IDE cloudstudio

软件测试 | spyne开发接口

测吧(北京)科技有限公司

测试

生产环境质量保障的重要性

老张

质量保障 稳定性保障

开源赋能 普惠未来|360集团寄语2023开放原子全球开源峰会

开放原子开源基金会

2023-05-17:一个正整数如果能被 a 或 b 整除,那么它是神奇的。 给定三个整数 n , a , b ,返回第 n 个神奇的数字。 因为答案可能很大,所以返回答案 对 10^9 + 7 取模

福大大架构师每日一题

Go 算法 rust 福大大

ControlNet: 控制扩散模型的魔法

Zilliz

AIGC Towhee Stable Diffustion controlnet

图数据库 NebulaGraph 的内存管理实践之 Memory Tracker

NebulaGraph

数据库 内存管理 图数据库

Neuron 提供免费无限时试用:完整体验数十种工业协议连接

EMQ映云科技

工业物联网 网关软件 工业协议

MobTech ShareSDK|助力预热618

MobTech袤博科技

软件测试 | 接口测试

测吧(北京)科技有限公司

测试

“伙伴+华为”体系,数字时代的新航标

脑极体

伙伴 体系

C语言编程—变量的构成

二哈侠

“全球金牌课程”6月17-18日 · CSM认证在线周末班【提前报名特惠】CST导师亲授

ShineScrum捷行

Scrum 敏捷

融云 WICC 2023 定档!「出海嘉年华」穂城来袭!

融云 RongCloud

通信 社交 融云 出海 wicc

软件测试/测试开发丨学习笔记之列表、元组、集合

测试人

Python 软件测试 自动化测试 列表 测试开发

浅谈中小企业为何放弃自媒体营销:定位不准、期望值过高、缺乏专业团队

石头IT视角

小程序6大开发框架对比分析

Onegun

小程序 小程序框架 小程序容器

软件测试 | 开发接口

测吧(北京)科技有限公司

测试

广西高等教育学会高校教育技术委员会莅临瑞云科技考察交流

3DCAT实时渲染

虚拟仿真 元宇宙 实时渲染云

亚马逊云科技 一周回顾 – 2022 年 7 月 18 日

亚马逊云科技 (Amazon Web Services)

Amazon

开源赋能 普惠未来|浪潮集团寄语2023开放原子全球开源峰会

开放原子开源基金会

“敏捷教练必修课程”7月22-23日 ·A-CSM认证在线周末班【提前报名特惠】CST导师亲授

ShineScrum捷行

Scrum 敏捷 敏捷精髓 敏捷实践 A-CSM

AI赋能低代码,助力企业数智化转型

这我可不懂

人工智能 低代码 JNPF

【论文分享|SIGMOD'22】WeTune 自动发现和验证重写规则

Databend

10个提高工作效率的Cinema 4D小技巧

Finovy Cloud

C4D

领先芯片供应商u-blox通过Perforce Helix Core加强协作,实现基于组件的开发

龙智—DevSecOps解决方案

组件化 芯片设计

理解BERT Transformer:Attention is not all you need!_AI&大模型_Damien Sileo_InfoQ精选文章