UNILM 统一预训练模型 v1.0

这篇paper是研究生读的第一篇,过了蛮久了,因为准备重新写博客,所以拿出来回顾一下

之前还给这篇做了PPT,paper名字是Unified Language Model Pre-training for Natural Language Understanding and Generation ,可以翻译成用作NLU和NLG的统一预训练模型,这篇论文是2019年发表的在NLP领域有些成就的一篇文章。

0、Abstract

本文介绍了一种可同时被NLU和NLG任务微调的预训练模型,使用了三种不用的语言建模任务来完成预训练:单向、双向、seq-to-seq预测,使用了一个共享的Transfomer网络和利用了特定的自注意力mask去控制预测所需的上下文信息。并顺利地和BERT在GLUE基准、SquAD2.0、CoQA上进行了对比,UNILM在5种自然语言生成任务上达到了state-of-the-art。

 

1、Introduction

语言模型预训练在很多NLP任务中取得了最优秀的成绩,能够从大量文本数据中通过上下文来预测当前词的方式 学习到语境化的文本表示,而且可以进行微调之后应用到下流任务中。

不同的类型的预训练语言模型会用在不同的预测任务和训练目标上,ELMO回学习到两个单向的LMs:从左到右和从右到左,GPT使用一个从左到右的Transfomer来预测一个文本序列word-by-word。相反BERT使用的是双向的Transfomer编码器来融合上文和下文信息去预测mask。尽管BERT提高了大量NLU任务的表现能力,但是其天然的双向性使其很难应用在NLG问题上。

UNILM 统一预训练模型 v1.0

本文介绍了一种可同时被NLU和NLG任务微调的预训练模型,使用了一个多层的Transfomer网络,同时以三种非监督语言建模为目标来实现共同优化,特别的是,我们设计了一系列的完形填空任务(根据masked word的上下文来预测masked word),每种完形填空任务的不同是因为每种任务的上下文不一样,比如从左到右的LM,上下文是本身和左边的,seq-to-seq的LM的target的上下文是source的所有和target中本身加其左边的

和BERT很像,UNILM也可以进行微调之后介入到下流任务中(需要的话可以增加一个额外的与特定任务相关的层),但不像BERT大多数只用在NLU问题上,UNILM使用不同的自注意力mask,去融合不同语言模型的上下文,所有可以用到NLU和NLG

UNILM的提出有三个主要的优点:

【1】 统一的预训练流程,使得仅仅使用一个单独的Transformer LM即可。该Transformer模型在不同的LM上共享参数,这就无需在多个LM上分别训练和配置。

【2】多个LM之间的参数共享使得学习到的文本表征具有更强的泛化能力。在不同的语言模型目标上联合优化减缓了在单一LM上的过拟合。

【3】除了可以应用到NLU任务上,本文模型还能够作为一个sequence-to-sequence LM来处理NLG任务,如摘要生成和问题生成。

实验结果表明我们的模型使用双向的encoder,顺利地和BERT在GLUE基准、SquAD2.0、CoQA上进行了对比。另外,使用seq-to-seq模型在5种自然语言生成任务上达到了state-of-the-art。

 

2、Unified Language Model Pre-trainging

给定一个输入序列x1..xn,UNILM会为每一个token获得语境化的向量表示,如下图所示,预训练关于不同的非监督语言建模目标会优化了一个共享参数的Transformer,为了控制上下文的信息,会使用不同的self-attention mask ,换句话说,当计算语境化的词表示时,我们会使用不用的mask来控制有多少上下文信息是可以访问的,一旦UNILM被训练好,就可以使用特定任务相关的数据对其进行微调使其接入到下流任务中。

2.1输入表征

输入x是一个词序列,我们会在每一个segment的开头增加【SOS】头,会在segment的end增加一个【EOS】,后者不仅可以用作NLU问题中标记每个句子的边界,还可以在NLG问题中去学习什么时候该终止生成输出。UNILM的输入表征遵循BERT,文本通过WordPiece方法被tokenized为subword units,针对每一个输入token,其输入表征可以被token embedding、position embedding、segment embedding三者相加而得,因为UNILM被训练时使用了多种LM任务,segment embedding 也扮演了LM 标识符的角色,因为针对不同的LM目标,我们会使用不同的segment embedding

2.2 主干网络:多层Transformer

输入向量{xi}被封装成H0={xi},接着因为H_r=Transformer_r(H_r-1),所以就可以抽象成H_r=[xi_r],r在【1,L】之间,每一个Transformer块中,有多个自注意力头被用去融合前一个层的输出向量,对于第l层的Transformer,一个自注意力头Al的输出可以这样被计算:

UNILM 统一预训练模型 v1.0

前一个层的输出H_l-1的被三个不同的参数矩阵Wq Wk Wv线性投影到一个三元组(queries keys values),另外矩阵M决定了一对token是否能访问彼此。

当计算token的上下文表示时,我们使用不同的矩阵M去控制一个token能够访问的上下文。拿双向的LM做例子,矩阵M全为0,即每一个Token都可以访问所有token

2.3 预训练目标

我们使用四个完形填空任务预训练UNILM,在一个填空任务中,我哦们随机选择输入的一个WordPiece token,并用【MASK】取代。接着,我们讲Transformer计算得到的相应的输出向量送入到softmax分类器中去预测被mask的token,UNILM的参数使用预测的token和真实的token的交叉熵损失来学习到,值得注意的是这些完形填空任务的使用使得对于所有的语言模型都可以使用一样的训练程序。

*WordPiece作用:1、词表减小 2、训练效果提高