论文笔记BERT: Bidirectional Encoder Representations from Transformers
1 简介
本文根据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的贡献如下:
- 语言表达双向预训练的重要性;
- 预训练采用非监督数据,容易实现预训练。预训练减少了许多精心设计的特定任务结构的需要。预训练模型可以处理很多不同的NLP任务。
2 相关工作
2.1 非监督feature-based 方法
ELMo模型(2017-2018):分别用LSTM训练左到右、右到左,然后再连接起来生成features。
2.2 非监督fine-tuning 方法
OpenAI GPT、Left-to-right language model、auto-encoder objectives等。OpenAI GPT采用的left-to-right Transformer。
2.3 监督数据的迁移学习
比如计算机视觉领域,有基于ImageNet的预训练模型。
3 BERT
BERT如下图所示,分为两步,分别是pre-training(预训练)、fine-tuning(微调)。pre-training基于unlabeled数据进行训练。微调是基于labeled数据对所有参数进行微调。
3.1 Input/Output Representations
如下图所示,输入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.。
3.2 Pre-training BERT
需要4-5天的预训练。
3.2.1 Task #1: Masked LM
标准的条件语言模型是单向的,left-to-right 或者 right-to-left。为了训练一个深度的双向表述,我们随机mask输入的一部分,然后预测这些masked部分。我们将该方法叫做Masked LM(MLM)。
该模型的一个缺点是造成了pre-training和fine-tuning的不匹配,因为fine-tuning是没有mask 的。为了减轻这个缺点的影响,引入了一些随机等操作。
3.2.2 Mask说明
上面的mask步骤的好处是:transformer 不知道它要预测哪个词语,所以它会对每一个输入词语保持上下文的表达。一般是随机替换输入的15%,也不会损害模型语言理解的能力。但是这样会导致模型收敛较慢,不过带来了模型预测能力的改善。
3.2.3 Task #2: Next Sentence Prediction (NSP)
许多重要的下游任务是question answering(QA)和natural language inference任务,它们是理解两个语句间的关系。为了训练一个模型理解语句间的关系,我们引入了一个二值化next sentence prediction任务。
示例如下,上面的两个输入语句是有关系的,所以label=IsNext。下面两个输入没有关系,所以label=NotNext。
3.3 Fine-tuning BERT
Fine-tuning是比较简单明了的,改造输出层,对所有参数进行微调。微调的时间也很短,在单cloud TPU上,只需要1小时;在GPU上也只是几个小时。
下面参数工作较好:
- Batch size: 16, 32
- Learning rate (Adam): 5e-5, 3e-5, 2e-5
- Number of epochs: 2, 3, 4
如下图所示,不同的任务模型是通过在BERT上附加一个额外的输出层,所以只有很少的参数需要重头开始学习。图a、b是序列水平的任务,图c、d是单词级别(token-level)的任务。
4 实验结果
4.1 GLUE-语言理解
The General Language Understanding Evaluation (GLUE) benchmark,可以看到BERT优于OpenAI GPT等。
- MNLI: Multi-Genre Natural Language Inference。给定一组语句,预测下一个语句是上面一组语句的继续?还是矛盾?还是中立?
- QQP:Quora Question Pairs is a binary classification task。二值分类,两个问题是不是语义上相同。
- QNLI: Question Natural Language Inference is a version of the Stanford Question Answering Dataset。二值分类,positive包含正确的答案,negative没有包含正确答案。
- SST-2 :The Stanford Sentiment Treebank,二值单语句分类任务。
- CoLA :The Corpus of Linguistic Acceptability。判断一个英语句子在语言学上是否可以接受的。
- STS-B :The Semantic Textual Similarity Benchmark。判断两个句子在语义上是否相似,分数从1到5.
- MRPC: Microsoft Research Paraphrase Corpus。判断两个句子在语义上是否相似。
- RTE: Recognizing Textual Entailment,类似MNLI,但数据量较少。
- WNLI: Winograd NLI is a small natural language inference dataset.
4.2 SQuAD –QA问答
Stanford Question Answering Dataset(SQuAD v1.1)。
4.3 SWAG—语句补充
Situations With Adversarial Generations(SWAG):包括113k个语句对补充例子,用来评估常识推理。给定一个句子,任务是在4个选项中选择最合适的一个。
5 Ablation Studies
5.1 Pre-training Tasks的效果
可以看到NSP、masked LM(双向机制)对BERT有很多的作用。
5.2 模型大小的影响
可以看到,大模型有利于效果提升。
5.3 使用feature-based 方法
可以看到BERT如果使用feature-based方法也可以取得较好的效果,但基于fine-tuning的BERT-large依然表现最优。