摘要
我们介绍了一种名为BERT的新型语言表示模型,即“来自Transformer的双向编码器表示”Bidirectional Encoder Representations from Transformers。与最近的语言表示模型不同,BERT旨在通过联合所有层中的左右上下文来预训练深度双向表示,从而从未标记文本中获得。因此,经过预训练的BERT模型只需添加一个额外的输出层,就可以微调以创建用于各种任务的最新模型,例如问答和语言推理,而无需进行大量特定于任务的架构修改。
BERT在概念上简单而实证上强大。它在十一个自然语言处理任务上获得了新的最先进结果,包括将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(Peters等人,2018a),使用包含预训练表示作为附加特征的特定于任务的架构。
- 微调方法,如生成式预训练Transformer(OpenAI GPT)(Radford等人,2018),引入最小的特定于任务的参数,并通过对所有预训练参数进行微调来在下游任务上进行训练。
这两种方法在预训练期间使用相同的目标函数,它们使用单向语言模型来学习一般的语言表示。
我们认为,当前的技术限制了预训练表示的能力,特别是对于微调方法。主要的限制在于,标准的语言模型是单向的,这限制了可用于预训练的架构的选择。例如,在OpenAI GPT中,作者使用从左到右的架构,其中每个标记在Transformer的自注意力层中只能关注到之前的标记。这样的限制对于句子级别的任务来说是不理想的,并且在将基于微调的方法应用于标记级别的任务(如问答)时可能会非常有害,因为在这些任务中,融入来自两个方向的上下文是至关重要的。
在本文中,我们通过提出BERT(来自Transformer的双向编码器表示)来改进基于微调的方法。BERT通过使用受Cloze任务启发的“掩码语言模型”(MLM)预训练目标,缓解了之前提到的单向性约束。掩码语言模型随机地掩盖输入中的一些标记,目标是根据其上下文仅预测被掩盖单词的原始词汇ID。与从左到右的语言模型预训练不同,MLM目标使表示能够融合左右上下文,从而使我们能够预训练一个深度双向Transformer。除了掩码语言模型外,我们还使用了一个“下一句预测”任务来联合预训练文本对表示。本文的主要贡献如下:
- 我们证明了双向预训练对于语言表示的重要性。与Radford等人(2018)使用单向语言模型进行预训练不同,BERT使用掩码语言模型来启用预训练的深度双向表示。这也与Peters等人(2018a)的方法形成对比,后者独立地训练从左到右和从右到左的语言模型,并将其进行浅层的拼接。
- 我们表明,预训练表示减少了对许多精心设计的特定任务架构的需求。BERT是第一个基于微调的表示模型,它在大量句子级别和标记级别的任务上达到了最先进的性能,超过了许多特定任务的架构。
- BERT在11项NLP任务上取得了最先进的成果。代码和预训练模型可以在https://github.com/google-research/bert上获取。
Ankie的评论:
GPT v1(2018.6) 使用了transformer效果很好,Google团队看到后,隔了4个月就是2018.10自己做了一个3.5亿(350m)参数的BERT,把榜单统统刷了一遍。GPT v1的参数大概1.1亿(110m),BERT的训练素材更大。
GPT使用的是transformer的decoder,单向,专注于预测,因为decoder看不到后面的字符,训练GPT的预测性能。
BERT使用的是transformer的encoder,双向,专注于完形填空。对于缺失的内容和应试内容比较擅长。
BERT这一论文的核心观点在于,它巧妙地融合了ELMo的双向性特征和GPT的微调策略。经过一系列实验验证,我们发现这种双向性与微调技术的结合,确实能显著提升模型在各项任务上的表现。更进一步地,当我们通过增加模型的大小来扩展其容量时,模型的性能还能得到进一步的提升。这些发现共同构成了BERT论文的关键论点,展示了其在自然语言处理领域的强大潜力与优势。