2019 | 多任务深层神经网络在自然语言理解中的应用

多任务学习( MTL )的灵感来自于人的学习活动,在这种活动中,人们经常应用从以前的任务中学到的知识来帮助学习新的任务。本文提出了一种多任务深度神经网络(MT-DNN),用于跨多种自然语言理解任务的学习表示。MT-DNN不仅利用大量跨任务数据,而且受益于正则化效果,这种效果可以生成更为一般的表示,有助于适应新的任务和领域。

论文地址:
https://arxiv.org/abs/1901.11504

引言

MT-DNN 扩展引入了一个预先训练的双向转换语言模型,称为BERT。MT-DNN在十个自然语言处理任务上取得了state-of-the-art的成果,包括SNLI、SciTail和九个GLUE任务中的八个,将GLUE baseline推至82.2 % (改进1.8 % )。我们还使用SNLI和SciTail数据集证明,与预先训练的BERT表示相比,MT-DNN学习到的表示可以在域内标签数据较少的情况下展现更好的领域适应性。

任务

MT-DNN包括四种类型的NLU任务:单句分类,释义文本分类,文本相似度评分,相关性排序。
单句分类:CoLA任务预测英语句子是否合乎语法,SST-2任务预测电影评论是正向还是负向。
文本相似度评分:STS-B任务预测相似度得分。
释义文本分类:推理句子关系,RET和MNLI是推理句子之间蕴含不蕴含矛盾的关系。QQP和MRPC是预测句子是否语义等价。
相关性排序:给定一个问题和一系列候选答案,模型为所有候选答案进行排序。QNLI是斯坦福问答数据集的一个版本。任务是预测是否候选答案中包含对问题的正确答案。尽管这是一个二选任务,但我们依旧把它当作排序任务,因为这样效果更好。方法是对每一个query和answer进行打分,然后进行softmax。

MT-DNN模型

MT-DNN的体系结构如下图所示。下层在所有任务中共享,而顶层代表特定任务的输出。输入X是一个单词序列(一个句子或一对组合在一起的句子),首先在l1中表示为一系列embedding向量,每个单词对应一个向量。 然后transformer做特征提取器,在l2中生成一系列上下文表示。

Lexicon Encoder(l1): 嵌入层,包含词嵌入、位置嵌入和句段嵌入。第一个token是[CLS],如果有两个句子,则中间加一个[SEP]分隔符。
Transformer Encoder(l2): 通过Transformer的encoder把嵌入向量变成上下文表示。其在不同任务间共享参数。BERT要通过预训练学习表示方法,然后通过微调将其用于其他任务,而MT-DNN使用多任务对象学习其表示。
Single-Sentence Classification Output: 直接用在[CLS]标志位的输出表示句子的语义信息,然后通过一个线性层做出句子分类决策。
Text Similarity Output: 同上,只是最后将通过线性层的数值通过一个sigmoid门,来表示0到1的评分。
Pairwise Text Classification Output: 以NLI任务为例。此类任务数据为一个前题句P,一个假设句H,长度分别为m和n,目的是找出两句之间的关系。输出模块的设计仿照SAN(stochastic answer network)的答案模块。SAN使用多轮推理,而不是给定输入直接预测,它保持一个状态,然后迭代地更新它的预测。
我们先把P的transformer的输出拼接,得到 M P ∈ R d × m M^P\in\mathbb{R}^{d\times{m}} MPRd×m,来作为working memory。对于H的进行同样操作,得到 M h ∈ R d × n M^h\in\mathbb{R}^{d\times{n}} MhRd×n。然后我们在memory上执行k轮的推理来输出预测,k是一个超参数。初始状态 s 0 s^0 s0 M h M^h Mh的加权和:

其中加权和的权重 α j \alpha_j αj由H的自我注意力评分加softmax得到。
经k轮推理后,状态更新为

其中 x k x^k xk从前一步状态 x k − 1 x^{k-1} xk1和memory M P M^P MP中计算: x k = ∑ j β j M j p x^k=\sum_j \beta_j M_j^p xk=jβjMjp β j = s o f t m a x ( s k − 1 W 2 ⊤ M p ) \beta_j=softmax(s^{k-1}W_2^{\top}M^p) βj=softmax(sk1W2Mp)
在每个推理步骤一个单层线性分类器会用做预测,

最后我们平均考虑每层结果:

训练时我们应用随机预测drop在上面的平均操作前。在解码时,我们平均所有输出,来提高鲁棒性。
Relevance Ranking Output:也是用在[CLS]标志位的输出向量通过一个线性层然后sigmoid比大小,大的表示更相关。

训练过程

MT-DNN的训练分为两步,预训练和多任务微调。预训练和BERT一样,用两个无监督任务:语言模型和下句预测。
多任务微调阶段,我们用mini-batch的SGD学习所有参数,如下表所示。每个epoch,一个mini-batch会被选择(9个GLUE任务),然后所有模型都会为任务更新参数。

输出层:损失函数,对分类任务来说,是一个交叉熵。对回归任务来说,是均方差。对排序任务来说,是交叉熵,然后y只有一项为1,所以其他项的式子全部被约去,优化目标就是去减少正确项的-log函数。这里score在做softmax之前有一个微调项系数,但这里设置为1,所以也没影响。

实验

本文评估MT-DNN在三个NLU benchmarks上:GLUE,SNLI,SciTail。

数据集

实验结果


GLUE的结果,MT-DNN在所有任务上都表现的很好,除了WNLI(这个数据集有问题)。主要益处来源于MTL的微调,MTL对于那些只有一点点领域内数据的任务来说尤其有用。

同样在SNLI和SciTail数据集上MT-DNN也表现出了超越BERT的结果。

结论

本文提出了一种多任务学习与语言预训练相结合的语言表征学习模型MT-DNN。MT-DNN在三个流行的基准上获得了10个NLU任务的最好结果。其在域适应实验中也显示出一种特殊的泛化能力。未来依旧有很多地方值得探索,比如更深的结构,更有效的利用数据集间的关系,以及合并语言结构以一种更简洁可控的方式。


2019 | 多任务深层神经网络在自然语言理解中的应用_第1张图片
扫码识别关注,获取更多论文解读

你可能感兴趣的:(2019 | 多任务深层神经网络在自然语言理解中的应用)