一鸣作者

百度夺冠MRQA 2019,包揽测试集10项第一,飞桨加持

今年的MRQA workshop(MRQA 2019)将在自然语言处理领域顶级学术会议EMNLP 2019上举办。本届workshop在Research Track的基础上,设立了一个新的问答阅读理解评测,百度参赛团队于这一测评比赛上夺得了冠军。

2019年8月12日,MRQA2019阅读理解国际评测比赛结束。本届测评中,得益于自研开源深度学习平台飞桨(PaddlePaddle)的强势助攻,百度团队以平均 F1 值 72.55%的成绩夺得本次机器阅读理解测评的冠军,超过了第二名近两个百分点,同时,在全部12个测试数据集中的10个排名第一。据悉,参与本次测评的有苹果公司、艾伦人工智能研究院(AI2)、哈工大讯飞联合实验室、香港科技大学等知名企业和高校研究所。

MRQA是什么比赛?

MRQA 全称 Machine Reading for Question Answering,是一个机器问答阅读理解方面的测评比赛。比赛要求参赛队伍设计一个统一的模型,阅读提供的文本内容,然后回答和阅读内容相关的问题。自去年开始,ACL 以MRQA 为主题设立了相应的workshop,今年则增加了模型测评。

赛题 

和其他仅聚焦单个数据集的阅读理解测评相比,本次测评中参赛队伍面临的挑战更大,主要有以下两点:

1. 本次测评从多种角度考察模型对自然语言的理解能力。测评中包括了18个阅读理解数据集,从来源上,包括专业文本,如维基百科、新闻、教科书、生物医药资料等,但也有较为口语化和日常化的文本输入,如电影、搜索引擎结果、儿童故事和演讲的文本。参赛模型需要适应不同场景下语言的变化。

从应用任务来看,测评不仅选择了面向问答情景设计的数据集,还包含了面向信息抽取和语义解析等任务设计的数据集,模型需要能够适应任务场景的变化。此外,模型的推理能力也会受到考验。本次测评不仅包含了简单的抽取式问答数据集,模型可以直接从文本中抽取出需要的信息,但测评也包含了需要模型根据上下文进行推理和计算的数据集。

如图所示,数据集的来源、面向的任务场景和模型的理解形式都各有不同。

从赛题的难度来看,这样的测评会全方面的考验模型在不同语境、语言形式、任务场景和理解能力方面的表现,几乎是「十项全能赛」了。

2. 也许主办方认为以上的要求还不够苛刻,他们在这样的基础上进一步提升了赛题的难度。本次测评时,主办方要求参赛队伍只能使用18个数据集中指定的6个数据集进行训练,而测试则是在剩余的12个数据集上进行的,其中6个数据集是参赛队伍从未见过的。这样需要模型具有很强的泛化能力。

图注:SQuAD 1.0数据集,是MRQA测评中的一个训练数据集。 

图注:DuoRC数据集,是一个测试集。和SQuAD数据集不同,这一数据集有着词汇重叠更低文本和需要机器进行进一步推理的问题。

此外,训练集和测试集有很大的差异。虽然前文提到,本次赛题使用的数据集类型是多种多样的,但是指定的训练集却非常单一——他们基本上都是较为正式的文本,面向的都是问答任务。而在测试阶段,参赛队伍需要将训练好的模型在其余12个数据集上进行测试,剩余的数据集则差异很大,明显的任务都不同,而且有些数据集是参赛者完全不知道的。这样的测试极大的考验着模型的泛化能力,需要模型对未知的数据进行准确地预测。

虽然测评条件如此苛刻,但百度团队依然取得了最佳的平均成绩,并在12个数据集中的10个碾压了所有对手。这样的模型是怎样实现的呢?

百度的技术创新

在比赛中,为了提升模型的泛化能力,使其能够适应多种语境、多任务场景,百度参赛团队在模型设计上进行了多种创新。

预训练模型提升泛化能力

D(ecathlon)-NET 的架构。

从模型架构上来看,百度采用了现在最为流行的「预训练-微调」方法训练了参赛的问答模型。目前预训练-微调方法已经是自然语言处理领域一种被广泛采用的学习范式。首先,需要构建一个预训练语言模型,用于学习自然语言中丰富的表征信息。当预训练语言模型训练完毕后,即可将模型用于特定的自然语言任务中,并进行模型微调,使其达到最佳性能。

在D-NET中,使用了多个预训练语言模型提升模型的泛化能力,每个预训练模型都从不同角度、不同语料中学习到丰富的语言表征。这样一来,即使某个预训练语言模型未能学习到的表征也可以被其他模型所弥补,因此进一步提升了模型的泛化性能。

多领域的预训练数据

和以往仅预训练一次不同,在微调之前,百度团队引入了更多领域数据,对模型进行了进一步的预训练。由于不同领域的语言学特征、词汇分布、句法结构等存在很大的差异,在大量通用数据集上预训练的语言模型不一定在特定语境下表现更好,因此,D-NET中的各个预训练语言模型还会进一步在特定领域的语料上进行二次预训练,从而提升模型在不同语境中的泛化能力,这样也可以弥补赛题中训练集不足,无法将从训练集中学习到的表征泛化到测试集上的问题。

当模型预训练完成后,就可以输入比赛提供的训练集,进行模型的微调了。

多任务微调学习

在微调阶段,团队基于飞桨框架让模型进行了多任务学习,从而近一步提升模型学习到的语言表征能力,达到提升模型泛化能力的目的。

多任务学习是指:让模型同时学习多个任务的数据,最终学习到一个统一的表示,可以在给定的多个任务中都适用。具体的,多任务学习首先会训练一个共享的表示层。当学习到了任务数据的表示后,模型增加私有层,在特定任务上进一步增强模型表现。通过多任务学习到的表示层,因为适应到了多种任务,因此其具有更好的泛化能力。

同时,在多任务学习的过程中,百度利用了其他非问答类的自然语言处理数据集,包括一些自然语言推断和段落排序等方面的数据集,用于提升问答效果。最后,在微调过程还引入了防止灾难性遗忘的机制。 

知识蒸馏形成统一模型

由于D-NET集成了多个预训练语言模型,且单个模型的参数量已足够庞大,因此整体模型在推断过程中无法满足本次评测对系统速度的要求。为了提升预测速度,团队采用了知识蒸馏的方法,将所有的预训练模型融合为一个知识蒸馏模型,从而实现了模型轻量化的目标。 

知识蒸馏是一种将知识从「教师」模型迁移到「学生」模型的方法,其执行方式为训练学生模型模仿教师模型的预测。在D-NET中,团队将多个预训练语言模型进行模型集成,从而获得优于单个模型的预测能力。有趣的是,给定这样一个强大的算法集成,往往可以找到一个更简单的模型(至少不比集成模型更复杂)来仿效此集成并实现接近的效果。

由于之前已有多个预训练模型进行了大量的一般语料、特定语料和多任务学习,每一个模型都具有很好的性能,因此知识蒸馏后的单一模型会学习到所有模型的知识,表现出接近其他多个「教师」模型的效果。

从结果上来说,百度提出的D-NET框架训练出了高性能、泛化能力强、适应多任务、适应多领域语境、轻量化的模型。因此,在MRQA测评中夺得了冠军。

比赛结果

本次测评的结果。

从测评结果来看,百度的结果是最好的,超越了其他企业和研究机构的模型结果。

夺冠意义

能够在条件苛刻,高手如林的MRQA2019比赛中夺冠,足以说明百度在这一领域的技术积累。机器阅读理解是构建文档和对话系统的关键技术之一,在语音助手、智能客服、搜索问答等领域均有广泛应用。目前,百度的机器阅读理解技术已经广泛应用于各类产品和应用中,包括搜索业务、小度音箱等。

 从技术角度而言,百度提出的D-NET框架融合了目前综合性能最好的多种预训练语言模型,提出了在多个任务上对预训练语言模型进行训练,使其适应了多个任务场景。最后,使用知识蒸馏的方式,不仅获得了多个预训练语言模型最强大的性能优势,还减少了模型的参数量,因此从研究上可以启发很多关于多任务预训练模型学习相关的研究。

飞桨在大赛中的作用

 据百度方面提供的资料,D-NET模型是完全基于飞桨深度学习框架搭建、训练、微调的。能够实现这样的结果,离不开百度自研深度学习框架飞桨的支持。飞桨在比赛中起到了以下作用:

丰富的预训练语言模型库和多任务学习

D-NET是建立在多个预训练语言模型的基础上的,因此需要大量的预训练语言模型库作为模型支撑。飞桨本身自带丰富且性能优秀的预训练模型库,方便开发者仅使用几行代码,即可调用各种预训练模型。正是得益于飞桨中的多种预训练模型库,D-NET融合了各种预训练模型的优势,获得了更好的效果。

项目地址:https://github.com/PaddlePaddle/models/tree/v1.5.1/PaddleNLP

 此外,飞桨还提供了灵活高效的多任务学习算法库PALM(PAddLe Multi-task,预计在Paddle Fluid 1.6版本中开源),这一多任务学习库可以让用户只使用少量的代码,让模型同时学习多种自然语言处理任务,使得模型从不同类型任务中学习到的知识相互融合,提升模型在多种任务上的泛化能力。

大规模分布式训练框架 

由于MRQA 2019阅读理解比赛需要处理18个数据集,其所需的数据规模较大。而飞桨提供了高性能分布式训练框架,可以让开发者简单快速地将模型在数百节点上进行分布式学习。 

分布式训练框架结构。

为了克服多节点通信的性能瓶颈,飞桨在梯度压缩、动态混合精度训练、梯度同步算法等方面进行了优化,使得训练大规模复杂模型的多机加速比提高至77%,极大地缩短了MRQA2019评测策略调研的周期,提高了实验的效率。

项目地址:https://github.com/PaddlePaddle/Fleet

高性能预测引擎和模型压缩库

为了提升模型在推断方面的性能和运行速度,飞桨提供了PaddleSlim,实现了目前主流的网络量化、剪枝、蒸馏三种压缩策略,并可快速配置多种压缩策略组合使用。在保持已有精度的前提下将网络压缩到非常简单的结构中,从而提升了预测速度并减少了资源消耗。

项目地址:https://github.com/PaddlePaddle/models/tree/v1.5.1/PaddleSlim 

PaddleSlim的实现逻辑和API。模型压缩工具封装好了模型训练逻辑,用户只需要提供训练模型需要的网络结构、数据、优化策略等即可完成压缩。

机器阅读理解任务,是衡量机器理解人类语言综合水平的重要方式。MRQA阅读量理解评测取得的进展,将有力推动机器阅读理解技术的发展。同时在产业中,机器阅读理解是构建问答和对话系统的关键技术之一。百度机器阅读理解技术已广泛应用于百度内外,包括搜索、小度音箱等一系列产品中,为数亿用户提供精准问答。

参考链接

官网地址:https://www.paddlepaddle.org.cn

更多示例与Benchmark请参考项目地址:

https://github.com/PaddlePaddle/Paddle

理论MRQA预训练语言模型多任务学习知识蒸馏
1
相关数据
对话系统技术

对话系统大致被分成两类: 任务为导向的对话系统,帮助用户去完成特定任务,比如找商品,订住宿,订餐厅等。实现任务为导向的对话系统,主要有两类方式,流水线方法和端到端方法。非任务导向的对话系统,与用户进行互动并提供回答,简单的说,就是在开放领域的闲聊。实现非任务导向对话系统也主要可分为两类,生成方法和基于检索的方法。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

知识蒸馏技术

Hinton 的工作引入了知识蒸馏压缩框架,即通过遵循“学生-教师”的范式减少深度网络的训练量,这种“学生-教师”的范式,即通过软化“教师”的输出而惩罚“学生”。为了完成这一点,学生学要训练以预测教师的输出,即真实的分类标签。这种方法十分简单,但它同样在各种图像分类任务中表现出较好的结果。

多任务学习技术

信息抽取技术

信息/数据抽取是指从非结构化或半结构化文档中提取结构化信息的技术。信息抽取有两部分:命名实体识别(目标是识别和分类真实世界里的知名实体)和关系提取(目标是提取实体之间的语义关系)。概率模型/分类器可以帮助实现这些任务。

推荐文章
暂无评论
暂无评论~