Multi-Task Deep Neural Networks for Natural Language Understanding的理解

         今天分享的这篇论文是最近微软提出一个新的多任务深度神经网络模型——MT-DNN。MT-DNN结合了多任务学习和BERT的优点,并在10大自然语言理解任务上超越了BERT。

        首先,学习文本的向量表示(语言嵌入)是许多自然语言理解任务的基础,因为该过程是由自然语言文本到语义向量表示的转化。目前,获得向量表示的方式有两种,一种是多任务学习,另一种是语言模型预训练。

        多任务学习是一种归纳迁移机制,基本目标是提高泛化性能。多任务学习通过相关任务训练信号中的领域特定信息来提高泛化能力,利用共享表示采用并行训练的方法学习多个任务(Rich Caruana. 1997. Multitask learning)。简单来说,多任务学习就是在各个任务具有相关性时,同时学习多个任务,来提高单任务学习的效果。最近,人们越来越关注将MTL应用于使用深度神经网络(DNN)的表示学习。两个原因。首先,DNN的监督学习需要大量特定于任务的标记数据,这些数据并不总是可用的。MTL提供了一种有效的方法来利用来自许多相关任务的监督数据。其次,多任务学习的使用通过减轻对特定任务的过度拟合从正规化效应中获益,从而使得学习的表示在任务中是通用的。共享Hard参数是神经网络MTL最常用的方法。在实际应用中,通常通过在所有任务之间共享隐藏层,同时保留几个特定任务的输出层来实现。如下图,采用共享的隐藏层,既减少了计算量,又减轻了单任务学习的过拟合。在NLU中,可以将文本的向量表示作为共享的隐藏层。

Multi-Task Deep Neural Networks for Natural Language Understanding的理解_第1张图片

        语言模型预训练是通过大量未标记的数据来学习通用的文本向量表示。例如bert模型是首先用大量未标记数据以掩蔽字预测和下一句子预测任务来训练语言模型,生成通用的文本向量表示,然后再根据具体任务对模型进行微调。

        本论文就是想将二者结合起来,改进文本表示的学习,以提高各种NLU任务的性能。本文提出的MT-DNN就是将bert的文本编码层作为底层共享层,上面接各种不同的任务。和bert一样,分两阶段训练:预训练和微调,与bert不同的是进行多任务微调。

        作者仿照GLUE基准将10个自然语言理解任务做了分类及定义:

(1)单句分类(2)文本相似性(3)成对文本分类(文本之间关系:蕴含、中立或矛盾)(4)相关性排名

        然后给出了MT-DNN的整体模型,如下图:主要分两部分,下面是共享层,包括两层编码层,上面接4种不同的任务。下面将具体讨论每一部分的工作。

Multi-Task Deep Neural Networks for Natural Language Understanding的理解_第2张图片

(一)预训练

(1)词典编码(l1)

        输入X是一句话或文本对,和bert输入类似,第一个token放[CLS](每句话的第一个token总是[CLS],对应它的最终的hidden state(即Transformer的输出)用来表征整个句子,可以用于下游的分类任务),文本对用[SEP]分割。词典编码将X映射到嵌入向量,每一个token有词向量、段向量和位置向量求和而成。

(2)Transformer 编码(l2)

         Transformer 编码将上一层的输出l1通过self-attention捕捉到上下文信息,生成文本的上下文向量l2,作为不同任务的共享表示。

(二)微调

(1)文本分类输出

        其中,x是[CLS]在l2中所对应的向量(cls对应它的最终的hidden state,用来表征整个句子),c是类别标签,W是模型参数。输出就是条件概率。

(2)文本相似性输出

        其中g代表sigmoid函数

(3)相关性排名输出

(4)成对文本分类输出

        输出模块仿照SAN模型(目前最好的自然语言推理模型),SAN(随机应答网络)的主要思想是使用多步预测,而不是直接给出关系,他需要维持一个状态并迭代地改进其预测。其工作流程如下:

Multi-Task Deep Neural Networks for Natural Language Understanding的理解_第3张图片

        总结下训练过程:

MT-DNN的训练过程包括两步:预训练和多任务微调。预训练过程和bert模型一致。l1和l2的参数学习还是基于两个非监督预测任务:遮盖语言模型核查下一句预测。

实验

        在三个NLU基准做了实验:GLUE、SNLI和SciTail,比较了MT-DNN和包括Bert在内的最好的模型。在GLUE上表明了基于多任务微调的有效性,在SNLI和SciTail证明了领域适应性(详细见下文)

        该表是所有的数据集,第一列代表数据集名,前九个是在GLUE的,后两个分别是SNLI和SciTail;以后几列分别代表任务、训练集、验证集、测试集、标签数和评价指标,同时按照之前的GLUE基准将这些数据集分到四种不同的任务中。

Multi-Task Deep Neural Networks for Natural Language Understanding的理解_第4张图片

        GLUE的测试结果如下表所示。除了WNLI(数据集本身存在问题)之外,MT-DNN在所有任务上都优于所有现有系统。由于MT-DNN和BERT的唯一不同是MTL,所以可以说明MTL的有效性;同时通过观察实验结果可以发现,对于具有较少域内训练数据的任务,对BERT的改进更为重要,例如两个NLI任务:RTE与MNLI以及两个释义任务: MRPC与QQP。

Multi-Task Deep Neural Networks for Natural Language Understanding的理解_第5张图片

        MT-DNN的框架很灵活,我们可以将在单任务环境中已经被证明的有效的模型结构和训练方法加进来,比如在本文中提出的成对文本分类输出模块SAN应答模块以及QNLI任务的成对等级损失(原GLUE看成二分类问题)。为了证明以上两种设计的有效性,进行了如下表的第二个实验,该实验比较了三种模型,分别是Bert base、我们提出的MT-DNN以及ST-DNN,ST-DNN采用和MT-DNN相同的架构,但是,我们不是使用多任务微调,而是创建多个ST-DNN,每个任务仅使用其域内数据进行微调。因此,ST-DNN和BERT模型之间的唯一区别是特定任务输出模块的设计。实验结果显示,四个任务中的三个(MNLI,QQP和MRPC),ST-DNN优于BERT,证明了SAN应答模块的有效性;同时在QNLI上,STDNN使用成对排名损失进行微调,但BERT将QNLI视为二分类问题,并使用交叉熵损失进行微调,ST-DNN明显优于BERT。

Multi-Task Deep Neural Networks for Natural Language Understanding的理解_第6张图片

        接下来是第二组实验,第一个实验是用SNLI和SciTail各自域内数据进行了试验,下表显示结果都有提升。

Multi-Task Deep Neural Networks for Natural Language Understanding的理解_第7张图片

        第二个实验主要证明MT-DNN能够满足域适应性,域适应性,简单来说,就是我们构架的模型在训练数据较少的新任务中仍然能取得不错的效果,本文将SNLI和SciTail执行域自适应实验。步骤为:首先在8个GLUE任务上微调MT-DNN模型,不包括WNLI; 然后通过使用特定任务的训练数据调整MT-DNN,为每个新任务(SNLI或SciTail)创建特定任务模型; 最后使用特定任务的测试数据评估模型。将MT-DNN与Bert进行了比较,随机抽取其训练数据的0.1%,1%,10%和100%进行训练,实验结果如下,通过观察,MT-DNN在每段都由于Bert。

Multi-Task Deep Neural Networks for Natural Language Understanding的理解_第8张图片

总结

        在这项工作中,我们提出了一个名为MT-DNN的模型,将多任务学习和语言模型预训练结合起来用于语言表征学习。 MT-DNN在三个流行的基准测试中获得了10个NLU任务的最新结果:SNLI,SciTail和GLUE。 MT-DNN还展示了领域适应性实验中的特殊泛化能力。未来有许多领域需要探索以改进MT-DNN,包括更深入地了解MTL中的模型结构共享,这是一种利用多个任务之间相关性的更有效的训练方法, 以及以更明确和可控的方式结合文本的语言结构的方法。

你可能感兴趣的:(NLP)