UniLM论文全名为Unified Language Model Pre-training for Natural Language Understanding and Generation,译为自然语言理解与生成的统一预训练语言模型。
本文提出了采用BERT的模型,使用三种特殊的Mask的预训练目标,从而使得模型可以用于NLG,同时在NLU任务获得和BERT一样的效果。 模型使用了三种语言模型的任务:
- unidirectional prediction
- bidirectional prediction
- seuqnece-to-sequence prediction
一、概述
目前,预训练的语言模型(Language model )已经大幅地提高了各种自然语言处理任务的水平。它一般使用大量文本数据,通过上下文来预测单词,从而学习到文本上下文的文本表示,并且可以进行微调以适应后续任务。不同类型的预训练语言模型一般采用不同的预测任务和训练目标,如表1所示。ELMo模型学习两个单向语言模型(unidirectional LM):前向语言模型从左到右读取文本进行编码,后向语言模型从右到左读取文本进行编码。GPT模型使用Transformer编码解码器从左到右的一逐字地预测文本序列。BERT模型使用一个双向Transformer编码器通过被掩字上下文来预测该掩蔽字。
尽管BERT模型已经显著地提高了大量自然语言理解任务的效果,但是由于它的双向性使得它很难应用于自然语言生成任务。
因此,作者提出了一个新的统一预训练语言模型(UniLM),既可以应用于自然语言理解(NLU)任务,又可以应用于自然语言生成(NLG)任务。UniLM模型的框架与BERT一致,是由一个多层Transformer网络构成,但训练方式不同,它是通过联合训练三种不同目标函数的无监督语言得到,如表2所示。
为了使三种不同的目标函数运用到同一种模型框架中,作者设计了三类完型填空任务,像BERT模型一样,去预测被掩的token(这是该篇论文的核心)。下面将详细进行介绍,如何设计这三类完型填空任务的。
二、3种语言模型任务
模型框架如图1所示,在预训练阶段,UniLM模型通过三种不同目标函数的语言模型(包括:双向语言模型,单向语言模型和序列到序列语言模型),去共同优化同一个Transformer网络;为了控制对将要预测的token可见到的上下文,作者使用了不同的self-attention mask来实现。换句话说,就是通过不同的掩码来控制预测单词的可见上下文词语数量,实现不同的模型表征。
- 单向语言模型:分为从左到右和从右向左两种,从左到右,即仅通过被掩蔽token的左侧所有本文来预测被掩蔽的token;从右到左,则是仅通过被掩蔽token的右侧所有本文来预测被掩蔽的token。
- 双向语言模型:与BERT模型一致,在预测被掩蔽token时,可以观察到所有的token。
- 序列到序列语言模型:如果被掩蔽token在第一个文本序列中,那么仅可以使用第一个文本序列中所有token,不能使用第二个文本序列的任何信息;如果被掩蔽token在第二个文本序列中,那么使用一个文本序列中所有token和第二个文本序列中被掩蔽token的左侧所有token预测被掩蔽token。
1、Unidirectional LM(单向语言模型)
x 1 x 2 [ M A S K ] x 4 x_1x_2\ [MASK]\ x_4 x1x2 [MASK] x4 对于MASK的预测,只能使用token1和token2以及自己位置能够被使用,使用的就是一个对角矩阵的。同理从右到左的LM也类似。
2、Bidirectional LM
对于双向的LM,只对padding进行mask。
3、Seq2Seq LM
在训练的时候,一个序列由 [SOS]S_1[EOS]S_2[EOS]
组成,其中S1是source segments,S2是target segments。随机mask两个segment其中的词,其中:
- 如果masked是source segment的词的话,则它可以attend to 所有的source segment的tokens,
- 如果masked的是target segment,则模型只能attend to 所有的source tokens 以及target segment 中当前词(包含)和该词左边的所有tokens。
这样的话,模型可以隐形地学习到一个双向的encoder和单向decoder。(类似transformer)
三、实现细节
- Span mask
- 总的loss 是三种LM的loss之和
- 我们在一个训练的batch中,1/3的时间训练bidirection LM,1/3的时间训练sequence-to-sequence LM objective, 1/6的时间训练left-to-right 和 1/6的时间训练 right-to-left LM
四、Finetune
对于NLU的任务,就和BERT一样进行finetune。
对于NLG的任务,S1:source segment, S2: target segment, 则输入为“[SOS] S1 [EOS] S2 [EOS]”. 我们和预训练的时候一样也是随机mask一些span,目标是在给定的context下最大化我们的mask的token的概率。值得注意的是[EOS], which marks the end of the target sequence,也是可以被masked,因为这样可以让模型学习到什么时候生成[EOS]这样可以标志文本生成的结束。
abstractive summarization
question generation
generative question answering
dialog response generation) 使用了label smooth和 beam search