选自arXiv,作者:Li Dong、Nan Yang、Wenhui Wang 等,机器之心编译,参与:Panda。
自然语言是人工智能正在攻克的一大难关,而微软的研究者最近发布了一种统一的预训练语言模型 UniLM,微软表示,该模型在机器阅读理解方面已经超越了人类水平。
在 10 月 20 号的世界互联网大会中,微软之前提出来的「统一预训练语言模型与机器阅读理解技术」荣获「世界互联网领先科技成果」奖,沈向洋博士在会上介绍了这一模型。
在机器之心的 SOTA 项目中,我们同样发现 UniLM 模型在很多自然语言理解、自然语言生成任务中有非常好的效果,并且在机器阅读理解等方面能获得当前最优的水平。为此,本文将介绍 UniLM 这项研究工作,该研究已经被接收为 NeurIPS 2019 论文。
这篇论文提出了一种新型的统一的预训练语言模型(UniLM),它既可以针对自然语言理解任务进行微调,也能用于自然语言生成任务。这个模型使用了三种类型的语言建模任务进行预训练:单向模型、双向模型、序列到序列预测模型。其统一建模的实现使用了共享的 Transformer 网络,并且还使用了特定的自注意掩码来控制预测条件所处的上下文。在 GLUE 基准以及 SQuAD 2.0 和 CoQA 问答任务上,UniLM 优于 BERT。
此外,UniLM 在五个自然语言生成数据集上成为了新的当前最佳,包括将 CNN/DailyMail 抽象式摘要 ROUGE-L 结果提升至 40.51(2.04 的绝对改善)、将 Gigaword 抽象式摘要 ROUGE-L 结果提升至 35.75(0.86 的绝对改善)、将 CoQA 生成式问答 F1 分数提升至 82.5(37.1 的绝对改善)、将 SQuAD 问题生成 BLEU-4 结果提升至 22.12(3.75 的绝对改善)、将 DSTC7 基于文档的对话响应生成 NIST-4 结果提升至 2.67(人类表现为 2.65)。
UniLM:统一的预训练语言模型UniLM 是一种统一的预训练语言模型,既可应用于自然语言理解(NLU)任务,也能用于自然语言生成(NLG)任务。UniLM 是一种多层 Transformer 网络,在大量文本上进行过联合的预训练,并针对表 2 中所示的三种类型的无监督语言建模目标进行过优化。
类似于 BERT,预训练的 UniLM 可以进行微调(如有必要需添加额外的特定于任务的层),以适应不同类型的下游任务。但不同于主要用于 NLU 任务的 BERT,UniLM 可使用不同的自注意掩码进行配置,从而聚合用于不同类型的语言模型的上下文,因此 UniLM 可用于 NLU 和 NLG 任务。新提出的 UniLM 主要有三大优势。第一,统一的预训练流程让单个 Transformer 语言模型能为不同类型的语言模型使用共享的参数和架构,从而减轻对分开训练和管理多个语言模型的需求。第二,这种参数共享能使得学习到的文本表征更通用,因为它们针对不同的语言建模目标(其中利用上下文的方式各不相同)进行了联合优化,这能缓解在任意单个语言模型任务上的过拟合。第三,除了在 NLU 任务上的应用,作为序列到序列语言模型使用的 UniLM 也使其能自然地用于 NLG 任务,比如抽象式摘要和问答。
技术详解
给定一个输入序列 x,UniLM 会获取每个 token 的基于上下文的向量表征。如图 1 所示,预训练会根据多种无监督语言建模目标优化共享的 Transformer 网络,这些目标为单向语言模型、双向语言模型、序列到序列语言模型。为了控制对所要预测的词 token 的上下文的读取,作者使用了不同的自注意掩码。换句话说,作者使用了掩码来控制在计算基于上下文的表征时 token 应该关注的上下文的量。UniLM 训练完成后,当用于下游任务时,我们可以使用特定于任务的数据来对其进行微调。
输入表征
输入 x 是一个词序列,该序列要么是用于单向语言模型的一段文本,要么是用于双向和序列到序列语言模型的打包在一起的一对文本段。作者的做法是:总是在输入的起始处添加一个特殊的序列起点([SOS])token,在每一段的结尾处添加一个特殊的序列结束([EOS])token。[EOS] 不仅能在 NLU 任务中标记句子边界,还能在 NLG 任务中让模型学习中止解码过程的时间。这种输入表征方式与 BERT 的一样。
骨干网络:多层 Transformer
输入向量 {x_i} 首先会被打包进
,然后使用一个 L 层的 Transformer
将其编码成在不同抽象层面
上的上下文表征。在每个 Transformer 模块中,使用了多个自注意头来聚合前一层的输出向量。对于第 l 个 Transformer 层,自注意头 AI 的输出的计算方式为:
预训练目标
作者使用了四个为不同语言建模目标设计的完形填空任务来预训练 UniLM。在完形填空任务中,作者会用特殊 token [MASK] 来替代输入中随机选择的某些 WordPiece token。然后,将通过 Transformer 网络计算得到的对应的输出向量输入一个 softmax 分类器,预测被掩盖的 token。UniLM 的参数的学习目标是最小化用预测 token 和原始 token 计算得到的交叉熵损失。需要说明,由于使用的是完形填空任务,所以可以为所有语言模型(无论是单向还是双向)都使用同样的训练流程。
预训练设置
整体的训练目标是不同类型的语言模型目标的和。具体来说,作者为一个训练批次所设置的时间如下:1/3 的时间使用双向 LM 目标,1/3 的时间使用序列到序列 LM 目标,从左到右和从右到左的语言模型目标的采样比例都是 1/6。为了公平地比较,UniLM 的模型架构遵照了 BERT_LARGE 的架构。
针对下游 NLU 和 NLG 任务进行微调
对于 NLU 任务,作者将 UniLM 微调为类似于 BERT 的双向 Transformer 编码器。以文本分类为例,作者使用 [SOS] 的编码向量作为输入的编码,表示为
,然后将其输入一个随机初始化的 softmax 分类器(即特定于任务的输出层),其中类别概率的计算方式为
,其中
是参数矩阵,C 是类别数量。对于 NLG 任务,以序列到序列任务为例。微调过程类似于使用自注意掩码进行预训练。令 S1 和 S2 分别表示源序列和目标序列。作者将它们与特殊 token 打包在一起,构建出输入「[SOS] S1 [EOS] S2 [EOS]」。该模型的微调是通过随机掩盖目标序列中一定比例的 token,并学习恢复被掩盖的词。其训练目标是基于上下文最大化被掩盖 token 的似然度。
实验
作者在 NLU(即 GLUE 基准和抽取式问答)和 NLG(即抽象式摘要、问题生成、生成式问答和对话响应生成)任务上执行了实验。
抽象式摘要
作者重点关注了抽象式摘要,这是一种生成任务,其中的摘要并不限于复用输入文本中的短语或句子。作者使用了 CNN/DailyMail 数据集和 Gigaword 的非匿名化版本来进行模型微调和评估。表 3 在 CNN/DailyMail 上比较了 UniLM 与基准和几种当前最佳的模型。
表 4 给出了在不同规模(10K 和 3.8M)的 Gigaword 上的模型评估结果。Transformer 和 OpenNMT 都实现了标准的注意式序列到序列模型。
问答(QA)
这个任务是回答给定文本篇章的问题。问答任务有两种设置。一种是抽取式问答,其假定答案是该篇章中的一段文本。另一种是生成式问答,其需要即时生成答案。抽取式问答可以构建成一个 NLU 任务,目标是预测篇章中答案范围的起止位置。作者针对该任务将预训练的 UniLM 模型微调成了一个双向编码器。生成式问答可为输入的问题和篇章生成形式自由的答案,这是一种 NLG 任务。作者在 Stanford Question Answering Dataset(SQuAD)2.0 以及 Conversational Question Answering(CoQA)数据集上进行了实验。
问题生成作者还在答案感知型问题生成任务上执行了实验。给定一个输入段落和一个答案范围,该任务的目标是生成一个询问该答案的问题。
[Image: 8.PNG]Table 8: Question generation results on SQuAD. MTR is short for METEOR, and RG for ROUGE. Results in the groups use different data splits.
响应生成
作者还在基于文档的对话应生成任务上对 UniLM 进行了评估。给定一段多轮对话历史,并将网络文档作为知识源,系统需要生成适合对话并且能反映网络文档内容的自然语言响应。[Image: 10.PNG]Table 10: Response generation results. Div-1 and Div-2 indicate diversity of unigrams and bigrams, respectively.
GLUE 基准
作者还在 GLUE 基准上对 UniLM 进行了评估。表 11 给出了从 GLUE 基准的评估服务器得到的测试结果。结果表明,UniLM 在 GLUE 任务上的表现与 BERT_LARGE 相当。
总结
实验结果表明,UniLM 在 GLUE 基准以及两个问答数据集上与 BERT 表现相当。此外,UniLM 在五个 NLG 数据集上优于之前最佳模型,即:CNN/DailyMail 和 Gigaword 抽象式摘要、SQuAD 问题生成、CoQA 生成式问答、DSTC7 对话响应生成。