UniLM 模型详解
UniLM 模型详解
Unified Language Model Pre-training for Natural Language Understanding and Generation
UniLM
是在微软研究院在BERT的基础上提出的预训练语言模型,被称为统一预训练语言模型。使用三种特殊的Mask的预训练目标,从而使得模型可以用于NLG,同时在NLU任务获得和BERT一样的效果它可以完成单向、序列到序列和双向预测任务,可以说是结合了AR和AE两种语言模型的优点,UniLM在文本摘要、生成式问题回答等领域取得了SOTA的成绩
1. AR & AE
-
Aotoregressive Lanuage Modeling
,自回归语言模型:根据前面(或后面)出现的token来预测当前时刻的token,代表模型有ELMO、GTP等
- 缺点:只能利用单向语义而不能同时利用上下文信息
- 优点:对自然语言生成任务(NLG)友好,符合生成式任务的生成过程
-
Autoencoding Language Modeling
,自编码语言模型:通过上下文信息来预测当前被mask的token,代表有BERT、Word2Vec(CBOW)等
-
缺点:由于训练中采用了
[MASK]
标记,导致预训练与微调阶段不一致的问题,且对于生成式问题的支持能力较差 - 优点:能够很好的编码上下文语义信息,在自然语言理解(NLU)相关的下游任务上表现突出
-
缺点:由于训练中采用了
2. UniLM Motivation
模型框架如上图所示,在预训练阶段,UniLM模型通过三种不同目标函数的语言模型(包括:双向语言模型,单向语言模型和序列到序列语言模型),去共同学习一个Transformer网络;为了控制对将要预测的token可见到的上下文,使用了不同的self-attention mask
来实现。即通过不同的掩码来控制预测单词的可见上下文词语数量,实现不同的模型表征,由下面四种任务进行预训练:
-
单向语言模型(Unidirectional LM):
- MASK完形填空任务,输入的是一个单独的文本
- 观测序列分为从左到右和从右向左两种,从左到右,即仅通过被掩蔽token的左侧所有本文来预测被掩蔽的token;从右到左,则是仅通过被掩蔽token的右侧所有本文来预测被掩蔽的token,如上图所示,使用上三角矩阵来作为掩码矩阵,阴影部分为,空白部分为0
-
双向语言模型(Bidirectional LM):
- MASK完形填空任务,输入的是一个文本对
- 与Bert模型一致,在预测被掩蔽token时,可以观察到所有的token,如上图所示,使用
全0矩阵
来作为掩码矩阵
-
序列到序列语言模型(Seq2Seq LM):
- MASK完形填空任务,输入的是一个文本对
- 如果被掩蔽token在第一个文本序列中,那么仅可以使用第一个文本序列中所有token,不能使用第二个文本序列的任何信息;如果被掩蔽token在第二个文本序列中,那么使用一个文本序列中所有token和第二个文本序列中被掩蔽token的左侧所有token预测被掩蔽token
- 如上图所示,在训练的时候,一个序列由
[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)
-
NSP任务(Next Sentence Prediction):
- 对于双向语言模型(Bidirectional LM),与Bert模型一样,也进行下一个句子预测。如果是第一段文本的下一段文本,则预测1;否则预测0
将文本输入到Transformer网络,计算出对应的输出向量,再通过softmax分类器预测【Mask】到底属于字典中的哪一个token。UniLM模型参数通过最小化预测token和标准token的交叉熵来优化。三种类型的完型填空任务可以完成不同的语言模型运用相同的程序程序训练
3. Backbone Network
模型输入文本序列,在起始处添加[SOS]
标记,结尾处添加[EOS]
标记。[EOS]一方面可以作为NLU任务中的边界标识,另一方面还能在NLG任务中让模型学到何时终止解码过程。其输入表征方式与Bert的一样,包括token embedding
,position embedding
,segment embedding
,同时segment embedding还可以作为模型采取何种训练方式(单向,双向,序列到序列)的一种标识
骨干网络由24层Transformer组成,输入向量首先会被转换成,然后使用L层Transformer抽象编码成的不同层次的上下文表示。在每个块中,使用多个self-attention heads
来聚合前一层的输出向量。对于第个层,self-attention head
的输出通过以下方式计算:
其中,前一层的输出分别使用参数矩阵线性地投影到三元组Query
,Key
,Value
中,并且根据掩码矩阵确定一对tokens是否可以相互attend
4. 训练策略
- 网络设置:24层Transformer,1024个hidden size,16个attention heads
- 参数大小:340M
- 初始化:直接采用Bert-Large的参数初始化
- 激活函数:GELU,与bert一样
- dropout比例:0.1
- 权重衰减因子:0.01
- batch_size:330
- 混合训练方式:对于一个batch,1/3时间采用双向语言模型的目标,1/3的时间采用Seq2Seq语言模型目标,最后1/3平均分配给两种单向学习的语言模型,也就是left-to-right和right-to-left方式各占1/6时间
- MASK方式:总体比例15%,其中80%的情况下直接用[MASK]替代,10%的情况下随机选择一个词替代,最后10%的情况用真实值。还有就是80%的情况是每次只mask一个词,另外20%的情况是mask掉bi-gram或者tri-gram
5. 下游任务应用
-
NLU:
- 在NLU任务中,微调UniLM作为一个双向Transformer的编码器,类似于BERT。以文本分类为例。使用编码向量[SOS]作为输入的起始,表示为,接着流入随机初始化的softmax分类器,属于一个参数矩阵,并且是分类的数量,通过更新预训练语言模型的参数和softmax分类器来最大化标签训练数据的概率
-
NLG:
- 对于NLG任务,使用序列到序列的任务作为一个例子,S1和S2分别代表
source segments
和target segments
,构造输入[SOS]S1[EOS]S2[EOS]
,模型微调的过程中通过随机掩盖一些目标序列,学习去预测MASK的token。训练目标是最大化给定文本掩盖标签的概率,其中[EOS]标记着目标序列的终止,在微调的过程中也可以被使用,模型可以学习使用[EOS]去终止目标序列生成的过程
- 对于NLG任务,使用序列到序列的任务作为一个例子,S1和S2分别代表
6. 实验
6.1 文本摘要
生成一个简洁流畅的摘要,在输入中传达关键信息,这是一个生成任务,其中摘要不限于重用输入文本中的短语或句子。使用非匿名版本的CNN/DailyMail数据集
和Gigaword
进行模型微调和评估。通过将文档(第一段)和摘要(第二段)连接起来作为输入,并根据预定义的最大长度截断,将UniLM微调为一个序列到序列模型
6.2 问答任务
回答一个指定段落的问题,有两种形式:第一种被称为抽取式问答(extractive QA)
,假设答案是文章中的一段文本;另一种称为生成性问答(generative QA)
,答案需要动态生成
-
抽取式问答(extractive QA):
-
抽取式问答(extractive QA)是一个NLU任务,需要预测文章中答案的开始和结束位置。微调预训练的UniLM作为任务的双向编码器。
在斯坦福问答集(SQuAD)2.0
和CoQA
上进行了实验
-
抽取式问答(extractive QA)是一个NLU任务,需要预测文章中答案的开始和结束位置。微调预训练的UniLM作为任务的双向编码器。
-
生成性问答(generative QA):
- 生成性问答(generative QA)是一个NLG任务。抽取方法只能预测输入文章的一段作为答案。在CoQA数据集(如上所述)上进行了实验
6.3 问题生成
指定一个输入段落和一个答案段,目标是生成一个要求答案的问题,是一个NLG任务,使用SQuAD 1.1数据集
用于测试
6.4 对话生成
给出一个多轮对话历史和一个网络文档作为知识来源,系统需要生成一个既是符合对话的又是网络文档内容的反映的自然语言回答,是一个NLG任务,在DSTC7数据集
上进行实验
6.5 GLUE Benchmark
在通用语言理解评估(GLUE Benchmark)上评估UniLM,GLUE是九种语言理解任务的集合,包括问答、语言可接受性、情感分析、文本相似性、释义检测和自然语言推理(NLI)
7. 总结
论文提出了一个统一的预训练模型UniLM,为多个共享参数的LM目标联合优化的。双向、单向和序列到序列LMs的统一使UniLM能够直接微调NLU和NLG任务的预训练。实验结果表明,UniLM在GLUE benchmark
和两个问答数据集上都优于BERT。此外,UniLM在五个NLG数据集上的表现优于以前的最新模型:CNN/DailyMail
和Gigaword
文本摘要、SQuAD
问题生成、CoQA
生成问题回答和DSTC7
基于对话生成,其优势总结如下:
- 三种不同的训练目标,网络参数共享
- 网络参数共享,使得模型避免了过拟合于某单一的语言模型,使得学习出来的模型更加具有普适性
- 采用了Seq2Seq语言模型,使得其在能够完成NLU任务的同时,也能够完成NLG任务
https://www.jianshu.com/c/b14d4cb58c3b专栏名:《自然语言处理》欢迎投稿!!!