Multi-Task Deep Neural Networks for Natural Language Understanding【MT-DNN模型】

背景

机构:微软亚洲研究院 NLP 组与 SDRG(微软雷德蒙德语音对话研究组)
作者:Xiaodong Liu、Pengcheng He
发布地方:arxiv
面向任务:自然语言理解任务(NLU)的学习表示
论文地址:https://arxiv.org/abs/1901.11504
论文代码:https://github.com/namisan/mt-dnn
更多代码版本参见:https://paperswithcode.com/paper/multi-task-deep-neural-networks-for-natural

微软已经在GitHub开源MT-DNN包,其中包含了预训练的模型、源代码,并描述了如何重现MT-DNN论文中报告的结果,以及如何通过domain adaptation使预训练的MT-DNN模型适应任何新任务。

导读

微软新研究提出一个新的多任务深度神经网络模型——MT-DNN。MT-DNN结合了BERT的优点,并在10大自然语言理解任务上超越了BERT,在多个流行的基准测试中创造了新的最先进的结果。

语言嵌入是将自然语言符号文本(如单词、短语和句子)映射到语义向量表示的过程。这是自然语言理解(NLU)深度学习方法的基础。学习对多个NLU任务通用的语言嵌入是非常必要的。

学习语言嵌入有两种流行方法,分别是语言模型预训练多任务学习(MTL)。前者通过利用大量未标记的数据学习通用语言嵌入,但MTL可以有效地利用来自许多相关任务的有监督数据,并通过减轻对特定任务的过度拟合,从正则化效果中获益,从而使学习的嵌入在任务之间具有通用性

最近,微软的研究人员发布了一个用于学习通用语言嵌入的多任务深度神经网络模型——MT-DNN。MT-DNN结合了MTL和BERT的语言模型预训练方法的优点,并在10个NLU任务上超越了BERT,在多个流行的NLU基准测试中创造了新的最先进的结果,包括通用语言理解评估(GLUE)、斯坦福自然语言推理(SNLI)和SciTail。

MT-DNN的架构:MT-DNN扩展了微软在2015年提出的多任务DNN模型(Multi-Task DNN),引入了谷歌AI开发的预训练双向transformer语言模型BERT。

摘要

本文提出了一种多任务深度神经网络 (MT-DNN) ,用于跨多种自然语言理解任务的学习表示。MT-DNN 一方面使用了大量跨任务数据,另一方面得益于正则化效果,这种效果使得学习到的表示具有更强的泛化能力,有助于使用到新的任务和领域。MT-DNN是基于Liu et al.(2015)工作基础上,融合扩展引入了预先训练的双向转换语言模型BERT。MT-DNN在十个**自然语言理解(NLU)**任务上取得了state-of-the-art的成果,包括SNLI、SciTail和GLUE任务中的八个。MT-DNN将GLUE baseline推至82.2 % (提升了1.8 % )。我们还使用SNLI和Sc-iTail数据集证明,与预先训练的BERT表示相比,MT-DNN学习到的表示在特定领域内标签数据较少的情况下展现更好的领域适应性。相关的代码和预先训练好的模型将公之于众(截止目前,2019年5月14号,官方尚未公布。)
介绍

学习文本(eg.词和句子)的向量空间表示,是许多自然语言理解(NLU)任务的基础。两种流行的方法是多任务学习和语言模型的预训练。本文试图通过提出一种新的多任务深度神经网络(MT-DNN)来综合两种方法的优点。

多任务学习( MTL )的灵感来自于人的学习活动。在人类的学习活动中,人们经常应用从以前的任务中学到的知识来帮助学习新的任务。例如,在学习滑冰这件事情上,一个知道如何滑雪的人比什么都不知道的人容易。同样,**联合学习多个(相关)**任务也很有用,这样在一个任务中学习到的知识有益于其他任务。近年来,越来越多的研究人员使用深层神经网络( DNNs )来对MTL任务进行表征学习。 有两个原因。首先,DNNs的监督学习需要大量特定任务的标记数据,这些数据并不总是可用的。MTL提供了一种有效的方法来利用来自许多相关任务的监督数据。第二,多任务学习通过正则化效应,能够减轻对特定任务的过度拟合,使得所学习的表示在任务间更加通用。

与多任务学习不同,语言模型预训练已经被证明对学习通用语言表示很有用,因为这样可以轻易利用大量的无监督文本,比如elmo,gpt和bert。BERT基于多层双向transformer,并在纯文本上进行训练,训练目标是屏蔽单词预测和下句预测任务。为了将预训练好的模型应用于特定的自然语言任务,经常需要使用特定任务的训练数据,通过附加的特定任务层来微调每个任务的模型。BERT可以通过这种方式进行微调,为一系列NLU任务创建最好的模型,例如问答和自然语言推理。

本文认为MTL和预训练语言模型是互补的技术,可以结合起来提高文本表征的学习效果,进而提高各种自然语言处理任务性能的表现。为此,本文扩展了MT-DNN,将BERT作为共享的文本编码层。如图1所示,底层(即文本编码层)在所有任务中共享,而顶层是特定于任务的,结合了不同类型的自然语言理解任务,例如单句分类、成对文本分类、文本相似性和相关性排序。与BERT模型相似,MT-DNN的训练分为两个阶段:预训练和微调。与BERT不同,MT-DNN在微调阶段,在模型架构中用多个特定于任务的层进行MTL。

在GLUE(General Language Understanding Evaluation,通用语言理解评估)基准的9个自然语言理解(NLU)任务中,我们用MT-DNN有刷新了其中8个任务的新记录。将GLUE基准分数提高到82.2 %,比BERT提高了1.8 %。多补充几句,GLUE是九种(英语)语言理解任务的集合,包括文本蕴涵、情感分析和语法判断等。其设计目的是覆盖足够大的NLP领域,以使得只有开发出足够通用的工具,才能在这一基准上表现良好;这样也有助于解决未来可能新遇到的语言理解问题。但是随着模型的不断升级,现在已经对 GLUE 指标进行更新,升级为SuperGLUE。保留了两项 GLUE 任务,另外又加入了其它五项新任务。回到正题,此外本文还将MT-DNN扩展应用到SNLI(Bowman et al.,2015a) 和SciTail((Khot et al., 2018)任务。与预训练的BERT表示相比,MT-DNN学习到的表示对领域内的标注数据量要求更少,因为它有更好的领域适应性。MT-DNN模型在SNLI上的准确率为91.1 %,在SciTail上的准确率为94.1 %,分别比之前最先进的性能高出1.0 %和5.8 %。即使只有0.1%或1.0%的原始训练数据, MT-DNN在SNLI和SciTail数据集上的性能也相当好,远远优于许多现有模型。这些都足以说明MT-DNN结合多任务学习和预训练后其泛化能力得到了大大的提升。


任务

MT-DNN联合处理四种类型NLU任务:单句分类,成对文本(pairwise text)分类,文本相似度打分,相关性排序。举例如下:
单句分类:CoLA任务是预测英语句子是否合乎语法,SST-2任务预测电影评论是正向还是负向。
文本相似度:这是一个回归任务。对于给定的句子对,模型计算二者之间的相似度。在GLUE中只有STS-B这个任务是处理文本相似度。
成对文本分类(文本蕴含):对于给定的句子对,推理两个句子之间的关系。RET和MNLI是语言推理任务,推理句子之间是否存在蕴含关系、矛盾的关系或者中立关系。QQP和MRPC是预测句子是否语义等价。
相关性排序:给定一个问题和一系列候选答案,模型根据问题对所有候选答案进行排序。QNLI是斯坦福问答数据集的一个版本,任务是预测候选答案中是否包含对问题的正确答案。尽管这是一个二分类任务,但我们依旧把它当作排序任务,因为模型重排了候选答案,将正确答案排在更前。


模型介绍

MT-DNN的体系结构如下图1所示。底层在所有任务中共享,顶层代表特定任务的输出(输入X可以是一个句子或一对句子,其中的每个单词都先被表示为一个嵌入向量序列,表示为l_1。然后,基于transformer的编码器捕获每个单词的上下文信息,并在l_2中生成共享的上下文嵌入向量。最后,对于每个任务,额外的 task-specific 的层生成特定于任务的表示,然后是分类、相似度评分或相关性排序所需的操作。MT-DNN使用BERT来初始化它的共享层,然后通过MTL改进它们)。

输入X是一个单词序列(一个句子或一对组合在一起的句子对),首先在l_1中表示为一系列embedding向量,每个单词对应一个向量。然后输入到特征提取器transformer,transformer通过self-attention在l_2中生成一系列上下文表示(语境嵌入序列)。

图 1:表征学习 MT-DNN 模型的架构。下面的网络层在所有任务中都共享,上面的两层是针对特定任务。输入 X(一句话或句子对)首先表征为一个序列的嵌入向量,在 l_1​ 中每个词对应一个向量。然后 Transformer 编码器捕捉每个单词的语境信息并在 l_2中生成共享的语境嵌入向量。最后,针对每个任务,特定任务层生成特定任务的表征,而后是分类、相似性打分、关联排序等必需的操作。

3.1 训练过程

MT-DNN 的训练程序包含两个阶段:预训练和多任务微调。预训练阶段遵循 BERT 模型的方式。lexicon encoder和Transformer encoder参数的学习是通过两个无监督预测任务:掩码语言建模(masked language modeling)和下一句预测(next sentence pre-
diction)。
在多任务微调阶段,我们使用基于minibatch的随机梯度下降(SGD)来学习模型参数(也就是,所有共享层和任务特定层的参数),算法流程如下图所示。每个epoch,选择一个mini-batch b_t(在9个GLUE任务中),再对特定任务k进行模型参数的更新。这近似地优化所有多任务的和。

实验

我们在 GLUE、斯坦福自然语言推理(SNLI)和 SciTail 三个流行的自然语言理解基准上评估了 MT-DNN。对比MT-DNN 与现有的包括 BERT 在内的 SOTA 模型,在 GLUE 上证明了 MTL 进行模型微调的有效性,在 SNLI 和 SciTail 上证明了 MTL 的领域适应性(领域自适应结果:评估语言嵌入的通用性的一种方法是测量嵌入适应新任务的速度,或者需要多少特定于任务的标签才能在新任务上获得不错的结果。越通用的嵌入,它需要的特定于任务的标签就越少。MT-DNN论文的作者将MT-DNN与BERT在领域自适应(domain adaption)方面的表现进行了比较。在域适应方面,两种模型都通过逐步增加域内数据(in-domain data)的大小来适应新的任务。SNLI和SciTail任务的结果如下表和图所示。可以看到,在只有0.1%的域内数据(SNLI中为549个样本,SciTail中为23个样本)的条件下,MT-DNN的准确率超过80%,而BERT的准确率在50%左右,这说明MT-DNN学习的语言嵌入比BERT的更加通用)。

与BERT相比,MT-DNN在SNLI和SciTail数据集上的精度更高。
在GLUE、SNLI和SciTail 3个benchmarks上的结果

 

实验细节

在MT-DNN中采用的是PyTorch版本的BERT,优化器选用的是AdaMax,学习率设置为5e−5,batch size设置为32,epoch数最大设置为5。

实验结果

(1)test数据集

MT-DNN在GLUE中除了WNLI之外的全部任务都超越了已有的系统,获得SOTA结果,并将该benchmark推到了新高度:82.2%,超出了$BERT_{large}1.8

1.8BERT_{large}$在共享层被使用,MT-DNN性能的提升是来自于在微调阶段使用MTL。多任务学习(MTL)对于领域内数据集较少的情况,特别有用。从上表可以看出,对于相同任务,MT-DNN在少数据量时候取得超出BERT的指标。例如对于NLI任务:RTE任务和MNLI任务,再比如对于释义任务:MRPC和QQP。在test数据集上的结果:

在GLUE测试集的结果,MT-DNN在10个任务上的结果均超越了BERT

 

(2)dev数据集

MT-DNN优越的性能也得益于其灵活的模型框架,其框架的灵活性使得其可以方便地引入特定任务的模型框架和训练方法。这些框架和训练方法都已经被研究人员在单一特定任务上做了充分研究,能够被有效地利用起来。文本在此,以2个例子进一步说明。其一是SAN的回答模块被引入到文本蕴含分类任务中,另一个是在QNLI任务(在GLUE中是一个二分类任务)中引入pairwise ranking loss。为了充分证明上述2个模型设计的选择有助于提升MT-DNN,本文设计了不同版本的MT-DNN,并在dev set上进行对比。在dev 数据集上的结果如下:

这里的MT-DNN中的共享层采用的是BERTbaseBERTbase​。对比表3可以看出,在dev set上的结果与表2是一致的。MT-DNN优于BERT。ST-DNN是Single-Task DNN,在模型框架上与MT-DNN保持一致。所不同的是,ST-DNN不在所有任务上所微调,而仅仅在本领域数据集上做微调。如此,就形成了多个ST-DNNs。对于文本蕴含(pairwise text classification )分类任务,ST-DNNs和BERT的唯一区别在于特定任务的输出模块。在MNLI, QQP和MRPC任务上ST-DNNs超越BERT,这也证明了SAN回答模块的有效性。【RTE任务逊色于BERT,这是为什么???
在QNLI上也对比了ST-DNN和BERT,ST-DNN使用pairwise ranking loss进行微调,BERT将QNLI视为一个二分类任务,并在交叉熵损失函数上进行微调。结果ST-DNN远远超过BERT。

新领域的泛化结果

构建实用系统的一个重要标准就是对新任务和领域的快速适应力。收集标注数据是非常昂贵的,我们经常只能有很小的数据集甚至可能没有用以训练的数据集。

为了评估新领域的适用性,基于2个NLI任务数据集:SNLI和SciTail,进行说明。具体操作步骤如下:

    1、微调MT-DNN在八个GLUE任务上(除了WNLI)。
    2、已经已经训练过的MT-DNN,分别训练SNLI和SciTail数据集。
    3、用各自的任务中的test set对模型评估
    对于预训练的BERT也是采用相同的处理流程,针对这2个任务分别构建模型。

MT-DNN和BERT在不同训练样本量下的表现:

上图2对应的具体指标:

从上图可以看出,在训练数据少的情况下,MT-DNN一直比BERT优越。

参考:

(1)https://blog.csdn.net/Magical_Bubble/article/details/89517709

(2)https://blog.csdn.net/ljp1919/article/details/90269059

(3)https://blog.csdn.net/Magical_Bubble/article/details/89524404

(4)https://blog.csdn.net/tMb8Z9Vdm66wH68VX1/article/details/88802234

(5)https://blog.csdn.net/malefactor/article/details/83961886

(6)https://blog.csdn.net/TgqDT3gGaMdkHasLZv/article/details/84332619

(7)https://blog.csdn.net/sinat_26917383/article/details/81913790

发布了103 篇原创文章 · 获赞 399 · 访问量 139万+

猜你喜欢

转载自blog.csdn.net/jdbc/article/details/90735878