无情!「自然语言处理(NLP)」统一预训练UniLM模型(NLU+NLG)
喜欢我们,点击上方AINLPer,关注一下,极品干货即刻送达!
引言
本文提出了一种新的统一的预训练语言模型(UNILM),该模型不仅可用于自然语言理解(NLU),还可以用于生成任务((NLG))。该模型使用三种类型的语言建模(单向模型、双向模型、序列到序列预测模型)进行预训练。通过使用一个共享的Transform网络,利用特定的自注意掩模来控制预测条件的上下文,从而实现了统一的建模。
1
First Blood
2
Aced
3
Attention
正文开始
1First Blood
TILE: (NeurIPS-19)Unified Language Model Pre-training for Natural Language Understanding and Generation.
Contributor : 微软研究院
Paper: https://arxiv.org/pdf/1905.03197.pdf
Code: https://github.com/microsoft/unilm
文章摘要
本文提出了一种新的统一的预训练语言模型(UNILM),该模型不仅可用于自然语言理解,还可以用于生成任务。该模型使用三种类型的语言建模(单向模型、双向模型、序列到序列预测模型)进行预训练。通过使用一个共享的Transform网络,利用特定的自注意掩模来控制预测条件的上下文,从而实现了统一的建模。在 GLUE 基准以及 SQuAD 2.0 和 CoQA 问答任务上,UniLM 优于 BERT。
文章主要内容
1、UniLM 是一种多层 Transformer 网络,在大量文本上进行过联合的预训练,并针对下表中所示的三种类型的无监督语言建模目标进行过优化。
2、类似于 BERT,预训练的 UniLM 可以进行微调(如有必要需添加额外的特定于任务的层),以适应不同类型的下游任务。
3、不同于主要用于 NLU 任务的 BERT,UniLM 可使用不同的自注意掩码进行配置,从而聚合用于不同类型的语言模型的上下文,因此 UniLM 可用于 NLU 和 NLG 任务。
模型三大优势
第一,统一的预训练流程让单个 Transformer 语言模型能为不同类型的语言模型使用共享的参数和架构,从而减轻对分开训练和管理多个语言模型的需求。
第二,这种参数共享能使得学习到的文本表征更通用,因为它们针对不同的语言建模目标(其中利用上下文的方式各不相同)进行了联合优化,这能缓解在任意单个语言模型任务上的过拟合。
第三,除了在 NLU 任务上的应用,作为序列到序列语言模型使用的 UniLM 也使其能自然地用于 NLG 任务,比如抽象式摘要和问答。
UniLM模型介绍
给定一个输入序列 x,UniLM 会获取每个 token 的基于上下文的向量表征。如下图所示,预训练会根据多种无监督语言建模目标优化共享的 Transformer 网络,这些目标为单向语言模型、双向语言模型、序列到序列语言模型。为了控制对所要预测的词 token 的上下文的读取,作者使用了不同的自注意掩码。换句话说,作者使用了掩码来控制在计算基于上下文的表征时 token 应该关注的上下文的量。UniLM 训练完成后,当用于下游任务时,我们可以使用特定于任务的数据来对其进行微调。
表征输入
输入 x 是一个词序列,该序列要么是用于单向语言模型的一段文本,要么是用于双向和序列到序列语言模型的打包在一起的一对文本段。作者的做法是:总是在输入的起始处添加一个特殊的序列起点([SOS])token,在每一段的结尾处添加一个特殊的序列结束([EOS])token。[EOS] 不仅能在 NLU 任务中标记句子边界,还能在 NLG 任务中让模型学习中止解码过程的时间。这种输入表征方式与 BERT 的一样。
多层Transform网络
首先输入向量Xi会被打包进,
然后使用一个 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] 的编码向量作为输入的编码,表示为:
其中
是参数矩阵,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)数据集上进行了实验。
问题生成
作者还在答案感知型问题生成任务上执行了实验。给定一个输入段落和一个答案范围,该任务的目标是生成一个询问该答案的问题。
响应生成
作者还在基于文档的对话应生成任务上对 UniLM 进行了评估。给定一段多轮对话历史,并将网络文档作为知识源,系统需要生成适合对话并且能反映网络文档内容的自然语言响应。
GLUE 基准
作者还在 GLUE 基准上对 UniLM 进行了评估。表 11 给出了从 GLUE 基准的评估服务器得到的测试结果。结果表明,UniLM 在 GLUE 任务上的表现与 BERT_LARGE 相当。
总结
实验结果表明,UniLM 在 GLUE 基准以及两个问答数据集上与 BERT 表现相当。此外,UniLM 在五个 NLG 数据集上优于之前最佳模型,即:CNN/DailyMail 和 Gigaword 抽象式摘要、SQuAD 问题生成、CoQA 生成式问答、DSTC7 对话响应生成。
自然语言NLP(NLG+NLU)资料大全(持续更新....)
GitHub: https://github.com/yinizhilian/NLP_Share
相关论文集(持续更新....)
GitHub: https://github.com/yinizhilian/ACL_Paper
长按识别下方二维码,关注我们吧(づ ̄3 ̄)❤~
来都来了,点个【在看】再走吧~~~