本文根据2019年《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》翻译总结的。
BERT: Bidirectional Encoder Representations from Transformers.
应用预训练模型于下游任务有两种策略,分别是feature-based 和 fine-tuning。fine-tuning方法的主要限制是其单向的。BERT采用的fine-tuning方法,但是BERT使用“masked language model” (MLM)来避免单向的问题,MLM随机mask输入的一部分,目标函数是从masked的词汇(附带上下文)预测原序列。
BERT的贡献如下:
ELMo模型(2017-2018):分别用LSTM训练左到右、右到左,然后再连接起来生成features。
OpenAI GPT、Left-to-right language model、auto-encoder objectives等。OpenAI GPT采用的left-to-right Transformer。
比如计算机视觉领域,有基于ImageNet的预训练模型。
BERT如下图所示,分为两步,分别是pre-training(预训练)、fine-tuning(微调)。pre-training基于unlabeled数据进行训练。微调是基于labeled数据对所有参数进行微调。
如下图所示,输入embedding是三部分的累加,这三部分分别是单词(token)的embedding、片段(segmentation)归属embedding、位置(position)embedding。
GPT uses a sentence separator ([SEP]) and classifier token ([CLS]) which are only introduced at fine-tuning time;
BERT learns [SEP], [CLS] and sentence A/B embeddings during pre-training.。
需要4-5天的预训练。
标准的条件语言模型是单向的,left-to-right 或者 right-to-left。为了训练一个深度的双向表述,我们随机mask输入的一部分,然后预测这些masked部分。我们将该方法叫做Masked LM(MLM)。
该模型的一个缺点是造成了pre-training和fine-tuning的不匹配,因为fine-tuning是没有mask 的。为了减轻这个缺点的影响,引入了一些随机等操作。
上面的mask步骤的好处是:transformer 不知道它要预测哪个词语,所以它会对每一个输入词语保持上下文的表达。一般是随机替换输入的15%,也不会损害模型语言理解的能力。但是这样会导致模型收敛较慢,不过带来了模型预测能力的改善。
许多重要的下游任务是question answering(QA)和natural language inference任务,它们是理解两个语句间的关系。为了训练一个模型理解语句间的关系,我们引入了一个二值化next sentence prediction任务。
示例如下,上面的两个输入语句是有关系的,所以label=IsNext。下面两个输入没有关系,所以label=NotNext。
Fine-tuning是比较简单明了的,改造输出层,对所有参数进行微调。微调的时间也很短,在单cloud TPU上,只需要1小时;在GPU上也只是几个小时。
下面参数工作较好:
如下图所示,不同的任务模型是通过在BERT上附加一个额外的输出层,所以只有很少的参数需要重头开始学习。图a、b是序列水平的任务,图c、d是单词级别(token-level)的任务。
The General Language Understanding Evaluation (GLUE) benchmark,可以看到BERT优于OpenAI GPT等。
Stanford Question Answering Dataset(SQuAD v1.1)。
Situations With Adversarial Generations(SWAG):包括113k个语句对补充例子,用来评估常识推理。给定一个句子,任务是在4个选项中选择最合适的一个。
可以看到NSP、masked LM(双向机制)对BERT有很多的作用。
可以看到BERT如果使用feature-based方法也可以取得较好的效果,但基于fine-tuning的BERT-large依然表现最优。