今天,百度 ERNIE 再升级,发布持续学习语义理解框架 ERNIE 2.0,同时借助飞桨高效分布式训练优势发布了基于此框架的 ERNIE 2.0 预训练模型。该模型在共计 16 个中英文任务上超越了 BERT 和 XLNet,取得了 SOTA 效果。
近两年,以 BERT、XLNet 为代表的无监督预训练技术在多个自然语言处理任务上取得了技术突破。基于大规模数据的无监督预训练技术在自然语言处理领域变得至关重要。
百度发现,之前的工作主要通过词或句子的共现信号,构建语言模型任务进行模型预训练。例如,BERT 通过掩码语言模型和下一句预测任务进行预训练。XLNet 构建了全排列的语言模型,并通过自回归的方式进行预训练。
然而,除了语言共现信息之外,语料中还包含词法、语法、语义等更多有价值的信息。例如,人名、地名、机构名等词语概念知识,句子间顺序和距离关系等结构知识,文本语义相似度和语言逻辑关系等语义知识。那么如果持续地学习各类任务,模型的效果能否进一步提升?这就是 ERNIE 2.0 希望探索的。
ERNIE 2.0 新一代升级
之前机器之心就曾介绍过百度开源的 ERNIE 1.0,今天百度也开源了 ERNIE 2.0 的 Fine-tuning 代码和英文预训练模型。那么相比 1.0,ERNIE 2.0 的升级包括哪些方面呢?
ERNIE 2.0 开源地址:https://github.com/PaddlePaddle/ERNIE
具体而言:
BERT、XLNet 等主流方法都强调通过强力的 Transformer 直接构建语言模型,而 ERNIE 2.0 通过多任务预训练的方法加强模型学到的语言知识。
ERNIE 2.0 通过增量学习的方式更新,也就是说可以通过自定义的 NLP 任务微调已训练模型,加强预训练效果。
ERNIE 2.0 模型在英语任务上很多都优于 BERT 和 XLNet,在 7 个 GLUE 任务上取得了最好的结果;中文任务上,ERNIE 2.0 模型在所有 9 个中文 NLP 任务上全面优于 BERT。
当然这只是更新主要体现的方面,还有很多核心思想、调优技巧都隐藏在模型中。下面就让我们看看 ERNIE 2.0 的主要思想及具体结构都是什么样的吧。
ERNIE 2.0 是什么
如前所述,文本中还有很多非常有价值的信息,为此百度提出持续学习语义理解框架 ERNIE 2.0。该框架支持增量引入不同角度的自定义预训练任务,以捕捉语料中词法、语法、语义等信息。这些任务通过多任务学习对模型进行训练更新,每当引入新任务时,该框架可在学习该任务的同时,不遗忘之前学到过的信息。
ERNIE 2.0 论文地址:https://arxiv.org/pdf/1907.12412v1.pdf
ERNIE 框架支持随时引入各种自定义任务,这些任务共享相同的编码网络并通过多任务学习实现训练。这种多任务学习的方法使得不同任务中词汇、句法和语义信息的编码能共同学习。此外,当我们给出新的任务时,ERNIE 2.0 框架可以根据先前预训练的权重增量地学习分布式表征。
如下原论文图 1 所示,ERNIE 2.0 框架是基于预训练/微调架构构建的,这种架构在 NLP 中非常流行。ERNIE 2.0 与 BERT 或 XLNet 等经典预训练方法的不同之处在于,它并不是在少量的预训练任务上完成的,而是通过不断引入大量预训练任务,从而帮助模型高效地学习词汇、句法和语义表征。
此外重要的是,ERNIE 2.0 框架能通过多任务学习持续更新预训练模型,这也就是「连续预训练」的含义。在每一次微调中,ERNIE 会首先初始化已经预训练的权重,然后再使用具体任务的数据微调模型。
图 1:ERNIE 2.0 框架,如上所示 ERNIE 2.0 可以序列地学习不同的任务,并通过微调适应各种新的自然语言理解任务。
注意其中的连续预训练过程,它可以分为两个步骤,即构建无监督预训练任务和通过多任务学习增量地更新 ERNIE 模型。这里不同的任务是一个序列,因此模型在学习新任务时能记住已经学到过的知识。
如下图 2 所示为连续预训练的架构,它包含一系列共享的文本编码层来编码上下文信息,这些文本编码层可以通过循环神经网络或 Transformer 构建,且编码器的参数能通过所有预训练任务更新。
图 2:ERNIE 2.0 中多任务预训练的架构。
最后,为了验证上面这种预训练方式的有效性,百度的研究者通过一系列无监督自然语言处理任务构建预训练模型。如下图 3 所示为 ERNIE 2.0 具体模型结构,我们可以看到它主要包含三类预训练任务。其中 word-aware 任务将教会模型捕捉词汇层面的信息,structure-aware 任务将教会模型捕捉句法层面的信息,semantic-aware 任务则负责提供语义方面的信息了。
图 3:ERNIE 2.0 模型的具体结构,其采用的 7 个任务都可以分到三大类中。
值得注意的是,相比 BERT 等模型,ERNIE 2.0 会带有一个任务嵌入,这个嵌入对于不同的任务都是唯一的,因此在精调的过程中模型能清楚地知道目前预训练的任务到底是什么。
因此,依托该框架的 ERNIE 2.0 预训练模型不仅实现了 SOTA 效果,而且为开发人员定制自己的 NLP 模型提供了方案。
ERNIE 2.0 效果怎么样
百度研究者分别比较了 ERNIE 2.0 和当前最优预训练模型在中英文任务上的性能。英文任务中,ERNIE 2.0 在自然语言理解数据集 GLUE 的 7 个任务上击败了 BERT 和 XLNet。中文上,ERNIE 2.0 在阅读理解、情感分析、问答等不同类型的 9 个数据集上超越了 BERT,并刷新了 SOTA。
为了方便与 BERT 进行对比,百度研究者使用与 BERT 相同的 transformer 模型设置。ERNIE 2.0 base 模型使用 48 块英伟达 v100 GPU,large 模型使用了 64 块英伟达 v100 GPU。ERNIE 2.0 在百度深度学习框架 PaddlePaddle 中实现。
数据
模型训练所用英文数据是维基百科和 BookCorpus,另有一部分来自 Reddit,此外,百度使用 Discovery 数据作为篇章关系数据。而中文数据则包括来自百度搜索引擎的百科、新闻、对话、信息检索和篇章关系数据。具体数据统计情况见下表:
ERNIE 2.0 在英文任务上的性能
ERNIE 2.0 模型在 GLUE 数据集上的性能如下表所示。我们可以从表中看到,ERNIE 2.0_BASE 模型在全部 10 项任务中的性能均超越 BERT_BASE,得到了 80.6 的分数。
ERNIE 2.0_LARGE 在除 MNLI-m 以外的其他任务中的性能均超过 BERT_LARGE 和 XLNet_LARGE。而 ERNIE 2.0LARGE 在全部任务测试集上的性能均超过 BERT_LARGE,得到了 83.6 的分数,比之前的 SOTA 模型 BERT_LARGE 提升了 3.1%。
表 6:模型在 GLUE 上的结果,其中开发集上的结果是五次实验结果的中位数,测试集结果是通过 GLUE 评估服务完成的。
ERNIE 2.0 在中文任务上的性能
研究者在 9 个中文 NLP 任务上进行了大量实验,这些任务包括机器阅读理解、命名实体识别、自然语言推断、语义相似度、语义分析和问答。
那么具体效果如何呢?下表展示了 ERNIE 2.0 等模型在这些中文任务上的性能。
表 7:模型在 9 项常规中文 NLP 任务中的结果。模型结果均为五次实验结果的中位数,粗体字表示 SOTA 结果。
ERNIE 2.0 在全部 9 项任务上的性能均超越 BERT_BASE,且 ERNIE 2.0_LARGE 在这些中文任务上获得了最优性能,创造了新的 SOTA 结果。