论文笔记 --《Unified Language Model Pre-training for Natural Language Understanding a

1,060 阅读5分钟

来源: NeurIPS 2019
关键词:预训练模型,NLG


1.背景及问题描述

本文提出了一个专门为NLU和NLG准备的预训练语言模型,这个模型的训练使用三种语言模型任务。这个模型在NLG任务上面提升特别大,比如在CNN/DailyMail数据集上,ROUGE-L达到了40.51,比之前的SOTA提升了两个点。

2.已有的解决方案

预训练语言模型的出现大大提升了各种NLP任务的基准,比如ELMo,它通过两个单向的语言模型来训练,一个从左到右,一个从右到左。GPT,使用单向的Transformer,配合大量的高质量数据集,也取得了很好的效果。BERT,是通过随机遮盖掉token,然后使用左右的语境来预测它的方式来实现双向的语言模型,但是这种双向的策略天生是不适合NLG任务的。

3.解决方案概述

模型结构

UNILM的主干还是跟BERT一样,使用多层Transformer,语言模型实现的思路也与BERT一样,通过预测mask的token来训练模型。只是UNILM引入了多种任务的思路来学习更好的模型。

  1. Input Representation 模型的输入是一个序列,根据不同的LM任务,可能是一个segment,也有可能是一对segment。添加[SOS]作文序列开头,[EOS]作为每个序列的结尾。[EOS]不仅是序列的结尾标志,也是NLG任务结束decode的标志。模型的输入,每个位置是由三个embedding组成:WordPiece得到的token embedding,position embedding还有segment embedding。因为UNILM使用多种LM,所以segment embedding也可以用来区分不同的LM类型。

  2. 主干:Multi-Layer Transformer 2020-12-16 18-32-46屏幕截图.png-23.8kB 这里使用mask矩阵来看控制语言模型的方向,Left-to-Right LM为例子,在预测某个位置token时,只使用他前面的位置以及他自己的向量来计算概率。实现起来,可以将mask矩阵对角线上面的全部设置为负无穷大,这样经过softmax计算出来的attention AlA_l为0,也就是不考虑后面的位置的向量。

  3. 预训练目标 UNILM的预训练使用四种阅读理解任务,即随机用 [MASK]替换token,然后使用Transformer计算得到的[MASK]周边的向量来预测这个位置的token,使用softmax来计算词典中词的分布概率,最后最小化cross-entropy loss。 UNILM使用的四种语言模型如下:

  • Unidirectional LM,单向语言模型,使用mask矩阵来实现。
  • Bidirectional LM, 与BERT一样,mask矩阵都设置为0来实现。
  • Sequence-to-Sequence LM,在这个任务中,需要一对segment,一个作为source,一个作为target,仍然是随机的在两个segment上用 [MASK]替换token。不同之处,sorce中的[MASK]是用双向的语境来预测,而target中的[MASK]只能用前面位置和它自己,包括source,的语境来预测。mask矩阵的设置如上图所示,source都设置为0,下面target对应的位置,在s2s2s_2-s_2部分上半部分设置为负无穷。在这种训练模式中,因为source和target是看作一个连续的序列,这样设计可以让模型隐形的学习到两个segment的一些关系信息,为了更好的预测taget中的token,模型会学习如何有效的利用source中的信息。所以,这种Sequence-to-Sequence LM,可以同时预训练双向encoder和单向encoder,这也是此模型为什么适合做文本生成任务(condition text generation)的原因。
  • Next Sentence Prediction, 与BERT一样的。
  1. Pre-training Setup UNILM模型使用BERTlargeBERT_{large}为基础训练,在一个训练batch中,采用LM+NSP的模式训练,其中LM轮流训练使用上面三种模式。详细来说,1/3时间使用Bidirectional LM,1/3时间使用equence-to-Sequence LM,1/6时间使用从左到右的Unidirectional LM,1/6时间使用从右到左的Unidirectional LM 。Mask策略几乎与BERT一样,有一点不同,80%随机mask一个token,20%mask 两个token或者三个token(bigram,trigram)。

  2. Fine-tuning 对于NLG任务的微调,对于输入,构造形如 *"[SOS] source [EOS] target [EOS]"*的序列,只随机mask掉target中的token,然后让模型来预测被mask位置的token。 因为[EOS]标志也可能被mask掉,所以在encode阶段,遇到 [EOS],就是结束标志。

4.结果分析

  1. 在NLG类任务上表现提升明显 1 2 3 4

上面图1是文本摘要任务;图2和图3是Extractive QA问题,需要从文章中找到正确答案; 图4是问题生成任务(Question Generation),是个典型的sequence-to-sequence问题,输入序列的source是message和答案,target是生成的问题。本模型也取的了SOTA的结果。

5.创新点或贡献

  1. 本文的UNILM模型,使用同一个多层Transformer语言模型,多个LM任务共享参数,训练效果更好。
  2. “共享参数”的设计可以让模型学习到更一般的文本表征,因为UNILM模型是使用不同的语言模型目标来交叉训练,以多种方式来学习语境知识,可以有效的避免在单一LM的过拟合问题
  3. 因为UNILM使用了seq_2_seq语言模型,所以天生适合做NLG任务。

6.个人思考

  1. 这篇2019年的文章,正是预训练语言模型大火的阶段,本文的模型通过引入三种语言模型来训练,并通过mask掩码矩阵轻松实现,其中特别是单向语言模型+ seq_2_seq语言模型的结合,让模型非常适合做NLG相关的任务。