返回介绍

数学基础

统计学习

深度学习

工具

Scala

二十、UniLM [2019]

发布于 2023-07-17 23:38:25 字数 50366 浏览 0 评论 0 收藏 0

  1. 语言模型的预训练在各种自然语言处理任务中大大推进了 SOTA。预训练的语言模型通过使用大量的文本数据根据单词的上下文来预测该单词来学习 contextualized text representation ,并且可以进行微调从而适应下游的任务。

    不同的预测任务和训练目标已经被用于预训练不同类型的语言模型,如下表所示:

    • ELMo 学习两个单向的语言模型:一个正向语言模型从左到右编码文本,一个反向的语言模型从右到左编码文本。
    • GPT 使用一个从左到右的 transformerword-by-word 地预测文本序列。
    • 相比之下,BERT 采用了一个双向 Transformer encoder 来融合左右两侧的上下文从而预测 masked word 。虽然 BERT 极大地提高了各种自然语言理解 natural language understanding: NLU 任务的性能,但其双向性 bidirectionality 的特点使其难以应用于自然语言生成 natural language generation: NLG 任务。

    在论文 《Unified Language Model Pre-training for Natural Language Understanding and Generation》 中,作者提出了一个新的 UNIfied pre-trained Language Model: UNILM ,可以应用于自然语言理解任务和自然语言生成任务。UNILM 是一个多层的 Transformer 网络,在大量的文本上联合预训练,为三种类型的无监督语言建模目标进行了优化,如下表所示。具体而言,论文设计了一组完形填空任务 cloze task ,其中根据上下文预测一个 masked word 。这些完形填空任务的不同之处在于如何定义上下文:

    • 对于 left-to-right 的单向语言模型,要预测的masked word 的上下文包括其左边的所有单词。
    • 对于 right-to-left 的单向语言模型,要预测的masked word 的上下文包括其右边的所有单词。
    • 对于双向语言模型,要预测的masked word 的上下文由左右两侧的所有单词组成。
    • 对于序列到序列的语言模型,第二个序列(即,target 序列)中要预测的单词的上下文由第一个序列(即,source 序列)中的所有单词、以及 target 序列中被预测单词左边的所有单词组成。

    这些不同的语言模型是通过 self-attention mask 来实现的。

    BERT 类似,预训练的 UNILM 可以进行微调(必要时增加 task-specific layer )以适配各种下游任务。但与主要用于自然语言理解任务的 BERT 不同,UNILM 可以通过使用不同的自注意力掩码 self-attention mask 进行配置,为不同类型的语言模型聚合上下文,因此可以同时用于自然语言理解任务和自然语言生成任务。

    UNILM 有三个主要优势:

    • 首先,统一的预训练程序导致了一个单一的 Transformer 语言模型,它对不同类型语言模型采用共享的参数和架构,缓解了单独训练和 host 多个语言模型的需要。
    • 第二,参数共享使学到的 text representation 更加通用,因为它们是针对不同的语言建模目标共同优化的,其中上下文的利用方式不同从而缓解了对任何单个语言模型任务的过拟合。
    • 第三,除了应用于自然语言理解任务外,UNILM 可以作为 sequence-to-sequence 的语言模型来使用,使其成为自然语言生成任务的自然选择,如抽象式摘要 abstractive summarization 和问题生成 question generation

    实验结果表明,UNILM 作为一个双向编码器来使用,在 GLUE benchmark 和两个抽取式问答 extractive question answering 任务(即 SQuAD 2.0CoQA )上与 BERT 相比更有优势。此外,论文还证明了 UNILM 在五个自然语言生成数据集上的有效性,其中UNILM 作为一个 sequence-to-sequence 的语言模型来使用, 在 CNN/DailyMailGigaword 的抽象式摘要、SQuAD 问题生成、CoQA 生成式问答 enerative question answering 、以及 DSTC7 对话式响应生成dialog response generation 上创造了新的 SOTA

20.1 模型

  1. 给定一个输入序列X=x1,x|X|$ X = x_1\cdots,x_{|X|} $ ,UNILM 为每个 token 获得了一个 contextualized vector representation 。如下图所示, 预训练通过几个无监督的语言建模目标来优化共享的 Transformer 网络,即单向语言模型、双向语言模型、以及 sequence-to-sequence 语言模型。为了控制对将要预测的 word token 的上下文的访问,我们采用了不同的自注意力掩码。换句话说,我们使用掩码来控制 token 在计算其 contextualized representation 时应该注意多少上下文。一旦 UNILM 得到预训练,我们就可以利用下游任务的 task-specific 数据对其进行微调。

  2. Input Representation:输入X$ X $ 是一个单词序列:

    • 对于单向语言模型而言,X$ X $ 是一个 text segment
    • 对于双向语言模型和 sequence-to-sequence 语言模型而言,X$ X $ 是打包在一起 segment pair

    我们总是在输入的开头添加一个特殊的 start-of-sequence token[SOS]),并在每个segment 的结尾添加一个特殊的end-of-sequence token[EOS])。[EOS] 不仅标志着自然语言理解任务中的句子边界,而且在自然语言生成任务中还用于模型学习何时终止解码过程。

    注意,这里的 [SOS] 类似于 BERT 中的 [CLS]

    input representation 遵从 BERT

    • 通过 WordPiece 将文本 tokenize 为子词单元 subword unit
    • 对于每个 input token ,它的 vector representation 是由相应的 token embeddingposition embedding 、以及 segment embedding 相加而计算出来的。

    由于 UNILM 是使用多个语言模型任务进行训练的,segment embedding 也起到了语言模型 id 的作用,因为我们为不同的语言模型目标使用不同的 segment embedding

    对于单向语言模型,只有一个 segment,因此 segment id 都是 1;对于双向语言模型和 sequence-to-sequence 语言模型,有两个 segment,因此 segment id12 。因此,根据 segment id 是几个,可以粗略地(而无法精确地)区分不同的语言模型。

  3. Backbone Network: Multi-Layer Transformerinput 向量{xi}i=1|X|$ \left\{\mathbf{\vec x}_i\right\}_{i=1}^{|X|} $ 被打包为H(0)=[x1,,x|X|]Rd×|X|$ \mathbf H^{(0)}=\left[\mathbf{\vec x}_1,\cdots,\mathbf{\vec x}_{|X|}\right]\in \mathbb R^{d\times |X|} $ ,其中d$ d $ 为 token embedding 维度(也是 position embeddingsegment embedding 的维度)。然后H(0)$ \mathbf H^{(0)} $ 通过一个L$ L $ 层的 Transformer 被编码到不同 levelcontextual representation

    (12)H(l)=[h1(l),,h|X|(l)]=Transformerl(H(l1)),l{1,2,,L}

    其中H(l)$ \mathbf H^{(l)} $ 为第l$ l $ 个层 Transformer 的输出。

    在每个 Transformer Block 中,多个 self-attention head 被用于聚合前一层的输出向量。对于第l$ l $ 个 Transformer 层,单个 self-attention headA(l)$ \mathbf A^{(l)} $ 是通过如下的公式来计算的:

    (13)Q=WQ(l)H(l1)Rdh×|X|K=WK(l)H(l1)Rdh×|X|V=WV(l)H(l1)Rdh×|X|A(l)=softmax(QKd+M)V(l)

    其中:

    • WQ(l),WK(l),WV(l)Rdh×d$ \mathbf W_Q^{(l)},\mathbf W_K^{(l)},\mathbf W_V^{(l)}\in \mathbb R^{d_h\times d} $ 为三个投影函数,分别将H(l1)Rdh×|X|$ \mathbf H^{(l-1)}\in \mathbb R^{d_h\times |X|} $ 投影到 query 空间、key 空间、value 空间。dh$ d_h $ 为 self-attention head 的维度。
    • MR|X|×|X|$ \mathbf M\in \mathbb R^{|X|\times |X|} $ 为 mask matrix (也叫做 self-attention mask matrix),用于决定一对 token 之间是否可以相互关注 attend

    我们使用不同的 mask matrixM$ \mathbf M $ 来控制一个 token 可以关注的上下文从而计算该 tokencontextualized representation ,如 Figure 1 所示。以双向的语言模型为例: mask matrix的元素都是 0 ,表明所有的token 都可以相互访问。

  4. 预训练目标:我们使用四个完形填空任务来预训练 UNILM,这些完形填空任务为了不同语言建模目标而设计的。在完形填空任务中,我们在输入中随机选择一些 WordPiece token ,并用 special token (即,[MASK])替换它们。然后,我们将 Transformer 网络计算出的、这些 special token 对应的输出向量馈入一个 softmax 分类器,以预测 masked tokenUNILM 的参数被学习为:使 predicted tokenoriginal token 计算的交叉熵损失最小。值得注意的是,使用完形填空任务使得所有的语言模型都可以使用相同的训练程序,单向和双向的都一样。

    • 单向语言模型:我们同时使用 left-to-right 语言模型目标、以及 right-to-left 语言模型目标。

      left-to-right 语言模型为例。每个 tokenrepresentation 只编码左侧的 context token 和它自身。例如,为了预测 "x1x2[MASK]x4$ x_1x_2\text{[MASK]}x_4 $ " 的 masked token ,只能使用tokenx1,x2$ x_1, x_2 $ 及其自身(即 [MASK])。这是通过使用三角矩阵的 self-attention maskM$ \mathbf M $ 来实现的,其中self-attention mask 的上三角部分被设置为$ -\infty $ ,其他不分被设置为0$ 0 $ ,如图 Figure 1 所示。

      类似地, right-to-left 语言模型以 token 的右侧上下文为条件来预测该 token

    • 双向语言模型:遵从 BERT,双向语言模型允许所有 token 在预测中相互关注。双向语言模型对来自两个方向的上下文信息进行编码,并能产生比单向语言模型更好的 contextual representation 。在双向语言模型中,self-attention maskM$ \mathbf M $ 是一个全零矩阵,因此在输入序列的所有位置上可以关注每个 token

    • Sequence-to-Sequence 语言模型: 如图 Figure 1 所示,对于预测来说:

      • 第一个 segment (即,source segment)的 token 可以从 source segment 内的两个方向相互关注。
      • 而第二个 segment (即,target segment )的 token 只能关注 target segment 内的左侧上下文及其自身,以及 source segment 内的所有 token

      例如,给定 source segmentt1t2$ t_1t_2 $ 及其 target segmentt3t4t5$ t_3t_4t_5 $ ,我们将 input "[SOS]t1t2[EOS]t3t4t5[EOS]$ \text{[SOS]}t_1t_2\text{[EOS]}t_3t_4t_5\text{[EOS]} $ " 馈入模型。t1$ t_1 $ 和t2$ t_2 $ 都可以访问前面四个 token (即,"[SOS]t1t2[EOS]$ \text{[SOS]}t_1t_2\text{[EOS]} $ "),但t4$ t_4 $ 只能访问前面六个 token (即,"[SOS]t1t2[EOS]t3t4$ \text{[SOS]}t_1t_2\text{[EOS]}t_3t_4 $ ")。

      Figure 1 显示了用于Sequence-to-Sequence 语言模型目标的self-attention maskM$ \mathbf M $ 。

      • M$ \mathbf M $ 的左边部分被设置为全0$ 0 $ ,这样所有的 token 都能访问到第一个 segment
      • M$ \mathbf M $ 的右上部分被设置为$ -\infty $ ,从而阻止 source segment 关注到 target segment
      • 此外,对于M$ \mathbf M $ 的右下部分,我们把它的上三角部分设置为$ -\infty $ 、其他位置设置为0$ 0 $ ,这样可以防止target segment 中的 token 关注到它们未来的位置(即,右侧)。

      在训练过程中,我们同时在两个 segment 中随机选择 token ,并用 special token (即,[MASK] )来替换它们。该模型被学习从而恢复 masked token 。由于 source texttarget textpair 对在训练中被打包成一个连续的输入文本序列,我们隐式地鼓励模型学习这两个 segment 之间的关系。为了更好地预测 target segment 中的 tokenUNILM 学习有效地编码 source segment 。因此,针对Sequence-to-Sequence 语言模型设计的完形填空任务(也被称为 encoder-decoder 模型),同时预训练了一个双向编码器和一个单向解码器。预训练的模型作为encoder-decoder 模型,可以很容易地适用于广泛的条件文本生成 conditional text generation 任务,如抽象式摘要 abstractive summarization

      这里的 “ Sequence-to-Sequence 语言模型”其实同时混合了双向语言模型(当 [MASK] 位于 source segment)和 Sequence-to-Sequence 模型(当 [MASK] 位于 target segment)。

      此外,这里的 decoder 仅解码 [MASK] 对应的 token,因此是一个 incomplete 的解码过程。

      此外,这里的 encoder-decoder 架构与传统的架构不同,这里 decoder 可以直接访问 encoder 的所有位置。而传统的架构中,decoder 仅能访问单个 encoder representation ,这个 encoder representation 聚合了所有 encoder input 信息。

    • Next Sentence Prediction:遵从 BERT,对于双向语言模型,在预训练中我们也包括 next sentence prediction 任务。

  5. 预训练配置:整体预训练目标是上述不同类型的语言模型的目标之和。具体而言,在一个 training batch 中,包含: 1/3 的双向语言模型目标、1/3Sequence-to-Sequence 语言模型目标、1/6left-to-right 语言模型目标、1/6right-to-left 语言模型目标。

    UNILM 的模型结构遵循 BERT_LARGE 的结构,以便进行公平的比较。遵从 GPTUNILM 采用 gelu 激活函数。具体而言,我们使用一个 24 层的 Transformer ,隐层维度 1024、注意力头 16 个,共包含大约 340M 的参数。softmax 分类器的权重矩阵与 token embedding 绑定(即,二者共享相同的参数矩阵)。

    UNILMBERT_LARGE 初始化,然后使用 English WikipediaBookCorpus 进行预训练,这两个数据集的处理方式与 BERT 相同。词表vocabulary 规模为 28996 。输入序列的最大长度为 512token masking 的概率为 15% 。在 masked position 中,80% 的时间我们用 [MASK] 来替代被选中的 token10% 的时间用 random token 来替代,其余的 10% 时间保持 original token 。此外,80% 的时间我们每次随机掩码一个 token20% 的时间我们随机掩码一个 bigram 或一个 trigram

    我们使用β1=0.9,β2=0.999$ \beta_1=0.9,\beta_2 = 0.999 $ 的 Adam 优化器。学习率为 3e-5 ,其中在最初的 40K 步中进行线性预热然后进行线性衰减。 dropout-rate = 0.1weight-decay = 0.01batch-size = 330 。预训练程序运行了大约 770K 步。使用 8Nvidia Telsa V100 32GB GPU card 进行混合精度训练,每 10K 步需要约 7 小时。

    BERT_LARGE 初始化之后还预训练了 770K 步,那初始化的意义和影响是什么?通常,用预训练好的模型作为初始化之后,只需要训练少量的 step 就能达到比较好的效果。

    从工程落地上来讲,用 BERT_LARGE 来初始化有利于更快地收敛从而降低训练成本;从实验上来讲,最好是从头开始训练从而进行公平地比较。

  6. 下游自然语言理解任务和自然语言生成任务的微调:

    • 对于自然语言理解任务,我们将 UNILM 作为一个双向 Transformer encoder 来微调,就像 BERT

      以文本分类任务为例。我们使用 [SOS]encoding vector 作为 input representation ,记做h1(L)$ \mathbf{\vec h}_1^{(L)} $ ,并将其馈入随机初始化的 softmax 分类器(即 task-specific 输出层),其中类别概率计算为:softmax(h1(L)WC)$ \text{softmax}\left(\mathbf{\vec h}_1^{(L)} \mathbf W_C\right) $ ,其中WCRd×C$ \mathbf W_C\in \mathbb R^{d \times C} $ 是一个参数矩阵,C$ C $ 是类别数量。我们通过更新预训练的语言模型以及被添加的 softmax 分类器的参数,从而最大化 labeled training data 的似然 likelihood

    • 对于自然语言生成任务,我们以 sequence-to-sequence 任务为例。微调过程类似于使用 self-attention mask 的预训练。令S1$ S_1 $ 和S2$ S_2 $ 分别表示 source sequencetarget sequence 。我们通过 special token 将它们打包在一起,形成输入 "[SOS]S1[EOS]S2[EOS]$ \text{[SOS] } S_1 \text{ [EOS] } S_2 \text{ [EOS]} $ " 。该模型通过随机掩码 target 序列中一定比例的 token 来进行微调,并学习恢复 masked word 。训练目标是在给定上下文的情况下,最大化 masked token 的似然 likelihood

      值得注意的是,标识着 target序列结束的 [EOS] token 在微调过程中也可能被掩码,因此当这种情况发生时,模型会学习何时发出 [EOS] token 从而终止 target 序列的生成过程。

      UNILM 在自然语言生成任务上的微调与常规的 sequence-to-sequence 模型不同。常规的 sequence-to-sequence 模型会依次生成 target sequence(包括 [EOS] token )。而这里的 UNILM 采用它预训练时的方式,仅掩码 target sequence 并且仅仅预测 masked token (而不是序列生成)。

      常规的 sequence-to-sequence 更符合实际,因为在实际应用中,我们通常只有 source sequence 而没有 target sequence 。而 UNILM 不仅需要知道 source sequence、还需要知道部分的 target sequence 信息(从而预测被 masked 的部分)。

20.2 实验

  1. 我们对自然语言理解任务(即 GLUE benchmark ,以及抽取式问答 extractive question answering )和自然语言生成任务(即抽象式摘要 abstractive summarization 、问题生成、生成式问答、以及对话响应生成 dialog response generation )都进行了实验。

20.2.1 抽象式摘要

  1. 自动文本摘要 automatic text summarization 能产生一个简明流畅的 summary ,传达 input(如,一篇新闻文章)的关键信息。我们聚焦于抽象式摘要,这是一项生成任务,其中 summary 不必使用输入文本中的短语或句子。我们使用 CNN/DailyMail 数据集的非匿名版本、以及 Gigaword 来用于模型微调和评估。我们按照前面描述的程序将 UNILM 作为一个 sequence-to-sequence 模型进行微调,将文档(第一个 segment )和 summary (第二个 segment )拼接起来作为输入,并根据预定义的最大序列长度进行截断。

    我们在训练集上对我们的模型微调了 30epoch 。我们复用预训练中的大多数超参数。掩码概率为 0.7 。我们还使用平滑率为 0.1 的标签平滑 label smoothing

    • 对于 CNN/DailyMail ,我们设置 batch size = 32 ,最大序列长度为 768
    • 对于 Gigaword ,我们设置 batch size = 64 ,最大序列长度为 256

    在解码过程中,我们使用 beam size = 5beam search 。对于 CNN/DailyMailGigaword 来说,input document 被截断为前 640token 和后 192token 。我们在 beam search 中删除了重复的 trigram ,并在验证集上调整了 maximum summary length

  2. 我们使用 F1 版本的 ROUGE 作为两个数据集的评估指标。在下表中,在 CNN/DailyMail 数据集上,我们将 UNILMbaseline 以及几个 SOTA 模型进行比较:

    • LEAD-3 是一个 baseline 模型,它抽取文档中的前三句话作为其摘要。
    • PGNet 是一个基于 pointer-generator networksequence-to-sequence 模型。
    • S2S-ELMo 使用一个 sequence-to-sequence 模型,用预训练好的 ELMo representation 进行增强,被称为 SRC-ELMO+SHDEMB
    • Bottom-Up 是一个 sequence-to-sequence 模型,用一个 bottom-up content selector 来选择突出的短语。

    我们还在下表中列出了数据集上最好的抽取式摘要结果。如下表所示,我们的模型优于以前所有的抽象式系统 abstractive system ,在数据集上创造了一个新的SOTA 的抽象式结果。在 ROUGE-L 中,我们的模型也比最好的抽取式模型高出 0.88 分。

  3. 在下表中,我们对模型在不同规模(10K3.8M )的 Gigaword 上进行了评估。

    • TransformeOpenNMT 都实现了标准的 attentional sequence-to-sequence 模型。
    • Re3Sum 检索摘要作为候选模板,然后使用一个扩展的 sequence-to-sequence 模型来生成摘要。
    • MASS 是一个基于 Transformer 网络的预训练的 sequence-to-sequence 模型。

    实验结果表明:UNILM 取得了比以往工作更好的性能。此外,在低资源环境下(即只使用 10K 个样本作为训练数据),我们的模型在 ROUGE-L 中比 MASS 高出 7.08 分。

20.2.2 问答

  1. Question Answering: QA 任务是在给定一个段落的条件下回答一个问题。有两种 setting

    • 第一种被称为抽取式问答 extractive QA ,答案被假定为段落中的一个 text span
    • 另一种被称为生成式问答 generative QA ,答案需要即时生成。
  2. 抽取式问答:这项任务可以被表述为自然语言理解任务,我们需要预测答案在段落中的开始位置和结束位置。我们对预训练的 UNILM 进行微调,将UNILM 作为双向编码器从而用于抽取式问答。我们在 Stanford Question Answering Dataset: SQuAD2.0 版本、以及 Conversational Question Answering: CoQA 数据集上进行了实验。

    • SQuAD 2.0 上的结果如下表所示,我们比较了两个模型的精确匹配 Exact Match: EM 分和 F1 分。

      • RMR+ELMo 是一个基于 LSTM 的问答模型,用预训练好的 language representation 来增强。
      • BERT_LARGE 是一个 cased 模型(即,字母保持大小写),在 SQuAD 训练数据上微调了 3epochbatch size = 24 ,最大序列长度为 384
      • UNILM 以与 BERT_LARGE 相同的方式进行微调。

      我们看到 UNILM 的表现优于 BERT_LARGE

    • CoQA 是一个对话式问答 conversational question answering 数据集。与 SQuAD 相比,CoQA 有几个独有的特点:

      • 首先,CoQA 中的样本是对话式的,所以我们需要根据对话历史来回答 input question
      • 其次,CoQA 中的答案可以是自由格式的文本,包括很大一部分是 "yes/no" 的答案。

      我们对用于 SQuAD 的模型做了如下修改:

      • 首先,除了被问的问题,我们将 question-answer 的历史拼接到第一个 segment ,这样模型就可以捕获到对话信息。

      • 其次,对于"yes/no" 问题,我们使用 [SOS] tokenfinal hidden vector 来预测 input question 是否是一个"yes/no" 问题,以及答案为 "yes/no"

        对于非"yes/no" 问题 ,我们选择一个 F1 分数最高的 passage subspan 用于训练。

      CoQA 的实验结果如下表所示。我们比较了两个模型的 F1 分:

      • DrQA+ELMo 是一个基于 LSTM 的问答模型,用预训练好的 ELMo representation 来增强。
      • BERT_LARGE 是一个 cased 模型(即,字母保持大小写),在 CoQA 训练数据上微调了 2epochbatch size = 16 ,最大序列长度为 512
      • UNILM 以与 BERT_LARGE 相同的方式进行微调。

      我们看到 UNILM 的表现优于 BERT_LARGE

  3. 生成式问答:生成式问答为 input question 和段落生成自由形式的答案,这是一个自然语言生成任务。相比之下,抽取式问答只能预测 input passagesubspan 作为答案。在 CoQA 数据集上(如前所述),《CoQA: A conversational question answering challenge》表明:普通的 sequence-to-sequence 模型的性能仍然远远低于抽取式方法。

    我们为生成式问答来适配 UNILM ,从而将 UNILM 作为一个 sequence-to-sequence 模型。第一个 segment (即 input sequence )是对话历史、input question 、以及段落的拼接。第二个 segment (即,output sequence )是答案。我们在 CoQA 训练集上对预训练的 UNILM 微调了 10epoch 。我们设置 batch size = 32 ,掩码率为 0.5 ,最大序列长度为 512 。我们还使用平滑率为 0.1 的标签平滑。其他超参数与预训练保持一致。

    在解码过程中,我们使用 beam size = 3beam searchinput question 和段落的最大长度为 470 。对于超过最大长度的段落,我们用滑动窗口的方法将段落分成若干块,并选择一个与question 具有最高 word overlap 的块。

    我们将我们的方法与生成式问答模型 Seq2SeqPGNet 进行了比较:

    • Seq2Seq baseline 是一个带有注意力机制的 sequence-to-sequence 模型。
    • PGNet 模型用一个 copy 机制增强了 Seq2Seq

    如下表所示,我们的生成式问答模型在大大超过了以前的生成式方法,这极大地缩小了生成式方法和抽取式方法之间的差距。

20.2.3 问题生成

  1. 我们对 answer-aware 的问题生成 question generation 任务进行了实验。给定一个 input passage 和一个 answer span ,我们的目标是生成一个针对答案的问题。SQuAD 1.1 数据集被用于评估。遵从 《Learning to ask: Neural question generation for reading comprehension》,我们将原始训练集拆分为训练集和测试集,并保留原始验证集。我们还遵从 《Paragraph-level neural question generation with maxout pointer and gated self-attention networks》中的数据拆分方式进行实验,即,使用反向的 dev-test 拆分。

    问题生成任务被表述为一个 sequence-to-sequence 问题。第一个 segmentinput passage 和答案的拼接,而第二个segment 是被生成的问题。

    我们在训练集上对 UNILM 微调了 10epoch 。我们设置 batch size = 32,掩码率为 0.7 ,学习率为 2e-5 。我们采用平滑率为 0.1 的标签平滑。其他超参数与预训练相同。

    在解码过程中,我们将输入截断为 464token 并选择包含答案的 passage 块。评估指标 BLEU-4, METEOR, ROUGE-L 的计算方法与 《Learning to ask: Neural question generation for reading comprehension》 中的脚本相同。

    结果如下表所示。

    • CorefNQG是基于一个带有注意力的 sequence-to-sequence 模型、以及一个特征丰富的编码器。
    • MP-GSN 使用了一个带门控自注意力编码器的 attention-based sequence-to-sequence model
    • SemQG 使用两个语义增强的奖励 semantics-enhanced reward 来正则化 generation

    UNILM 的性能优于以前的模型,并针对问题生成任务达到了新的 SOTA

  2. 生成的问题来改善 QA:问题生成模型可以从文本语料库中自动收集大量的 question-passage-answer 的样本。我们表明,由问题生成模型产生的 augmented data 可以改善问答模型。

    我们生成了 5M 个可回答的样本,并通过修改可回答的样本生成了 4M 万个不可回答的样本。我们在生成的数据上对我们的问题回答模型微调一个 epoch 。然后在 SQuAD 2.0 的数据上再微调两个 epoch

    生成的 augmented data 并不是和下游任务的数据混合,而是进行 stack-style 的微调。因此,augmented data 微调的模型仅用于初始化。下游任务的目标数据才是作为最终的微调,使得与测试集的数据分布保持一致。

    如下表所示,由 UNILM 生成的 augmented data 改善了问答模型。

    请注意,在微调过程中,我们对生成的数据集和 SQuAD 2.0 数据集都使用了双向 masked language modeling: MLM 作为辅助任务(MLM 原本用于预训练阶段)。与直接使用自动生成的样本相比,双向 MLM 带来了 2.3 个点的绝对改进。一个可能的原因是,当在 augmented data 上进行微调时,辅助任务缓解了灾难遗忘catastrophic forgetting

    这个 2.3 的绝对改进并没有在下表中展示。

20.2.4 响应生成

  1. 我们在以文档为基础的 dialog response generation 任务上评估 UNILM 。给定一个多轮对话历史、以及一个网络文档 web document 作为知识源,系统需要生成一个既适合对话、又反映网络文档内容的自然语言响应。我们微调 UNILM 来完成这个任务,其中 UNILM 作为一个 sequence-to-sequence 模型。第一个 segmentinput sequence )是 web document 和对话历史的拼接。第二个 segmentoutput sequence )是响应。

    我们在 DSTC7 的训练数据上对 UNILM 微调了 20epochbatch size = 64 。掩码率为 0.5 。最大序列长度为 512 。在解码过程中,我们使用 beam size = 10beam search 。产生的响应的最大序列长度被设置为 40

    如下表所示,在 DSTC7 共享任务中,UNILM 在所有评估指标上都超过了最好的系统。

20.2.5 GLUE Benchmark

  1. 我们在 GLUE benchmark 上评估 UNILMGLUE 是九个语言理解任务的集合,包括问答、语言可接受性linguistic acceptability 、情感分析、文本相似性、转述检测paraphrase detection 、以及自然语言推理natural language inference : NLI

    我们的模型作为一个双向语言模型被微调。我们使用 Adamax 优化器,学习率为 5e-5batch size = 32 。最大 epoch 数被设为 5 。使用一个带预热(预热比例 0.1 )的线性学习率衰减的学习率调度。每个任务的 last linear projectiondropout-rate = 0.1,除了 MNLI0.3CoLA/SST-20.05 。为了避免梯度爆炸问题,梯度范数被剪裁在 1.0 以内。我们截断 token 使得输入序列长度不超过 512

    下表列出了从 benchmark evaluation server 获得的 GLUE 测试结果。结果显示,在 GLUE 任务中,UNILMBERT_LARGE 相比获得了相差无几的性能。

20.2.6 未来工作

  1. UNILM 可以从以下几个方面继续改善:

    • 我们将通过在 web-scale的文本语料库上训练更多的 epoch 和更大的模型来推动当前方法的极限。同时,我们还将在下游应用上进行更多的实验以及消融实验,从而研究模型能力以及采用相同网络来预训练多种语言建模任务的好处。
    • 在我们目前的实验中,我们聚焦于单语 NLP 任务。我们还对扩展 UNILM 从而支持跨语言的任务感兴趣。
    • 我们将对自然语言理解和自然语言生成任务进行多任务微调,这是 Multi-Task Deep Neural Network: MT-DNN 的自然延伸。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文