0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

我们尝试提出一些新的观点和假设来解释BERT的强大功能

电子工程师 来源:lp 2019-03-20 16:47 次阅读

BERT是google最近提出的一个自然语言处理模型,它在许多任务检测上表现非常好。如:问答、自然语言推断和释义而且它是开源的。因此在社区中非常流行。

下图展示了不同模型的GLUE基准测试分数(不同NLP评估任务的平均得分)变化过程。

尽管目前还不清楚是否所有的GLUE任务都非常有意义,但是基于Trandformer编码器的通用模型(Open-GPT、BERT、BigBird),在一年内缩小了任务专用模型和人类的差距。

但是,正如Yoav Goldberg所说,我们并不能完全理解Transformer模型是如何编码句子的:

Transformer和RNN模型不同,它只依赖于注意力机制。除了标志每个单词的绝对位置嵌入,它没有明确的单词顺序标记。对注意力的依赖可能会导致Transformer模型在处理语法敏感的任务中相对于RNN(LSTM)模型性能表现较差——因为RNN模型是直接根据词序训练模型,并且明确地追踪句子的状态。

一些文章深入地研究了BERT的技术细节。这里,我们将尝试提出一些新的观点和假设来解释BERT的强大功能。

一种语言理解的框架:句法解析/语义合成

人类能够理解语言的方式是一个由来已久的哲学问题。在20世纪,两个互补的原理阐明了这个问题:

“语义合成性原理”表明复合词的含义来源于单个词的含义以及这些单词的组合方式。根据这个原理,名词短语“carnivorous plants” (食肉植物)的含义可以通过“carnivorous”(食肉的)这个词的含义和“plant”(植物)这个词的含义组合得到。

另一个原理是“语言的层次结构”。它表明通过句法解析,句子可以分解为简单的结构——比如从句。从句又可以分解为动词短语和名词短语等等。

句法解析层次结构以及递归是从组成成分中提取含义,直到达到句子级别,这对于语言理解是一个很有吸引力的方法。考虑到这个句子“Bart watched a squirrel with binoculars” (Bart用双筒望远镜观察松鼠),一个好的句法解析会返回以下句法解析树:

“Bart watched a squirrel with binoculars”基于结构的句法解析树

这个句子的含义可根据连续的语义合成推导出来(将“a”和“squirrel” 语义合成,“watched”和“a squirrel” 语义合成, “watched a squirrel”和“ with binoculars” 语义合成),直到句子的含义完全得到。

向量空间可以用来表示一个单词、短语和其他成分。语义合成的过程可以被构造为一个函数f,f将(“a”,”squirrel”) 语义合成为“a squirrel”的一个有意义向量,表示为“a squirrel”= f(“a”,”squirrel”)。

相关链接:

http://csli-lilt.stanford.edu/ojs/index.php/LiLT/article/view/6

但是,语义合成和句法解析都是很难的任务,而且它们互相需要。

显然,语义合成依赖句法解析的结果来决定哪些应该被语义合成。但是即使有正确的输入,语义合成也是一个困难的问题。例如,形容词的含义会随着单词的不同而变化:“white wine” (白葡萄酒)的颜色实际上是黄色的,但是一只白猫(white cat)就是白色的。这种现象被称作联合语义合成(co-composition)。

相关链接:

http://gl-tutorials.org/wp-content/uploads/2017/07/Pustejovsky-Cocompositionality-2012.pdf

“white wine” (白葡萄酒)和 “white cat” (白猫)在二维语义空间中的表征(空间的维度是颜色)

对于语义合成,还需要更广泛的上下文。举个例子,“green light”(绿灯)单词的语义合成要根据语境来定。“green light”可以表示授权或者实际的绿灯。一些习惯用语需要经验记忆而不是简单地组合它们。因此,在向量空间中进行语义合成需要强大的非线性函数,例如深度神经网络,也具有记忆功能。

相关链接:

https://arxiv.org/abs/1706.05394

相反,为了在一些特定情形下奏效,句法解析操作可能需要语义合成。考虑下面这个句子的句法解析树(和之前相同的句子) “Bart watched a squirrel with binoculars”

另一个"Bart watched a squirrel with binoculars"的基于结构的句法解析树

尽管它在语法上有效,但是句法解析操作导致了句子的畸形翻译,Bart watches (with his bare eyes) a squirrel holding binoculars(Bart(用他的裸眼)看到一个举着望远镜的小松鼠)。

因此,需要进行一些单词语义合成才能判断“松鼠举着望远镜”是不可能的!一般地说,在获得句子正确结构前,必须要一些消除歧义的操作和背景知识的整合。但是这种操作也可以通过一些句法解析和语义合成的形式完成。

一些模型尝试将句法解析和语义合成的操作同时结合应用到实践中。

相关链接:

https://nlp.stanford.edu/~socherr/EMNLP2013_RNTN.pdf

然而,它们依赖于受限制的人工注释的标准句法解析树设置,并且性能还没有一些更简单的模型好。

BERT是如何实现句法解析/语义合成操作的

我们假设Transformer创新地依赖这两个操作(句法解析/语义合成):由于语义合成需要句法解析,句法解析需要语义合成,Transformer便迭代地使用句法解析和语义合成的步骤,来解决它们相互依赖的问题。

实际上,Transformer由一些堆叠层组成(也叫做block)。每个block块由一个注意力层以及一个应用在每个输入元素的非线性函数组成。

我们试着展示Transformer的这些组件与句法解析/语义合成框架之间的联系:

一个视为连续的句法解析和语义合成步骤

将注意力视为一个句法解析步骤

在BERT中,一个注意力机制让输入序列(比如:由单词或子单词组成的元素)中的每个元素聚焦到其它的元素上。

出于解释的目的,我们根据这篇文章(https://medium.com/dissecting-bert/dissecting-bert-part2-335ff2ed9c73)使用的可视化工具来深入研究注意力头,并在预训练的的BERT模型上验证我们的假设。在下面对注意力头的解释中,单词“it”参与到其它所有元素中,看起来它会关注“street”和“animal”这两个单词。

可视化第0层1号注意力头上的注意力值,用于标记“it”

BERT为每一层使用12个独立的注意力机制。因此,在每一层,每个token可以专注于其他标记的12个不同侧面。由于Transformers使用许多不同的注意力头(12 * 12 = 144用于基础BERT模型),每个头部可以专注于不同类型的成分组合。

我们忽略了与“[CLS]”和“[SEP]”标记相关的注意力值。我们尝试使用了几个句子,发现想不过度解释它们的结果很难。所以你可以随意用几个句子在这个colab notebook上测试我们的假设。请注意,在图中,左侧序列“注意”右侧序列。

相关链接:

https://colab.research.google.com/drive/1Nlhh2vwlQdKleNMqpmLDBsAwrv_7NnrB

第2层1号注意力头似乎基于相关性来生成成分

可视化第2层1号头上的注意力值

更有趣的是,在第3层中,9号头似乎显示出更高级别的成分:一些token注意到相同的中心词(if,keep,have)。

第3层11号头的注意力值的可视化,一些标记似乎注意到特定的中心词(例如,have,keep)

在第5层中,由6号注意力头执行的匹配似乎集中于特定组合,特别是涉及动词的组合。像[SEP]这样的特殊标记似乎用于表示没有匹配。这可以使注意力头能够检测适合该语义合成的特定结构。这种一致的结构可以用于语义合成函数。

可视化第5层6号头注意力值,更关注组合(we,have),(if,we),(keep,up)(get,angry)

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

若干注意力层如何表示成树结构

在检查BERT注意力头时,我们没有找到这种清晰的树结构。但是Transformers仍有可能表示它们。

我们注意到,由于编码是在所有层上同时执行的,因此很难正确解释BERT正在做什么。对指定层的分析只是对它自己的下一层和前一层才有意义。句法解析也分布在各注意力头上。

下图展示了两个注意力头的情况下,BERT注意力更为实际的样子:

BERT中注意力值更实际的展现

然而,正如我们之前所见,句法解析树是一种高级别的展示,它可能建立在更复杂的“根茎”结构上。例如,我们可能需要找出代词所引用的内容,以便对输入进行编码(共指消解)。在其他情况下,消除歧义也可能需要全文背景。

令人惊讶的是,我们发现一个注意力头(第6层0号头)似乎实际上执行了共指消解。

相关链接:

https://medium.com/dissecting-bert/dissecting-bert-part2-335ff2ed9c73

一些注意力头似乎为每一个单词(第0层0号头)都提供全文信息

在第6层的头0号头中发生的共指消解

每个单词都会注意句子中的所有其它单词。这可能允许对每个单词建立一个粗略的语境。

语义合成阶段

在每一层中,所有注意力头的输出被拼接并被送到可以表示复杂非线性函数(表达语义合成所需要的)的神经网络。

依靠来自注意力头的结构化输入,该神经网络可以执行各种语义合成。 在先前显示的第5层中,6号注意力头可以引导模型执行以下语义合成:(we,have),(if,we),(keep,up)(get,angry)。该模型可以非线性地组合它们并返回语义合成表示。因此,多注意力头可以作为辅助语义合成的工具。

注意力头如何辅助特定的语义合成,例如形容词/名词语义合成

虽然我们没有发现注意力头集中关注形容词/名词等更一致的组合,但是动词/副词的语义合成与模型所衍生的其它语义合成之间可能存在一些共同点。

有许多可能的相关语义合成(单词-子词,形容词-名词,动词-介词,子句-子句)。更进一步,我们可以将消歧看作把一个歧义词(如 bank)与其相关的上下文单词(如 river 或 cashier)语义合成的过程。在语义合成期间也可以执行与给定上下文的概念相关的背景常识知识的集成。这种消歧也可能发生在其它层面(例如句子层面、子句层面)。

作为一种语义合成的消歧

此外,语义合成也可能涉及词序推理。有人认为,位置编码可能不足以正确编码单词的顺序,然而位置编码被设计为编码每个token的粗略、精细和可能精确的位置。(位置编码是与输入嵌入平均求和的向量,以为输入序列中的每个 token 生成能够感知位置的表征)。因此,基于两个位置编码,非线性合成理论上可以基于单词相对位置执行一些关系推理。

我们假设语义合成阶段也在BERT自然语言理解中起到了重要作用:并不只需要注意力。

总结

我们提出了对Transformers的归纳偏差的见解。但我们的解释对Transformer的功能持乐观态度。作为提醒,LSTM显示能够隐性地处理树结构和语义合成。由于LSTM仍存在一些局限性,部分是因为梯度消失造成的。因此,需要进一步的研究来阐明Transformer的局限性。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    3859

    浏览量

    61297
  • 递归
    +关注

    关注

    0

    文章

    28

    浏览量

    8976
  • 自然语言处理

    关注

    1

    文章

    507

    浏览量

    13096

原文标题:深入理解BERT Transformer ,不仅仅是注意力机制

文章出处:【微信号:BigDataDigest,微信公众号:大数据文摘】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    想要一些大功率对管的原理图和设计资料

    想要一些大功率对管的原理图和设计资料
    发表于 04-13 09:45

    那种电路好一些

    大家好,我是电子菜鸟!我想问下下面那种电路好点:假设灯都正常工作,别的u考虑,那种电路更加稳定一些
    发表于 03-22 21:51

    请问有人能给我一些在Linux中提出MCP25625的指针吗?

    嗨,我是新来的FW。有人能给我一些在Linux中提出MCP25625的指针吗?我看到了一些用于MCP2515的Linux驱动程序,我不确定它们是否可以直接移植到MCP25625。非常感谢。谢谢
    发表于 06-11 10:48

    电磁场分析软件Infolytica的强大功能

    ,MotorSolve等软件,使得二维和三维的电场、磁场以及热场的独立及耦合分析在同界面下轻松进行。 INFOLYTICA软件的强大功能INFOLYTICA软件的强大功能包括: 1) INFOLYTICA的2D/3D
    发表于 06-27 06:10

    一些tranceiver设计GND没有工作的原因是什么?

    般来说,何时使用GND,浮动,AVTT和可编程终端。我正在做一些tranceiver设计,并尝试过GND和AVTT,而GND没有工作,但AVTT确实有效。有人可以解释或指向
    发表于 07-21 12:24

    思考驱动创新,创新驱动发展:基于假设(Assumption)的思考技术

    因推理的优点,就是提出解释假设的创造性行为。其中的假设,通常无法直接加以验证;如果用实验或调查加以证实,也只是得知该
    发表于 12-21 10:23

    解释一下有关逻辑电平的一些概念

    上篇博文写了一些有关CMOS门电路的基础内容,相信认真看完,定能画出各种CMOS门电路:CMOS门电路,这些是最常考的基础内容。下面简单介绍下其他概念题目:1、 解释一下Vih,V
    发表于 07-28 06:23

    一些电磁标准的解释

    通用电磁兼容标准(EMC Standard)对照表目的,给予电源及相关电行业开发或测试人员参考,查找或引用更加方便。包括传导、辐射以及谐波。下面对常见的一些标准做一些对应解释,特别是针对在通用
    发表于 10-29 08:33

    分享功能强大的APP蓝牙调试器

    文章目录前言,设置数据包格式1.1原始数据二,编辑控件三,stm32 串口发送四,stm32 串口接收前言串口是我们经常用来输出数据的接口,使用一些蓝牙串口模块,如HC-05能方便的通过蓝牙将串口
    发表于 02-22 06:03

    BERT中的嵌入层组成以及实现方式介绍

    介绍在本文中,我将解释BERT中嵌入层的实现细节,即token嵌入、Segment嵌入和Position嵌入。简介这是张来自论文的图,它恰当地描述了BERT中每
    发表于 11-02 15:14

    如何利用Sparkfun Arduino Qwiic Shield驱动一些I2C 5.0v/3.3v外围设备呢

    我正在尝试通过连接到 STM32H7451-DISCO 的 Sparkfun Arduino Qwiic Shield 驱动一些 I2C 5.0v/3.3v 外围设备。尽管能够与同总线上的音频
    发表于 12-20 06:18

    如何为S32k344板创建具有一些附加功能的RTOS?

    我正在尝试为我的 S32k344 板创建具有一些附加功能的 RTOS。谁能指导我添加附加功能的步骤?我正在使用linux环境。
    发表于 04-19 10:44

    ARM指令集体系结构(ISA)的一些功能介绍

    本指南介绍了特定于每个ARM指令集体系结构(ISA)的一些功能,并考虑了哪些应用程序最好地利用了这些功能。该指南的重点是Cortex-R。然而,我们也考虑Cortex-A和Cortex
    发表于 08-02 07:39

    微软亚研提出VL-BERT,现取得了当前单模型的最好效果

    来自中科大、微软亚研院的研究者们提出了一种新型的通用视觉-语言预训练模型(Visual-Linguistic BERT,简称 VL-BERT),该模型采用简单而强大的 Transfor
    的头像 发表于 09-03 15:04 5166次阅读
    微软亚研<b class='flag-5'>提出</b>VL-<b class='flag-5'>BERT</b>,现取得了当前单模型的最好效果

    假设检验|第六章:原假设和备择假设

    从t检验到回归分析,甚至是DOE中,大家都可以看到P值的身影。P值对于很多朋友来说,可以说是又爱又恨。而在我看来,要想准确地使用P值,我们首先要理解两个概念:原假设和备择假设。 P值与原假设
    的头像 发表于 11-07 15:44 3058次阅读