【预训练语言模型】ERNIE 2.0: A Continual Pre-Training Framework for Language Understanding
ERNIE(百度)系列主打知识增强的预训练语言模型,在ERNIE1.0版本基础上,再次提出深度融合知识的预训练语言模型。核心要点包括:
- 增加了pre-training Task的数量;
- 提出Continual Multi-Task Learning融合多个Task进行训练,避免模型遗忘;
简要信息:
序号 | 属性 | 值 |
1 | 模型名称 | ERNIE-2.0 |
2 | 发表位置 | AAAI 2020 |
3 | 所属领域 | 自然语言处理、预训练语言模型 |
4 | 研究内容 | 知识增强的预训练语言模型、Continual Learning |
5 | 核心内容 | BERT改进 |
6 | GitHub源码 | |
7 | 论文PDF | https://ojs.aaai.org/index.php/AAAI/article/view/6428/6284 |
一、动机
- 现有的预训练模型在诸多下游任务上很有效;
- 预训练的语料上除了共现的word或phrase外,还存在大量的词法、语法、语义等信息;
- continual learning(持续学习) 表示用多个任务依次训练模型,以便模型在遇见新的Task时可以记住先前学习的任务;
「Inituition」:
就像是我们学习一个新语言的时候,我们需要很多之前的知识,在这些知识的基础上,我们可以更快地学习新语言,如此就有了迁移学习的效果。我们的语言模型如果增加多个任务的话,是不是可以获得更好的效果?
事实上,经发现,ERNIE 1.0 加了DLM任务以及其他的模型。如Albert 加了sentence order prediction(SOP)任务之后或者SpanBERT: Improving Pre-training by Representing and Predicting Spans[6]在加上了SBO目标之后 ,模型效果得到了进一步的优化,同时MT-DNN[7]也证明了,在预训练的阶段中加入多个GLUE下游任务(有监督)进行多任务学习,可以得到state-of-the-art的效果。
二、方法
采用continual pre-training的策略:
- 先前的预训练语言模型只在一两个预训练任务上进行训练,而ERNIE2.0则在多个不同的预训练任务上进行训练;
- Continual Training是指多个task按照顺序依次训练,但连续训练容易导致灾难性遗忘(忘记很久之前学习过的任务);
ERNIE的框架如下图:
框架大致包括:
- Pre-training Task Construction:构建预训练的任务;
- Continual Multi-task Learning:多个任务依次训练;
2.1 Pre-training Task Construction
首先获得大规模无监督语料,并获得先验知识(例如知识库),然后构建三种类型的预训练任务,如下图所示:
(1)Word-aware Pre-training Task:
- Knowledge Masking:根据实体,挑选文本中的实体进行mask,而不是只mask单一的token;
- Capitalization Prediction Task(大写预测):认为大小写具有不同的语义,因此添加大小写预测;
- Token-Document Relation Prediction Task:预测一个segment中的词是否也出现在同一个document的其他segment中,该任务旨在发现一个document中频繁的词或主题词;
(2)Structure-aware Pre-training Tasks
- Sentence Reordering Task:假设一个段落随机划分为 个片段,对于每一种分法都有 种类型,因此一共有
- Sentence Distance Task:三分类任务,判断两个文本是否相邻(0),是否不相邻但在同一个文档里(1),以及其他(2);
(3)Semantic-aware Pre-training Tasks
- Discourse Relation Task:判断语义相似情况;
- IR Relevance Task:输入一个query以及对应的title,判断是否相关,属于三分类,0表示用户输入query且搜索引擎返回了title,并被用户点击查看,1表示被搜索引擎返回但用户未点击,2表title并未被搜索引擎返回。
2.2 Continual Multi-task Learning
为了能够同时训练多个任务来提取词法、语法和语义方面信息,可以选择如下三种类型的训练策略:
给定 个Task,记作
- Continual Learning:按照顺序 依次学习每个Task。但是缺点很明显,当学习后面的Task时,模型会遗忘先前学习的Task;
- Multi-task Learning:同时训练所有的任务,loss目标函数上进行加权求和(或平均),但该方法需要在训练之前准备所有训练数据,比较费时;
- Sequential Multi-task Learning:依然选择multi-task,例如BERT中,同时完成word-level task(MLM)和sentence-level task(NSP)。然后采用continual training,每个step挑选多个任务进行训练。
2.3 ERNIE2.0 Model
ERNIE2.0模型依然采用多层Transformer的Encoder作为模型架构,Transformer模型详解相见博客:Transformer模型。
除了word emebdding、segment embedding和position embedding,额外添加Task Embedding:类似segment embedding,为每个Task进行编号,并映射到对应的embedding table上。
三、实验
3.1 对比方案:
- 英文数据上,对比XLNet、BERT,并在GLUE评测任务上测试;
- 中文数据上,对比BERT、ERNIE1.0;
- 对比不同的multi-task learning和continual learning;
3.2 实验设置
(1)pre-training语料:
- 英文:Wikipedia、BookCorpus、Reddit、Discovery;
- 中文:encyclopedia, news, dialogue, information retrieval and discourse relation data from a search engine.(来自百度)
(2)pre-training设置: - 模型规模:Base:12 layers、12 self-attention heads、768 dim;Large:24 layers、16 self-attention heads、1024 dim;
- 设备:Base:48 Nvidia V100 GPU;Large:64 Nvidia V100 GPU;优化器:Adam;
- 参数:max_len=512,batch_size=393216/512=768
(3)Fine-tuning设置:
英文GLUE:
中文数据:
3.3 实验结果
3.4 Continual Pre-training对比:
- 挑选4个Pre-training Task,语料挑选原始的10%进行训练;
- 对比三种不同类型的training,包括multi-task learning、continual learning以及本文提出的方法:
- 对比效果如下所示,可知continual multi-task learning可以进一步提高下游任务fine-tuning的效果: