ERNIE及ERNIE 2.0论文笔记

前面几篇语言预训练模型都是外国企业或院校的工作,今天我们将视线转回国内,看看由百度NLP团队提出的ERNIE(同期好像清华组也提出了一个同名的类似模型)及其2.0版本的细节。ERNIE也是基于BERT,更加专注于中文领域,很多NLP中文任务大幅领先,且在不少英文任务上也取得最好效果。

ERNIE (Enhanced Representation through KnowIedge Integration)

论文地址:ERNIE: Enhanced Representation through Knowledge Integration

代码地址:https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE

短评:将BERT中的随机masking改为实体或短语级别(entity or phrase)的masking(引入知识,Knowledge Integration),使得模型能够从中学习到更多句法语义知识,在许多中文任务上取得SOTA。

模型结构

image-20190805213515472

上图直观地显示了BERT和ERNIE的采取的不同的masking策略,这是ERNIE引入知识(Knowledge Inegration)的主要手段,介绍如下:

  • Basic-Level Masking:这就是BERT中采用的token粒度的随机masked,只能学习到基本的语义信息,对于深层语义信息比较难建模。

  • Phrase-Level Masking:短语是几个字词组成的概念单元。英文中可通过词法分析(lexical analysis and chunking tools)获取短语边界,中文中可以使用分词工具获取word/phrase信息。然后,随机masked掉一些phrase。

  • Entity-Level Masking:通过命名实体识别(Named Entity Recognition)将实体识别出来,并随机masked掉一些entity。

实验分析

采用了各种各样的数据进行预训练(Heterogeneous Corpus Pre-training),包括中文维基百科(21M),百度百科(51M,类似百科全书,是语言建模的重要基石),百度新闻(47M,能够提供很多最新的信息,例如电影/演员/赛事等等),百度贴吧(54M,社交对话数据)。数据预处理包括繁简转换、英文大写转小写,字符表大小17964。

在训练方面,新引入了一个DLM任务(Dialogue Language Model,在贴吧数据上进行),强化模型对语义的学习(同样Response对应的Query有可能是相近的)。模型结构和MLM是完全兼容的,pre-training时是交替进行的。任务图解如下:

image-20190805220212985

上图展示的是QRQ类型的输入,还可以有其他多轮形式的对话,例如QRR,QQR等等(Q表示Query,R表示Response)。人工了一些假的QRQ等输入,模型需要判断当前输入是真是假。

在5个中文任务上进行了实验,并且对模型进行了消融分析,结果如下:

image-20190805222904809

从Table2可以看到,论文提出的Masking策略相比传统随机mask在XNLI测试集上提升了0.8%,使用全部数据会更好。Table3第3行结果说明了引入DLM带来的正向收益。

最有意思的是完形填空(Cloze Test)的CASE对比分析,很好地展示了ERNIE(能记住一些远程关系)确实比BERT(只能从给定的上下文推断)学习到更多高级语义信息。

image-20190805223347483

ERNIE 2.0

论文地址:ERNIE 2.0: A CONTINUAL PRE-TRAINING FRAMEWORK FOR LANGUAGE UNDERSTANDING

代码地址:https://github.com/PaddlePaddle/ERNIE

短评:不到5个月,ERNIE发布了2.0版本,支持增量引入不同角度的自定义预训练任务,通过多任务学习(multi-task learning)的方式,更加充分地捕捉语料中词法、语法、语义等信息。成绩自然也再创新高。

亮点:融合了持续学习(continual Learning)、多任务学习、知识引入等多种套路。

简介

百度这两篇论文在开头都很喜欢来个overview,感觉总结的不错,将我最近这几篇博文都涵盖到了,贴在这里,也供大家有个整体了解。后面会找时间对一些经典的方法,例如skip-gram/glove,也说一下,经典里有不少经验可以汲取,有些套路至今也还很有用。

It is effective to learn general language representation by pre-training a language model with a large amount of unannotated data. Traditional methods usually focus on context-independent word embedding. Methods such as Word2Vec[9] and GloVe[10] learn fixed word embeddings through word co-occurrence on large corpora.

Recently, several studies centered on contextualized language representations have been proposed and context-dependent language representations have shown state-of-the-art results in various natural language processing tasks. ELMo[1] proposes to extract context-sensitive features from a language model. OpenAI GPT[2] enhances the context-sensitive embedding by adjusting the Transformer[11]. BERT[3], however, adopts a masked language model while adding a next sentence prediction task into the pre-training. XLM[12] integrates two methods to learn cross-lingual language models, namely the unsupervised method that relies only on monolingual data and supervised method that leverages parallel bilingual data. MT-DNN[13] achieves a better result through learning several supervised tasks in GLUE[14] together based on the pre-trained model, which eventually leads to improvements on other supervised tasks that are not learned in the stage of multi-task supervised fine-tuning. XLNet[5] uses Transformer-XL[15] and proposes a generalized autoregressive pre-training method that learns bidirectional contexts by maximizing the expected likelihood over all permutations of the factorization order.

模型框架

image-20190805224927445

首先使用一个简单任务训练一个初始模型,然后不断添加新任务,新任务的训练都是在之前的模型上进行的,使得知识不断累积。而且可以同时进行多任务预训练,如下图:

image-20190806001441502

为了验证框架的有效性,作者构建了一些无监督语言处理任务,并训练了ERNIE 2.0模型。模型结构采用Transformer Encoder,输入增加Task Embedding建模不同任务的特性(fine-tuning阶段可以用任意task id初始化)。模型结构如下图:

image-20190806002107962

构造的任务可以分为三类:1) word-aware tasks用于教模型捕捉词汇信息(lexical information);2) structure-aware task教模型捕捉句法信息(syntactic information);3) semantic-aware任务顾名思义负责捕捉语义信息。任务介绍如下表:

任务名称 任务详情
Knowledge Masking 即前文ERNIE 1.0的phrase/entity masking。(注:这个任务用于模型初始化)
Capitalization Prediction 预测是否大写字词。(大写字词通常有明确语义,大小写区分模型在类似NER等任务中有更有优势)
Token-Document Relation Prediction 预测某个segment中出现的token是否在同文档的其他segments中出现。(建模关键字,增强焦点准确性)
Sentence Reordering 段落被随机切分成1-m个segments并随机重排,目标恢复原序。(转成k分类问题,其中k=\sum_{n=1}^{m}n!,旨在学习句子关系)
Sentence Distance 3分类问题,0表示两句相邻,1表示两句在同一篇文档,2表示来自不同文档。
Discourse Relation 通过Sileo et.al提出的无监督方法获取一批训练数据,预测两个句子间的语义或修饰关系。
IR Relevance 3分类问题,预测用户query和搜索结果title的相关性,0表示强相关(用户点击),1表示弱相关(展示了用户没有点击),2表示不相关。

实验分析

在GLUE英文任务上和BERT、XLNet同台较量,为了公平比较,ERNIE 2.0使用的是single-task和single-model,可以看到很多任务都优胜于BERT(这里BERT_{LARGE}在测试集上的socre来自GLUE benchmark排行榜,值得一提的是,20190806排在榜首的是RoBERTa,综合打分88.5。奇怪的是,不明白ERNIE为什么不来刷榜?

image-20190806010611267

中文NLP任务上,ERNIE 2.0相比1.0版本取得长足进步,如下:

image-20190806010914800

似乎没有看到采用论文提出的框架训练的完整ERNIE 2.0的真实效果?
补注:最近和同事讨论,ERNIE 2.0的槽点还是挺多的,知乎下如何评价百度最新发布的ERNIE2.0有不少质疑。主要集中在以下几点:1)添加了这么多任务,哪些才是真实有用的?(确实,这篇没有做ablation study);2)多任务的机制到底是怎样的?3)实验细节太少。 2019年8月9日

Published by

admin

天空没有翅膀的痕迹,但我已飞过

Leave a Reply

Your email address will not be published. Required fields are marked *