BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 的自我理解

1.Abstract

论文地址:https://arxiv.org/pdf/1810.04805.pdf

        Bert最近很火,主要用于表示转换器的双向解码器表示。是一个预训练的语言表征模型。以往的方法都是采用传统的单向语言模型或者把两个单向语言模型进行浅层拼接的方法进行预训练。bert采用的是masked language model(MLM),目前在NLP很多领域的预处理都采用了bert。并且很多都超过了原有模型的baseline,也就是达到了state-of-the-art。包括将GLUE的基准值提高到80.4%(7.6%的绝对改进)、多项准确率提高到86.7%(5.6%的绝对改进)、将SQuAD v1.1的问答测试F1提高到93.2(1.5的绝对改进),比human的表现高出2.0。

2.Introdcution


        将预训练语言表示应用于下游任务有两种现有策略:基于特征和微调。基于特征的方法,例如ELMo(Peters等,2018),使用特定于任务的体系结构,其包括预先训练的表示作为附加特征。微调方法,例如Generative Pre-trained Transformer(OpenAI GPT)(Radford等,2018),引入了最小的任务特定参数,并通过简单地微调预训练参数来训练下游任务。在以前的工作中,两种方法在预训练期间共享相同的目标函数,在这些方法中,他们使用单向语言模型来学习一般语言表示。
        当前的技术严重限制了预训练表示的能力,特别是对于微调方法。主要限制是标准语言模型是单向的,这限制了在预训练期间可以使用的体系结构的选择。例如,在OpenAI GPT中,作者使用了从左到右的体系结构,其中每个令牌只能处理Transformer自我关注层中的前一个令牌(Vaswani et al, 2017)。这些限制对于句子级别任务来说是次优的,并且在将基于微调的方法应用于令牌级别任务(例如SQuAD问答)时可能是毁灭性的(Rajpurkar等,2016),在这些任务中,从两个方向合并上下文至关重要。
        提出BERT:变换器的双向编码器表示来改进基于微调的方法。 BERT通过提出一个新的预训练目标来解决前面提到的单向约束:“掩盖语言模型”(MLM),受到完形任务的启发(Taylor,1953)。被掩盖的语言模型从输入中随机地掩盖一些标记,并且目标是仅基于其上下文来预测被掩盖的单词的原始词汇id。与从左到右的语言模型预训练不同,MLM目标允许表示融合左右上下文,这允许我们预训练一个深度双向变换器。除了蒙面语言模型,我们还引入了一个“下一句预测”任务,联合预训练文本对表示。
本文的贡献如下:
        证明了双向预训练对语言表达的重要性。与Radford等人不同。 (2018),其使用单向语言模型进行预训练,BERT使用掩蔽语言模型来实现预训练的深度双向表示。这也与Peters等人(2018年)形成了鲜明对比,Peters等人使用的是一种由独立训练的从左到右和从右到左的LMs的浅层连接。
        展示了预先训练的表示消除了许多经过大量工程设计的特定于任务的体系结构的需求。BERT是第一个基于微调的表示模型,它在大量的句子级和令牌级任务上实现了最先进的性能,优于许多具有任务特定体系结构的系统。
        还报告了对BERT的广泛消融,证明了我们模型的双向性质是最重要的新贡献。代码和预先训练的模型将在goo.gl/language/bert上提供。

3.BERT的实现

        而BERT利用MLM进行预训练并且采用深层的双向Transformer组件(单向的Transformer一般被称为Transformer decoder,其每一个token(符号)只会attend到目前往左的token。而双向的Transformer则被称为Transformer encoder,其每一个token会attend到所有的token。)来构建整个模型,因此最终生成能融合左右上下文信息的深层双向语言表征

        

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 的自我理解

Transformer又可以进行堆叠,形成一个更深的神经网络。经过多层Transformer结构的堆叠后,形成BERT的主体结构。 

注意:下游任务不同的话,bert的结构可能有一点不同,但是本文只介绍预训练阶段的模型结构。

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 的自我理解

 如图:bert输入,可以理解为输入的没有标签的token,(粉色对应的就是Token,黄色对应的是表征),作者应当在输入的序列开头插入特定的分类Token(CLS)。该分类token对应的最后一个Transformer层输出被用来起到聚集整个序列表征信息的作用。

        由于BERT是一个预训练模型,其必须要适应各种各样的自然语言任务,因此模型所输入的序列必须有能力包含一句话(文本情感分类,序列标注任务)或者两句话以上(文本摘要,自然语言推断,问答任务)。那么如何令模型有能力去分辨哪个范围是属于句子A,哪个范围是属于句子B呢?BERT采用了两种方法去解决。

1)在序列tokens中把分割token([SEP])插入到每个句子后,以分开不同的句子tokens。

2)为每一个token表征都添加一个可学习的分割embedding来指示其属于句子A还是句子B。

确定的输入序列tokens为(如果输入序列只包含一个句子的话,则没有[SEP]及之后的token)

Token表征可以表示如下。

  • BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 的自我理解

那么作为BERT的输出又是什么呢?

Transformer的特点就是有多少个输入就有多少个对应的输出。因此输出的C为分类token([CLS])对应最后一个Transformer的输出,Ti 则代表其他token对应最后一个Transformer的输出。对于一些token级别的任务(如,序列标注和问答任务),就把 输入到额外的输出层中进行预测。对于一些句子级别的任务(如,自然语言推断和情感分类任务),就把C输入到额外的输出层中,这里也就解释了为什么要在每一个token序列前都要插入特定的分类token。

3.1 Masked Language Model(MLM)

 以15%的概率用mask token ([MASK])随机地对每一个训练序列中的token进行替换,然后预测出[MASK]位置原有的单词。

由于[MASK]并不会出现在下游任务的微调(fine-tuning)阶段,因此预训练阶段和微调阶段之间产生了不匹配(这里很好解释,就是预训练的目标会令产生的语言表征对[MASK]敏感,但是却对其他token不敏感)。因此BERT采用了以下策略来解决这个问题:

首先在每一个训练序列中以15%的概率随机地选中某个token位置用于预测,假如是第i个token被选中,则会被替换成以下三个token之一

1)80%的时候是[MASK]。如,my dog is hairy——>my dog is [MASK]

2)10%的时候是随机的其他token。如,my dog is hairy——>my dog is apple

3)10%的时候是原来的token(保持不变,个人认为是作为2)所对应的负类)。如,my dog is hairy——>my dog is hairy

再用该位置对应的 Ti 去预测出原来的token(输入到全连接,然后用softmax输出每个token的概率,最后用交叉熵计算loss)

该策略令到BERT不再只对[MASK]敏感,而是对所有的token都敏感,以致能抽取出任何token的表征信息

3.2样例

Input1=[CLS] the man went to [MASK] store [SEP] he bought a gallon [MASK] milk [SEP]

Label1=IsNext

Input2=[CLS] the man [MASK] to the store [SEP] penguin [MASK] are flight ##less birds [SEP]

Label2=NotNext

把每一个训练样例输入到BERT中可以相应获得两个任务对应的loss,再把这两个loss加在一起就是整体的预训练loss。(也就是两个任务同时进行训练)

可以明显地看出,这两个任务所需的数据其实都可以从无标签的文本数据中构建(自监督性质),比CV中需要人工标注的ImageNet数据集可简单多了。


4.Related works

4.1基于特征的方法

几十年来,学习广泛适用的词语表达一直是研究的一个活跃领域,包括非神经(Brown et al。,1992; Ando and Zhang,2005; Blitzer et al。,2006)和神经(Collobert and Weston,2008; Mikolov等,2013; Pennington等,2014)方法。预训练的单词嵌入被认为是现代NLP系统不可或缺的一部分,与从头学习的嵌入相比有显着改进(Turian et al。,2010)。这些方法已被推广到较粗糙的粒度,例如句子嵌入(Kiros等,2015; Logeswaran和Lee,2018)或段嵌入(Le和Mikolov,2014)。与传统的单词嵌入一样,这些学习的表示通常也用作下游模型中的特征。 ELMo(Peters等,2017)将传统的词嵌入研究概括为不同的维度。他们建议从语言模型中提取上下文敏感特征。当将上下文字嵌入与现有的任务特定体系结构集成时,ELMo推进了几个主要NLP基准测试的最新技术(Peters等,2018),包括SQUAD上的问答(Rajpurkar等,2016),情绪分析(Socher et al,2013),以及命名实体识别(Tjong Kim Sang和De Meulder,2003)。

4.2 微调方法

从语言模型(LMs)转移学习的最新趋势是在LM目标上预先培训一些模型架构,然后对监督下游任务的相同模型进行微调(Dai and Le, 2015; Howard and Ruder, 2018; Radford et al., 2018)。这些方法的优点是需要从头开始学习很少的参数。至少部分任务可以借助这一优势,比如OpenAI GPT(Radford等,2018)在GLUE基准测试中获得了许多句子级任务的最好结果(Wang et al,2018)。


4.3 从监督数据转移学习

虽然无监督预培训的优点是可以获得几乎无限的数据量,但也有工作表明从具有大型数据集的监督任务中有效转移,例如自然语言推断(Conneau等,2017)和机器翻译(McCann et al。,2017)。在NLP之外,计算机视觉研究也证明了从大型预训练模型转移学习的重要性,其中一个有效的方法是对ImageNet上的预训练模型进行微调(Deng et al.,2009;Yosinski等人,2014)。
 

上一篇:Training Feedback Spiking Neural Networks by Implicit Differentiation on the Equilibrium State


下一篇:《Web安全之机器学习入门》笔记:第七章 7.8 朴素贝叶斯识别mnist验证码