【论文笔记】UniLM - Unified Language Model Pre-training for Natural Language Understanding and Generation

摘要

UniLM由微软研究院在bert的基础上开发的新型预训练模型,可在自然语言理解和生成任务上进行微调,模型采用了三个任务进行预训练:单向、双向、sequence to sequence预测。采用共享的Transformer网络和特殊的attention掩码机制,结合了AR和AE语言模型的优点,在抽象摘要、生成式问题回答语言生成数据集的抽样领域取得了最优秀的成绩。

1. 介绍

AR: Aotoregressive Lanuage Modeling,又叫自回归语言模型。它指的是,依据前面(或后面)出现的tokens来预测当前时刻的token,代表模型有ELMO、GPT等。

img

AE:Autoencoding Language Modeling,又叫自编码语言。通过上下文信息来预测当前被mask的token,代表有BERT ,Word2Vec(CBOW)。

img

AR 语言模型:

  • 缺点:它只能利用单向语义而不能同时利用上下文信息。 ELMO 通过双向都做AR 模型,然后进行拼接,但从结果来看,效果并不是太好。
  • 优点: 对自然语言生成任务(NLG)友好,天然符合生成式任务的生成过程。这也是为什么 GPT 能够编故事的原因。

AE 语言模型:

  • 缺点: 由于训练中采用了 [MASK] 标记,导致预训练与微调阶段不一致的问题。 此外对于生成式问题, AE 模型也显得捉襟见肘,这也是目前 BERT 为数不多实现大的突破的领域。

  • 优点: 能够很好的编码上下文语义信息, 在自然语言理解(NLU)相关的下游任务上表现突出。

语言模型详解

  1. ELMo 学习两个单向的语言模型,一个前向语言模型,从左到右读取文本,一个后向语言模型,从右向左读文本,encode文本信息。

  2. GPT 采用从左向右的Transformer来逐词预测文本。

  3. Bert 使用双向Transformer encoder,将左右的文本信息都融合起来,预测masked word。Bert在大量的自然语言理解任务上表现很优越,但双向的结构使得它很难在自然语言生成的任务上应用。

词向量经典模型:从word2vec、glove、ELMo到BERT_xiayto的博客-CSDN ...
  1. UniLM 是一个多层的Transformer网络,在大量文本上进行了联合预训练,针对三种无监督语言模型目标进行优化。单向LM、双向LM、sequence to sequence LM。
image-20200722200845834
image-20200722200430548
  • UniLM与Bert对比:

    相同点:可以通过fine-tune来适应各种下游任务

    不同点:Bert主要用于NLU任务。UniLM通过不同的self-attention masks机制,能够为不同的语言模型来生成不同的文本信息,从而应用于NLU和NLG任务。

  • UniLM的三个优点:

    1. 不同的LM模型使用共享的参数和架构,减轻训练和构造多个LM模型的需求

    2)由于UniLM的共享参数在不同的LM目标中进行了联合优化,所以学习到的文本表征具有更高的普适性,减缓了单个LM模型的过拟合问题。

    3)在NLU任务的应用外,UniLM能够作为sequence to sequence模型使用,从而应用于NLG任务中,比如抽象摘要,问答生成。

2. 预训练

预训练过程为:给定输入序列,UniLM为每一个token训练出一个融合上下文信息的向量表征,即词向量。

UniLM通过三个无监督语言模型目标优化共享的Transformer network,LM目标分别为:单向LM,双向LM,sequence-to-sequence LM。UniLM通过特殊的self-attention机制来控制在训练过程中考虑的文本信息,这种self-attention机制通过mask来决定计算每个token
的向量表征时应该考虑的context是哪些。

在双向LM模型中,没有任何mask,因为上下文信息都会被融入token中。在从左向右的单向LM模型中,矩阵上半三角会被mask掉,因为token只考虑左边的文本信息。在seq-to-seq模型中,句子s1的矩阵部分没有mask,s1因为s1融合上下文信息,句子s2矩阵的右上三角有mask,因为s2融合了s1的信息和左边的文本信息。

当UniLM预训练完成以后,便可通过fine-tuning来应用到下游任务中。

image-20200722200845834

2.1. 输入表征

模型输入为单词序列,在单向LM中为文本片段,在双向LM和seq-to-seq LM中为一对文本片段。

我们在输入的开头加上开始符号[SOS],每个片段的结尾加上结束符[EOS],在NLU任务中,结束符用于标志句子的边界信息,在NLG任务重,结束符还可以让学到何时终止解码步骤。

输入的表征和Bert一致,每个token的向量表征为相应的token embedding,position embedding,sgment embedding的加和。但UniLM在优化不同的LM模型时,segment embedding会有所变化。

image-20200722211324258
  • Token Embeddings 词的向量表示

    token embedding 层是要将各个词转换成固定维度的向量。在BERT中,每个词会被转换成768维的向量表示。

  • Segment Embeddings 辅助BERT区别句子对中的两个句子的向量表示

    BERT 能够处理对输入句子对的分类任务。这类任务就像判断两个文本是否是语义相似的。句子对中的两个句子被简单的拼接在一起后送入到模型中。那BERT如何去区分一个句子对中的两个句子呢?答案就是segment embeddings.

    Segment Embeddings 层只有两种向量表示。前一个向量是把EA赋给第一个句子中的各个token, 后一个向量是把EB赋给第二个句子中的各个token。如果输入仅仅只有一个句子,那么它的segment embedding就是全EA。

  • Position Embeddings 让BERT学习到输入的顺序属性

    加入位置信息,能让模型理解相同单词在不同句子中不同位置的信息,学习到不同的向量表示。

    实现过程中,Bert处理512个token的输入,词向量维度为768,position embedding是(512,768)的lookup表,序列的每个位置的position embedding对应表中相应的行。

    因此,如果有这样两个句子“Hello world” 和“Hi there”, “Hello” 和“Hi”会由完全相同的position embeddings,因为他们都是句子的第一个词。同理,“world” 和“there”也会有相同的position embedding。

2.2. 骨干网络:多层Transformer

模型输入向量:, 首先被包装为, 然后通过L层的transformer,在不同层融合上下文信息,每个Transformer块使用多头注意力融合上一层输出的向量,编码为,

image-20200723102851540

上一层的输出通过三个参数矩阵被线性的投影为queries,keys和values。

掩码矩阵M决定一对token在attention中是否会考虑对方。

文章使用不同的掩码矩阵M来控制生成一个token的表征时需要考虑的上下文信息。

2.3 预训练目标

  1. 完形填空:对于三个LM模型都进行完形填空任务,模型在与训练过程中随机选取输入中的token,将他们替换成特殊字符[MASK],将这些[MASK]字符的输出向量放入softmax分类器中来预测字符的值。UniLM的参数通过最小化原始tokens和预测tokens的交叉熵损失函数来优化。
  2. 下一句预测:针对双向LM模型进行下一句预测任务,操作和bert一致。目的是让模型理解两个句子之间的联系。训练的输入是句子A和B,B有一半的几率是A的下一句,输入这两个句子,模型预测B是不是A的下一句。预训练的时候可以达到97-98%的准确度。

2.4 预训练设置

整体的训练目标为各LM模型训练目标的总和。在每个训练批次中,1/3使用双向LM目标,1/3使用seq-to-seq LM目标,自左向右和自右向左的单向LM目标都为1/6。

UniLM的模型构架和Bert Large版本一样,激活函数和GPT一样用gelu。此外,本模型采用24层transformer,隐层节点为1024,注意力头数16,包含360M参数。

UniLM使用Bert Large进行初始化,再在英语wikipedia和BookCorpus上进行预训练。词典大小为28,996,输入句子的最大长度为512。

输入token被mask掉的概率为15%,其中10%用随机token替换,10%保持用原始token,80%用[mask]替换。此外,80%情况下mask一个token,20%情况下mask bigram或trigram。

2.5 在下游NLU和NLG任务中微调

  • NLU任务

    使用双向tranformer encoder进行微调,文本分类任务中,使用[sos]的输出向量,标为,输入到随机初始化的softmax分类器中,分类概率为,是参数矩阵,C是类别数目。

  • NLG任务

    使用seq-to-seq模型,微调过程和预训练中使用self-attention masks相同。S1为源序列,S2为目标序列,输入为“[sos] s1 [eos] s2 [eso]”,模型通过随机在s2中mask一定比例的token,学习去还原这些token。训练目标为在给定上下文的时候最大化masked tokens的概率。在生成的过程中,若预测出了[eos]则代表生成结束。

实验

  • 抽象摘要

    image-20200723143437231
  • 问答

    image-20200723143447925
  • 问题生成、回复生成

    image-20200723143502064

参考文献:paper阅读:UniLM(Unified Language Model Pre-training for Natural Language Understanding and Generation)

你可能感兴趣的:(【论文笔记】UniLM - Unified Language Model Pre-training for Natural Language Understanding and Generation)