论文阅读:BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding 预训练的深度双向 Transformer 语言模型
原文链接:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
作者:Jacob Devlin,Ming-Wei Chang,Kenton Lee,Kristina Toutanova
总结的论文思维导图如下:
摘要
我们引入了一种新的语言表示模型叫为BERT,它用Transformers的双向编码器表示(Bidirectional Encoder Representations)。与最近的语言表示模型(Peters et al.,2018; Radford et al.,2018)不同,BERT通过在所有层的上下文联合调节来预训练深层双向表示(deep bidirectional representations)。因此,预训练的BERT可以添加一个额外的输出层进行微调,可以在广泛的任务上产生目前最好的效果,例如问答和语言推理,而不需要对大量特定任务的结构进行修改。
BERT在概念上简单且经验丰富。它在11项自然语言处理任务中获得了最新的成果,包括将GLUE得分提高到80.5%(绝对值提高7.7%),MultiNLI准确度提高到86.7%(绝对值提高4.6%),SQuAD v1.1问答测试F1达到93.2(绝对值提高1.5分)和SQuAD v2.0测试F1达到83.1(绝对值提高5.1点)。
1 简介
语言模型预训练已经证明对改善许多自然语言处理任务是有效的。这些任务包括句子级任务,如自然语言推理和释义,旨在通过对句子进行整体分析来预测句子之间的关系,以及词级任务,如命名实体识别和问答,其中模型需要在词级别有细粒度的输出。
在预训练的语言表示应用到下游任务上有两种策略:基于特征和微调。基于特征的方法,如ELMo使用特定于任务的体系结构,将预训练表示作为额外特征。微调方法,如生成式预训练transformer(OpenAI GPT),引入了最小的特定于任务的参数,并通过简单地微调所有预训练参数来训练下游任务。在以前的工作中,这两种方法在训练前都有相同的目标函数,它们使用单向语言模型来学习通用语言表达。
我们认为,当前的技术严格限制了预训练表示的能力,特别是微调方法。主要的限制是标准语言模型是单向的,在预训练期间限制了架构的选择。例如,在OpenAI GPT中,作者使用了一种从左到右的架构,其中每个词只能关注transformer self-attention层中的先前词。这种限制对于句子级别的任务来说不是最佳的,当对SQuAD之类的词级别任务应用基于微调的方法时,这种限制可能会带来毁灭性的影响,其中从两个方向应用语言模型非常重要。
在本文中,我们通过transformer提出BERT :双向编码器表示来改进基于微调的方法。BERT受到完形填空的启发,通过提出一个新的预训练对象“masked language model”( MLM ),来解决上面提到的单向约束。Masked language model在输入中随机屏蔽掉一些词,目的是仅根据屏蔽单词的上下文预测其原始词汇id。与从左到右的语言模型预训练不同,MLM目标允许表示融合左右上下文,这允许我们预训练一个深度双向transformer。除了Masked language model之外,我们还引入了一个“next sentence prediction”任务,共同预训练文本对表示。本文的贡献如下:
- 我们展示了语言表达的双向预训练的重要性。BERT使用Masked language model来实现预训练的深度双向表示。这也与Peters(2018)等人形成对比,它使用独立训练的从左到右和从右到左LMs的简单串联。
- 我们表明,预训练的表示消除了许多精心设计的任务特定体系结构的需求。BERT第一个基于微调的表示模型,在大量的句子级和符号级任务上实现了最先进的性能,优于许多特定于任务的架构。
- BERT提高了11项NLP任务的最新水平。我们还展示了BERT的广泛应用,证明了我们模型的双向性质是最重要的新贡献。代码和预训练的模型可在https://github.com/google-research/bert上获得。
2 相关工作
预训练通用语言表达已经有很长的历史,我们简要回顾了本节中最流行的方法。
2.1 无监督的基于特征的方法
学习可以广泛应用的词表示已经热门了数十年,包括神经网络方法和无神经方法。预训练词嵌入是现代NLP系统必不可少的部分,与从头开始学习的嵌入相比提供了显着的性能提高。为了预训练词嵌入向量,已经使用上下文的语言建模目标,以及在上下文中区分正确和错误单词的目标。
这些方法已经被一般化为更大粒度的表示,如句子嵌入或段落嵌入。为了训练句子表示,先前的工作已经使用目标来对下一个句子进行排序,从左到右生成下一个句子的单词,给出了前一句子的表示,或对自动编码器派生的目标进行降噪。
Elmo从另外一个角度概况了传统词嵌入的研究。它们从左到右和从右到左的语言模型中提取上下文相关的特征。每