版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ljp1919/article/details/100125630
- 背景
机构:微软
作者:Li Dong、Nan Yang
发布地方:arxiv
面向任务:Natural Language Understanding and Generation
论文地址:https://arxiv.org/abs/1905.03197
论文代码:暂未
0-1. 摘要
本文提出一个能够同时处理自然语言理解和生成任务UNIfied pre-trained Language Model (UNILM) 模型。UNILM模型的预训练是基于3个目标:单向LM(包括从左到右和从右到左)、双向LM和sequence-to-sequence LM。该模型采用一个共享参数的Transformer网络的同时还使用了特定的self-attention masks用以控制预测时候所用到的上下文信息。在下游任务微调时候,可以将UNILM模型视为单向的encoder、双向的encoder或者sequence-to-sequence模型,以适应不同的下游任务(自然语言理解和生成任务)。
在实验过程中,UNILM与BERT模型在在GLUE、SQuAD 2.0和CoQA数据集上进行了综合对比。本文模型在3项自然语言生成任务上刷新了记录,其中包括CNN/DailyMail 摘要生成(ROUGE-L为40.63,提升了2.16)、CoQA的问题生成(F1值为82.5,提升了37.1)、SQuAD的问题生成(BLEU-4为22.88,提升了6.5)。
- 介绍
预训练语言模型在各个自然语言处理任务上的成果是有目共睹的,在这里就不多说了。预训练语言模型之所以有效是因为在海量语料数据集上学习到能够基于上下文的文本表征信息预测word tokens。在下游的任务中仅需要微调即可。
一般预训练的语言模型有以下4种预训练目标:
在这里插入图片描述
ELMo是基于LSTM的两个单向语言模型的拼接;GPT预测文本序列是基于Transformer从左到右逐个word预测;BERT使用双向的Transformer encoder,融合双向的上下文信息,从而预测被masked掉的words。此外,BERT能够确切地对一组文本对的关系进行建模,这已经被证明是对许多成对的自然语言理解任务(如自然语言推理)是有益的。尽管BERT在多个自然语言理解任务上提升显著,但是其双向的天然特性,使其在自然语言生成任务上困难重重。
为此本文所提出的的UNILM模型能够同时处理自然语言理解任务也能够处理自然语言生成任务。UNILM是一个深度的Transformer网络,其预训练过程采用3种无监督的语言模型目标:双向LM、单向LM和Sequence-to-Sequence LM,具体如Table 2所示:
在这里插入图片描述
单向LM和双向LM就不多说了。Sequence-to-Sequence LM中第一个sequence称为source,第2个sequence称为target。target sequence的上下文是第1个sequence和其左边的words组成。
本文提出的UNILM模型有以下3个优点:
(1)统一的预训练流程,使得仅仅使用一个Transformer语言模型即可。该Transformer模型在不同的LM(上述Table 2中的3个LM)上共享参数,这就无需在多个LM上分别训练和配置。
(2)多个LM之间的参数共享使得学习到的文本表征具有更强的泛化能力。在不同的语言模型目标上联合优化,使得上下文在不同方式中被使用,也减缓了在单一LM上的过拟合。
(3)除了可以应用到自然语言理解任务上,本文模型还能够作为一个sequence-to-sequence LM来处理自然语言生成任务,如摘要生成和问题生成。
UNILM的预训练是基于大量语料,其在不同任务上的微调在Table 2中已经有所描述。
(1)UNILM作为一个双向encoder:
与BERT在GLUE数据集、SQuAD 2.0和CoQA的抽取式问答对比, 此时的UNILM作为一个双向的encoder。
(2)UNILM作为一个sequence-to-sequence模型:
在摘要生成(CNN/DailyMail)、问题生成(SQuAD)和生成式问答(CoQA)中UNILM作为一个sequence-to-sequence模型.
- UNILM模型
给定输入sequence x=x1⋯x∣x∣
x=x1⋯x∣x∣, 通过多层的Transformer网络对每个token得到一个带有上下文信息的向量表征。输入tokens的表征联合word embedding、位置embedding和text segment。再将输入向量输入到多层Transformer网络中,利用其中的self-attention机制联合整个输入sequence计算得到文本的表征。
如图Figure 1所示,统一的语言模型预训练在多个无监督语言模型目标(单向LM、双向LM和Sequence-to-Sequence)中共享Transformer网络参数。为了待预测token的上下文范围,本文在self-attention中使用了不同的masks。换句话说,本文使用mask方式来控制待预测token所考虑到的上下文。
在这里插入图片描述
2-1. 输入表征
对于输入的词序列x
x,在起始位置添加一个预定义的[SOS] token作为标志符。[SOS] token对应的输出向量可以作为整个输入的表征。此外,在每个segment的末尾添加一个预定义的标志符[EOS]。这个[EOS] token用来表示segments之间的边界。其作用不仅仅是自然语言理解任务中的句子边界,还作为自然语言生成任务中生成word的停止符。
输入表征与BERT相同,文本通过WordPiece被tokenized为subword。例如,单词"forecasted"被分割为"forecast"和"##ed",其中"##"表明该部分是属于某个word。每个输入的token,其向量表征是token embedding、position embedding和segment embedding三者之和。本文使用绝对位置embedding。segment embedding是为了区分一对文本中的不同segment。第1个segment和第2个segment分别有不同的segment embedding,即为了区分句子对中的2个句子。由于不同LM目标使用不同的segment embeddings,所以可以作为LM辨识器。
2-2. 主干网络-Transformer
给定输入向量{xi}∣x∣i=1
{xi}i=1∣x∣,先将整理为Unexpected text node: ' 'H0=[x1,⋯,x∣x∣]。再将其输入到一个L层的Transformer网络中对输入进行encode:
Hl= Transformer l(Hl−1)(1)Hl= Transformer l(Hl−1)(1)
其中l∈[1,L]l∈[1,L],Unexpected text node: ' 'HL=[h1L,⋯,hx]L]。其中hLihiL表示输入xi
xi的上下文表征。
Self-attention Masks:
在每个Transformer Block中,有多头self-attention以聚合前蹭的输出向量。对于第l−th
l−th层的Transformer,其中一个self-attention head AlAl的计算如下:
QMijAl==Hl−1WQl,K=Hl−1WKl={0, allow to attend −∞, prevent from attending softmax(QK⊤dk−−√+M)(Hl−1Vl)QMijAl==Hl−1WlQ,K=Hl−1WlK={0, allow to attend −∞, prevent from attending softmax(dk
QK⊤+M)(Hl−1Vl)
其中前层的输出Hl−1∈R∣x∣×dhHl−1∈R∣x∣×dh是到queries、keys和values的线性投影,其投影参数分别是WQl,WKl,Vl∈Rdh×dkWlQ,WlK,Vl∈Rdh×dk。mask矩阵M∈R∣x∣×∣x∣M∈R∣x∣×∣x∣控制着tokens之间是否存在被attended。不同的mask 矩阵M
M控制attent到不同的上下文,具体如FIgure 1所示,在双向LM中,mask矩阵的值为0,表示所有的tokens之间都能够相互注意到。
2-3. 预训练目标
在对输入进行mask的时候,是选取一个WordPiece tokens随机mask,所谓的mask操作是用预定义的token [MASK]对其进行替换。再将输入到Transformer网络中计算得到输出向量,再将输出向量输入到softmax分类器中以预测被mask掉的token。UNILM模型的参数是通过最小化预测的tokens和原始真实tokens之间的交叉熵损失学习到的。
2-3-1. 单向LM
单向LM包括从左到右和从右到左的LM。在单向LM的预训练过程中,输入仅仅使用单个segment。以从左都右的LM为例,每个token都是基于其左边的上文及其自身的encode结果。为预测x1x2[MASK]x4
x1x2[MASK]x4,只有x1、x2x1、x2及其自身[MASK]会被使用到。其具体实现是通过三角矩阵形式的self-attention mask M
M。从Figure 1可以看出,上三角矩阵为深灰色,值为无穷大(表示阻塞,token之间没有行方向的token注意不到列方向的token),其他位置为浅灰色,值为0(表示可以注意到早期,即左边的token)。
2-3-2. 双向LM
BERT就是双向LM,不详细展开。
2-3-3. Sequence-to-Sequence LM
sequence-to-sequence LM的输入分为2个segments,如Figure 1所示,第一个segment(即source segment)在整个segment内部能够attend到任何的tokens,第2个segment(target segment)中的tokens只能attend到target segment中上文tokens及其自身,还有source segment。Figure 1中的sequence-to-sequence LM的self-attention mask可以看出,左边的mask 矩阵设置为全0,对应的source segment,即所有的token之间是可以相互注意到的。右上角被设置为无穷大,使得source segment看不到target segment;往下的右上角值设置为无穷大,其他值为0是实现target segment只能注意到上文,忽略其下文。
2-3-4. 下一句的预测
和BERT一样,可以看BERT原始论文。
2-4. 预训练设置
预训练目标函数是多个语言模型的平均likelihood 的求和。在每个训练batch中,1/3的时间使用双向LM目标,1/3的时间使用sequence-to-sequence LM作为目标,从左到右和从右到左的LM目标各自占1/6。另外,对于双向LM样本,也向其增加下一句预测的mean likelihood。
其他的参数设置和配置参考原文,在此就不多介绍了。
2-5. 下游任务微调
没有啥特殊的地方,中规中矩,参考原文即可。
- 实验
主要在自然语言理解任务(GLUE、抽取式问答)和自然语言生成任务(摘要生成、问题生成和生成式问答)进行实验。
摘要生成:
在这里插入图片描述
增加了抽取式摘要作为辅助任务,根据first token预测input sentence是否出现在抽取式数据中。
问答(阅读理解):
在抽取式任务SQuAD和CoQA上都超越了BERT;在生成式问答上表现尤其好,比2018年的一个PGNet提升了40个点。
在SQuAD数据集:
在这里插入图片描述
在CoQA数据集上:
在这里插入图片描述
问题生成:
利用生成的问题,把SQuAD结果提升了4个点。
在这里插入图片描述
生成的问题,还有助于提升问答:
在这里插入图片描述
GLUE:在大部分任务上>=BERT,最终提升了0.3个点。
实验细节和结果详情请参考原文。
- 总结和未来
本文联合多个语言模型的训练目标提出一个统一的预训练模型。这点与MASS的目标一样,都是想统一BERT和生成式模型。在统一了单向、双向和sequence-to-sequence语言模型之后,可以直接在下游中微调自然语言理解和生成式任务。实验结果也证明本文模型的有效性且在部分生成式任务中表现优越,一枝独秀。
未来:
(1)通过更大epoch、更大模型、更多数据来继续提升模型性能。后续也会进一步做消融研究,以了解模型的能力及多个语言模型的贡献程度。
(2)扩展统一的预训练模型,比如使其支持跨语言任务,如机器翻译。
(3)在自然语言理解和生成任务上进行多任务的微调学习,对MT-DNN进行拓展。
————————————————
版权声明:本文为CSDN博主「JasonLiu1919」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ljp1919/article/details/100125630