Hongbo Mao bio photo

Email

Github

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

ACL 2019

Abstract

与ELMo以及GPT不同的是BERT用于预训练双向的表示,ELMo使用的是双向的RNN,GPT使用的是单向的Transformer。因此只需要加一个额外的输出层就可以在很多nlp任务上达到sota。随后介绍了一下BERT在11个数据集上的sota效果,与现有sota对比。

先写与别人比有什么改进,然后写效果对比好在哪里。

Architecture

主要模型架构是一个多层双向的标准Transformer encoder模块。


  • pre- training:在没有标号的数据,通过MLM任务进行训练。首先找一对句子,然后对两个句子的部分词进行mask,随后在句子前加入特殊token CLS,在句子中间加入特殊token SEP。将这些token都输入到模型中,BERT会为每个token输出一个向量,随后可以用输出的向量做NSP和Mask LM任务。随后就可以用预训练好的BERT进行微调做下游任务。
  • fine- tuning:权重初始化为预训练得到的权重,然后用有标号数据进行微调。每个下游任务都微调出一个模型。

Experiment

呈现了BERT在11个下游任务中的具体结果,详细说了在GLUE、SQuAD v1.1、SQuAD v2.0、SWAG上的结果。

Others

  • 每个输入序列的第一个token是一个特殊的分类字符CLS,该token最后隐藏层的输出被用作分类任务中的序列表示。
  • embedding:在BERT中对于token的embedding是将token embedding,segment embedding,position embedding加和得到,每个token都包含了词信息,位置信息和段落信息。
  • 训练使用的是MLM预训练任务,随即掩盖输入中的部分词,目的是根据上下文来预测被盖住的这些词的什么。
  • NSP:使用CLS的输出向量输入到后面的全连接层做二分类任务,预测输入的A和B两句话是不是一对。
  • Mask LM:使用mask token的输出通过全连接层和softmax做多分类任务,预测被mask的内容是什么。