微软研究院在2月底发布的UniLM 2.0(Unified Language Model \ 统一语言模型)文章,相比于19年上半年发布的UniLM 1.0,更加有效地整合了自然语言理解(NLU)与自然语言生成(NLG)这两种不同目标下的训练任务。无论是两种训练目标结合的统一性,还是在测评数据集上表现的性能,UniLM 2.0都在前一代的基础上有较大的改进。
本文将就近年来基于Transformer的预训练语言模型在NLU与NLG两种不同训练目标上的分化做简单介绍,再研究UniLM 1.0如何有机地结合这两种训练目标,进而介绍UniLM 2.0在1.0的基础上的变化和进步
1 预训练语言模型的分化
预训练语言模型(Pre-trained Language Model)的应用,使得原本无法针对各种语境变化的静态词向量表征,向着真正基于语境的语义特征表示(Contextual Word Representation)演进。而Transformer[1]的出现,无疑让这次演进焕发出了勃勃生机。
Transformer的提出,最早是为了解决循环神经网络RNN在神经机器翻译(Neural Machine Translation \ NMT)中无法有效地并行计算的效率问题。而Transformer的结构,也天然地有着NMT任务中典型的Encoder-Decoder结构。编码器encoder用于生成原始文本的语义表征,而解码器decoder则利用原始文本的语义表征,转写得到目标语言的翻译文本。
Transformer encoder有将文本序列转为特征表示的天然能力,且编码高效,语义信息的编码不因序列长度而衰减,成为了后续问世的pre-trained LM的标配,比如来自OpenAI的GPT语言模型[2]和Google的BERT语言模型[3],都是基于Transformer encoder名噪一时的语言模型。不过两者在预训练的实现逻辑和原理的差别,也分化出了预训练语言模型的两种典型目标:
适用于NLG任务的自回归(AutoRegressive \ AR)语言模型
适用于NLU任务的自编码(AutoEncoding \ AE)语言模型
1.1 自回归(AR)语言模型
自回归AR语言模型是一种有着先后解码顺序的语言模型。比如从左往右,根据前文预测当前token(字符)的概率 。这一点非常契合按照时间步对序列进行编码的RNN网络,基于2个单向LSTM的语言模型ELMo也属于这类。GPT沿袭AR语言模型的做法,从左往右编码,不过使用的是Transformer encoder作为编码器。值得注意的是,Transformer利用self-attention的机制,使得每个位置的token,都有机会attend(注意)到任意位置的token。那么GPT又是如何做到避免下文信息泄露的呢?答案在于attention mask。
Attention mask矩阵经过配置,可以让 屏蔽来自 的注意力,只需要把矩阵对应位置元素 设置为 。注意力权重加上 后经过softmax规整后对应权重 为0,从而避免 指向 的信息泄露。下面的公式[4]中,M代表attention mask,Q/K/V分别代表了self-attention中的输入序列在l层的query/key/value特征向量:
下图中,attention mask矩阵是一个右上角 均为 的矩阵 ,表示任意位置token,都无法接收来自下文的信息。 GPT采用的attention mask矩阵就是如此。1.2 自编码(AE)语言模型
自编码AE语言模型没有顺序和次序约束,可以一次性获取到序列中的所有信息。可以简单理解AR模型是有顺序的,而AE模型是无序的。BERT就是一个利用Transformer encoder实现的AE模型,它没有去预测「下一个」token,而是预测缺失的token。原始输入序列带有被掩盖(mask)的token,根据上下文的信息去预测masked token,类似于英语考试中的完形填空(cloze task)。BERT的出现使得很多NLU任务的最好成绩都有不小的提升,比如实体识别、答案抽取和文本分类等等。
AE语言模型有着解决NLU任务的天然属性,却也是处理NLG任务的先天不足。而微软提出UniLM统一语言模型,目的就是为了整合这2种不同的语言模型训练目标。
2 UniLM 1.0
UniLM 1.0是微软发表于2019年的文章[4]中提出的模型,从它的名字「统一」(unified) 看出文章实现的是NLU与NLG的统一预训练模型。文章引入了4种不同的训练目标:
Left-to-Right LM \ 从左往右单向LM
Right-to-Left LM \ 从右往左单向LM
Bidirectional LM \ 双向LM
Sequence-to-sequence LM \ 序列到序列LM
上述目标的统一训练实现,依靠的就是attention mask。
上图中3路不同走向的具体解释:
Bidirectional LM的attention mask矩阵全是白色方格,表示任何位置的token可以相互attend,与BERT训练目标一致
Left-to-Right LM的attention mask矩阵右上角为灰(对应为 ),表示每个token只能attend到该token左侧的token,与GPT训练目标一致
Seq-to-Seq LM是上述2种目标的组合,参考下图4
左上角蓝框内矩阵为全白格,与双向的情况一致,表示Segment1 (S1) 内的token可以相互attend
右下角粉框内矩阵为上三角阵,与从左往右的单向情况一致,表示Segment2 (S2) 的token只能attend到其自身左侧的token信息
Seq-to-Seq LM的设计,是将S1看作source,S2看作target,其中target与source可能是引申、推导等关系。因此在S1上做NLU式的双向完整的理解,S2则是NLG式的单向的生成,符合Seq-to-Seq的应用需求。
4种目标的训练可以在一套模型参数上同时进行,只需要调整不同的attention mask即可。文章总结了Unified 1.0的3点优势:
一个Transformer模型结构和参数可以适用于不同的训练目标
不同的训练目标下的参数共享,可以得到更具普适性的文本表征
Seq-to-Seq目标的训练,可以很好地适用于NLG的任务
在Unified 1.0中,Seq-to-Seq LM展示了该团队用统一的encoder来同时编码AE和AR模型的尝试。而2019年语言模型领域的更新变化,也让微软的这支团队看到了更优的解决方案的可能性。
3 UniLM 2.0
在微软发表UniLM 1.0之后没多久,由Google Brain和CMU联合研制的XLNet[5]发布。XLNet利用不同的factorization order,使目标token下文的token得以先被编码,从而实现了一种能够attend到全序列信息的自回归AR语言模型。具体的实现也是通过设计包含次序信息的attention mask来达到的。
Factorization order直译为因式分解顺序,此处译为解析顺序或者预测顺序更为贴切。它描述的是序列中token被预测的先后顺序,这个顺序可以和序列本身的sequence order完全不同。虽然常见的NLG任务遵循从左往右的序列顺序依次解码,但这并不意味着训练编码的顺序也要求从左往右。XLNet就成功实现了下文token提前编码的自回归预训练,且达到了不错的效果。这里要介绍的UniLM 2.0[6]也利用了这一点。
UniLM 2.0相比于1.0的主要改进,在于它支持更多样的factorization order且无需重复构建训练实体。这一目标的实现,主要是借助文章提出的伪掩码语言模型(Pseudo-Masked Language Models \ PMLM),参考下图。
图中的例子是一个factorization order为{4,5 -> 2}的输入序列:
将上述流程按2个阶段展开:
AE \ AutoEncoding \ 自编码
图中左半部分,仅使用前一半输入序列
序列的任意token间可以互相attend,[M]代表mask掩码,训练目标是一次给出序列中所有[M]的预测概率,与BERT训练一致
具体的预测流程:
PAR \ Partially AutoRegressive \ 部分自回归
图中右半部分,使用全部输入序列
使用[P]代表pseudo mask,直译为伪掩码,目的是为了与前一步骤中的[M]区别开。先同时预测 和 ,再在已有 , 的基础上预测
具体的预测流程:
说明
partially AR之所以是「部分」,是因为模型支持一次预测出连续的掩码。之前需要{4->5->2},现在支持{4,5->2},由token级别改进为span级别,是AR模型的一种拓展;
选用{4,5 -> 2}这样的预测顺序只是其中一种factorization order,亦可选用{2 -> 4,5}这样的顺序;
引入伪掩码[P]是为了避免重复构建训练实体,否则上面PAR步骤中的2步流程需要2次构建不同的样本才能分别实现;
一个token在输入序列中的真实位置并不重要,只要2个token有着相同的position embedding,模型会认为它们在文本中的位置一样。
这里再解释一下引入[P]伪掩码的作用。
[P]其实和[M]的作用一致,只是作用的阶段不同。AE阶段预测[M]的内容,PAR阶段预测[P]的内容,这是文章为了让2个不同的训练目标可以在一次输入的情况下完成而设计的一种策略。如果这里还是按照UniLM 1.0,AR阶段的训练是从左往右单向的,那么只用[M]就足够。UniLM 2.0为了实现不同的factorization order,允许下文的token先被预测,且不需要每步预测后再重新构建输入序列,故引入[P]掩码。
在构建好输入序列之后,为了避免信息泄露,这里也是通过独特设计的attention mask矩阵来保证的。文章的例子{4,5->2}所用的attention mask如下图,大家可自行对照,这里不做展开。
虽然UniLM 2.0以一种不太直观的形式准备了预训练的输入序列,但它却向我们展示了在不同的factorization order的条件下,AR和AE训练目标在一个单一encoder中的统一实现。而与此同时,又有一些预训练LM开始回归最初的Encoder-Decoder的结构,比如谷歌的T5和微软的MASS,也让我们看到了预训练语言模型的更多的可能性。新的预训练语言模型不断涌现,我们也会持续跟进,为大家带来更多新颖模型的解读。
参考资料
[1]
Transformer \ Attention Is All You Need (2017)
[2]GPT \ Improving Language Understanding by Generative Pre-Training (2018)
[3]BERT \ BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2018)
[4]UniLM 1.0 \ Unified Language Model Pre-training for Natural Language Understanding and Generation (2019)
[5]XLNet \ Generalized Autoregressive Pretraining for Language Understanding (2019)
[6]UniLM 2.0 \ UNILMv2: Pseudo-Masked Language Models for Unified Language Model Pre-Training (2020)
个人微信:加时请注明 (昵称+公司/学校+方向)