UniLM: Unified Language Model Pre-training for Natural Language Understanding and Generation

@ 33rd Conference on Neural Information Processing Systems (NeurIPS 2019), Vancouver, Canada.

简介

目前,预训练的语言模型(Language model )已经大幅地提高了各种自然语言处理任务的水平。它一般使用大量文本数据,通过特定的语言模型学习文本的上下文语义表示,并且可以进行微调以适应后续任务。尽管BERT模型已经显著地提高了大量自然语言理解任务的效果,但是由于它的双向性使得它很难应用于自然语言生成任务。
这篇论文提出了一种新型的统一的预训练语言模型(UniLM),既可以应用于自然语言理解(NLU)任务,又可以应用于自然语言生成(NLG)任务。这个模型使用了三种类型的语言建模任务进行预训练:单向模型、双向模型、序列到序列预测模型。其统一建模的实现使用了共享的 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)。

预训练语言模型归类:AR、AE

  • AR:Autoregressive Language Modeling

  • AE: Autoencoding Language Modeling

  • AR 语言模型:指的是,依据前面(或后面)出现的 tokens 来预测当前时刻的 token, 代表有 ELMO, GPT 等。

  • AE 语言模型:通过上下文信息来预测被 mask 的 token, 代表有 BERT , Word2Vec(CBOW) 。

二者有着它们各自的优缺点:

  • AR 语言模型:
    缺点:它只能利用单向语义而不能同时利用上下文信息。 ELMO 通过双向都做AR 模型,然后进行拼接,但从结果来看,效果并不是太好。
    优点:对生成模型友好,天然符合生成式任务的生成过程。这也是为什么 GPT 能够编故事的原因。
  • AE 语言模型:
    缺点:由于训练中采用了 [MASK] 标记,导致预训练与微调阶段不一致的问题。 此外对于生成式问题, AE 模型也显得捉襟见肘,这也是目前 BERT 为数不多实现大的突破的领域。
    优点:能够很好的编码上下文语义信息, 在NLU相关的下游任务上表现突出。

ELMO、GPT、BERT

  • ELMO:ELMO 在训练语言模型时采用前向后向叠加的 LSTM 。 不同层的 LSTM 能够把握不同粒度和层级的信息,比如浅层的 LSTM 把握的是单词特征, 中层的 LSTM 把握 句法 特征, 深层的 LSTM 把握语义特征, 对于不同的任务来说, 不同的特征起到了不同的作用。
    ELMO 在迁移到下游任务时,会将不同层的特征采用加权求和的方式来获得每个词的最终表示。
    优点:ELMO 的确解决了多义性问题
    缺点:1、LSTM 特征抽取能力远弱于 Transformer ,
    2、并行性差拼接方式双向融合特征融合能力偏弱

  • GPT:GPT模型使用Transformer编码解码器从左到右的逐字地预测文本序列。
    采用单向 Transformer 作为特征抽取器
    采用二阶段: 预训练 + 微调 来适配下游任务
    GPT 1.0 与 GPT 2.0 的出现说明了一下几点:

  • 高质量,大规模的预训练数据集是提升性能的根本
  • 深层的 Transformer 模型具有更强的表示能力
  • BERT: Masked LM 与 NSP (Next Sentence Prediction)。使用双向Transformer编码器通过被掩字上下文来预测该掩蔽字。
    BERT 采用 AE 模型,MASK 操作所带来的缺陷依旧存在:

预训练与微调阶段不匹配的问题,这点 BERT 提供了一个策略来减轻该问题。
BERT 不适用于生成任务中。

UniLM:

1、模型优势

  • 第一,统一的预训练流程让单个 Transformer 语言模型能为不同类型的语言模型使用共享的参数和架构,这种参数共享能使得学习到的文本表征更通用,因为它们针对不同的语言建模目标(其中利用上下文的方式各不相同)进行了联合优化,这能缓解在任意单个语言模型任务上的过拟合,提升泛化能力。
  • 第二,除了在 NLU 任务上的应用,作为序列到序列语言模型使用的 UniLM 也使其能自然地用于 NLG 任务,比如抽象式摘要和问答。

2、模型结构
UniLM: Unified Language Model Pre-training for Natural Language Understanding and Generation
模型框架如图所示,在预训练阶段,UniLM模型通过三种不同目标函数的语言模型(包括:双向语言模型,单向语言模型和序列到序列语言模型),去共同优化同一个Transformer网络;为了控制对将要预测的token可见到的上下文,作者使用了不同的self-attention mask来实现。换句话说,就是通过不同的掩码矩阵来控制预测单词的可见上下文词语数量,实现不同的模型表征。

3、预训练目标
作者设计了三种类型的cloze任务,共同优化同一个transformer框架。在文本中随机选择一些token,使用特殊标记【Mask】进行替换;将文本输入到 Transformer网络,计算出对应的输出向量,再通过softmax分类器预测【Mask】到底属于字典中的哪一个token。
UniLM模型参数通过最小化预测token和标准token的交叉熵来优化。

4、Backbone Network: Multi-Layer Transformer
模型结构与Bert一致,每个Transformer中使用多头self-attention结构组成,公式如下:
UniLM: Unified Language Model Pre-training for Natural Language Understanding and Generation
掩码矩阵,控制字词是否可以被其他字词看到。如图1所示,不同的任务,我们赋予不同的掩码。例如:双向语言模型,我们就允许所有字词都可以相互看见。

5、三个训练框架

1、Bidirectional LM(同BERT)
如图1所示,使用全0矩阵来作为掩码矩阵。
2、Unidirectional LM
单向语言模型相当于把训练语料通过下述条件概率分布的方式“记住”了,其关键是要防止“未来信息”泄露。分为从左到右和从右向左两种,从左到右,即仅通过被掩蔽token的左侧所有本文来预测被掩蔽的token;从右到左,则是仅通过被掩蔽token的右侧所有本文来预测被掩蔽的token。从左到右,阴影部分为 -∞ ,空白部分为0。
UniLM: Unified Language Model Pre-training for Natural Language Understanding and Generation
RNN模型是天然适合做语言模型的,因为它本身就是递归的运算;如果用CNN来做的话,则需要对卷积核进行Mask,如果是Transformer呢?那需要一个下三角矩阵形式的Attention矩阵:
UniLM: Unified Language Model Pre-training for Natural Language Understanding and Generation
如图所示,Attention矩阵的每一行事实上代表着输出,而每一列代表着输入,而Attention矩阵就表示输出和输入的关联。所以,只需要在Transformer的Attention矩阵中引入下三角形形式的Mask,并将输入输出错开一位训练,就可以实现单向语言模型了。

3、Sequence-to-Sequence LM
For prediction, the tokens in the first (source) segment can attend to each other from both directions within the segment, while the tokens of the second (target) segment can only attend to the leftward context in the target segment and itself, as well as all the tokens in the source segment.

UNILM直接将Seq2Seq当成句子补全来做。假如输入是“你想吃啥”,目标句子是“白切鸡”,那UNILM将这两个句子拼成一个:[CLS] 你 想 吃 啥 [SEP] 白 切 鸡 [SEP]。经过这样转化之后,最简单的方案就是训练一个单向语言模型,然后输入“[CLS] 你 想 吃 啥 [SEP]”来逐字预测“白 切 鸡”,直到出现“[SEP]”为止,即如下面的左图:
UniLM: Unified Language Model Pre-training for Natural Language Understanding and Generation
左图只是最朴素的方案,它把“你想吃啥”也加入了预测范围了(导致它这部分的Attention是单向的,即对应部分的Mask矩阵是下三角),事实上这是不必要的,属于额外的约束。真正要预测的只是“白切鸡”这部分,所以我们可以把“你想吃啥”这部分的Mask去掉,得到上面的右图的Mask。
这样一来,输入部分的Attention是双向的,输出部分的Attention是单向,满足Seq2Seq的要求,而且没有额外约束。这便是UNILM里边提供的用单个Bert模型就可以完成Seq2Seq任务的思路,只要添加上述形状的Mask,而不需要修改模型架构,并且还可以直接沿用Bert的Masked Language Model预训练权重,收敛更快。

附图

self-attention mask
UniLM: Unified Language Model Pre-training for Natural Language Understanding and Generation
UniLM: Unified Language Model Pre-training for Natural Language Understanding and Generation

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-17
  • 2022-01-04
  • 2021-12-30
  • 2022-01-01
  • 2022-01-03
  • 2021-09-15
猜你喜欢
  • 2021-11-09
  • 2021-10-19
  • 2022-01-06
  • 2021-10-06
  • 2021-04-24
  • 2022-12-23
相关资源
相似解决方案