八、BERT[2018]

  1. 语言模型预训练已被证明对改善许多自然语言处理任务是有效的。这些任务包括:

    • sentence-level 的任务,如自然语言推理 natural language inference 和转述paraphrasing ,其目的是通过整体分析来预测句子之间的关系。
    • token-level 的任务,如命名实体识别 named entity recognition: NERSQuAD 问答 question answering: QA ,其中模型需要在 token-level 产生细粒度的输出。

    目前有两种策略将预训练的 language representation 应用于下游任务: feature-basedfine-tuning

    • feature-based方法(如 ELMo)使用 tasks-specific 架构,其中使用预训练的 representation作为额外的特征。
    • fine-tuning方法(如 GPT ),引入了最小的 task-specific 参数,并通过简单地微调 pretrained parameter 从而对下游任务进行训练。

    在之前的工作中,这两种方法在pre-training 期间共享相同的目标函数,其中它们使用单向语言模型来学习通用的 language representation

    即,feature-based方法和fine-tuning方法采用相同的预训练方式,但是在应用到下游任务阶段才有所差异。

    论文 《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》 认为:目前的技术严重限制了 pre-trained representation 的能力,特别是对于微调 fine-tuning 方法。主要的限制是:标准的语言模型是单向的,这就限制了在预训练中可以使用的架构。例如,在 GPT 中,作者使用了一个从左到右的架构,其中在 Transformerself-attention layer 中每个 token 只能关注前面的 token

    • 对于sentence-level 的任务,这样的限制是次优的。
    • 对于 token-level 的任务(如 SQuAD 问答任务),当应用基于微调的方法时,这样的限制可能是毁灭性的。因为在这种情况下,从两个方向融合上下文是至关重要的(因为可能需要关注后面的 token 而不是前面的,从而找到问题的答案)。

    在论文 《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》 中,作者通过从 Transfromer 中提出 Bidirectional Encoder Representation: BERT 来改善基于微调的方法。BERT 通过提出一个新的预训练目标来解决前面提到的单向约束:masked language model: MLM 任务,其灵感来自 Cloze 任务(即,完形填空任务)。 MLM 从输入中随机掩码一些 token ,任务的目标是仅根据上下文来预测被掩码单词的原始 vocabulary id 。与从左到右的语言模型预训练不同的是,MLM 目标允许representation 同时融合左侧和右侧的上下文,这使得我们可以预训练一个深度的双向 Transformer 。除了MLM ,论文还引入了一个 next sentence prediction: NSP 任务来联合预训练 text-pair representation

    论文贡献如下:

    • 作者证明了双向预训练对 language representation 的重要性。与 《Improving language understanding with unsupervised learning》使用单向语言模型进行预训练不同,BERT 使用 MLM 来实现 pre-trained deep bidirectional representation 。这也与 ELMo相反,后者使用独立训练的从左到右和从右到左的语言模型的浅层拼接 shallow concatenation
    • 作者表明,预训练的 representation 消除了许多严重工程化的 task-specific 架构的需要。BERT 是第一个基于微调的 representation model ,它在大量的 sentence-leveltoken-level 任务上取得了SOTA 的性能,超过了许多具有 task-specific 架构的系统。
    • BERT 推动了 11NLP 任务的 state-of-the-art 。作者还报告了BERT 的大量消融实验,表明 BERT 模型的双向特性是唯一最重要的新贡献。
  2. 相关工作:

    • feature-based 方法:几十年来,学习广泛适用的 word representation 一直是一个活跃的研究领域,包括非神经方法和神经方法。预训练的 word embeddin 被认为是现代 NLP 系统的一个组成部分,与从头开始学习的 embedding 相比,有很大的改进。

      这些方法已被推广到更粗的粒度,如 sentence embeddingparagraph embedding 。与传统的 word embedding 一样,这些学到的 representation 通常也被用作下游模型的特征。

      ELMo 沿着不同的维度推广了传统的 word embedding 研究。他们提出从语言模型中提取 context-sensitive 的特征。当将contextual word embedding 与现有的 task-specific 架构相结合时,ELMo 推进了几个主要 NLP benchmarkSOTA ,包括 SQuAD 上的问答、情感分析 sentiment analysis 和命名实体识别 named entity recognition

    • fine-tuning 方法:最近从语言模型中进行迁移学习的一个趋势是,在为下游监督任务微调同一模型之前,在语言模型目标上预训练该模型架构。这些方法的优点是,只需要从头开始学习非常少的参数。至少部分由于这一优势,GPTGLUE benchmark 的许多 sentence-level 任务上取得了当时 SOTA 的结果。

    • 从监督数据 supervised data 迁移学习:虽然无监督预训练的优势在于几乎有不限量的数据可用,但也有工作表明,可以从具有大型数据集的监督任务中有效地迁移学习,如自然语言推理和机器翻译 machine translation 。在 NLP 之外,计算机视觉领域的研究也证明了从大型预训练模型进行迁移学习的重要性,其中一个有效的秘方是:对基于 ImageNet 预训练的模型进行微调。

8.1 模型

8.1.1 模型架构

  1. BERT 的模型架构是一个多层的、双向的 Transformer encoder ,基于 《Attention is allyou need》描述的原始实现。由于最近 Transformer 的使用已经变得无处不在,而且我们的实现实际上与原版相同,因此我们将省略对模型架构的详细描述,请读者参考 《Attention is allyou need》 以及 《The Annotated Transformer》 等优秀出版物。

    在这项工作中,我们将层数(即 Transformer block)记做 Lhidden size 记做 Hself-attention head 数记做 A 。 在所有情况下,我们将 feed-forward/filter size 设为 4H ,即,H=768 时设为的 3072H=1024 时设为 4096 。我们主要报告两种模型尺寸的结果:

    • BERT_BASEL=12H=768A=12,总的参数规模 110M
    • BERT_LARGEL=24H=1024A=16,总的参数规模 340M

    前馈神经网络是一个双层的全连接网络,输入维度为 H、中间层的维度为 4H 、输出层的维度为 H

    BERT_BASE 被选择为具有与 GPT 相同的模型大小,以便于比较。然而,关键的是,BERT Transformer 使用的是双向自注意力,而GPT Transformer 使用的是受约束的自注意力(每个token 只能关注其左侧的上下文)。我们注意到,在文献中,双向 Transformer 通常被称为 Transformer encoder ,而只关注左侧上下文的 Transformer 被称为 Transformer decoder (因为它可以用于文本生成)。

    BERTGPTELMo 之间的比较如下图所示。

8.1.2 Input Representation

  1. 我们的 input representation 能够在一个token 序列中明确地表示单个文本句子或一对文本句子(如,[Question, Answer] )。对于一个给定的token ,它的 input representation 是由相应的token embeddingsegment emebddingposition embedding 相加而成的。下图给出了我们的 input representation 的直观表示。

    具体而言:

    • 我们使用具有 30ktokenvocabularyWordPiece embedding《Google’s neural machine translation system: Bridging the gap between human and machine translation》)。我们用 ## 指示被拆分的 word piece

    • 我们使用学到的 positional embedding ,最大可以支持长度为 512token 的序列。

    • 每个序列的第一个 token 总是特殊的 classification embedding ,即 [CLS]。与这个 token 相对应的 final hidden state (即 Transformer 的输出)被用作分类任务的 aggregate sequence representation。对于非分类任务,这个向量被忽略。

    • sentence pair 被打包成一个单一的序列。我们以两种方式区分这些句子。

      • 首先,我们用一个特殊的 token(即,[SEP])将这两个句子分开。(注意,每个句子的结尾都有一个 [SEP]

      • 其次,我们在第一句的每个 token 上添加一个学到的 segment A Embedding ,在第二句的每个 token 上添加一个学到的 segment B Embedding

        假设 segment 编号为 12,那么segment A embedding 就是 segment=1 对应的 embeddingsegment B embedding 就是 segment=2 对应的 embedding

      对于单个句子的输入,我们只使用 segment A Embedding 。注意,segment A 也称作 sentence A,因为这里一个句子就是一个 segment

      进一步地,我们是否可以对句子内部的子句、或者短语也作为更细粒度的 segment 来提供 embedding

8.1.3 预训练任务

  1. ELMoGPT 不同,我们没有使用传统的从左到右、或从右到左的语言模型来预训练 BERT 。相反,我们使用两个新颖的无监督预训练任务对 BERT 进行预训练。
a. Task1: Maksed LM
  1. 直观而言,我们有理由相信:深度双向模型严格来说比 left-to-right 的模型、或浅层拼接了 left-to-right and right-to-left 的模型更强大。不幸的是,标准的 conditional language model 只能从左到右或从右到左进行训练,因为双向条件会让每个词在multi-layered context 中间接地 "看到自己" 。

    为了训练深度双向 representation ,我们采取了一种直接的方法,即随机掩码一定比例的 input token ,然后只预测那些被掩码的 token。我们把这个过程称为 "masked LM"(MLM),尽管它在文献中经常被称为 Cloze task 。在这种情况下,对应于 mask tokenfinal hidden vector 被馈入 output softmax (输出空间为整个 vocabulary),就像在标准语言模型中一样。在我们所有的实验中,对于每个序列我们随机掩码 15%WordPiece token

    与降噪自编码器不同的是,我们只预测被掩码的单词,而不是重建整个输入。

    被掩码的 token 填充以 [MASK]

  2. 尽管这确实允许我们获得一个双向的预训练模型,但这种方法有两个缺点:

    • 首先,我们在预训练和微调之间产生了不匹配 mismatch,因为在微调过程中从来没有看到 [MASK] 这个 token

      为了缓解这一问题,我们并不总是用实际的 [MASK] token 来替换被掩码的 token。相反,训练数据生成器随机选择 15%token (例如,在句子 "my dog is hairy" 中它选择了hairy ),然后它将执行以下程序:

      • 80% 的情况下用 [MASK] token 替换该词,例如,"my dog is hairy" --> "my dog is [MASK]"
      • 10% 的情况下用一个随机的词来替换这个词,例如,"my dog is hairy" --> "my dog is apple"
      • 10% 的情况下保持该词不变,例如,"my dog is hairy" --> "my dog is hairy"。这样做的目的是为了使 representation 偏向于实际观察到的单词。

      Transformer encoder 不知道哪些单词会被要求预测、哪些单词已经被随机词所取代,所以它被迫保持每个 input tokendistributional contextual representation 。此外,由于随机替换只发生在所有 token1.5%(即 15%10%),这似乎并不损害模型的语言理解能力。

      似乎论文并没有实验来验证这一点。

    • 其次,每个 batch 中只有 15%token 被预测,这表明可能需要更多的 pre-training step 来使模型收敛。在实验部分,我们证明了 MLM 的收敛速度确实比left-to-right 的模型(预测每个 token )稍慢,但是 MLM 模型的经验改进 empirical improvement 远远超过了增加的训练成本。

b. Task2: Next Sentence Prediction
  1. 许多重要的下游任务,如 Question Answering: QANatural Language Inference: NLI ,都是基于对两个文本句子之间关系的理解,而语言建模并没有直接捕获到这一点。为了训练一个能够理解句子关系的模型,我们预训练了一个二元化的 next sentence prediction task ,该任务可以从任何单语种的语料库中简单地生成。

    具体而言,在为每个预训练样本选择句子 A 和句子 B 时:

    • 50% 的情况下句子 B 是紧随句子 A 的实际的下一句。
    • 50% 的情况下句子 B 是语料库中的一个随机句子。

    例如:

    我们完全随机地选择 NotNext 句子,最终的预训练模型在这个任务中达到了 97% ~ 98% 的准确率。尽管该任务很简单,但我们在实验中证明,针对这个任务的预训练对 QANLI 都非常有利。

    实际上后续的论文表明:NSP 预训练任务是没什么作用甚至是有害的。

8.1.4 预训练程序

  1. 预训练程序主要遵循现有的关于语言模型预训练的文献。对于预训练语料库,我们使用 BooksCorpus800M 单词)和 English Wikipedia2500M 单词)的组合。对于 Wikipedia ,我们只提取文本段落,忽略了 listtable 、和 header 。至关重要的是,我们使用document-level 语料库而不是混洗过的 sentence-level 语料库(如 Billion Word Benchmark )从而提取长的连续文本序列。

    为了生成每个训练输入序列,我们从语料库中采样两个区间 span 的文本,我们称之为 "句子",尽管它们通常比单个句长得多(但也可能更短)。

    • 第一个句子接受 Segment A Embedding ,第二个句子接受 Segment B Embedding
    • 50% 的情况下句子 B 是紧随句子 A 之后的实际的下一句,50% 的情况下句子 B 是一个随机的句子。这是用于 next sentence prediction 任务。
    • 这两个句子被采样,使得合并后的长度小于等于 512token

    语言模型的 masking 是在 WordPiece tokenization 之后进行的,其中使用 15% 的均匀的掩码率 masking rate ,并没有对部分 word piece 给予特殊考虑。

  2. 我们用 batch size = 256 来训练一百万个 step ,每个 mini-batch256 * 512 = 128000token (这里是近似值,精确值为 131072 ),因此相当于在 0.33B 单词的语料库上训练 40epoch

    • 我们使用 Adam 优化器,学习率为104β1=0.9,β2=0.999L2 权重衰减为 0.01 。学习率在前 10000 步进行 warmup ,学习率线性衰减。
    • 我们在所有 layer 上使用 0.1dropout rate
    • 遵循 GPT ,我们使用 gelu 激活函数不是标准的 relu
    • training lossmean masked LM likelihoodmean next sentence prediction likelihood 之和。
  3. BERT_BASE 的训练在 Pod configuration4 Cloud TPUs 上进行(共 16TPU 芯片)。BERT_LARGE 的训练在 16 Cloud TPUs 上进行(共 64TPU芯片)。BERT_BASEBERT_LARGE 的预训练都需要 4 天的时间来完成。

8.1.5 微调程序

  1. 对于 sequence-level 分类任务,BERT 的微调是直接的。为了获得输入序列的固定维度的、被池化的 representation ,我们采用输入的第一个 tokenfinal hidden state ,这对应于特殊的[CLS] 对应的 word embedding 。我们把这个向量表示为 cRH 。在微调过程中,唯一新增的参数是分类层 WRK×H,其中 K 是类别标签的数量。标签概率 pRK 是用标准的 softmax 计算的,即 p=softmax(cW)BERTW 的所有参数都是联合微调的,以使ground-truth 标签的对数概率最大化。

    对于 span-leveltoken-level 的预测任务,上述过程必须以 task-specific 的方式稍作修改。细节在实验部分给出。

  2. 对于微调,模型的大部分超参数与预训练时相同,除了 batch sizelearning rate 和训练 epoch 的数量。 dropout rate 始终保持在 0.1。最佳的超参数值是 task-specific的,但我们发现以下数值范围在所有任务中都能很好地发挥作用:Batch size16 、32Learning rate (Adam)5e-5、3e-5、2e-5epoch 数量为3、4

    微调采用更小的 batch size、更小的学习率、更少的 epoch

    我们还观察到:大数据集(例如,100k+ 带标记的训练样本)对超参数选择的敏感性远低于小数据集。

    微调通常是非常快的,所以简单地对上述超参数进行暴力搜索并选择在验证集上表现最好的模型是合理的。

8.1.6 BERT 和 GPT 的对比

  1. BERT 最具可比性的、现有的预训练方法是OpenAI GPT,它在一个大型文本语料库上训练了一个 left-to-rightTransformer 语言模型。事实上,BERT 中的许多设计决定都是有意选择的,以尽可能地接近 GPT,从而使这两种方法能够得到最低限度的比较。我们工作的核心论点是:我们提出的两个新颖的预训练任务占了经验改进的大部分,但我们确实注意到 BERTGPT的训练方式还有几个不同之处:

    • GPT 是在 BooksCorpus800M 单词)上训练的,而 BERT 是在 BooksCorpusWikipedia2500M 单词)上训练的。

      通常而言,更大的预训练语料库会带来更好的微调效果。

    • GPT 使用句子分隔符sentence separator[SEP])和 classifier token[CLS]),它们仅在微调期间引入;而 BERT 在预训练期间学习 [SEP][CLS]segment A/B embedding

    • GPT 被训练了 1Mstepbatch size32000 个单词;BERT 被训练了 1Mstepbatch size128000 个词。

    • GPT 在所有微调实验中使用相同的学习率 5e-5BERT 选择了 task-specific 的、用于微调的学习率,这个学习率在验证集上表现最好。

    为了隔绝 isolate 这些差异的影响,我们在实验部分进行了大量消融实验,证明大部分的改进实际上来自新颖的预训练任务。

8.2 实验

8.2.1 GLUE 数据集

  1. General Language Understanding Evaluation: GLUE基准是各种自然语言理解 natural language understanding 任务的集合。大多数 GLUE 数据集已经存在多年,但 GLUE的目的是:

    • 首先,对这些数据集进行规范的 Train/Dev/Test 的拆分。
    • 其次,建立一个 evaluation server 从而缓解评估不一致和测试集过拟合的问题。GLUE 并未提供测试集的标签,用户必须将他们的预测上传到 GLUE server 进行评估,并对提交的次数有所限制。
  2. GLUE benchmark 包括以下数据集:

    • Multi-Genre Natural Language Inference: MNLI:是一个大规模、众包式的蕴含分类 entailment classification任务。给定一对句子,任务的目标是:预测第二个句子相对于第一个句子是蕴含关系entailment 、矛盾关系contradiction 还是中性关系 neutral

    • Quora Question Pairs: QQP:是一个二元分类任务,任务的目标是确定在 Quora 上提出的两个问题是否在语义上等价 semantically equivalent

    • Question Natural Language Inference: QNLI:是 Stanford Question Answering Dataset 的一个版本,它被转换为一个二元分类任务。正样本是 sentence 确实包含正确答案的 (question, sentence) pair ,负样本是 sentence 中不包含答案的 (question, sentence) pair

    • Stanford Sentiment Treebank: SST-2 :是一个二元单句分类任务,由从电影评论中提取的句子组成,并具有人类对这些评论的情感的注释 annotation

    • Corpus of Linguistic Acceptability: CoLA:是一个二元单句分类任务,任务的目标是预测一个英语句子是否在语言上 "acceptable "。

    • Semantic Textual Similarity Benchmark: STS-B:是一个从新闻 headlines 和其他来源抽取的 sentence pair 的集合。它们被标记为 1 ~ 5 分,表示这两个句子在语义上的相似程度。

    • Microsoft Research Paraphrase Corpus: MRPC:从在线新闻来源中自动提取的 sentence pair 组成,并由人类注释该 sentence pair 是否具有语义上的等价性。

    • Recognizing Textual Entailment: RTE:是一个类似于 MNLI 的二元蕴含任务,但训练数据少得多。

    • Winograd NLI: WNLI:是一个小型自然语言推理 natural language inference 数据集,源于 《The winograd schema challenge》GLUE的网页指出:这个数据集的构建存在问题,而且每一个提交给 GLUE 的训练好的系统的表现都比一个简单的 baseline 更差。这个简单的 baseline 直接预测 majority class,并达到 65.1 的准确率。因此,出于对 OpenAI GPT 的公平比较,我们排除了这个数据集。对于我们的 GLUE submission ,我们总是预测 majority class

      即,对于每一个测试样本,预测它的类别为训练集中出现概率最高的那个类别(即 majority class )。

  3. 为了在 GLUE上进行微调,我们根据前文所述来表示输入序列或 sequence pair ,并使用对应于第一个输入 token[CLS])的final hidden vector cRH 作为 aggregate representation 。这在下图 (a)(b) 中得到了直观的证明。在微调过程中引入的唯一新参数是一个分类层 WRK×H ,其中 K 是类别标签的数量。我们用 cW 计算一个标准的分类损失,即log(softmax(cW))

    因为 GLUE 数据集都是文本分类任务。

    • 对于所有的 GLUE 任务,我们使用 batch size = 32 以及 3epoch

    • 对于每个任务,我们用 5e-5、4e-5、3e-5、2e-5的学习率进行微调,并选择在验证集上表现最好的一个。

    • 此外,对于 BERT_LARGE ,我们发现微调在小数据集上有时是不稳定的(也就是说,一些 runs 会产生退化degenerate 的结果),所以我们运行了几个随机重启 random restart ,并选择了在验证集上表现最好的模型。

      通过随机重启,我们使用相同的 pre-trained checkpoint ,但在微调期间进行不同的数据混洗和 classifier layer 初始化 。

    • 我们注意到,GLUE 数据集不包括测试集的标签,我们只为每个 BERT_BASEBERT_LARGE 做一次 evaluation server submission

    从图 (a) 中看到,在微调期间只有一个 [SEP] 符号,这与预训练阶段不一致。在预训练阶段每个句子的末尾都添加一个 [SEP] 。这种不一致是否影响效果?可以通过实验来评估。

  4. 实验结果如下表所示:

    • BERT_BASEBERT_LARGE 在所有任务上的表现都大大超过了现有的系统,分别比 SOTA 的系统获得了 4.4%6.7% 的平均精确度提升。请注意,BERT_BASEOpenAI GPTattention masking 之外的模型架构方面几乎是相同的。

    • 对于最大和最广泛报道的GLUE 任务 MNLIBERT (这里是 BERT_LARGE )相比 SOTA 获得了 4.7% 的绝对提升。

    • GLUE 的官方排行榜上,BERT_LARGE 获得了80.4分;相比之下,排在榜首的系统(即 OpenAI GPT)截至本文撰写之日获得了 72.8 分。

      下图中的 Average 稍有差异,因为这里我们排除了有问题的 WNLI 数据集。

    • 值得注意的是,BERT_LARGE 在所有任务中都显著优于 BERT_BASE,即使是那些训练数据非常少的任务。BERT 模型大小的影响将在下面的实验中进行更深入的探讨。

8.2.2 SQuAD v1.1

  1. Standford Question Answering Dataset: SQuAD 是一个由 10 万个众包的 (question, answer) pair 组成的集合。给定一个问题和来自维基百科中包含答案的段落,任务的目标是预测该段落中的答案文本的区间 answer text span 。例如:

    这种类型的区间预测任务 span prediction taskGLUE 的序列分类任务截然不同,但我们能够以一种直接的方式使 BERTSQuAD上运行。

    就像 GLUE 一样,我们将输入的问题和段落表示为一个 single packed sequence ,其中 question 使用 segment A embedding ,段落使用 segment B embedding 。在微调过程中学习到的唯一的新参数是一个 start vector sRH 和一个 end vector eRH 。令第 iinput tokenBERT 中的的 final hidden vector 表示为 tiRH。如 Figure 3(c) 所示。然后,单词 ianswer span 的起点start 的概率被计算为 tis 的内积,然后在当前段落中所有单词之上取 softmax

    (1)pi=exp(tis)jexp(tjs)

    其中 j 取值为从段落开始到段落结束。

    同样的公式用于 answer span 的终点end ,最大得分的 span 被用作预测。训练目标是正确的起点位置和终点位置的对数可能性。

    这里假设起点和终点之间是相互独立的。实际上这种假设通常不成立,终点和起点之间存在关联,如终点的位置大于等于起点。

  2. 我们用 5e-5 的学习率和 batch size = 32 训练了 3epoch 。在推理时,由于终点预测并没有考虑以起点为条件,我们增加了终点必须在起点之后的约束条件,但没有使用其他启发式方法。tokenized labeled span 被调整回原始的 untokenized input 以进行评估。

    因为经过了 tonenization 之后,原始的单词被拆分为 word piece,这将影响 span 的位置。

  3. 结果如下表所示。SQuAD采用了高度严格的测试程序,提交者必须手动联系 SQuAD 的组织者,在一个隐藏的测试集上运行他们的系统,所以我们只提交了我们最好的系统进行测试。下表中显示的结果是我们第一次也是唯一一次向 SQuAD 提交的测试结果。

    我们注意到:SQuAD 排行榜上的榜首结果没有最新的公开的系统描述,而且在训练他们的系统时允许使用任何公共数据。因此,我们在提交的系统中使用了非常适度的数据增强:在 SQuADTriviaQA 上联合训练。

    我们表现最好的系统相比排行榜上榜首的系统高出 +1.5 F1 (以 ensembling 系统的方式 )和 +1.7 F1 (以 single 系统的方式)。事实上,我们的单一 BERT 模型在F1 得分方面优于 top ensemble system 。如果我们只对 SQuAD 进行微调(不包括TriviaQA),我们会损失0.1-0.4 F1 ,但仍然以很大的优势胜过所有现有系统。

    BERT ensemble 使用了 7 个模型,它们分别使用不同的预训练 checkpointfine-tuning seed

8.2.3 Named Entity Recognition

  1. 为了评估 token tagging 任务的性能,我们在 CoNLL 2003 命名实体识别(NER)数据集上对 BERT 进行了微调。这个数据集由 20 万个训练单词组成,这些单词被标注为人物 Person 、组织Organization、位置Location、杂项Miscellaneous 、或其他Other(非命名实体)。

    • 为了进行微调,我们将每个token ifinal hidden representation tiRH 馈入分类层。预测不以周围的预测为条件(即,non-autoregressiveno CRF )。

    • 为了与 WordPiece tokenization兼容,我们将每个 CoNLL-tokenized input word 馈入我们的 WordPiece tokenizer ,并使用与第一个 sub-token 对应的 hidden state 作为分类器的输入。例如:

      其中 X 没有预测。Figure 3(d)中也给出了一个直观的表示。在NER 中使用了 cased WordPiece model(即,保留字母的大小写) ,而在所有其他任务中则使用了 uncased model (即,所有字母转化为小写)。

    结果如下表所示。BERT_LARGECoNLL-2003 NER Test 中优于现有的 SOTACross-View Training with multi-task learning)达到 +0.2 的改进。

    如果在 BERTfinal hidden representation 之上再接入自回归或 CRF,预期将得到更好的效果。

8.2.4 SWAG

  1. Situations With Adversarial Generations: SWAG 数据集包含11.3 万个 sentence-pair completion 的样本,评估了 grounded commonsense inference

    给定视频字幕数据集中的一个句子,任务是在四个选项中决定最合理的延续concatenation。例如:

    BERT 应用于 SWAG 数据集类似于 GLUE 。对于每个样本,我们构建四个输入序列,每个序列都包含给定句子(句子 A )和一个可能的延续(句子B )的拼接。我们引入的唯一 task-specific 参数是一个向量 vRH,它与 final aggregate representation ciRH 的内积表示每个选项 i 的得分。我们计算在四个选项上的 softmax

    (2)pi=exp(vci)j=14exp(vcj)

    我们用 2e-5 的学习率和 batch size = 16 对模型进行了 3epoch 的微调。结果如下表所示。BERT_LARGE 比作者的 baseline (即,ESIM+ELMo系统)要提高 27.1%

8.2.5 消融研究

  1. 尽管我们已经展示了极其强大的经验结果,但迄今为止所提出的结果并没有将 BERT 框架的每个方面 aspect 的具体贡献分离出来。这里我们对 BERT 的一些方面进行了消融实验,以便更好地了解其相对重要性。
a. 预训练任务的效果
  1. 我们的核心主张claim 之一是 BERT 的深度双向性deep bidirectionality ,这是由 masked LM pre-training 实现的并且是BERT与以前的工作相比最重要的一个改进。为了证明这一主张,我们评估了两个新模型,它们使用了与 BERT_BASE 完全相同的预训练数据、微调方案、以及 Transformer超参数。

    • No NSP:该模型使用 MLM 任务预训练,但是没有 NSP 任务。

    • LTR & No NSP:该模型使用 Left-to-Right: LTR 的语言模型来训练,而不是使用MLM 来训练 。在这种情况下,我们预测每一个input word ,不应用任何 masking 。在微调时也应用了 left-only 约束,因为我们发现:用 left-only-context 进行预训练然后用 bidirectional context 进行微调总是更糟糕。此外,这个模型没有使用 NSP 任务进行预训练。

      这与OpenAI GPT有直接的可比性,但使用了我们更大的训练数据集、我们的input representation 、以及我们的微调方案。

      BERT 在预训练期间学习 [SEP][CLS]segment A/B embedding,而 GPT 仅在微调期间学习这些 input representation

  2. 结果如下表所示。

    • 我们首先检查了NSP任务带来的影响。可以看到:去掉NSPQNLIMNLISQuAD的性能有很大的伤害。这些结果表明,我们的预训练方法对于获得前面介绍的强大的经验结果至关重要。

      后续的 XLNetRoBERTa 都表明:NSP 任务不重要。而且 RoBERTa 的作者认为:BERT 得出 NSP 任务重要的原因是,BERT 的输入是两个句子的拼接,因此如果此时没有 NSP 任务则效果较差。在 RoBERTa 中,由于没有 NSP 任务,因此预训练样本就是一个完整的、来自单个文件的文档块。

    • 接下来,我们通过比较 "No NSP "和 "LTR & No NSP "来评估训练 bidirectional representation 的影响。LTR 模型在所有任务上的表现都比MLM模型更差,在 MRPCSQuAD上的下降幅度非常大。

      • 对于SQuAD,直观而言,LTR 模型在span 预测和 token 预测方面的表现非常差,因为 token-level hidden state 没有右侧的上下文。
      • 对于 MRPC 而言,不清楚这种糟糕的表现是由于数据量小还是由于任务的性质,但是我们发现这种糟糕的表现在多次随机重启的full 超参数扫描中是一致的。
    • 为了加强 LTR 系统,我们尝试在它上面添加一个随机初始化的 BiLSTM 进行微调。这确实大大改善了 SQuAD 的结果,但结果仍然比预训练的双向模型差得多。它还损害了其它所有四个 GLUE 任务的性能。

    • 我们认识到:也可以像 ELMo 那样,单独训练LTRRTL模型,并将每个 token 表示为两个模型的拼接。然而:

      • 首先,这种方法比单一的双向模型要贵两倍。
      • 其次,这种方法对像 QA 这样的任务来说是不直观的,因为 RTL 模型不能以答案作为条件来回答问题(即,条件概率 P(questionanswer)
      • 最后,这种方法严格来说不如深度双向模型 deep bidirectional model 强大,因为深度双向模型可以选择使用 left contextright context

b. Model Size 的效果
  1. 这里我们探讨了模型大小对微调任务准确性的影响。我们训练了一些具有不同层数、隐单元、以及注意力头的 BERT 模型。除此之外,我们还使用了与前面所述相同的超参数和训练程序。

    选定的 GLUE 任务的结果如下表所示。在这个表中,我们报告了 5 次随机重启微调的平均验证准确率。可以看到:

    • 更大的模型在所有四个数据集上都导致了一致的准确性提高,即使是只有 3600 个标记的训练样本的 MRPC

    • 同样令人惊讶的是,我们能够在相对于现有文献已经相当大的模型之上实现如此显著的改进。例如:

      • 《Attention is all you need》探索的最大的 Transformer(L=6,H=1024,A=16),编码器的参数为100M
      • 而我们在文献中发现的最大的Transformer(L=64,H=512,A=2),参数为 235M《Character-level language modeling with deeper self-attention》)。
      • 相比之下,BERT_BASE 包含 110M 参数,BERT_LARGE 包含 340M 参数。

      多年以来人们都知道,增加模型规模将导致大型任务(如机器翻译、语言建模)的持续改进,这可以通过下表所示的 held-out 训练数据的 LM perplexity 来证明。然而,我们认为这是第一项工作,证明了扩展到极端的 model size 也会导致在非常小型的任务上有很大的改进,只要模型已经被充分地预训练过。

      即,增加模型规模不仅对大型任务有效,对小型任务也有效(模型需要被预训练)。

c. 训练步数的效果
  1. 下图展示了从一个已经预训练了 kstepcheckpoint 进行微调后的 MNLI 验证准确性。这使我们能够回答以下问题。

    • 问题:BERT 是否真的需要如此大量的预训练(128,000 words/batch * 1,000,000 steps)来实现高的微调准确率?

      答案:是的。BERT_BASE 预训练一百万步时,与五十万步相比,在 MNLI 上实现了接近 1.0% 的微调准确率提升。

    • 问题:MLM 预训练的收敛速度是否比 LTR 预训练慢,因为每个 batch 中只有 15% (而不是 100% )的单词被预测?

      答案:是的,MLM模型的收敛速度比LTR 稍慢。然而,就绝对准确率而言,MLM 模型几乎从一开始就超过了 LTR 模型。

d. Feature-based Approach with BERT
  1. 迄今为止,所有的 BERT 结果都采用了微调方法,即在预训练的模型中加入一个简单的分类层,并在下游任务中联合微调所有的参数。然而,feature-based 的方法,即从预训练的模型中抽取固定的特征,具有一定的优势:

    • 首先,并不是所有的 NLP 任务都可以很容易地用 Transformer 编码器架构来表示,因此需要增加一个 task-specific 的模型架构。
    • 其次,如果能够一次性地预先计算好训练数据的 expensive representation ,然后在这个 representation 的基础上用不太昂贵的模型进行许多实验,这有很大的计算优势。

    这里我们通过在 CoNLL-2003 NER 任务上生成类似于 ELMopre-trained contextual representation 来评估 BERTfeature-based 的方法中的表现如何。为了做到这一点,我们使用与本文在 Named Entity Recognition 章节中相同的 input representation ,但是使用 BERT 的一个或多个层的激活值而没有微调任何参数。这些 contextual embedding 被用作一个双层 BiLSTM 的输入,这个双层 BiLSTM 具有 768 维并且是随机初始化的,并且这个双层 BiLSTM 位于最终的分类层之前。

    结果如下表所示。表现最好的方法是将预训练的 Transformer 的最后四个隐层的 token representation 拼接起来,这比微调整个模型仅相差 0.3 F1 。这表明:BERT 对微调方法和 feature-based 方法都是有效的。

九、XLNet[2019]

  1. 无监督表示学习 unsupervised representation learning 在自然语言处理领域取得了巨大的成功。通常情况下,这些方法首先在大规模的无标签文本语料库中预训练神经网络,然后在下游任务中对模型或 representation 进行微调。在这个共同的 high-level 思想下,人们在各种文献中探讨了不同的无监督预训练目标 unsupervised pretraining objective 。其中,自回归 autoregressive: AR 语言建模language modeling 和自编码 autoencoding: AE 是两个最成功的预训练目标。

    自回归语言建模旨在用自回归模型估计文本语料的概率分布。具体而言,给定一个文本序列 x=(x1,,xT) ,自回归语言建模将 likelihood 分解为前向乘积 forward product p(x)=t=1Tp(xtx<t) 或后向乘积 backward product p(x)=t=T1p(xtx>t)。一个参数化的模型(例如神经网络)被训练来建模每个条件分布。由于自回归语言模型只被训练来编码单向上下文(前向或后向),所以它不能有效地建模深度双向上下文 deep bidirectional context 。相反,下游的语言理解任务往往需要双向的上下文信息。这就造成了自回归语言建模和有效的预训练之间的 gap

    x<t 为文本序列 xt1 个位置的子序列,x>t 为文本序列 xTt 个位置的子序列。

    相比之下,基于自编码的预训练并不进行显式的密度估计 density estimationp(x) 就是文本序列 x 的概率密度),而是旨在从破坏的输入中重建原始数据。一个值得注意的例子是 BERT,它一直是 SOTA 的预训练方法。给定输入的 token 序列,其中输入的某一部分 token 被一个特殊的符号 [MASK] 所取代,模型被训练为从破坏的版本中恢复原始 token 。由于任务目标不包含密度估计,所以 BERT 可以利用双向上下文来重建原始数据。作为一个直接的好处,这弥补了上述自回归语言建模中的 bidirectional information gap ,导致了性能的提高。然而:

    • BERT 在预训练时使用的 [MASK] 等人造符号在微调时不存在于真实数据中,从而导致了 pretrain-finetune 的不一致。
    • 此外,由于 predicted token 在输入中被 masked 了,BERT 不能像自回归语言建模那样使用乘积规则 product rule 建立联合概率模型。换句话说,BERT 假设在给定 unmasked token 的条件下,predicted token 之间是相互独立的。这是过于简化的,因为在自然语言中普遍存在着高阶的、长程的依赖性。

    面对现有语言预训练目标的优点和缺点,在论文 《XLNet: Generalized Autoregressive Pretraining for Language Understanding》工作中,作者提出了一种广义的自回归方法,即 XLNetXLNet 同时利用了自回归语言建模和自编码的优点,并避免了它们的局限。

    • 首先,XLNet 不是像传统的自回归模型那样使用固定的前向分解顺序forward factorization order 或后向分解顺序 backword factorization order ,而是最大化关于分解顺序的所有可能的排列组合中,序列的期望对数似然 expected log likelihood 。由于排列操作permutation operation ,每个位置的上下文可以同时由左右两侧的 token 组成。在预期中,每个位置学会利用来自所有位置的上下文信息,即捕获双向的上下文。
    • 其次,作为一个广义的自回归语言模型,XLNet 不依赖于数据破坏 data corruption 。因此,XLNet 不会受到 BERT 所带来的pretrain-finetune discrepancy 的影响。同时,自回归目标还提供了一种自然的方法,可以使用乘积法则对 predicted token 的联合概率进行分解,消除了 BERT 中的独立性假设 independence assumption

    除了新颖的预训练目标外,XLNet 还改进了预训练的架构设计。

    • 受自回归语言建模最新进展的启发,XLNetTransformer-XLsegment 递归机制和相对编码方案 relative encoding scheme 融合到预训练中。根据经验,特别是在涉及较长文本序列的任务中,这会提高下游任务的性能。
    • 简单直接地将 Transformer(-XL) 架构应用于 permutation-based 的语言建模是行不通的,因为分解顺序是任意的、目标是模糊ambiguous 的。作为一个解决方案,作者建议重新参数化 reparameterize Transformer(-XL) 网络从而消除模糊性 ambiguity

    根据经验,XLNet18 个任务上取得了 SOTA 的结果,即: 7GLUE 语言理解任务,3个阅读理解任务(包括 SQuADRACE )、7 个文本分类任务(包括 YelpIMDB )、以及 ClueWeb09-B 文档排序任务。在一组公平的比较实验下,XLNet 在多个 benchmark 上一直优于 BERT

  2. 相关工作:permutation-based 的自回归建模的思想已经在 《Neural autoregressive distribution estimation》《Made: Masked autoencoder for distribution estimation》中进行了探讨,但有几个关键的区别。以前的模型是无序 orderless的,而 XLNet 基本上是顺序感知 order-aware 的(带 positional encoding)。这对语言理解 language understanding 很重要,因为无序模型会退化为 bag-of-word ,缺乏基本的表达能力。

    上述差异源于动机 motivation 的根本差异:以前的模型旨在通过在模型中加入 "无序" 的归纳偏置 inductive bias 来改善密度估计,而 XLNet 的动机是使自回归语言模型学习双向上下文。

9.1 模型

9.1.1 背景

  1. 这里我们首先针对语言预训练language pretraining 来回顾并比较传统的自回归语言建模和 BERT

  2. 给定一个文本序列 x=[x1,,xT],自回归语言模型通过最大化前向自回归分解 forward autoregressive factorization 下的对数似然 likelihood 来进行预训练:

    (3)maxθlogpθ(x)=t=1Tlogpθ(xtx<t)=t=1Tlogexp(hθ(x1:t1)e(xt))xVexp(hθ(x1:t1)e(x))

    其中:

    • x<t=x1:t1=[x1,,xt1]x 的前 t1 个位置的子序列,作为上下文。
    • hθ(x1:t1) 为通过神经网络模型(如 RNNTransformer )产生的 context representationθ 为模型的参数。
    • e(x)xembeddingVvocabulary
  3. 相比之下,BERT 是基于降噪自编码 denoising auto-encoding 的。具体来说,对于一个文本序列 x=[x1,,xT]BERT 首先通过随机设置 x 中的一部分(例如 15% )的 token 为特殊符号 [MASK] 从而构建一个破坏的版本 x^ 。令这些 masked token 记做 x¯,训练目标是根据 x^ 重建 x¯

    (4)maxθlogpθ(x¯x^)t=1Tmtlogpθ(xtx^)=t=1Tmtlogexp(ht,θ(x^)e(xt))xVexp(ht,θ(x^)e(x))

    其中:

    • mt{0,1} 表示 xt 是否被 masked
    • Hθ 是一个 Transformer ,它将一个长度为 T 的文本序列 x^ 映射到一个 hidden vector 序列:Hθ(x)=[h1,θ(x),,hT,θ(x)]θTransformer 的参数,ht,θ(x) 为位置 thidden vector

    可以看到:在自回归语言建模中,context representationhθ(x1:t1) ,即模型在位置 t 仅能看到前面 t1 个位置的 token(即,x1:t1);在 BERT 中,context representationht,θ(x) ,即模型在位置 t 能够看到所有的 token (即,x)。

  4. 两种预训练目标的优点和缺点比较如下:

    • 独立性假设 Independence Assumption:正如 符号所强调的那样,BERT 基于独立性假设来分解联合条件概率 pθ(x¯x^) ,即,所有 mask token x¯ 都是独立重建的。

      相比之下,自回归语言建模目标使用普遍适用的乘积规则对 pθ(x) 进行分解,而没有这种独立性假设。

    • 输入噪声 Input NoiseBERT 的输入包含像 [MASK] 这样的人工符号,而这些符号在下游任务中从未出现过,这就造成了 pretrain-finetune discrepancy。像 BERT 论文中那样用原始 token 替换 [MASK] 并不能解决问题,因为原始 token 只能以很小的概率被使用,否则 maxθlogpθ(x¯x^) 是没有意义的优化(因为要预测的标签就在输入中)。

      相比之下,自回归语言建模并不依赖于任何输入破坏 input corruption ,因此不会受到这个问题的影响。

    • 上下文不一致 Context Dependency:自回归 representation hθ(x1:t1) 仅以位置 t 之前的 token 作为条件(即,左侧的 token )。

      相比之下, BERT representation ht,θ(x) 可以同时获得两侧的上下文信息。因此,BERT 目标允许对模型进行预训练以更好地捕捉双向的上下文。

9.1.2 目标:排列语言建模

  1. 根据上面的比较,自回归语言模型和 BERT 拥有各自独特的优势。一个自然的问题是:是否存在一种预训练目标,既能带来两者的优点又能避免它们的缺点?

    借用 orderless NADE《Neural autoregressive distribution estimation》)的思路,我们提出了排列语言建模 permutation language modeling 目标,它不仅保留了自回归模型的优点,而且还允许模型捕获双向上下文。

    具体而言,对于一个长度为 T 的文本序列 x,有 T! 种不同的顺序来进行有效的自回归分解 autoregressive factorization 。直观地说,如果模型参数在所有分解顺序中都是共享的,那么在预期中,模型将学会从两侧的所有位置收集信息。

    为了形式化这个思想,令 ZT 是长度为 T 的索引序列 [1,2,,T] 的所有可能的排列的集合。我们用 ztz<t 来表示一个排列 zZT 的第 t 个元素和前 t1 个元素。那么,我们提出的排列语言建模目标可以表示为:

    (5)maxθEzZT[t=1Tlogpθ(xztxz<t)]

    基本上,对于一个文本序列 x ,我们一次采样一个分解顺序 z ,并根据分解顺序对 likelihood pθ(x) 进行分解。由于相同的模型参数在训练期间在所有的分解顺序之间都是共享的,在预期中,xt 已经看到了序列中每一个可能的元素 xixt,因此能够捕获到双向上下文。此外,由于这个目标适合于自回归框架,它自然避免了前面讨论的独立假设和 pretrain-finetune discrepancy

    前向自回归分解和后向自回归分解分别采用了两种特殊的分解顺序:z=[1,2,,T],z=[T,T1,,1]

  2. Permutation 的备注:所提出的目标只是排列分解顺序 factorization order ,而不是序列顺序 sequence order 。换句话说,我们保持原始的序列顺序,使用对应于原始序列的positional encoding ,并依靠 Transformer 中恰当的 attention mask 来实现分解顺序的排列。请注意,这种选择是必要的,因为模型在微调期间只会遇到具有自然顺序的文本序列。

    XLNet 在实现过程中并未采样 z ,而是通过生成合适的 attention mask 来达到采样 z 的效果。

    为了提供一个总体概览,我们在下图中展示了一个例子:给定相同的输入序列 x ,但是以不同的分解顺序来预测 token x3mem 表示 Transformer-XLmemory 机制。

9.1.3 架构:双流自注意力

  1. 虽然排列语言建模目标具有理想的属性,但是标准 Transformer 的朴素实现 naive implementation 可能无法工作。为了说明这个问题,假设我们使用标准的 softmax 公式对 next-token 分布 pθ(Xztxz<t) 进行参数化 parameterize ,即:

    (6)pθ(Xzt=xxz<t)=exp(hθ(xz<t)e(x))xVexp(hθ(xz<t)e(x))

    其中 hθ(xz<t) 表示由共享的 Transformer 网络生成的 xz<thidden representation (通过适当的掩码得到)。

    现在注意到:representation hθ(xz<t) 并不依赖于它将预测哪个位置,即 zt 的值。因此,无论目标位置如何,都会预测出相同的分布,这就无法学习到有用的 representation 。为了避免这个问题,我们建议重新参数化 next-token 分布,使其感知到目标位置:

    (7)pθ(Xzt=xxz<t)=exp(gθ(xz<t,zt)e(x))xVexp(gθ(xz<t,zt)e(x))

    其中 gθ(xz<t,zt) 表示一种新的 representation 类型,它还将目标位置 zt 作为输入。

    原始的 Transformer 没有这个问题,因为 Transformer 输入序列的分解顺序是固定的(z=[1,2,,T]),第 t 个要预测的 token 就是位于序列中的位置 t

    但是,在排列语言建模目标,由于分解顺序是随机的,因此第 t 个要预测的 token 的位置不确定(可能是原始序列中第一个位置、也可能是原始序列中最后一个位置)。

  2. 标准的语言模型参数化失败的例子:考虑两个不同的排列 z(1)z(2) ,并且它们之间满足:

    (8)z<t(1)=z<t(2),zt(1)=ij=zt(2)

    如果采用标准 Transformer 的朴素实现,则有:

    (9)pθ(Xi=xxz<t)zt(1)=i,z<t(1)=z<t=pθ(Xj=xxz<t)zt(2)=j,z<t(2)=z<t=exp(hθ(xz<t)e(x))xVexp(hθ(xz<t)e(x))

    从效果上看,两个不同的目标位置 ij 共享完全相同的模型预测。然而,这两个位置的 ground-truth 分布应当是不同的。

  3. 双流自注意力 Two-Stream Self-Attention:虽然 target-aware representation 的思想消除了 target prediction 中的模糊性 ambiguity ,但如何形式化 gθ(xz<t,zt) 仍然是一个困难的问题。我们提出 "站" 在目标位置 zt,并依赖位置 zt 通过注意力从上下文 xz<t 收集信息。

    目标位置 zt 代表了目标 token 位于原始序列中的位置(而不是排列之后的位置,排列之后的位置就是 t )。

    为了使这个参数化 parameterization 发挥作用,有两个要求在标准的 Transformer 架构中是矛盾的:

    • 为了预测 token xztgθ(xz<t,zt) 应该只使用位置 zt 而不是内容 xzt,否则任务目标就变得非常简单。
    • 为了预测 j>t 的其他token xzjgθ(xz<t,zt) 也应该编码内容 xzt 从而提供完整的上下文信息。

    为了解决这样的矛盾,我们建议使用两组 hidden representation 而不是一组:

    • content representation hθ(xzt),或缩写为 hzt,它的作用与 Transformer 中的标准 hidden state 类似。这个 representation 同时编码了上下文和 xzt 本身。

      注意,这里是小于等于号:zt

    • query representation gθ(xz<t,zt) ,或缩写为 gzt,它只能访问上下文信息 xz<t 和位置 zt ,但不能访问内容 xzt,如前所述。

    在计算上:

    • 第一层查询流 query streamtrainable vector 来初始化(即, gi(0)=w )。
    • 而第一层内容流 content stream 被设置为相应的 word embedding (即, hi(0)=e(xi) )。

    对于每个自注意力层 m=1,2,,M,两个表征流 representation stream 用一组共享的参数进行更新:

    (10)gzt(m)Attention(Q=gzt(m1),KV=hz<t(m1);θ),query stream: use zt but cannot see xzthzt(m)Attention(Q=hzt(m1),KV=hzt(m1);θ),content stream: use both zt and xzt

    其中:Q,K,V 分别表示注意力操作中的 query, key, value

    注意:query stream 中的 key, value 使用 z<t (小于号);content stream 中的 key, value 使用 zt (小于等于号)。

    content representation 的更新规则与标准的自注意力完全相同,因此在微调过程中,我们可以简单地放弃 query stream ,将 content stream 作为普通的 Transformer(-XL)

    最后,我们可以使用最后一层的 query representation gzt(M) 来计算:

    (11)pθ(Xzt=xxz<t)=exp(gθ(xz<t,zt)e(x))xVexp(gθ(xz<t,zt)e(x))

    因为 query representation 包含了位置 zt (而 content representation 不包含 zt ),因此使用 query representation 来计算 pθ(Xzt=xxz<t)

    query representation 会利用 content representation 来计算,而 content representation 就是传统的自注意力机制而不会用到 query representation

  4. 双流自注意力的示意图如下图所示,其中分解顺序为 3 -> 2 -> 4 -> 1 而当位置 t=4 ,即 zt=1

    • (a)content streamh1(0)query{h1(0),h2(0),h3(0),h4(0)}key/value

    • (b)query streamg1(0)query{g2(0),g3(0),g4(0)}key/value

    • (c):在 attention mask 中,第 i 行代表位置 i (原始序列的顺序)的 mask ,白色代表不可见(掩码)、红色代表可见。 query stream 无法看到当前位置的内容,因此相比 conent streamattention maskquery streamattention mask 掩码了对角线。

      这就是通过生成合适的 attention mask 来达到采样 z 的效果。

      例如,zt=1 (即 attention mask 的第一行):

      • 由于 content stream 中它可以看到所有位置(包括它自己),因此 attention mask 第一行全部是红色(可见)。
      • 由于 query stream 中它可以看到除了自己之外的所有其它位置,因此 attention mask 第一行除了第一个位置之外全部是红色。

  5. 部分预测 Partial Prediction :虽然排列语言建模目标有几个好处,但由于排列组合,它是一个更具挑战性的优化问题,并在实验中导致收敛缓慢。为了降低优化难度,我们选择仅预测分解顺序中的最后一批 token

    正式地,我们把 z 拆分成一个 non-target 子序列 zc 和一个 target 子序列 z>c,其中 c 是拆分点。我们的目标是:给定 non-target 子序列的条件下最大化 target 子序列的对数似然 log-likelihood ,即:

    (12)maxθEzZT[logpθ(xz>cxzc)]=EzZT[t=c+1Tlogpθ(xztxz<t)]

    注意:z>c 被选为目标,因为在给定当前分解顺序 z 的条件下,它拥有序列中最长的上下文。

    我们使用一个超参数 K ,使得大约 1/Ktoken 被选中从而用于预测,即 T/(Tc)K 。对于未被选择的 token ,它们的 query representation 不需要计算,这就节省了速度和内存。

    这里假设序列的长度为 T ,因此 zZT。对于有效长度较短的序列,用 |z| 代替上式中的 T

  6. 这里我们对所提出的排列语言建模目标进行了详细的可视化,包括 reusing memory 机制(又称递归机制)、如何使用注意力掩码来排列分解顺序、以及两个注意力流的区别。如 Figure 3Figure 4 所示,给定当前位置 zt,注意力掩码由排列(或分解顺序)z 决定,这样只有排列中 zt 之前出现的 token zi,i<t才可以被关注。

    此外,比较 Figure 3Figure 4 ,我们可以看到 query streamcontent stream 是如何通过 attention mask 在特定排列中工作的。主要的区别是: query stream 不能做自注意力、不能访问当前位置上的 token ,而 content stream 则执行正常的自注意力。

9.1.4 融合 Transformer-XL 的思想

  1. 由于我们的目标函数符合自回归框架,我们将 SOTA 的自回归语言模型 Transformer-XL 纳入我们的预训练框架,并以它命名我们的方法(即,XLNet )。我们融合了 Transformer-XL 中的两项重要技术,即相对位置编码方案 relative positional encoding scheme 、段递归机制 segment recurrence mechanism

    如前所述,我们基于原始序列应用相对位置编码,这很直接。现在我们讨论如何将递归机制融合到所提出的 permutation setting 中,并使模型能够重用 previous segmentshidden state 。在不失一般性的情况下,假设我们有来自长序列 s 的两个 segment ,即 x~=s1:Tx=sT+1:2T 。令 z~z 分别表示 [1,,T][T+1,,2T] 的排列。然后,基于排列 z~ ,我们处理第一个 segment ,然后为每个层 m 缓存得到的 content representation h~(m) 。然后,对于下一个 segment x ,带有 memory 的注意力机制可以写成:

    (13)hzt(m)Attention(Q=hzt(m1),KV=[h~(m1),hzt(m1)];θ)

    其中 [,] 表示沿着序列的维度拼接两个向量序列。

    注意,这里不用缓存 query representation,因为只有 content representation 才会被用来作为 keyvalue

    注意:positional encoding 只取决于原始序列中的实际位置。因此,一旦得到 representation h~(m),上述的注意力更新就与 z~ 无关。这允许在不知道前一个 segment 的分解顺序的情况下缓存和复用 memory 。在预期中,该模型学习利用上一个 segment 的所有分解顺序的 memory

    不管前一个 segment 的分解顺序如何,它始终位于当前 segment 之前,因此当前 segment 的任何位置都能看到所有的 s1:T

    query stream 也可以用同样的方法计算(只需要注意力机制中的修改 keyvalue 即可。)。

    最后,Figure 2 (c) 展示了所提出的具有双流注意力的排列语言建模的概况。更详细的介绍参考 Figure 3Figure 4

9.1.5 建模多个 Segment

  1. 许多下游任务都有多个 input segment ,例如,问答question answering: QA 中包含一个问题和一个上下文段落。我们现在讨论一下我们如何预训练 XLNet 以便在自回归框架中对多个 segment 进行建模。在预训练阶段,遵从 BERT ,我们随机抽取两个 segment (可以来自同一上下文,也可以来自不同的上下文),并将两个 segment 的拼接视为一个序列,以进行排列语言建模。我们仅复用属于同一上下文的 memory

    具体而言,我们模型的输入与 BERT 类似:[A, SEP, B, SEP, CLS] ,其中 "SEP""CLS" 是两个特殊符号,"A""B" 是两个 segment 。尽管我们遵循 two-segment 的数据格式,XLNet-Large 没有使用 next sentence prediction 的目标,因为它在我们的消融研究中没有显示出一致的改进。

    注意,这里用于下游任务,即微调阶段。在预训练阶段,是没有多个 input segment 的,因为预训练没有 next sentence prediction 目标。

  2. 相对段编码 Relative Segment Encoding :从结构上看,与BERT 在每个位置的 word embedding 中增加一个绝对段嵌入 absolute segment embedding 不同,我们从 Transformer-XL 中扩展了 relative encoding 的思想,也对 segment 进行相对编码。

    注意,这里也是用于下游任务,即微调阶段。

    给定序列中的一对位置 ij ,如果 ij 来自同一 segment ,我们使用 segment encoding si,j=s+;如果来自不同的 segment ,则 si,j=s_。其中,s+s_ 是每个注意力头 attention head 的可学习模型参数。换句话说,我们仅考虑这两个位置是否在同一 segment 内,而不是考虑它们来自哪个具体的 segment 。这与 relative encoding 的核心思想是一致的,即,只对位置之间的关系进行建模。

    理论上讲,对于 input segment 数量为 2 的输入, relative encodingabsolute encoding 的模型容量是相同的,都是两个待学习的 embedding 参数。但是:

    • 二者的语义不同: relative encodingembedding 空间编码了是否来自于同一个 segmentabsolute encodingembedding 空间编码了每个绝对 segment id
    • 二者的用法不同: relative encoding 用于计算 relative 注意力系数,然后将这个系数添加到正常的注意力权重中; absolute encoding 直接添加到 word embedding 从而直接计算注意力权重。

    当位置 i attend 位置 j 时(站在位置 i 的角度来看),segment encoding si,j 被用来计算注意力权重 ai,j=(qi+b)si,j ,其中 qi 是标准的注意力操作中的 query 向量,b 是一个可学习的head-specific 的偏置向量 bias vector 。最后,这个值 ai,j 被添加到正常的注意力权重中。

    使用 relative segment encoding 有两个好处:

    • 首先,relative encoding 的归纳偏置 inductive bias 可以改善泛化性。

    • 其次,relative encoding 为那些有两个以上 input segment 的任务中进行微调提供了可能,而这是使用 absolute segment encoding 所不能做到的。

      因为 absolute segment encoding 仅能编码训练期间看到的 segment id(即,segment id = Asegment id = B,这两个 id )。

9.1.6 讨论和分析

a. 和 BERT 的比较
  1. 比较公式 maxθlogpθ(x¯x^)maxθEzZT[logpθ(xz>cxzc)] ,我们发现 BERTXLNet 都进行了部分预测,即仅预测序列中 token 的一个子集。

    • 这对 BERT 来说是一个必须的选择,因为如果所有的 token 都被 maksed 了,就不可能做出任何有意义的预测。
    • 此外,对于 BERTXLNet 来说,部分预测仅预测具有足够上下文的 token ,起到了降低优化难度的作用。
    • 然而,前面内容讨论的独立性假设使得 BERT 无法建模预测目标之间的依赖性。
  2. 为了更好地理解这种差异,让我们考虑一个具体的例子:[New, York, is, a, city] 。假设 BERTXLNet 都选择 [New, York] 这两个 token 作为预测目标,并最大化 logp(New York is a city)。又假设 XLNet 采样到了分解顺序 [is, a, city, New, York] 。在这种情况下,BERTXLNet 分别简化为以下目标:

    (14)JBERT=logp(Newis a city)+logp(Yorkis a city)JXLNet=logp(Newis a city)+logp(YorkNew, is a city)

    注意,XLNet 能够捕捉到一对目标 (New, York) 之间的依赖关系,而这个依赖关系被 BERT 忽略了。尽管在这个例子中,BERT 学到了一些依赖关系,如(New, city)(York, city) 。但是很明显,在相同的目标下,XLNet 总是能学到更多的依赖关系,并且包含 "denser " 的有效训练信号(即,上下文更长)。

  3. 为了证明超一般性观点(而不是单个例子),我们现在转向更正式的表达。受之前工作的启发(《Breaking the softmax bottleneck: A high-rank rnn language model》),给定一个序列 x=[x1,,xT],我们定义一组感兴趣的 target-context pairI={(x,U)},其中 Ux 中的一组 token 从而构成 x 的上下文。直观而言,我们希望模型通过预训练 losslogp(xU) 来学习 xU 的依赖性。例如,给定上述的句子,感兴趣的 pair I 可以被实例化为:

    (15)I={(x=York,U={New}),(x=York,U={city}),(x=York,U={New,city}),}

    注意:I 只是一个虚拟的概念,没有唯一的 ground-truth 。无论 I 是如何实例化的,我们的分析都将成立。

    给定一组 target token T 和一组 non-target token N=xTBERTXLNet 都能最大化 logp(TN),但采用不同的公式:

    (16)JBERT=xTlogp(xN);JXLNet=xTlogp(xNT<x)

    其中:T<x 表示 T 中根据分解顺序而位于 x 之前的 token 集合。

    这两个目标都由 logp(xCx) 形式的多个 loss 项组成,其中 Cxx 的上下文。直观而言,如果存在一个 target-context pair (x,U)I,使得 UCx,那么 losslogp(xCx)xU 之间的依赖性提供了一个训练信号。为便于讨论,如果 UCx ,则我们说一个 target-context pair (x,U)I 被一个模型(或目标)所覆盖。

    给定这个定义,我们考虑两种情况:

    • 如果 UN,则依赖关系 (x,U) 同时被 BERTXLNet 所覆盖。
    • 如果 UNT<xUT<xϕ ,则该依赖关系只能被 XLNet 所覆盖,而无法被 BERT 所覆盖。因此,XLNet 能够比BERT 覆盖更多的依赖关系。换句话说,XLNet 目标包含更有效的训练信号,这将经验empirically 地带来更好的性能。
b. 和语言建模的比较
  1. GPT 这样的标准自回归语言模型只能覆盖依赖关系 (x=York,U={New}) ,而无法覆盖依赖关系 (x=New,U={York}) 。而 XLNet 则能够在所有分解顺序的期望中覆盖这两种情况。

    标准自回归语言建模的这种限制在现实世界的应用中可能是至关重要的。例如,考虑一个 span extraction 的问答任务,其中上下文是 "Thom Yorke is the singer of Radiohead",问题是 "Who is the singer of Radiohead"。在自回归语言建模中,"Thom Yorke"representation 不依赖于 "Radiohead" ,因此 "Thom Yorke"不会被标准方法(即,在上下文中所有的 token representation 上应用 softmax )选为答案。

    更正式地说,考虑一个 context-target pair (x,U)

    • 如果 UT<xϕ ,其中 T<x 表示原始序列中 x 之前的token ,那么自回归语言建模无法覆盖该依赖关系。
    • 相比之下,XLNet 能够覆盖期望中的所有依赖关系。
  2. ELMo 这样的方法以浅层的方式将前向语言模型和后向语言模型拼接起来,这不足以对两个方向之间的深层交互进行建模。

c. 弥合语言建模和预训练之间的 gap
  1. 由于缺乏双向上下文建模的能力,语言建模和预训练之间一直存在着 gap ,正如前面内容所分析的。一些机器学习从业者甚至质疑:如果语言建模不能直接改善下游任务,那么它是否有意义。

    XLNet 推广了语言建模并弥补了这个 gap 。因此,它进一步 "证实" 了语言建模的研究。此外,针对预训练而利用语言建模研究的快速进展也成为可能。作为一个例子,我们将 Transformer-XL 融合到 XLNet 中,从而证明最新的语言建模进展的有用性。

9.2 实验

9.2.1 预训练和实现

  1. 遵从 BERT ,我们使用 BooksCorpusEnglish Wikipedia 作为我们预训练数据的一部分,它们合并起来有 13GB 的纯文本。此外,我们还包括 Giga516GB文本)、ClueWeb 2012-BCommon Crawl 进行预训练。我们使用启发式方法激进地过滤掉ClueWeb 2012-BCommon Crawl 中短的或低质量的文章,结果分别得到 19GB78GB 的文本。

    在使用 SentencePiece《Sentencepiece: A simple and language independent subword tokenizer and detokenizer for neural text processing》)进行 tokenization 后,我们为 WikipediaBooksCorpusGiga5ClueWebCommon Crawl 分别得到27.8B1.09B4.75B4.30B19.97Bsubword piece ,共计 32.89Bsubword piece

  2. 我们最大的模型 XLNet-Large 具有与 BERT-Large 相同的架构超参数,这导致了相似的模型大小。序列长度和 memory 长度分别被设置为 512384

    我们在 512TPU v3 芯片上对 XLNet-Large 进行了 500K 步的训练,使用 Adam 优化器,线性学习率衰减,batch size = 2048 ,这大约需要 2.5 天。据观察,模型在训练结束时仍然对数据欠拟合,但继续预训练对下游任务没有帮助,这表明给定优化算法,模型没有足够的容量来充分利用数据规模。然而,在这项工作中,我们避免训练一个更大的模型,因为它在微调方面的实际用途可能是有限的。

    此外,类似于 BERT-Base ,我们考虑只在 BooksCorpus + Wikipedia 上训练一个 XLNet-Base,用于消融研究、以及和 BERT 的公平比较。

  3. 由于引入了递归机制,我们使用了一个双向的 data input pipeline ,其中前向和后向各占 batch size 的一半。

    双向的 data input pipeline 意思是:在 batch 中,既有正序(相对于原始序列顺序)的输入、又有逆序(相对于原始序列顺序)的输入。这是为了配合 span-based 预测。

    因为 span-based 预测直接将原始序列中连续 Ltoken 作为预测目标,顺序不变(如,从 I like New York, because ... 中截取(New, York))。如果只有正序输入,那么这些预测目标之间只能捕获前向的依赖性(如,p(York | New))。增加了逆序输入之后,这些预测目标之间就可以捕获后向的依赖性(如,p(New | York))。注意,这里影响的是预测目标之间的依赖性,而不是预测目标和上下文之间的依赖性。

    为了训练 XLNet-Large ,我们将部分预测常数 K 设置为 6 。我们的微调程序遵循 BERT,除非另有说明。我们采用了一种 span-based 预测的思想,首先采样一个长度 L[1,2,,5],然后在 (KL)token 的上下文中随机选择连续的、跨度为 Ltoken 作为预测目标。

    假设随机选择的位置为 (r,r+1,,r+L1) ,则将这 z>c 固定为 [r,r+1,,r+L1] 并且顺序不变。而剩余的位置作为 zc (它们的顺序不重要,因为它们仅作为上下文而不会作为预测目标)。

    这种 span-based 的方法易于实现,但是它强迫预测目标是连续的,且预测目标之间保持原始序列的顺序不变。

  4. 预训练 XLNet 的超参数如下表所示。

  5. 微调 XLNet 的超参数如下表所示。

    Layer-wise decay 是指以自上而下的方式对各个层的学习率进行指数衰减。例如,假设第 24 层使用的学习率为 lLayer-wise衰减率为 α,则第 m 层的学习率为 l×α24m

    这意味着从上到下,更新的步幅越来越小。这隐含了一个约束:底层的更新更小而顶层的更新越大。

9.2.2 RACE 数据集

  1. RACE 数据集包含了近 10 万个问题,这些问题来自于 1218 岁之间的中国初高中学生的英语考试,答案由人类专家生成。这是最难的阅读理解数据集之一,涉及到具有挑战性的推理问题。此外,RACE 中段落的平均长度超过 300 ,这比其他流行的阅读理解数据集如 SQuAD 长很多。因此,这个数据集可以作为长文本理解的一个挑战性的 benchmark

    在微调过程中,我们使用的序列长度为 640 。如下表所示:

    • 单一模型 XLNet 的准确率比最佳 ensemble 高出 7.6 分。
    • 同样明显的是,XLNet 大大超过了其他预训练的模型,如 BERTGPT

    由于 RACE 包含相对较长的段落,我们认为 XLNet 在这个数据集上获得巨大收益的原因之一是:除了自回归目标之外,XLNet 融合了 Transformer-XL 架构从而提高了对长文本建模的能力。

9.2.3 SQuAD 数据集

  1. SQuAD 是一个具有两个任务的大规模阅读理解数据集。SQuAD1.1 包含了在给定段落中总是有相应答案的问题,而 SQuAD2.0 则引入了不可回答的问题(即,给定段落中不存在答案)。

    为了在 SQuAD2.0 上对 XLNet 进行微调,我们联合应用了类似于分类任务的逻辑回归损失(表明任务是否有答案)、和问答任务的标准 span extraction 损失。由于 v1.1v2.0 在训练集中共享相同的可回答的问题,我们只需在 v2.0 上微调的模型中删除 answerability prediction 部分(即,任务是否有答案的部分),即可对 v1.1 进行评估。由于排行榜头部的方法都采用了某种形式的数据增强,我们在 SQuAD2.0NewsQA 上联合训练了一个 XLNet 从而用于我们的排行榜 submission

    如下表所示:

    • XLNet 在排行榜上获得了 SOTA 的单一模型结果,超过了一系列基于 BERT 的方法。
    • 值得注意的是,在 v1.1 中,XLNet 的单一模型在 EM 指标上的表现比人类和最佳 ensemble 分别高出 7.6 分和 2.5 分。
    • 最后,为了与 BERT 直接比较从而消除排行榜 submission 上的额外技巧的影响,我们在验证集上将 XLNetBERT 进行了比较。XLNetv1.1v2.0F1 指标中大大超过了 BERT ,分别超出 3.6 分和 7.0 分。

9.2.4 文本分类

  1. 遵从以前的文本分类工作(《Character-level convolutional networks for text classification》《Adversarial training methods for semi-supervised text classification》),我们在以下 benchmark 上评估了 XLNetIMDBYelp-2Yelp-5DBpediaAGAmazon-2Amazon-5

    如下表所示,XLNet 在所有给定的数据集上取得了新的SOTA 结果,与 BERT 相比,在 IMDBYelp-2Yelp-5Amazon-2Amazon-5 上的错误率分别降低了 16%18%5%9%5%

9.2.5 GLUE 数据集

  1. GLUE 数据集是一个包含 9 个自然语言理解任务的集合。测试集标签在公开发布的版本中被删除,所有用户必须在 evaluation server 上提交他们的预测,以获得测试集结果。

    在下表中,我们展示了多种 setting 的结果,包括单任务和多任务、以及单一模型和 ensemble

    • 在多任务 setting 中,我们在四个最大的数据集(即,NLISST-2QNLIQQP )上联合训练 XLNet,并在其他数据集上微调网络。

    • 对于这四个大型数据集,我们只采用了单任务训练。

      即,多任务训练仅用于其他的数据集。

    • 对于 QNLI ,我们在提交测试集时采用了 《Multi-task deep neural networks for natural language understanding》中的 pairwise relevance ranking 方案。然而,为了与 BERT 进行公平的比较,我们对 QNLI 验证集的结果是基于标准的分类范式 classification paradigm 的。

    • 对于 WNLI ,我们使用 《A surprisingly robust trick for winograd schema challenge》 中描述的损失。

    可以看到:

    • 多任务 ensembleXLNet 在公共排行榜的 9 个任务中的 7 个任务上取得了 SOTA 的结果。在最广泛的基准任务 MNLI 上,XLNet 将 "匹配" 和 "不匹配" 的 setting 分别提高了 2.0 分和 1.8 分。

      注意,排行榜上的竞争者采用了比 BERT 更好的技术,如蒸馏、修改的多任务损失、或元学习 meta learning ,但仍然低于XLNet 的表现。而 XLNet 除了使用标准的多任务学习方法外,没有采用额外的技巧。由于排行榜的目的不是为了消融研究或超参数调优,我们只在测试集上评估了我们最好的多任务模型。

    • 为了获得与 BERT 的直接比较,我们在验证集上运行一个单任务 XLNet 。如下表的最上面几行所示,XLNet 一直优于 BERT ,在 RTEMNLICoLASST-2STS-B 上分别提高了 13.4 分、3.2 分、3.0 分、2.4 分 和 1.8 分。

9.2.6 ClueWeb09-B 数据集

  1. 遵从 《Convolutional neural networks for soft-matching n-grams in ad-hoc search》setting,我们使用ClueWeb09-B 数据集来评估文档排序 document ranking 的性能。这些 query 是由 TREC 2009-2012Web Tracks 基于 50M 个文档创建的,任务是对使用标准检索方法检索到的前 100 个文档进行 rerank 。由于 document rankingad-hoc retrieval 主要涉及 low-level representation ,而不是 high-level 的语义,这个数据集可以作为评估 word embedding 质量的测试平台。

    我们使用预训练好的 XLNet 来抽取文档和 queryword embedding 而不进行微调,并采用 kernel pooling network《End-to-end neural ad-hoc ranking with kernel pooling》)对文档进行排序。

    结果如下表所示:XLNet 大大超过了其他方法,包括使用与我们相同训练程序的 BERT 模型。这说明 XLNetBERT 能更好地学习 low-levelword embedding

    注意,为了公平比较,我们排除了 《Word-entity duet representations for document ranking》中的结果( ERR@2019.55 ,略差于我们),因为它使用了额外的实体相关数据。

    DCG@k 指标: i=1khit(i)log2(i+1) ,其中 hit(i) 表示第 i 个推荐的 item 是否命中真实的目标 item ,取值为 10

    NDCG@k 指标:对 DCG@k 的归一化,归一化分母为 i=1N1log2(i+1) ,其中 N 为总的真实目标 item 数量(小于等于 k )。

9.2.7 消融研究

  1. 基于四个具有不同特点的数据集,我们进行了一项消融研究从而了解每个设计选择的重要性。具体来说,我们希望研究的主要有三个方面:

    • 排列语言建模目标的有效性,具体而言,是与 BERT 使用的降噪自编码目标相比。
    • 使用 Transformer-XL 作为 backbone 神经架构、以及采用 segment-level 递归(即,使用 memory )的重要性。  
    • 一些实施细节的必要性,包括 span-based 的预测、双向 input pipelinenext-sentence prediction

    考虑到这些目的,在下表中,我们比较了具有不同实施细节的 6XLNet-Base 变体(第 3 ~ 8 行)、原始的 BERT-Base 模型(第1 行),以及一个额外的 Transformer-XL baseline (第 2 行)。这个 Transformer-XL baselineBERT 中使用的降噪自编码 enoising auto-encoding: DAE 目标训练,但具有双向 input pipeline 。为了进行公平的比较,所有的模型都是基于一个12 层的架构,具有与 BERT-Base 相同的模型超参数,并且只对 Wikipedia + BooksCorpus 进行训练。所有报告的结果都是 5 次运行的中位数。

    • 检查结果的第 1 ~ 4 行,我们看到用不同的 K 值训练的两个 full XLNet-Base 模型在各任务中的表现明显优于 BERT 、以及 DAE 训练的 Transformer-XL ,这显示了排列语言建模目标的优越性。

      同时,有趣的是,DAE 训练的 Transformer-XLRACESQuAD 等长文本的任务中取得了比 BERT 更好的表现,这表明Transformer-XL 在语言建模方面的卓越表现。

      DAE + Transformer-XLBERT 不同的地方在于:相对位置编码、以及 segment-level 递归。

    • 接下来,如果我们去掉 memory 缓存机制(第 5 行),则性能明显下降,特别是对于涉及 4 个任务中最长上下文的 RACE

    • 此外,第 6 ~ 7 行显示,span-based 预测和双向 input pipelineXLNet 中都发挥了重要作用。

    • 最后,我们意外地发现,在最初的 BERT 中提出的 next-sentence prediction 目标在我们的 setting 中不一定能带来改进。相反,除了RACE 数据集,next-sentence prediction 往往会损害性能。因此,当我们训练 XLNet-Large 时,我们排除了next-sentence prediction 目标。

十、RoBERTa[2019]

  1. ELMoGPTBERTXLMXLNet 等自训练 self-training 方法带来了显著的性能提升,但要确定这些方法的哪些方面贡献最大,可能是一个挑战。训练的计算成本很高,限制了可以进行 tuning 的数量,而且通常是用不同规模的 private training data 进行的,这限制了我们衡量模型先进性的能力。

    论文 《RoBERTa: A Robustly Optimized BERT Pretraining Approach》提出了一项关于 BERT 预训练的复制研究 replication study,其中包括对超参数调优和训练集规模的影响的仔细评估。论文发现 BERT 的训练明显不足。然后论文提出了一个改进的配方 recipe 用于训练 BERT 模型,作者称之为 RoBERTaRoBERTa 可以匹配或超过所有的 post-BERT 方法的性能。作者的修改很简单,包括:

    • 在更多的数据上用更大的 batch 来训练模型。
    • 移除 next sentence prediction 目标。
    • 在更长的序列上进行训练。
    • 动态地改变应用于训练数据的 masking pattern

    论文还收集了一个新的大型数据集(CC-NEWS ),其规模与其他 privately used datasets 相当,以更好地控制训练集的规模效应。

    当控制训练数据时,RoBERTa 改进的训练程序改善了 GLUESQuAD 上公布的 BERT 结果。当对额外的数据进行更长时间的训练时,RoBERTa 在公共 GLUE 排行榜上取得了 88.5 分,与 XLNet 报告的 88.4 分相匹配。RoBERTaGLUE 任务中的 4/9 个任务上实现了 SOTA ,包括:MNLIQNLIRTESTS-B 四个任务。RoBERTa 还在 SQuADRACE 上取得了 SOTA 的结果。总的来说,论文重新确立了 BERTmasked language model 训练目标相比最近提出的其他训练目标(如 XLNet 的排列自回归语言模型)具有竞争力。

    综上所述,本文的贡献在于:

    • 论文提出了一套重要的 BERT 设计选择和训练策略,并介绍了导致更好的下游任务性能的替代品 alternatives
    • 论文使用了一个新的数据集 CCNEWS ,并确认使用更多的数据进行预训练能够进一步提高了下游任务的性能。
    • 论文的训练改进 improvement 表明,在正确的设计选择下, masked language model 预训练相比所有其他最近发表的方法具有竞争力。

    论文发布了用 PyTorch 实现的模型、预训练和微调代码。

  2. 相关工作:人们为预训练方法设计了不同的训练目标,包括语言建模 language modeling 、机器翻译 machine translation 和掩码语言模型masked language modeling 。最近的许多论文都采用了为每个下游任务微调模型的基本配方 basic recipe ,并以某种变体的掩码语言模型目标进行预训练。然而,较新的方法通过多任务微调(UNILM)、融合实体嵌入(ERNIE )、跨度预测 span predictionSpanBERT)和自回归预训练(XLNet )的多种变体来改善性能。通过在更多的数据上训练更大的模型,通常也能提高性能。

    我们的目标是复制、简化和更好地微调 BERT 的训练,作为一个参考,以更好地了解所有这些方法的相对性能。

10.1 分析

10.1.1 背景

  1. 这里我们简要介绍了 BERT的预训练方法和一些训练选择,我们将在下一节进行实验研究。

  2. SetupBERT 将两个 segmenttoken 的序列)的拼接作为输入,即 segment A {x1,,xN}segment B {y1,,yM}segment 通常由一个以上的自然句子组成。这两个 segment 拼接之后作为单个输入序列馈入 BERT ,并以特殊的 token 来分隔它们:{[CLS],x1,,xN,[SEP],y1,,yM,[EOS]}MN 受到约束使得 M+N<T ,其中 T 是一个超参数,控制训练期间的最大序列长度。

    根据 BERT 的原始论文,应该是 {[CLS],x1,,xN,[SEP],y1,,yM,[SEP]}

    该模型首先在一个大型的无标记文本语料库中进行预训练,随后使用下游任务的标记数据进行微调。

  3. 架构:BERT 使用著名的 Transformer 架构,我们将不详细回顾。我们使用一个具有 L 层的 Transformer 架构。每个 block 使用A 个自注意头和隐层维度 H

    这里的 L 指的是有 Lblock,每个 block 具有多个子层。

  4. 训练目标:在预训练期间,BERT使用两个目标:掩码语言模型和下一个句子预测next sentence prediction

    • Masked Language Model: MLM :在输入序列中随机选择一个 token ,并用特殊的token (即,[MASK] )来代替。MLM 的目标是masked token 预测结果的交叉熵损失。

      BERT 均匀随机地选择 15%input token ,然后在所选的token 中:80% 被替换为[MASK]10% 保持不变、10% 被替换为另一个被随机选择的 vocabulary token

      在最初的实现中,random maskingrandom replacement 在开始时进行一次,并在训练期间save 起来(即固定下来)。尽管在实践中,数据是不断重复的(即,每个 epoch 都会重复遍历一轮所有样本),所以每个训练句子在不同 epoch 之间的 mask 并不总是相同的。

      即,这里的 random maskingrandom replacement 是在所有样本的所有 epoch 上进行的,这必然需要对数据集存储多份,每一份对应于一个 epoch

    • Next Sentence Prediction: NSPNSP 是一种二元分类损失,用于预测两个 segment 是否在原始文本中是相互紧跟着。正样本是通过从文本语料库中抽取前后连续的句子来创建的。负样本是通过将不同文件中的 segment 配对来创建的。正样本和负样本是以相同的概率采样的。

      NSP 目标的设计是为了提高下游任务的性能,例如自然语言推理 Natural Language Inference: NLI ,这需要推理句子对sentence pair 之间的关系。

  5. Optimization

    • BERTAdam 优化,超参数为 β1=0.9,β2=0.999ϵ=106 (添加到分母上防止出现除以零的情况),L2 权重衰减为 0.01。学习率在前一万步中被预热到 104 的峰值,然后线性衰减。
    • BERT 训练时,所有层和注意力权重的 dropout rate0.1 ,并采用 GELU 激活函数。
    • 模型被预训练一百万个 step (即,S=106), batch sizeB=256 ,每个样本的最大长度为 T=512token
  6. 数据:BERT 是在 BOOKCORPUSEnglish WIKIPEDIA 这两个数据集的联合上进行训练的,总共包含 16GB 的未压缩文本。

10.1.2 实验配置

  1. 实现:我们在 FAIRSEQ 中重新实现了 BERT

    • 我们主要遵循前面给出的原始 BERT 超参数,除了峰值学习率和预热 step 的数量(这两个超参数是针对每个 setting 单独调优的)。
    • 我们另外发现训练对 Adam ϵ 项非常敏感,在某些情况下,我们在调优它之后获得了更好的性能或改善了稳定性。同样地,我们发现设置 β2=0.98 可以在大的 batch size 训练时提高稳定性。
    • 我们用最长为 T=512token 的序列进行预训练。
    • 与原始 BERT 不同,我们不随机注入短序列,也不在前 90% 的更新中使用缩短的序列长度进行训练。我们只用 full-length 的序列进行训练。
    • 我们在 DGX-1 机器上用混合精度浮点运算进行训练,每台机器有 832GB Nvidia V100 GPU ,通过 Infiniband 互连。
  2. 数据:BERT 风格的预训练依赖于大量的文本。《Cloze-driven pretraining of self-attention networks》证明,增加数据规模可以提高最终任务的性能。有几项工作在比原始 BERT 更大、更多样化的数据集上进行了训练。不幸的是,并非所有的额外数据集都可以公开发布。对于我们的研究,我们专注于收集尽可能多的数据进行实验,使我们能够根据每个比较对象来匹配数据的整体质量和数量。

    我们考虑了五个不同规模和领域的英语语料库,总计超过 160GB的未压缩文本。我们使用了以下的文本语料库:

    • BOOKCORPUS plus English WIKIPEDIA:这是用于训练 BERT 的原始数据(16GB)。
    • CC-NEWS:我们从 CommonCrawl News dataset 的英文部分收集得到。该数据包含 20169 月至 20192 月间爬取的6300 万篇英文新闻文章(过滤后为 76GB )。
    • OPENWEBTEXT:是 GPT-2 中描述的 WebText 语料库的开源复现。该文本是从 Reddit 上分享的 URL 中提取的 web 内容,至少有 3 个以上的点赞 (38GB )。
    • STORIES《A simple method for commonsense reasoning》介绍的数据集,包含 CommonCrawl 数据的一个子集,经过过滤以符合 Winograd 模式的故事式风格(31GB)。、
  3. 评估:遵从前面的工作,我们评估了预训练模型在以下三个 benchmark 的下游任务的性能。

    • GLUEGeneral Language Understanding Evaluation: GLUE benchmark 是一个包含 9 个数据集的集合,用于评估自然语言理解系统。GLUE 组织者提供了训练集和验证集的拆分,以及 submission server 和排行榜从而允许参与者在 private held-out 的测试集上评估和比较参与者的系统。

      对于 replication study ,我们报告了在相应的单任务训练数据上对预训练模型进行微调后的验证集结果(即,没有multi-task trainingensembling )。我们的微调程序遵循原始的 BERT 论文。

      我们额外报告了从公共排行榜上获得的测试集结果。这些结果取决于一些 task-specific 的修改,我们在后文中描述了这些修改。

    • SQuADStanford Question Answering Dataset: SQuAD 提供了一段上下文和一个问题。任务是通过从上下文中提取相关的span 来回答问题。我们对两个版本的 SQuAD 进行评估:V1.1V2.0

      • V1.1 中,上下文总是包含一个答案。此时 ,我们采用与BERT 相同的 span prediction 方法。
      • 而在 V2.0 中,一些问题在给定的上下文中没有答案,使任务更具挑战性。此时,我们增加了一个额外的二分类器来预测问题是否可以回答。我们通过将分类损失和跨度损失 span loss 相加来联合训练。在评估过程中,我们只预测那些被分类为可回答的 (context, question)span index
    • RACEReAding Comprehension from Examinations: RACE 任务是一个大规模的阅读理解数据集reading comprehension dataset ,包括 28,000 多个段落和近 100K 个问题。该数据集收集自中国的英语考试,这些考试是为初中和高中学生设计的。在 RACE 中,每个段落都与多个问题有关。对于每个问题,任务是从四个选项中选择一个正确的答案。与其他流行的阅读理解数据集相比,RACE 的上下文明显较长,需要进行推理的 question 的占比很高。

10.1.3 训练过程分析

  1. 本节讨论并量化了哪些选择对成功预训练 BERT 模型是重要的。具体而言,我们首先用与 BERT_BASE 相同的配置来训练 BERT 模型(L=12H=768A=12,共 110M 参数)。

  2. 静态掩码和动态掩码:正如前面所讨论的,BERT 依赖于随机掩码 token 并预测这个被掩码的 token 。原始的 BERT 实现在数据预处理过程中进行了一次掩码,导致了单一的静态掩码 static mask 。为了避免对每个训练样本在不同的 epoch 中使用相同的掩码,训练数据被重复了10 次,因此在 40epoch 的训练中,每个样本以10 种不同的方式被掩码。因此,在训练期间,每个训练样本都被以相同的掩码而看过四次。

    我们将这一策略与动态掩码 dynamic masking 进行比较。在动态掩蔽中,我们每次向模型馈入序列时都会生成 masking pattern 。在以更多的 step 或更大的数据集进行预训练时,这一点变得至关重要。

    如果是静态掩码,那么需要数据集拷贝多份,假如大型数据集是 1TB,拷贝 100 份那么就是 100TB

    下表比较了 BERT 原始论文公布的 BERT_BASE 结果和我们用静态掩码或动态掩码的重新实现。我们发现,我们对静态掩码的重新实现与原始BERT 模型的表现相似,而动态掩码与静态掩码相当或略好。

  3. 模型输入格式和 NSP:在最初的 BERT 预训练程序中,除了 MLM 目标之外模型还有一个 Next Sentence Prediction: NSP 目标。NSP 目标被认为是训练原始 BERT 模型的一个重要因素。BERT 原始论文观察到:移除 NSP 目标会损害性能,在 QNLIMNLISQuAD 1.1 上的性能明显下降。然而,最近的一些工作质疑了 NSP 目标的必要性。

    为了更好地理解这种不一致,我们比较了几种替代的训练格式:

    • SEGMENT-PAIR+NSP:这遵循了 BERT 中使用的原始输入格式,以及 NSP 损失。每个输入有一对 segment ,每个 segment 可以包含多个自然句子,但总的拼接长度必须小于 512token

    • SENTENCE-PAIR+NSP:每个输入包含一对自然句子,可以从一个文档的连续部分采样,也可以从不同的文档分别采样。由于这些输入长度明显小于 512token ,我们增加了 batch size ,使 token 的总数保持与 SEGMENT-PAIR+NSP 相似。我们保留了NSP 损失。

      区别在于 segment pair 还是 sentence pair

    • FULL-SENTENCES:每个输入都是由从一个或多个文档中连续采样的完整句子打包而成,其中总长度最多为 512token 。输入可能会跨文档的边界。当我们到达一个文档的末尾时,我们开始从下一个文档中采样句子,并在文档之间增加一个额外的分隔符。我们移除了 NSP 损失。

    • DOC-SENTENCES:输入的构造与 FULL-SENTENCES 类似,只是它们不能跨越文档的边界。在文档结尾处采样的输入可能短于 512token ,所以我们在这些情况下动态地增加 batch size ,以达到与 FULL-SENTENCES 相似的总 token 数量。我们移除了 NSP 损失。

    下表展示了四个不同 setting 的结果。

    • 我们首先比较了 BERT 的原始 SEGMENT-PAIR 输入格式和 SENTENCE-PAIR 格式。这两种格式都保留了 NSP 损失,但后者使用了单个句子。我们发现:使用单个句子(而不是 segment )会损害下游任务的性能,我们假设这是因为模型无法学习长距离的依赖关系。
    • 我们接下来比较了单个文档的文本块(DOC-SENTENCES)且没有 NSP 损失的训练。我们发现,这种 setting 优于最初公布的 BERT_BASE 结果(下表的倒数第三行),并且相比于该结果,这里移除 NSP 损失后下游任务性能相匹配或略有改善。有可能最初的 BERT 实现中针对移除 NSP 进行评估时,可能只是移除了损失项,而仍然保留了 SEGMENT-PAIR 的输入格式。
    • 最后我们发现,限制序列来自单个文件(DOC-SENTENCES )的表现要比打包来自多个文件(FULL-SENTENCES )的序列略好。然而,由于 DOC-SENTENCES 格式导致 batch size 大小不一,我们在剩下的实验中使用 FULL-SENTENCES 以便于与相关工作进行比较。

  4. 更大的 batch size 来训练:过去在神经机器翻译方面的工作表明,在适当提高学习率的情况下,用非常大的 mini-batch 训练既可以提高训练速度、也可以提高 end-task 性能(《Scaling neural machine translation》)。最近的工作表明,BERT 也适用于大 batch 的训练 《Reducing bert pre-training time from 3 days to 76 minutes》

    BERT 原始论文最初对 BERT_BASE 进行了一百万步的训练, batch size = 256 。通过梯度积累 gradient accumulation ,这在计算成本上相当于以 batch size = 2K训练 125K 步,或以batch size = 8K 训练 31K 步。

    在下表中,我们比较了当增加 batch size时(控制了每个训练样本被访问的次数,即相应地减少迭代步数), BERT_BASE 的困惑性 perplexity 和下游任务性能。我们观察到:用大 batch size 的训练改善了 MLM 目标的困惑度、以及下游任务的准确率。大 batch size 的训练也更容易通过分布式数据并行训练来实现(因为 DDP 数据并行等价于扩大 batch size ),在后面的实验中,我们用 batch size = 8K 来训练。

    注意,在增加 batch size 的时候也需要相应地增加学习率。

    值得注意的是,《Reducing bert pre-training time from 3 days to 76 minutes》 用更大的 batch size 来训练 BERT ,最高可达 batch size = 32K 。我们把对大 batch 训练的极限的进一步探索留给未来的工作。

  5. 文本编码:Byte-Pair Encoding: BPE《Neural machine translation of rare words with subword units》)是 character-level representationword-level representation的混合体,可以处理自然语言语料库中常见的 large vocabularyBPE 依赖于子词单元subwords unit ,而不是全词full word,子词单元是通过对训练语料库进行统计分析而抽取的。

    BPE vocabulary size 通常在 10K-100K 个子词单元之间。然而,在对大型和多样化的语料库进行建模时(例如在本文所考虑的语料库),unicode character 可以占到这个 vocabulary 的相当大的一部分。GPT-2 介绍了 BPE的一个巧妙实现,使用字节 byte 而不是unicode character 作为基本的子词单元。使用字节使得学习一个规模不大的 subword vocabulary50K 个单元)成为可能,该 vocabulary 仍然可以对任何输入文本进行编码,而不会引入任何 "unknown "的标记。

    unicode character2 个字节,编码空间大小是 65536 。相比之下,byte1 个字节,编码空间大小是 256

    原始的 BERT 实现使用大小为 30Kcharacter-level BPE vocabulary ,这是在用启发式 tokenization 规则对输入进行预处理后学习的。按照 GPT-2 的做法,我们转而考虑用一个更大的 byte-level BPE vocabulary 来训练 BERT,其中包含 50K 个子词单元,不需要对输入进行任何额外的预处理或 tokenization 。这为 BERT_BASEBERT_LARGE 分别增加了约 15M20M 的额外参数。

    早期的实验显示,这些编码之间只有轻微的差异,GPT-2BPE在一些任务上取得了略差的 end-task 性能。尽管如此,我们认为通用编码方案的优势超过了性能的轻微下降,并在我们其余的实验中使用这种编码。对这些编码的更详细的比较将留给未来的工作。

10.2 RoBERTa

  1. 在前文中,我们提出了对 BERT 预训练程序的修改,以提高下游任务的性能。现在我们汇总这些改进并评估其综合影响。我们称这种配置为 RoBERTa,即 Robustly optimized BERT approach 。具体而言,RoBERTa 采用动态掩码、无NSP 损失的 FULL-SENTENCES、大型的 mini-batch 、较大的 byte-level BPE 进行训练。

    此外,我们还调研了在以前的工作中没有得到重视的其他两个重要因素:用于预训练的数据、以及训练 epoch 数。例如,最近提出的 XLNet 架构使用比原始 BERT 多了近 10 倍的数据进行预训练。此外,XLNet 也是以 8倍的 batch size 、一半的训练 step 来进行训练,因此 XLNetBERT 相比在训练期间看到了 4 倍的样本 。

    为了帮助将这些因素的重要性与其他建模选择(如,预训练目标)分开,我们首先按照 BERT_LARGE 架构(L=24,H=1024,A=16,一共 355M 个参数)来训练 RoBERTa 。我们在可比的 BOOKCORPUSWIKIPEDIA 数据集上进行了100K 步的预训练,正如 BERT 原始论文所使用的那样。我们使用 1024V100 GPU 对我们的模型进行了大约一天的预训练。

    BERT 预训练进行了一百万步,而这里才预训练十万步?这是因为 RoBERTa 使用了更大的 batch sizebatch size = 8K),而原始 BERT 仅使用 batch size = 256

  2. 实验结果如下表所示。

    • 当控制训练数据时(第一行结果),我们观察到 RoBERTa 比最初报告的 BERT_LARGE 结果有了很大的改进,再次证实了我们在前文中探讨的设计选择的重要性。

      RoBERTa 训练期间处理的总数据量为 8K * 100K ,要远大于 BERT0.256K * 1000 K ),为后者的 3.125 倍。所以效果好可能是因为训练的总数据量更大?

    • 接下来,我们将这些数据与前文描述的另外三个数据集(CC-NEWSOPENWEBTEXTSTORIES )结合起来(数据规模扩大十倍,160GB vs 16GB )。我们在合并的数据集上训练 RoBERTa,训练的步数与之前相同(100K)。总体而言,我们对160GB 的文本进行了预训练。我们观察到所有下游任务的性能都有进一步的改善,验证了预训练中数据大小和多样性的重要性。

    • 最后,我们对 RoBERTa 的预训练时间明显延长,将预训练的步数从 100K 增加到300K 甚至 500K 。我们再次观察到下游任务性能的显著提高,300K500K 训练步数的模型在大多数任务中的表现都超过了 XLNet_LARGE 。我们注意到,即使是我们训练时间最长的模型,似乎也没有过拟合我们的预训练数据,很可能会从 additional training 中受益。

      这里面引出一个话题:要想评估两个模型架构的相对好坏,需要在相同的数据集上训练相同的 epoch

  3. 接下来我们在三个不同的 benchmark (即,GLUESQuaDRACE)上评估我们最好的 RoBERTa 模型。具体而言,我们考虑在所有五个数据集(即BOOKCORPUSEnglish WIKIPEDIACC-NEWSOPENWEBTEXTSTORIES )上训练 500K 步的 RoBERTa

10.2.1 GLUE 结果

  1. 对于 GLUE ,我们考虑两种微调 setting

    • 在第一种 setting 中(single-taskdev ),我们为每个 GLUE 任务单独微调 RoBERTa ,只使用相应任务的训练数据。我们考虑对每个任务进行有限的超参数调优,其中 batch size{16,32}learning rate{105,2×105,3×105},学习率在前 6%step 中进行线性预热然后线性衰减到 0 。我们微调 10epoch ,并根据每个任务的评价指标对验证集进行早停 early stopping 。其余的超参数与预训练时保持一致。

      在这种 setting 下,我们报告了每个任务在五个随机初始化中的验证集指标,没有 model ensembling

    • 在第二种 setting 中(ensemblestest ),我们通过 GLUE 排行榜将 RoBERTa 与其它方法比较测试集上的评估结果。虽然许多提交给 GLUE 排行榜的方法都依赖于多任务微调 multi-task finetuning ,但我们的方法只依赖于单任务微调 single-task finetuning 。对于 RTESTSMRPC,我们发现从 MNLI 单任务模型开始微调是有帮助的,而不是从 baseline 预训练的 RoBERTa 开始。我们探索了一个更大的超参数空间(如下表所述),每个任务采用 5 ~ 7 个模型的集成 ensemble (不同的 checkpoint)。

  2. task-specific 修改:GLUE 的两项任务需要 task-specific 的微调方法,以获得有竞争力的排行榜结果:

    • QNLI: 最近在 GLUE 排行榜上提交的结果对 QNLI 任务采用了 pairwise ranking ,即从训练集中挖掘出候选答案并相互比较,然后将其中一个 (question, candidate) 判定为正类 positive 。这种形式大大简化了任务,但与 BERT 没有直接可比性。遵从最近的工作,我们在 test submission 中采用了 ranking 方法,但为了与 BERT 直接比较,我们报告了基于 pure classification 方法的验证集结果。
    • WNLI:我们发现提供的 NLI 格式的数据具有挑战性。相反,我们使用了来自 SuperGLUE 的重新格式化的 WNLI 数据,该数据指示了 query 代词和参考词 referent 的跨度 span 。我们使用 《A surprisingly robust trick for winograd schema challenge》margin ranking loss 来微调 RoBERTa 。对于一个给定的输入句子,我们使用 spaCy 从句子中提取额外的候选名词短语(作为负样本),并对我们的模型进行微调,使其对 positive referent phrase 的评分高于任何生成的negative candidate phrase 的评分。这种形式的一个不幸的后果是,我们只能利用positive 的训练样本,这就排除了一半以上的训练样本。
  3. 实验结果如下表所示。

    • 在第一个 settingsingle-taskdev)中,RoBERTa 在所有 9GLUE 任务的验证集上都取得了 SOTA 的结果。最重要的是,RoBERTa 使用了与 BERT_LARGE 相同的 MLM 预训练目标和架构,但却一致性地优于 BERT_LARGEXLNet_LARGE 。这就提出了模型架构和预训练目标的相对重要性的问题,相比于我们在这项工作中探讨的数据集大小和训练时间等更普通的细节。
    • 在第二个 settingensemblestest )中,我们将 RoBERTa 提交到 GLUE 排行榜,并在 9个任务中的 4 个任务中取得了SOTA 的结果,并且是迄今为止最高的平均得分。这特别令人振奋,因为 RoBERTa 不依赖于多任务微调,与其他大多数 top submission 不同。我们希望未来的工作可以通过纳入更复杂的多任务微调程序来进一步改善这些结果。

10.2.2 SQuAD 结果

  1. 与过去的工作相比,我们对 SQuAD 采取了更简单的方法。具体而言,虽然 BERTXLNet 都用额外的 QA 数据集来增强他们的训练数据,但我们只用所提供的 SQuAD 训练数据来微调 RoBERTaXLNet 原始论文还采用了一个自定义的 layer-wise 学习率调度来微调XLNet ,而我们对所有层使用相同的学习率。

    • 对于 SQuAD v1.1 ,我们遵循与 BERT 相同的微调程序。
    • 对于 SQuAD v2.0 ,我们还对一个给定的问题是否可以回答进行了分类。我们通过对分类损失和 span loss 进行求和,将这个分类器与 span predictor 联合训练。
  2. 结果如下表所示。

    • SQuAD v1.1 验证集上,RoBERTaXLNet 相匹配。在 SQuAD v2.0 验证集上,RoBERTa 创造了新的 SOTA ,比 XLNet 提高了 0.4 个点(EM)和 0.6 个点(F1 )。

    • 我们还将 RoBERTa 提交到公共的 SQuAD 2.0 排行榜,并评估其相对于其他系统的性能。大多数 top 系统都建立在 BERTXLNet 的基础上,这两个系统都依赖于额外的外部训练数据。相比之下,我们的 submission 没有使用任何额外的数据。

      我们的单个 RoBERTa 模型优于所有单一模型的 submission ,并且是那些不依赖数据增强的系统中得分最高的。

10.2.3 RACE 结果

  1. RACE 中,系统被提供了一段文字、一个相关的问题和四个候选答案。系统需要回答这四个候选答案中哪一个是正确的。

    我们为这项任务修改了RoBERTa

    • 首先,将每个候选答案与相应的问题和段落拼接起来,形成单个序列。(因为有四个候选答案,因此得到四个序列)。
    • 然后,我们对这四个序列中的每一个进行编码,并将得到的 [CLS] representation 通过一个全连接层,用来预测正确的答案。

    我们截断超过 128tokenquestion-answer ,如果需要的话也截断段落,使序列的总长度最多为 512token

    下表列出了 RACE 测试集的结果。RoBERTa 在初中 setting 和高中 setting 上都取得了 SOTA 的结果。

10.2.4 结论

  1. 在对 BERT 模型进行预训练时,我们仔细评估了一些设计决策。我们发现以下决策可以大大改善 BERT 在下游任务上的性能:

    • 对模型进行更长时间的训练(即更多的 epoch)。
    • 在更多的数据上进行更大 batch 的训练(需要增大学习率)。
    • 取消 next sentence prediction: NSP 的目标。
    • 在更长的序列上进行训练(即更长的上下文)。
    • 动态改变应用于训练数据的 masking pattern (即 dynamic masking)。

    我们改进后的预训练程序被称作 RoBERTa

十一、ERNIE1.0 [2019]

  1. language representation pre-training 已被证明对改善许多自然语言处理任务很有效,如命名实体识别 named entity recognition: NER、情感分析 sentiment analysis: SA、问答 question answering: QA 。为了得到可靠的 word representation ,神经语言模型 neural language model 被设计为学习单词共现 word cooccurrence ,然后用无监督学习获得 word embeddingWord2VecGlove 中的方法将单词表示为向量,其中相似的单词具有相似的 word representation 。这些 word representation 为其他深度学习模型中的 word vector 提供了一个初始化。最近,很多工作,如 CoveElmoGPTBERT 通过不同的策略改进了 word vector ,这些改进被证明对下游自然语言处理任务更加有效。

    这些研究中,绝大多数都是只通过上下文预测缺失的单词来建模 representation 。这些工作没有考虑句子中的先验知识 prior knowledge 。例如,在 "Harry Potter is a series of fantasy novels written by J. K. Rowling" 这句话中。"Harry Potter" 是一个小说的名字, "J. K. Rowling" 是作者。该模型很容易通过实体(即,小说名字 "Harry Potter")内部的单词搭配来预测实体 "Harry Potter" 的缺失词(如,"[MASK] Potter"),而不需要长的上下文的帮助。该模型不能根据 "Harry Potter ""J. K. Rowling" 之间的关系来预测 "Harry Potter" (即,预测[MASK][MASK] is a series of fantasy novels written by J. K. Rowling)。直观而言,如果模型学习了更多的先验知识,模型就能获得更可靠的 language representation

    在论文 《ERNIE: Enhanced Representation through Knowledge Integration》 中,作者提出了一个叫做ERNIEenhanced representation through knowledge integration)的模型。ERNIE 通过使用知识掩码 knowledge masking 的策略。

    除了基础的掩码 basic masking 策略外,ERNIE 还使用了两种知识策略:短语级 phrase-level 策略和实体级 entity-level 策略。ERNIE 把一个短语或一个实体作为一个单元 unit ,每个单元通常由几个单词组成。在 word representation 训练中,同一单元中的所有单词都被掩码,而不是只有一个单词或字符被掩码。这样一来,短语和实体的先验知识就在训练过程中被隐式地学到了。ERNIE 没有直接加入知识嵌入 knowledge embedding ,而是隐式地学习了知识和更长的语义依赖性,如实体之间的关系、实体的属性和事件的类型,从而指导 word embedding 的学习。这可以使模型具有更好的泛化能力和适应性。

    为了降低模型的训练成本,ERNIE 在异质的中文数据上进行了预训练,然后应用于 5 个中文 NLP 任务。ERNIE 在所有这些任务中都取得了 SOTA 的结果。另外,在 cloze test 中的实验表明,ERNIE 比其他 strong baseline 方法具有更好的知识推断 knowledge inference 能力。

    论文贡献如下:

    • 论文引入了一种新的语言模型学习的处理方法,该方法掩码了短语和实体等单元,以便隐式地从这些单元中学习句法 syntactic information 信息和语义信息 semantic information
    • ERNIE 在各种中文自然语言处理任务上的表现显著优于之前的 SOTA 方法。
    • 论文发布了 ERNIE 和预训练模型的代码,位于 https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE

    论文还介绍了对话语言模型 Dialogue Language Model: DLM,它是在实验部分介绍的(而不是正文部分)。

  2. 相关工作:

    • Context-independent Representation:将单词表示为连续向量的做法由来已久。《A neural probabilistic language model》提出了一个非常流行模型架构用于估计神经网络语言模型 neural network language model: NNLM ,其中一个带有线性投影层和一个非线性隐藏层的前馈神经网络被用来学习 word vector representation

      通过使用大量的无标签数据来预训练语言模型,可以有效地学习 general language representation 。传统的方法侧重于与上下文无关的 word embedding 。诸如 Word2VecGlove 等方法将大型的文本语料库作为输入,并产生 word vector (通常有几百个维度)。它们为词表 vocabulary 中的每个单词生成单个的 word embedding representation

    • Context-aware Representation

      • 然而,一个词在不同的上下文中可以有完全不同的含义。

        • Skip-thought 提出了一种无监督学习方法,用于学习通用的分布式的 sentence encoder
        • Cove 表明,在各种常见的 NLP 任务上,添加这些 context vector 比只使用无监督的 word vectorcharacter vector 提高了性能。
        • ULMFit 提出了一种有效的迁移学习方法,可以应用于 NLP 的任何任务。
        • ELMo 沿着不同的维度推广了传统的 word embedding 研究。他们提出从语言模型中抽取 context-sensitive feature
        • GPT 通过适配 Transformer 从而增强了 context-sensitive embedding
      • BERT 使用两种不同的预训练任务进行语言建模:

        • BERT 随机掩码句子中一定比例的单词,并学习预测这些被掩码的单词。
        • 此外,BERT 学习预测两个句子是否相邻。该任务试图对两个句子之间的关系进行建模,而这是传统的语言模型无法捕获到的。

        因此,这种特殊的预训练方案有助于 BERT 在各种关键的 NLP 数据集上(如 GLUESQUAD 等)以较大的幅度超越 SOTA 的技术。

      • 还有一些研究人员试图在这些模型的基础上增加更多信息。

        • MT-DNN 结合预训练学习和多任务学习来提高 GLUE 中几个不同任务的表现。
        • GPT-2 在预训练过程中加入了任务信息,并使他们的模型适应于 zero-shot 任务。
        • XLMlanguage embedding 添加到预训练过程中,在跨语言任务中取得了更好的结果。
    • 异质数据 heterogeneous data:在异质无监督数据上预训练的语义编码器 semantic encoder 可以提高迁移学习性能。

      • 通用句子编码器(《Universal sentence encoder》)采用了来自 Wikipedia, web news, web QA pages, discussion forum 的异质训练数据。
      • 基于 response prediction 的句子编码器(《Learning semantic textual similarity from conversations》)得益于来自 Reddit 对话的 query-response pair data
      • XLM 将平行语料库 parallel corpus 引入 BERT ,与掩码语言模型masked language model: MLM 任务联合训练。通过在异质数据上预训练的 transformer 模型,XLM在监督/无监督的机器翻译任务和分类任务上显示出巨大的性能增益。

11.1 模型

  1. 我们在本节中介绍了ERNIE 及其详细实现。BERTERNIE 之间的比较直观地显示在下图中。

  2. Transformer Encoder:就像之前的预训练模型(如,GPT, BERT, XLM )一样,ERNIE 使用多层 Transformer 作为 basic encoderTransformer 可以通过自注意力 self-attention 来捕获句子中每个 token 的上下文信息,并生成 contextual embedding 的序列。

    对于中文语料,我们在 CJK Unicode 区间内的每个字符周围添加空格,并使用 WordPiecetokenize 中文句子。对于一个给定的 token ,它的 input representation 是由相应的 token embeddingsegment embedding、以及 position embedding 相加而成的。每个序列的第一个 token 是特殊的 classification embedding (即,[CLS] )。

    “在 CJK Unicode 区间内的每个字符周围添加空格” 意味着作者没有采用传统的中文分词工具,而是用字符粒度的分词。

  3. Knowledge Integration:我们使用先验知识 prior knowledgeenhance 我们的预训练语言模型。我们没有直接添加 knowledge embedding ,而是提出了一个多阶段的 knowledge masking strategy ,将 phrase-levelentity-level 的知识集成到 language representation 中。下图描述了一个句子的不同 masking level

    • Basic-Level Masking:第一个 learning stage 是使用 basic-level masking ,它把一个句子当作一个基本语言单元 language unit 的序列。对于英语来说,基本语言单元是单词;对于汉语来说,基本语言单元是汉字。

      在训练过程中,我们随机掩码 15% 的基本语言单元,并使用句子中的其他基本语言单元作为输入,然后训练一个 transformer 来预测被掩码的单元。基于 basic level mask ,我们可以得到一个 basic word representation 。因为它是在基本语义单元 basic semantic unit 的随机掩码上训练的,所以 high level 的语义知识很难被完全建模。

    • Phrase-Level Masking:第二个 learning stage 是使用 phrase-level masking 。短语 phrase 是一组单词或字符一起作为一个概念单元 conceptual unit 。对于英语,我们使用词法分析 lexical analysis 和分块工具来获得句子中短语的边界,并使用一些与语言相关的分词工具 segmentation tool 来获得其他语言(如中文)的词/短语信息。

      phrase-level masking 阶段,我们也使用基本语言单元作为训练输入,与 basic-level masking 不同的是,这次我们在句子中随机选择几个短语,同一短语中的所有基本单元同时被掩码并被预测。在这个阶段,短语信息被编码到 word embedding 中。

      注意:对于中文来讲,phrase 其实就是 “词” ;word 就是 “字”、character 就是“偏旁部首”。

      注意:这里的输入仍然是 “汉字” 粒度,但是掩码是短语粒度。

      注意:这里需要第三方的中文分词工具,而且分词工具的好坏会影响 ERNIE 模型的效果。

    • Entity-Level Masking:第三个 learning stage 是使用 entity-level masking 。命名实体 name entity 包含人、地点、组织、产品等,可以用专有名词来表示。通常情况下,命名实体包含了句子中的重要信息。

      phrase-level masking 阶段一样,我们首先分析句子中的命名实体,相同实体中的所有基本单元同时被掩码并被预测。

      注意:这里需要有第三方的 NER 工具,而且识别的好坏会影响 ERNIE 模型的效果。

    经过三个阶段的学习,我们得到了一个由更丰富的语义信息增强的 word representation

    论文采用什么中文分词工具、什么中文 NER 工具?作者并未说明。

    根据论文的描述,读者猜测这三个阶段是依次进行的:前 K1epoch 使用 basic-level masking 、接下来 K2epoch 使用 phrase-level masking 、最后 K3epoch 使用 entity-level masking 。但是,K1,K2,K3 分别怎么选择?论文并未解释。

11.2 实验

  1. ERNIE 被选择为与 BERT-BASE 具有相同的模型尺寸以便于比较:ERNIE 使用 12encoder layer768个隐单元、12 个注意力头。

  2. 异质语料库预训练:ERNIE 采用异质语料进行预训练。遵从 《Universal sentence encoder》,我们从混合语料库(中文维基百科Chinese Wikepedia 、百度百科Baidu Baike 、百度新闻Baidu news 和百度贴吧 Baidu Tieba )中抽取句子,抽取句子的数量分别为 21M51M47M54M 。其中:

    • 百度百科:包含了用正式语言formal language 编写的百科全书文章,这被用作语言建模的 strong basis
    • 百度新闻:提供有关电影名称、演员名称、足球队名称等最新信息。
    • 百度贴吧:是一个类似于 Reddits 的开放式讨论区,每个帖子都可以被视为一个 dialogue thread 。贴吧语料库被用于我们的 Dialogue Language Model: DLM 任务,这将在下一节讨论。

    我们对汉字进行繁体到简体的转换,并对英文字母进行大写到小写的转换。我们的模型使用了 17964unicode 字符的 vocabulary

  3. Dialogue Language Model: DLM:对话数据对 semantic representation 很重要,因为相同答复所对应的 query semantic 往往是相似的。ERNIEDLM 任务上建模 Query-Response 对话结构。

    如下图所示,我们的方法引入了 dialogue embedding 来识别对话中的角色,这与 universal sentence encoder 不同(《Universal sentence encoder》 )。ERNIEdialogue embeddingBERT 中的 token type embedding (即,segment embedding )起到相同的作用,只是 ERNIE 还可以表示多轮对话(例如 QRQQRRQQR,其中QR 分别代表 "Query""Response")。

    DLM 任务中,不需要 segment embedding,因为 segment embedding 是用于 next sentence prediction 任务。

    BERT 中的 MLM 一样,我们应用掩码从而强制模型预测同时以 queryresponse 为条件的 missing word 。更重要的是,我们通过用一个随机选择的句子替换 queryresponse 来生成假的样本。该模型被设计用来判断多轮对话是真的还是假的。

    DLM 任务帮助 ERNIE 学习对话中的隐式关系,这也增强了模型学习 semantic representation 的能力。DLM 任务的模型结构与MLM 任务的结构兼容,因此它与 MLM 任务交替进行预训练。

    DLMMLM 如何进行交替?是否可以联合训练,即 Ltotal=LDLM+LMLM ,相当于多任务 (BERT 就是按照这种多任务的方式训练的)?

  4. 中文 NLP 任务:ERNIE 被应用于 5 项中文 NLP 任务,包括自然语言推理natural language inference、语义相似性semantic similarity、命名实体识别named entity recognition、情感分析sentiment analysis 和问答question answering

    • 自然语言推理:Cross-lingual Natural Language Inference: XNLI 语料库是 MultiNLI 语料库的一个众包集合。这些 sentence pair 都被人工标注为文本蕴含关系textual entailment ,并被翻译成包括中文在内的 14 种语言。标签包含矛盾contradiction、中性neutral 、以及蕴含 entailment 。我们遵循 BERT 中的中文实验。

    • 语义相似性:Large-scale Chinese Question Matching Corpus: LCQMC 旨在识别两个句子是否具有相同的意图。数据集中的每一对句子都与一个二元标签相关联,表明这两个句子是否具有相同的意图。

    • 命名实体识别:MSRA-NER 数据集是为命名实体识别而设计的,它由微软亚洲研究院发布。实体包含几种类型,包括人名、地名、组织名称等。这个任务可以被看作是一个序列标注任务。

    • 情感分析:ChnSentiCorp: Song-bo 是一个数据集,旨在判断一个句子的情感。它包括几个领域的评论,如酒店、书籍和电子计算机。这项任务的目标是判断该句子是正面positive的还是负面 negative 的。

    • 问答:NLPCC-DBQA 数据集的目标是选择相应问题的答案。这个数据集的评价方法包括 MRRF1 得分。

      Mean Reciprocal Rank: MRRMRR=1|Q|i=1|Q|1ranki 。其中 Q 为评估集合的问题总数,ranki 表示第 i 个问题的预测答案集合 Aiground-truth 答案的位置(ground-truth 的位置越靠前越好)。如果 ground-truth 答案不在预测答案集合 Ai 中,那么 1ranki=0

  5. 下表列出了 5 个中文 NLP 任务的测试结果。可以看出:

    • ERNIE 在所有任务上都优于 BERT ,在这些中文 NLP 任务上创造了新的 SOTA 结果。
    • 对于 XNLIMSRA-NERChnSentiCorpNLPCC-DBQA 任务,ERNIEBERT 获得了超过 1% 的绝对准确率的改进。

    ERNIE 的收益归功于其 knowledge integration 策略。

    论文仅仅介绍这个策略,但是究竟用到了哪些知识?以及如何对预训练语料库的中文句子进行分词、命名实体识别,都未提到。

  6. 消融研究:

    • Knowledge Masking 策略的效果:我们从整个语料库中抽取 10% 的训练数据来验证 knowledge masking 策略的有效性(在 XNLI 数据集上评估)。结果如下表所示。

      可以看到:

      • baselineword-level mask 的基础上增加 phrase-level mask 可以提高模型的性能。
      • 在此基础上,继续增加 entity-level mask 策略,模型的性能得到进一步提高。
      • 此外,在预训练数据集规模大 10 倍的情况下,在 XNLI 测试集上实现了 0.8% 的性能提升。

    • DLM 的效果:我们从整个语料库中抽取 10% 的训练数据来验证 DLM 任务的贡献(在 XNLI 数据集上评估)。我们从头开始预训练ERNIE,并报告XNLI 任务中 5 次随机重启微调的平均结果。注意:这里我们并不是均匀抽取,而是对不同的预训练数据集抽取不同的比例。

      详细的实验设置和结果如下表所示。可以看到:纳入 DLM 任务之后,验证集/测试集准确率分别提高了 0.7%/1.0%

      注意:因为 DLM 是预训练任务,同时也是预训练数据集。如果 with DLMwithout DLM 进行对比,那么预训练数据的规模就发生了变化。

      更好的做法是: 10% of all,同时对 without DLMMLM 来代替 DLM (而不是直接丢弃 MLM 的预训练数据)。否则这里的数据分布都变化了,实验结果难以直接对比。

  7. Cloze Test:为了验证 ERNIE 的知识学习能力,我们使用了几个 Cloze test 样本来检验模型。在实验中,我们从段落中删除命名实体,模型需要推断出被删除的命名实体是什么。下图给出了一些 case 。我们比较了 BERTERNIE 的预测结果。

    英文部分只是翻译,因为整篇论文是英文撰写并发表在国外,所以如果没有英文翻译部分,外国读者可能看不懂。

    • case 1 中,BERT 试图复制上下文中出现的名字,而 ERNIE 记住了文章中提到的relation 的知识。
    • case 2case 5 中,BERT 可以成功地根据上下文学习正确的 pattern ,因此正确地预测了命名实体的类型,但未能得到正确的实体。相反,ERNIE 可以得到正确的实体。
    • case 3、4、6 中,BERT 得到与句子有关的几个字符,但很难预测 semantic concept
    • 除了 case 4 之外,ERNIE 预测了所有正确的实体。虽然 ERNIEcase 4 中预测了错误的实体,但它能正确地预测语义类型,并得到另一个澳大利亚城市。

    综上所述,这些案例表明 ERNIEcontext-based 的知识推理中表现得更好。

十二、ERNIE2.0 [2019]

  1. 预训练的 language representation ,如ELMoOpenAI GPTBERTERNIE 1.0XLNet,已经被证明可以有效地提高各种自然语言理解任务的性能,包括情感分类、自然语言推理、命名实体识别等等。

    一般而言,模型的预训练往往是根据 wordsentence 的共现性 co-occurrence 来训练模型。而事实上,在训练语料库中,除了共现性之外,还有其他值得研究的词法 lexical、句法 syntactic 和语义 semantic 信息。例如,像人名、地名、组织名称这样的命名实体,可能包含概念性的信息 conceptual information。例如:

    • 句子顺序 sentence order 和句子之间的邻近性 proximity 这样的信息使模型能够学习 structure-aware representation
    • document level 的语义相似性、或句子间的篇章关系 discourse relation 使模型能够学习 semantic-aware representation

    为了发现训练语料中所有有价值的信息(无论是lexicalsyntactic、 还是 semanticrepresentation ),论文 《ERNIE 2.0: A CONTINUAL PRE-TRAINING FRAMEWORK FOR LANGUAGE UNDERSTANDING》 提出了一个continual pre-training framework ,名为 ERNIE 2.0 ,它可以通过不断的多任务学习 multi-task learning 来增量地构建和训练大量的预训练任务。

    论文的 ERNIE 2.0 框架支持在任何时候引入各种定制化的任务。这些任务共享相同的 encoding network 并通过多任务学习进行训练。这种方法使词法信息、句法信息和语义信息的encoding 跨不同任务成为可能。此外,当给定一个新的任务时, ERNIE 2.0 框架可以根据它所掌握的先前的训练参数来增量地训练 distributed representation

    总之,论文的贡献如下:

    • 作者提出了一个continual pre-training framework,即ERNIE 2.0,它以增量的方式支持定制化的训练任务和多任务预训练。
    • 论文构建了几个无监督的语言处理任务来验证所提出的框架的有效性。实验结果表明,ERNIE 2.016 个任务上比 BERTXLNet 取得了显著的改进,包括英文的 GLUE benchmark 和几个中文任务。
    • ERNIE 2.0 的微调代码、以及在英文语料上预训练的模型可在 https://github.com/PaddlePaddle/ERNIE 上找到。

    相比较于 ERNIE 1.0ERNIE 2.0 的改进在于预训练阶段的多任务学习。

  2. 相关工作:

    • 用于 language representation 的无监督迁移学习:通过用大量的未标记数据来预训练语言模型从而学习 general language representation 是很有效的。

      传统的方法通常专注于与上下文无关的 word embedding 。诸如 Word2VecGloVe 等方法通过在大型语料库上的 word co-occurrence 来学习 fixed word embedding

      最近,一些以 contextualized language representation 为中心的研究被提出来,上下文相关的 language representation 在各种自然语言处理任务中显示出 SOTA 的结果。

      • ELMo 提出从语言模型中提取 context-sensitive feature
      • OpenAI GPT 通过调整 Transformer 从而加强了 context-sensitive embedding
      • BERT 采用了一个 masked language model: MLM ,同时在预训练中加入了 next sentence prediction 任务。
      • XLM 融合了两种方法来学习跨语言的语言模型,即仅依赖单语数据的无监督方法、以及利用平行双语数据的监督方法。
      • MT-DNN 通过在预训练模型的基础上共同学习 GLUE 中的几个监督任务,最终导致在其它监督任务(这些监督任务未在多任务微调阶段进行学习)中取得改进。
      • XLNet 使用 Transformer-XL,并提出了一种推广的自回归预训练方法,即:通过对分解顺序的所有排列组合的期望似然 expected likelihood 最大化来学习双向上下文。
    • 持续学习 Continual Learning:持续学习的目的是用几个任务依次训练模型,使模型在学习新的任务时能记住以前学过的知识。这种方法受到人类学习过程的启发,因为人类能够不断积累通过学习或经验获得的信息来有效地发展新的技能。通过持续学习,模型应该能够在新的任务中表现良好,这要归功于在以前的训练中获得的知识。

12.1 模型

12.1.1 ERNIE 2.0 Framework

  1. 如下图所示,ERNIE 2.0 框架是基于最近在自然语言处理中日益流行的预训练和微调的架构而建立的。ERNIE 2.0 与传统的预训练方法不同,它不是用少量的预训练目标进行训练,而是可以不断引入大量的预训练任务,从而帮助模型有效地学习lexicalsyntactic、 以及 semanticrepresentation 。在此基础上,ERNIE 2.0 框架通过多任务学习不断更新预训练的模型。在微调过程中,ERNIE 模型首先用预训练的参数进行初始化,然后用特定任务的数据进行微调。

    有两种形式的多任务:预训练阶段的多任务、微调阶段的多任务。这里指的是预训练阶段的多任务。

    从下图右下角可以看到:预训练阶段的多任务共享相同的 bottom network

  2. Continual Pre-trainingcontinual pre-training 的过程包含两个步骤:

    • 首先,我们不断地构建具有大数据和先验知识参与的无监督预训练任务。

      对于预训练任务的构建,我们构建了不同类型的任务,包括 word-aware 任务、 structure-aware 任务和 semantic-aware 任务。所有这些预训练任务都依赖于自监督信号或弱监督信号,这些信号可以从海量数据中获得,不需要人工标注。

    • 其次,我们通过多任务学习逐步更新 ERNIE 模型。

      对于多任务预训练,ERNIE 2.0 框架以 continuous learning 的范式训练所有这些任务。具体而言,我们会先用一个简单的任务训练一个初始模型,然后不断引入新的预训练任务来更新模型。当增加一个新任务时,我们会以前一个任务来初始化 parameters 。每当引入一个新任务时,都会用前面的任务进行训练(这里采用联合训练),以确保模型不会忘记它所学的知识。这样一来,ERNIE 框架就能不断学习和积累 continuous learning 过程中获得的知识,而知识的积累将使模型在新任务中表现更好。

      每次引入一个新任务都需要重新训练前面所有的旧任务,此时不是依次训练,而是联合训练(损失函数相加)。

      另外,这些任务的学习顺序是否会影响最终效果?更近一步地,哪个任务是第一个学习的、哪个任务是最后一个学习的,是否会影响效果?

    如下图所示, continual pre-training 的架构包含一系列共享的 text encoding layer 来编码上下文信息。这些 text encoding layer 可以通过使用 RNNdeep Transformer 来定制化。编码器的参数可以在所有预训练任务中更新。

    在我们的框架中,有两种损失函数:一种是 sequence-level 损失,另一种是 token-level 损失,它们与BERT 的损失函数类似。每个预训练任务都有自己的损失函数。在预训练期间,一个或多个 sentence-level 的损失函数可以与多个 token-level 的损失函数相结合从而持续地更新模型。

  3. Application Task 执行微调:凭借对 task-specific 监督数据的微调,预训练模型可以适配 adapt 不同的语言理解任务,如问答、自然语言推理、以及语义相似性。每个下游任务在被微调后都有自己的 fine-tuned model

12.1.2 ERNIE 2.0 Model

  1. 为了验证该框架的有效性,我们构建了几个无监督的语言处理任务,并开发了一个预训练模型,称为 ERNIE 2.0 模型。在这一节中,我们介绍了该模型在上述框架中的实现。

  2. 模型架构:

    • Transformer EncoderERNIE 2.0 像其他预训练模型(如 GPTBERT、以及 XLM)一样,使用 multi-layer Transformer 作为 basic encodertransformer 可以通过自注意力来捕获序列中每个 token 的上下文信息,并生成 contextual embedding 的序列。给定一个序列,特殊的 classification embedding (即,[CLS])被添加到该序列的第一个位置。此外,对于 multiple input segment 的任务,符号 [SEP] 被添加到segment 之间作为分隔符。

      注意,[SEP] 被添加到每个 segment 的结尾,而不仅仅是两个 segment 之间。

    • Task EmbeddingERNIE 2.0 通过 task embedding 来调制 modulate 不同任务的特性。我们用一个从 0NID 来表示不同的任务,每个 task ID 被分配给一个唯一的 task embedding 。相应的 token embeddingsegment embeddingposition embedding 、以及 task embedding 被作为模型的输入。在微调过程中,我们可以使用任何 task ID 来初始化我们的模型。ERNIE 2.0 的结构如下图所示。

      因为微调期间是一个新的任务(即使是相同的任务类型,但是数据集不相同),与预训练的 task ID 都不相同,所以选择任何一个 task ID

  3. 预训练任务:我们构建了几个任务来捕获训练语料中的不同方面的信息:

    • word-aware预训练任务:教模型捕获词法信息 lexical information

      • Knowledge Masking TaskERNIE 1.0 提出了一个有效的策略,通过 knowledge integration 来增强 representation 。它引入了 phrase maskingnamed entity masking ,并预测 whole masked phrasewhole masked named entity ,从而帮助模型同时学习局部上下文和全局上下文中的依赖性。我们用这个任务来训练一个初始版本的模型。

      • Capitalization Prediction Task:与句子中的其他词相比,大写的词 capitalized word 通常具有某些特定的语义价值 semantic valuecased model (即,考虑字母大小写的模型)在命名实体识别等任务中具有一些优势,而 uncased model (即,不考虑字母大小写的模型)则更适合于其他一些任务。为了结合两种模型的优势,我们增加了一个任务来预测单词是否被大写。

        这意味着 ERNIE 2.0 不能在预处理阶段把所有文本转化为小写。

      • Token-Document Relation Prediction Task: 我们增加了一个任务来预测一个 segment 中的 token 是否出现在原始文档的其他 segment 中。根据经验,出现在文档许多部分的词通常是常用的词或与文档的 main topic 有关。因此,通过识别出现在 segment 中的、文档的关键词,该任务可以使模型在一定程度上捕获到文档的关键词。

        这里无法区分文档关键词和常用词。那么是否可以分成三类:仅出现在当前 segment、出现在当前 segment 和当前文档的其它 segment 但是未出现在其它文档(即,文档关键词)、出现在当前 segment 以及其它文档的其它 segment (即,常用词)。

    • structure-aware 预训练任务:教模型捕获语料的句法信息syntactic information

      • Sentence Reordering Task:我们增加了一个 sentence reordering 任务来学习句子之间的关系。在这个任务的预训练过程中,一个给定的段落被随机拆分成 1msegment ,然后这些 segment 被随机混洗。我们让预训练模型来重新排序这些被打乱的 segment 。模型是一个 k 类分类问题,其中 k=n=1mn!。根据经验, sentences reordering 任务可以使预训练的模型学习文档中句子之间的关系。

        通常 k 比较小,例如 k=3

      • Sentence Distance Task:我们还构建了一个预训练任务,利用 document-level 信息学习句子距离。该任务被建模为一个三类分类问题:0 代表两个句子在同一个文档中是相邻的、1 代表两个句子在同一个文档中但是不相邻、2 代表两个句子来自两个不同的文档。

    • semantic-aware 预训练任务:教模型捕获语义信号semantic signal

      • Discourse Relation Task:除了上面提到的 Sentence Distance Task,我们还引入了一个预测两个句子之间的语义或修辞关系的任务。我们使用 《Mining discourse markers for unsupervised sentence representation learning》建立的数据来为英文任务训练一个预训练模型。遵从该论文的方法,我们还自动构建了一个中文数据集从而用于预训练。

        篇章关系有 174 个类别标签,典型的例子如下:

        sentence 1sentence 2y
        比赛的动机大不相同,但是“旋转瓶子”设法满足了所有玩家的需求。这是一款精心制作的游戏。truly
        预谋多年之后,伯纳德没什么比嘲笑法律更好的了。距基尔万农场不到一英里的沼泽地上的工人们挖出了一个人体躯干。eventually
        考虑某个垂直市场或有关多地点独特需求的知识。欧内斯特(Ernest)的实力在于多地点竞技场,使伯奇(Birch)具有了新的能力。indeed
        @ Sklivvz:但是你自己暗中使用了这样一种解释。告诉你除了测量以外的任何问题都是不实际的。namely
        与来自B或C的类似能力的船只相比,Jeanneau的价格可能是便宜的。在西雅图,36号和39号的价格下降了约20G,现在39号的价格比36号高出一些。locally
      • IR Relevance Task:我们建立了一个预训练任务来学习信息检索 information retrieval: IR 中的短文本相关性 short text relevance 。它是一个三类分类任务,预测 querytitle 之间的关系。我们把 query 作为第一个句子,把 title 作为第二个句子。百度搜索引擎的搜索日志数据被用来作为我们的预训练数据。在这个任务中,有三种标签:

        • 0 表示 querytitle 之间具有强相关性,这意味着 title 在用户输入 query 后被点击。
        • 1 表示 querytitle 之间具有弱相关性,这意味着当用户输入 query 时,这些 title 出现在搜索结果中,但未能被用户点击。
        • 2 表示 querytitle 之间在语义信息上完全不相关,是随机的。

        IR Relevance Task 任务强烈依赖于百度的私有数据。

12.2 实验

  1. 我们将 ERNIE 2.0 的性能与 SOTA 的预训练模型进行比较。

    • 对于英文任务,我们将 ERNIE 2.0BERT, XLNetGLUE 上进行比较。
    • 对于中文任务,我们 ERNIE 2.0BERT, ERNIE 1.0 在几个中文数据集上进行比较。

12.2.1 预训练和实现

  1. 预训练数据:

    • BERT 类似,英文语料库中的一些数据是从 WikipediaBookCorpus 爬取的。除此之外,我们还从 Reddit 上收集了一些。我们还使用 Discovery 数据作为我们的篇章关系 discourse relation 数据。
    • 对于中文语料库,我们收集了各种数据,如百科全书、新闻、对话、信息检索、以及百度搜索引擎的discourse relation 数据。

    预训练数据的细节如下表所示。

  2. 预训练 setting:为了与 BERT 进行比较,我们使用与BERT 相同的 transformer settingbase model 包含 12 层、12 个自注意力头、768 维的hidden size ,而 large model 包含 24 层、16个自注意力头、1024 维的hidden sizeXLNet 的模型设置与 BERT 相同。

    对于英文语料和中文语料,ERNIE 2.0base model48NVidia v100 GPU 上训练,large model64NVidia v100 GPU 上训练。ERNIE 2.0 框架是在 PaddlePaddle 上实现的,这是一个由百度开发的端到端开源深度学习平台。

    我们使用 Adam 优化器,其参数固定为 β1=0.9β2=0.98batch size393216token 。英文模型的学习率被设定为 5e-5 ,中文模型的学习率为1.28e-4 。学习率由衰减方案 noam 来调度的,在每个预训练任务的前 4000 步进行 warmup 。通过float16 操作,我们设法加速训练并减少模型的内存使用。每个预训练任务都被训练,直到预训练任务的指标收敛。

    每个预训练任务训练多少个 epoch?根据这里的说法,每个任务需要被训练到指标收敛。

12.2.2 微调任务

a. 英文任务
  1. 我们在 General Language Understanding Evaluation: GLUE 上测试 ERNIE 2.0 的性能。具体而言,GLUE 涵盖了多种多样的NLP 数据集,包括:

    • Corpus of Linguistic Acceptability: CoLACoLA23 种语言的 10657 个句子组成,由其原作者对acceptability(语法上可接受)进行标注。CoLA 通常被用于这样的任务中:判断一个句子是否符合语法规范 syntax specification
    • Stanford Sentiment Treebank: SST-2SST-29645 条电影评论组成,并针对情感分析进行了人工标注。
    • Multi-genre Natural Language Inference: MNLIMNLI 是一个众包的集合,包括 433Ksentence pair ,并针对文本蕴含textual entailment 进行了人工标注,通常用于文本推理任务。
    • Recognizing Textual Entailment: RTERTE 是一个与 MNLI 类似的语料库,通常用于自然语言推理任务。
    • Winograd Natural Language Inference: WNLIWNLI 是一个捕获两个段落之间共指信息 coreference information 的语料库。
    • Quora Question Pairs: QQPQQP40 多万个 sentence pair 组成,数据提取自 Quora QA 社区,通常用于判断两个问题是否重复。
    • Microsoft Research Paraphrase Corpus: MRPCMRPC 包含 5800 对从互联网上的新闻中提取的句子,并对其进行标注,以捕获一对句子之间的语义相等性 semantic equivalenceMRPC 通常被用于与QQP 类似的任务。
    • Semantic Textual Similarity Benchmark: STS-BSTS-B 包含一个精选的英文数据集。这些数据集包含来自图像标题、新闻标题、以及用户论坛的文本。
    • Question Natural Language Inference: QNLIQNLI 是一个语料库,会告诉人们一对给定文本之间的关系是否是 question-answer
    • AXAX 是一个辅助性的手工制作的诊断测试套件,能够对模型进行详细的语言分析 linguistic analysis

    下表是 GLUE 中数据集的详细信息。

b. 中文任务
  1. 我们对 9 个中文 NLP 任务进行了广泛的实验,包括机器阅读理解、命名实体识别、自然语言推理、语义相似性、情感分析、以及问答。具体而言,我们选择了以下中文数据集来评估 ERNIE 2.0 在中文任务上的表现。

    • 机器阅读理解 Machine Reading Comprehension: MRCCMRC 2018DRCDDuReader
    • 命名实体识别Named Entity Recognition: NERMSRA-NER
    • 自然语言推理 Natural Language Inference: NLIXNLI
    • 情感分析Sentiment Analysis: SAChnSentiCorp
    • 语义相似度Semantic Similarity: SSLCQMCBQ Corpus
    • 问答 Question Answering: QANLPCC-DBQA

    这些数据集的详细情况如下表所示。

  2. 机器阅读理解 MCR :机器阅读理解是一个有代表性的 document-level 建模任务,其目的是从给定文本中提取连续的 segment 来回答问题。对于机器阅读理解任务,CMRC 2018DRCDDuReader 被作为测试数据集。

    • Chinese Machine Reading Comprehension 2018: CMRC 2018CMRC 2018是一个用于机器阅读理解的抽取式阅读理解数据集,它由中国中文信息处理学会、IFLYTEK 和哈尔滨工业大学发布。
    • Delta Reading Comprehension Dataset: DRCDDRCD 也是一个抽取式阅读理解数据集,由 Delta Research Institute 发布。值得注意的是,DRCD 是一个繁体中文数据集,所以我们使用一个已发布的工具将其预转换为简体中文。
    • DuReaderDuReader 是一个用于机器阅读理解和问答的大规模真实世界中文数据集,由百度在 ACL 2018 上发布。数据集中的所有问题都是从真实的匿名用户 query 中采样的,问题的答案是手动生成的。实验是在 DuReader 针对机器阅读理解的子集上进行的。
  3. 命名实体识别 NER:命名实体识别旨在识别各种实体,包括人名、地名、以及组织名称等。它可以被看作是一个序列标注任务。对于命名实体识别任务,我们选择了由微软亚洲研究院发布的 MSRA-NER (SIGHAN 2006) 数据集。

  4. 自然语言推理 NLI:自然语言推理旨在确定两个句子或两个词之间的语义关系(蕴含 entailment 、矛盾 contradiction 、中性 neutral )。对于自然语言推理任务,我们选择了流行的 XNLI 数据集。XNLIMultiNLI 语料库的一个众包集合,数据集中的 pair 都标注以文本蕴含标签,并翻译成包括中文在内的 14 种语言。

  5. 情感分析 SA:情感分析旨在分析一个句子的情感是正面的还是负面的。情感分析可以被简单地认为是二分类任务。对于情感分析任务,我们使用 ChnSentiCorp 数据集,其中包括几个领域的评论,如酒店、书籍、以及电子计算机。

  6. 语义相似性SS:语义相似性旨在根据两个句子的语义内容的相似性来识别它们是否具有相同的意图。对于语义相似性任务,我们使用 LCQMCBQ Corpus 数据集。LCQMC 是由哈尔滨工业大学在 COLTING 2018 上发布的。BQ Corpus 由哈尔滨工业大学和WeBankEMNLP 2018 上联合发布。这两个数据集中的每一对句子都与一个二元标签相关联,表明这两个句子是否具有相同的意图。

  7. 问答 QA:问答旨在为相应的问题选择答案。对于问答任务,我们使用 NLPCC-DBQA 数据集,该数据集于 2016年在 NLPCC 发布。

c. 实现细节
  1. 微调实验的配置如下表所示,分别为英文任务和中文任务的配置。

d. 实验结果
  1. 英文任务实验结果:为了保证实验的完整性,我们对每种方法的 base 模型和 large 模型在 GLUE 上的表现进行了评估。值得注意的是, XLNet 仅报告了单模型在验证集上的结果,因此我们只能比较 ERNIE 2.0XLNet 在验证集上(而不是测试集上)的性能。为了获得与 BERTXLNet 的公平比较,我们在验证集上运行了单任务和单模型的 ERNIE 2.0 。下表描述了关于 GLUE 的详细结果。

    这里的单任务指的是微调阶段的单任务(而不是预训阶段的单任务)。

    可以看到:

    • 根据 base 模型的比较,ERNIE 2.0 BASE 在所有 10 个任务上都优于 BERT BASE ,获得了 80.6 分。
    • 根据 large 模型在验证集上的比较,ERNIE 2.0 LARGE 在除 MNLI-m 之外的所有 8 个任务上都一致性地优于 BERT LARGEXLNet LARGE
    • 根据 large 模型在测试集上的比较,ERNIE 2.0 LARGE 在所有 10 个任务中都优于 BERT LARGE 。最终, ERNIE 2.0 LARGEGLUE 测试集上得到了 83.6分,比之前的 SOTA 预训练模型 BERT LARGE 实现了 3.1% 的改进。

  2. 中文任务实验结果: 下表显示了在 9 个经典的中文 NLP 任务上的表现。可以看出:

    • ERNIE 1.0 BASEXNLIMSRA-NERChnSentiCorpLCQMCNLPCC-DBQA 任务上的表现优于 BERT BASE ,但在其他任务上的表现则不太理想,这是由于两种方法的预训练不同造成的。具体而言,ERNIE 1.0 BASE 的预训练数据不包含长度超过128 的实例,但 BERT BASE 是用长度为 512 的实例预训练的。

    • 所提出的 ERNIE 2.0 取得了进一步的进展,在所有 9 个任务上都明显优于 BERT BASE

    • ERNIE 2.0 LARGE 在这些中文 NLP 任务上取得了最好的性能,创造了新的 SOTA 结果。

      ERNIE 2.0 LARGE 和别的模型的 BASE 版本比较,这是不公平的比较。应该 LARGE 对比 LARGE

没有消融研究?比如预训练任务的重要性、持续学习的方式等等。

十三、ERNIE3.0 [2021]

  1. 预训练的语言模型(如 ELMoGPTBERTERNIE),已被证明能有效提高各种自然语言处理任务的性能,包括情感分类、自然语言推理、文本摘要、命名实体识别等。一般而言,预训练的语言模型是以自监督的方式在大量的文本数据上学习的,然后在下游任务上进行微调,或者通过 zero-shot/few-shot learning 直接部署而无需针对具体任务进行微调。这种预训练语言模型已经成为自然语言处理任务的新范式。

    在过去的一两年中,预训练语言模型的一个重要趋势是它们的模型规模越来越大,这导致了预训练中更低的 perplexity ,以及在下游任务中表现更好。

    • 人们提出了具有 10 亿个参数的Megatron-LM 用于语言理解,Megatron-LM 使用简单但高效的层内模型并行 intra-layer model parallel 的方法,在几个数据集上取得了 SOTA 的结果。
    • 100 亿个参数的T5 探索了预训练模型的极限,但很快这个记录就被拥有 1750 亿个参数的 GPT-3 模型所打破。GPT-3 模型在 few-shot 甚至 zero-shotsetting 下具有良好的性能。
    • 不久之后,Switch-Transformer 作为世界上第一个万亿参数的预训练语言模型被提出。

    然而,这些拥有数千亿参数的大型预训练语言模型是在纯文本上训练的。例如,1750 亿参数的 GPT-3 是在具有 570GB 过滤后的文本(这些文本来自 Common Crawl )的语料库中训练的。这样的原始文本缺乏对语言知识 linguistic knowledge 和世界知识 world knowledge 等知识的 explicit representation 。此外,大多数大型模型是以自回归的方式进行训练的,但 BERT 原始论文显示,这类模型在适配下游语言理解任务时表现出较差的微调性能。

    在论文 《ERNIE 3.0: LARGE-SCALE KNOWLEDGE ENHANCED PRE-TRAINING FOR LANGUAGE UNDERSTANDING AND GENERATION》中,为了解决单一的自回归框架带来的问题,并探索知识增强 knowledge enhanced 的大型预训练模型的性能,作者提出了一个名为 ERNIE 3.0 的统一框架。ERNIE 3.0 融合自回归网络 auto-regressive network 和自编码网络 auto-encoding network ,在一个由纯文本和大型知识图谱组成的 4TB 语料库上训练大型的知识增强模型。ERNIE 3.0 可以通过 zero-shot learningfew-shot learningfine-tuning 来同时处理自然语言理解任务和自然语言生成任务。此外,ERNIE 3.0 支持在任何时候引入各种定制化的任务。这些定制化的任务共享相同的编码网络,并通过多任务学习进行训练。这种方法使词法信息、句法信息和语义信息的encoding 跨不同任务成为可能。此外,当给定一个新的任务时,ERNIE 3.0 框架可以根据它所掌握的先前的训练参数来增量地训练 distributed representation

    总而言之,论文贡献如下:

    • 作者提出了一个统一的框架 ERNIE 3.0 ,它结合了自回归网络和自编码网络,这样训练出来的模型就可以通过 zero-shot learningfew-shot learningfine-tuning 来同时处理自然语言理解任务和自然语言生成任务。
    • 作者用 100 亿个参数对大型知识增强模型进行预训练,并在自然语言理解和自然语言生成任务上进行了一系列的实验评估。实验结果表明,ERNIE 3.054benchmark 中始终以较大的优势胜过 SOTA 的模型,并在 SuperGLUE benchmark 中取得了第一名的成绩。

    相比较于 ERNIE1.0ERNIE2.0ERNIE3.0 使用了更大的模型、更大的预训练数据集、以及更多样化的预训练任务。此外,ERNIE 3.0 使用了渐进式学习,并且修改了模型架构:不同的 task 具有 task-specific network 并共享相同的 backbone network

  2. 相关工作:

    • 大型预训练模型:自从 BERT 被提出后,预训练的语言模型引起了越来越多的关注。研究趋势之一是增加模型规模从而导致更低的 perplexity 和更好的下游任务性能。因此,在过去的两年中,许多大型预训练模型被提出。

      • T5 模型有 110 亿个参数。T5 模型通过一个统一的框架将所有基于文本的语言任务转换为 text-to-text 的格式,并充分探讨了预训练目标、架构、无标记数据集、迁移方法、以及其他因素的有效性。
      • GPT-3T5 模型之后被提出,其中包括 1750 亿个参数,在 few-shot/zero-shot setting 下在各种任务上取得了惊人的表现。具体而言,GPT-3 是一个自回归的语言模型,比其前身 GPT-2 的规模大 10 倍。然而,GPT-3 在测试中显示出缺乏常识,存在偏见 bias 和隐私问题。
      • 《Switch transformers: Scaling to trillion parameter models with simple and efficient sparsity》提出了一个名为 Switch Transformer1 万亿参数模型,采用简化的MoE 路由算法,以较少的通信和计算成本改进模型。该论文还提出了一个大规模的分布式训练方案来解决训练复杂性、通信成本和训练不稳定性的问题。

      除了上面提到的模型,最近还提出了更多的非英语的大型模型。

      • 《Cpm: A large-scale generative chinese pre-trained language model》 发布了一个 26 亿参数的中文预训练语言模型 Chinese Pre-trained Language Model: CPMCPM 在大规模中文训练数据上进行了生成式预训练,模型结构受到了 GPT-3 的启发。
      • 《Cpm-2: Large-scale cost-effective pre-trained language models》 发布了 110 亿参数的模型 CPM-2
      • 《M6: A chinese multimodal pretrainer》 提出了一种名为M6Multi-Modality to Multi-Modality Multitask Mega-Transformer)的跨模态预训练方法,包括 1000 亿个参数用于多模态数据的统一预训练。
      • 《Pangu-alpha: Large-scale autoregressive pretrained chinese language models with auto-parallel computation》 提出了一个名为 PangGu-α2000 亿参数自回归语言模型。该模型在一个由 2048Ascend 910 人工智能处理器组成的集群上进行训练,其分布式训练技术包括数据并行、op-level 模型并行、pipeline 模型并行、优化器模型并行和 re-materialization
      • 除了这些中文的大规模模型,人们还提出了一个名为 HyperCLOVA 的韩语 2040 亿参数语言模型,其韩语的机器学习数据量是 GPT-36500 倍。

      从上面讨论的内容来看,现在的观察表明,大规模预训练模型已经吸引了工业界和学术界越来越多的关注。

    • 知识增强的模型:预训练的语言模型从大规模语料库中获取句法知识 syntactical knowledge 和语义知识 semantic knowledge ,但缺乏世界知识 world knowledge 。最近,一些工作试图将世界知识纳入预训练的语言模型中。

      • 世界知识的典型形式是一个知识图谱 knowledge graph 。许多工作将知识图谱中的entity embeddingrelation embedding 集成到预训练的语言模型中。
      • WKLM《Pretrained encyclopedia: Weakly supervised knowledge-pretrained language model》)用同类型的其他实体的名称替换原始文档中提到的实体,并训练模型将正确的实体与随机选择的实体区分开来。
      • KEPLER《Kepler: Aunified model for knowledge embedding and pre-trained language representation》)通过 knowledge embedding 和掩码语言模型目标来优化模型,将世界知识和 language representation 统一到同一语义空间。
      • CoLAKE《Colake: Contextualized language and knowledge embedding》)将语言上下文和知识上下文集成在一个 word-knowledge graph 中,并通过扩展的掩码语言模型目标共同为语言和知识来学习 contextualized representation

      另一种现有的世界知识形式是大规模数据的额外标注。

      • ERNIE 1.0 引入了 phrase maskingnamed entity masking ,并预测了 whole masked phrasewhole masked named entity ,以帮助模型学习局部上下文和全局上下文中的依赖信息。
      • CALM《Pretraining text-to-text transformers for concept-centric common sense》)通过两种自监督的预训练任务,教导模型检测和校正 incorrect ordering of concept 的、被破坏的句子,并将 ground-truth 句子与虚假的句子区分开来。
      • K-Adapter《K-adapter: Infusing knowledge into pre-trained models with adapters》)利用适配器 adapter 来区分知识来自哪里,其中适配器在具有额外标注信息的不同知识源上被训练得到。

13.1 模型

  1. 为了探索知识增强的大型预训练模型的有效性,我们提出了 ERNIE 3.0 框架,对包括纯文本和知识图谱在内的大规模无监督语料进行预训练模型。此外,我们采用各种类型的预训练任务,使模型能够更有效地学习由词汇信息、句法信息和语义信息组成的不同 level 的知识,其中预训练任务分布在三个任务范式中,即自然语言理解、自然语言生成、和知识提取。因此,ERNIE 3.0 创新性地设计了一个 Continual Multi-Paradigms Unified Pre-training Framework ,以实现多任务范式间的协同预训练 collaborative pre-training

13.1.1 总体框架

  1. ERNIE 3.0 的框架如下图所示,它可以广泛用于pre-trainingfine-tuningzero-shot/few-shot learning

    流行的 unified pre-training strategy 针对不同的 well-designed cloze task 共享一个 Transformer network ,然后应用 specific self-attention mask 来控制以何种上下文为条件来得到 prediction 。与普遍的统一预训练策略不同,ERNIE 3.0 设计了一个新的 Continual Multi-Paradigms Unified Pre-training Framework

    我们认为:自然语言处理的不同任务范式对相同的底层抽象特征的依赖是一致的,如词汇信息和句法信息;但对 top-level 具体特征的要求是不一致的,其中自然语言理解任务有学习语义连贯性 semantic coherence 的要求,而自然语言生成任务则期望进一步的上下文信息。因此,受多任务学习的经典模型架构的启发,即下层是所有任务共享的,而上层是特定任务的,我们提出了 ERNIE 3.0 ,使不同的任务范式能够共享在一个 shared network 中学到的底层抽象特征,并分别利用在 task-specific network 中学到的、top-level 的具体特征。

    此外,为了帮助模型有效地学习 lexical representationsyntactic representationsemantic representationERNIE 3.0 利用了ERNIE 2.0 中引入的 continual multi-task learning framework 。对不同类型的下游任务,我们首先用预训练好的 shared network 和相应的 task-specific network 的参数组合来初始化 ERNIE 3.0 ,然后利用具体任务的数据执行相应的后续程序。

    ERNIE 1.0 没有多任务结构。

    ERNIE 2.0 虽然采用了多任务,但是这些任务共享相同的底层结构和 top-level 结构,并依次训练每个任务。最终只有一个 task-specific network ,该 network 学习到所有任务的信息。

    ERNIE 3.0 也采用了多任务,但是不同的任务共享相同的底层结构、以及不同的 top-level 结构。最终有多个 task-specific network,不同 network 学到不同任务的信息。

  2. ERNIE 3.0 中,我们把 backbone shared network 称作 Universal Representation Module 、把 task-specific network 称作 Task-specific Representation Module

    具体而言,universal representation network 扮演着通用语义特征提取器的角色,其中的参数在各种任务范式中都是共享的,包括自然语言理解、自然语言生成等等。而 task-specific representation network 承担着提取 task-specific 语义特征的功能,其中的参数是由 task-specific 目标学到的。

    ERNIE 3.0 不仅使模型能够区分不同任务范式的 task-specific 语义信息,而且缓解了大型预训练模型在有限的时间和硬件资源下难以实现的困境,其中 ERNIE 3.0 允许模型只在微调阶段更新 task-specific representation network 的参数。

    具体而言,ERNIE 3.0 采用了一个 Universal Representation Module 和两个 Task-specific Representation Module 的协同架构。这两个 Task-specific Representation Module 为:natural language understanding specific representation modulenatural language generation specific representation module

  3. Universal Representation ModuleERNIE 3.0 使用多层 Transformer-XL 作为 backbone network 。显然,Transformer 模型的规模越大,其捕获和存储各种不同 level 的语义信息的能力就越强。因此,ERNIE 3.0 设置了规模较大的 universal representation module 。而需要特别注意的是,memory module 只对自然语言生成任务有效,同时控制attention mask 矩阵。

    memory module 对自然语言理解任务也有好处,为什么仅在自然语言生成任务中考虑 memory module?作者未解释。

    ERNIE 3.0 使用 Transformer-XL 作为 backbone network ,相比较而言,ERNIE 1.0ERNIE 2.0 使用 BERT_BASE

  4. Task-specific Representation Moduletask-specific representation module 也是一个多层 Transformer-XLERNIE 3.0task-specific representation module 设置为 manageable size ,相比 shared network 的规模更小(根据论文的实现,仅占 shared network 参数规模的不到 1% )。

    ERNIE 3.0 构建了两个 task-specific representation module ,即 NLU-specific representation moduleNLG-specific representation module ,其中前者是一个双向建模网络(自然语言理解),而后者是一个单向建模网络(自然语言生成)。

13.1.2 预训练任务

  1. 我们为各种任务范式构建了几个任务从而捕捉训练语料中不同方面的信息,并使预训练的模型具有理解、生成和推理的能力。

  2. word-aware 预训练任务:

    • Knowledge Masked Language ModelingERNIE 1.0 提出了一个有效的策略,通过 knowledge integration 来增强 representation ,即 Knowledge Integrated Masked Language Modeling 任务。它引入了 phrase maskingnamed entity masking ,预测 whole masked phrasewhole masked named entity ,帮助模型学习局部上下文和全局上下文中的依赖信息。

    • Document Language Modeling:生成式预训练模型通常利用传统的语言模型(如 GPTGPT-2 )或 sequence-to-sequence 的语言模型(如 BARTT5ERNIE-GEN)作为预训练任务。ERNIE 3.0 选择了传统的语言模型作为预训练任务,以降低网络的复杂性,提高 unified pre-training 的效果。此外,为了使 ERNIE 3.0NLG network 能够对较长的文本进行建模,我们引入了 ERNIE-Doc 中提出的 Enhanced Recurrence Memory Mechanism ,该机制通过将 shifting-one-layer-downwards recurrence 改为同层递归,可以对比传统recurrence Transformer 建模更大的有效上下文长度。

      ERNIE-Doc 的更新公式,l 表示第 l 层:

      (17)h~t+1(l1)=[SG(ht(l))ht+1(l1)]qt+1(l),kt+1(l),vt+1(l)=h~t+1(l1)Wq,h~t+1(l1)Wk,h~t+1(l1)Wvh~t+1(l)=Transformer-Block(qt+1(l),kt+1(l),vt+1(l))

      和传统recurrence Transformer 的区别在于:传统recurrence Transformer 使用 h~t+1(l1)=[SG(ht(l1))ht+1(l1)] ,注意上标都是 (l1) 。其中 表示向量拼接,SG(.) 表示 stop-gradient 操作。

      但是,这种同层依赖(类似于 LSTM )打破了 Transformer 的并行性,可能不利于训练。

  3. structure-aware 预训练任务:

    • Sentence Reordering:遵从 ERNIE2.0 ,我们增加了一个 sentence reordering 任务来学习句子之间的关系。在这个任务的预训练过程中,一个给定的段落被随机拆分成 1msegment ,然后这些 segment 被随机混洗。我们让预训练模型来重新排序这些被打乱的 segment (作为一个 m! 的分类任务)。
    • Sentence Distance:遵从 ERNIE2.0 ,该任务被建模为一个三类分类问题:0 代表两个句子在同一个文档中是相邻的、1 代表两个句子在同一个文档中但是不相邻、2 代表两个句子来自两个不同的文档。
  4. knowledge-aware 预训练任务:

    • Universal Knowledge-Text Prediction: UKTPUKTP 任务是knowledge masked language modeling 的扩展。knowledge masked language modeling 只需要非结构化文本,而 UKTP 任务则同时需要非结构化文本和知识图谱。

      UKTP 任务如下图所示。 给出知识图谱中的三元组和百科全书中的相应句子,我们随机掩码三元组中的关系relation 或句子中的单词。

      • 为了预测三元组中的关系,模型需要检测 head entitytail entity ,并确定它们在相应句子中的语义关系。

        这个过程的本质与关系抽取任务中的 distant supervision algorithm 相似(《Distant supervision for relation extraction without labeled data》)。 distant supervision algorithm认为:如果两个实体参与了某种关系,任何包含这两个实体的句子都可能表达这种关系。

      • 为了预测相应句子中的单词,模型不仅考虑了句子中的依赖信息,还考虑了三元组中的逻辑关系。

      具体来说,获得一个三元组和这个对应句子的程序如下:给定百科全书中的一篇文档,我们首先从知识图谱中找到 head entitytail entity 是文档标题的候选三元组,然后从候选三元组中 head entitytail entity 同时在该文档的同一句子中被提及的三元组。

      注意,这里只需要 head entitytail entity 同时位于同一个句子即可,不需要 relation 也位于该句子中。

      注意,input 将知识图谱三元组和对应的文档句子拼接起来,这里把三元组也视为一个句子。

      注意,如果文档中的一个句子对应多个三元组怎么处理?作者未说明,读者猜测把每个三元组视为一个句子,然后与文档句子拼接起来。

13.1.3 预训练过程

  1. 预训练算法:渐进式训练 progressive training 最初是为了提高稳定性而提出的,它从一个高效的小模型开始并逐渐增加模型容量。最近的研究利用这一范式来加速模型训练。随着大型预训练的不断推进,其巨大的计算消耗成为进一步开发更强大模型的主要负担。渐进式训练的初步应用已经在 transformer 预训练中得到了体现。

    • BERT 设计了一个两阶段的训练,在前 90% 的更新中减少序列长度。
    • GPT-2 也线性地逐渐增加 batch size ,从一个小的值到 full value
    • Efficientnet-v2 也注意到,阶段性地改变 regularization factor 可以加快训练网络的速度。

    为了进一步提高训练过程的收敛速度,我们建议通过逐步同时增加包括输入序列长度、batch size 、学习率、dropout rate 在内的training factor ,从而来更全面、更平稳的方式调整 training regularization factor 。事实上,Transformer 模型采用 learning rate warm-up 策略来提高训练稳定性是很常见的,我们改进的渐进式学习策略与现有策略是兼容的。

  2. 预训练数据:我们构建了一个大规模、多种类、高质量的中文文本语料库,存储量达 4TB ,分 11 个不同的类别。据我们所知,与CLUECorpus2020100GB)、中文多模态预训练数据(300GB )、CPM-2 使用的 WuDaoCorpus2.02.3TB 中文数据和 300GB 英文数据)和 PanGu Corpus1.1TB)相比,这是目前最大的中文预训练语料。

    具体而言,我们为 ERNIE 3.0 建立的语料库来自ERNIE 2.0(包括百度百科、维基百科、feed 等等)、百度搜索(包括百家号、知乎、百度贴吧、百度经验)、Web textQA-longQA-shortPoetry 2&Couplet,以及来自医疗、法律和金融等领域的特定数据,以及拥有超过 5000 万条事实的百度知识图谱。

    为了提高数据质量,我们采取了以下预处理策略:

    • 数据去重:数据去重是在不同的粒度上进行的,包括字符级、段落级和文档级。

      • 在字符级,我们用单个字符替换连续的相同字符(即空格、制表符、感叹号、问号等)。
      • 在段落级,我们用单个段落替换两个相同的连续段落,其中每个段落的句子长度为 N,1<N<100
      • 在文档级,我们采用 Message Digest Algorithm5: MD5 ,通过比较每个文档中最长的前三个句子的 MD5 之和来过滤重复的文档。

      字符级和段落级去重对于 ERNIE 3.0 生成不重复的内容至关重要。

    • 少于 10 个单词的句子被过滤掉,因为它们可能是有问题的或不完整的句子,包含的语义信息有限,无法用于模型预训练。

    • 我们进一步使用正则表达式进行句子分割,并基于百度的分词工具进行分词。这有助于 ERNIE 3.0 在预训练中学习更好的句子边界和命名实体知识。

    然后,每个数据集都乘以一个用户定义的乘数 user-defined multiplier number ,从而为 NLU-network 预训练来增加数据的多样性。

    这个乘数代表了数据集的重要性,即:更高质量的数据集被更多地使用、更低质量的数据集被更少地使用。

    百度分词工具、百度知识图谱、以及这个数据集都是私有的,没有这些工具和数据我们难以复现论文结果。

  3. 预训练 setting

    • ERNIE 3.0universal representation moduletask-specific representation module 都使用 Transformer-XL 架构作为 backboneuniversal representation module 具有 48 层、4096 个隐单元、64 个头,task-specific representation module 具有 12 层、768 个隐单元、12 个头。 universal representation moduletask-specific representation module 的总参数规模为 100 亿。

      可以看到, task-specific representation module 的规模远小于 universal representation module

    • 激活函数是 GeLU 。上下文的最大序列长度为 512 ,语言生成的memory 长度为 128 。所有预训练任务的 total batch size6144 。我们使用 Adam 优化器,学习率为 1e-4β1=0.9,β2=0.999L2 权重衰减为 0.01,学习率在前一万步中进行预热,学习率线性衰减。在前一万步中,我们也使用渐进式学习来加速预训练初始阶段的收敛。

    • 模型用 384NVDIA v100 GPU 卡上训练了总共 3750 亿个 token ,并在 PaddlePaddle 框架上实现。凭借在《Zero: Memory optimizations toward training trillion parameter models》《Zero-shot text-to-image generation》 中使用的参数分片,我们设法减少了我们模型的内存占用,并解决了模型的总参数超过单个 GPU 卡的内存的问题。

13.2 实验

  1. 我们将 ERNIE 3.0SOTA 预训练模型,通过微调,在自然语言理解任务、自然语言生成任务、以及 zero-shot learning 上进行比较。

  2. 评估任务:共 54NLP 任务:

    • 自然语言理解任务 Natural Language Understanding Task14 种自然语言理解任务,覆盖 45 个数据集。

      • 情感分析 Sentiment AnalysisNLPCC2014-SC, SE-ABSA16_PHNS, SE-ABSA16_CAME, BDCI2019
      • 观点抽取 Opinion extractionCOTE-BD, COTE-DP, COTE-MFW
      • 自然语言推理 Natural Language InferenceXNLI, OCNLI, CMNLI
      • Winograd Schema ChallengeCLUEWSC2020
      • 关系抽取 Relation ExtractionFinRE, SanWen
      • 事件抽 Event ExtractionCCKS2020
      • 语义相似度 Semantic SimilarityAFQMC, LCQMC, CSL, PAWS-X, BQ Corpus
      • 中文新闻分类 Chinese News ClassificationTNEWS, IFLYTEK, THUCNEWS, CNSE, CNSS
      • 闭卷问答 Closed-Book Question AnsweringNLPCC-DBQA, CHIP2019, cMedQA, cMedQA2, CKBQA, WebQA
      • 命名实体识别 Named Entity RecognitionCLUENER, Weibo, OntoNotes, CCKS2019
      • 机器阅读理解 Machine Reading ComprehensionCMRC 2018, CMRC2019, DRCD, DuReader, Dureader_robust, Dureader_checklist, Dureader_yesno, C^3, CHID
      • 法律文件分析 Legal Documents AnalysisCAIL2018-Task1, CAIL2018-Task2
      • Cant UnderstandingDogWhistle Insider, DogWhistle Outsider
      • 文档检索 Document RetrievalSogou-log
    • 自然语言生成任务 Natural Language Generation Task7 种自然语言理解任务,覆盖 9 个数据集。

      • 文本摘要 Text SummarizationLCSTS
      • 问题生成 Question GenerationKBQG, DuReader-QG, DuReader_robust-QG
      • 数学 MathMath23K
      • 对抗生成 Advertisement GenerationAdGen
      • 翻译 TranslationWMT20-enzh
      • 对话生成 Dialogue GenerationKdConv
  3. 自然语言理解任务上的微调结果:

  4. 自然语言生成任务上的微调结果:

  5. LUGE benchmark :我们在 Language Understanding and Generation Evaluation: LUGE 上的六个代表性任务上评估了 ERNIE 3.0 和其它方法。ERNIE 3.0ERNIE 2.0RoBERTa 等领先的预训练模型平均提高 5.36%

  6. Zero-shot Learning 评估:我们已经证明,ERNIE 3.0pretraining-then-finetuning 的范式下,在 NLUNLG 任务上都优于以前的 SOTA 方法。这里我们评估 ERNIE 3.0zero-shot setting 下的性能,此时模型没有执行任何梯度更新或微调。结果表明:与最近提出的大型语言模型如 CPM-12.6B )、PanGu-α-2.6BPanGu-α-13B 相比,ERNIE 3.0 在大多数下游任务上取得了强大的性能。 并且 ERNIE 3.0 可以产生更连贯、更自然和更准确的 response (这是在我们人工收集的、跨越 13 个不同任务的 450 个案例中评定的)。

    • 评估方法:

      • Perplexity-based Method:在从多选答案中选择一个正确答案的任务中(如 CHIDCMRC2017),我们比较了将每个答案填入上下文空白处时的 per-token perplexity 分,得分最低的那个将被预测为正确答案。

        在需要二分类或多分类的任务中,我们给每个 label 分配一个更有语义的名字,并使用一个 prompt 将上下文和 label 形式化为人类可读的文本。然后,这类任务可以被视为多选任务。我们使用的 promptCPM-1PanGu-α 中的 prompt 相似。

      • Generation-based Method:在自由形式补全 free-form completion 的任务上(如闭卷问答),我们使用 beam search ,其中 beam width8 并且没有长度惩罚。 completion 的最大生成长度由预定义数字来限制,这个数字基于数据集上答案长度的 95% 百分点来获得。我们使用 exact match: EMF1Rouge-1 等指标。

        ROUGE-N (其中 N 可以为 1/2/...)为 N-gram 召回率:

        (18)ROUGE-N=Num of co-occurrent N-gram in model-output and ground-truthnum of N-gram in ground-truth

         

        exact match 为预测结果与 ground-truth 完全相同的测试样本占比。

        restrained completion 的任务上(如抽取式机器阅读理解),我们使用 restrained beam search ,参数与自由形式补全任务相同。为每个样本构建一个 Trie-Tree ,以有效地限制生成空间,所生成的 completion 仅出现在给定的文本中。

    • 结果:

    • 案例研究:我们人工收集了 450 个案例,以评估当前大型预训练模型在 5 种不同类型的 13 个任务上的 zero-shot generation 能力,包括问答 Question Answering 、解释 Interpretation 、对话 Dialogue 、文本生成 Text Generation 和摘要 Summarization 。在人类评估中,标注者被要求对生成质量进行评分,评分标准为 [0, 1, 2] 。我们在 Table 6 中报告了连贯性coherence, 、流畅性 fluency 和准确性 accuracy 的平均得分。并在 Table 7 中展示了 ERNIE 3.0 的一些 zero-shot 生成。与 CPM-1PLUGPanGu-α 相比,ERNIE 3.0 平均能生成最连贯、最流畅和最准确的文本。三个评分指标的介绍如下,评分细节如 Table 8 所示。

      • 连贯性 coherence:衡量生成的内容是否与上下文相关并一致。
      • 流畅性 fluency:评价生成的文本是否自然或可读。一个流畅的文本应该在生成的文本中没有语义上的矛盾。
      • 准确性:评价生成的文本是否与 ground truth 相同。

  7. SuperGLUE 上的实验:SuperGLUE 是一个针对自然语言理解的多任务 benchmark

  8. 分析:

    • Task-specific Representation Module 的有效性:为了验证 task-specific network 的有效性,我们将我们提出的结构与那些在各种预训练任务下共享参数的网络进行比较。

      对于消融测试,我们选择自然语言理解和自然语言生成作为两种不同的训练范式,并利用前面提到的相应任务。 unified network 遵循 base model setting12 层,768 维,12 个注意力头),每个任务范式的 task-specific network 被设置为3 层、256 维、4 个注意力头。在对比模型, task-specific network 在不同的任务范式中是共享的。下图说明了预训练过程中自然语言生成任务的 perplexity 变化。可以看到:

      • 在不同任务拥有自己的task-specific network 的模型达到了较高的收敛速度。
      • 随着训练的进行,与具有 shared task-specific network 的模型相比,性能优势变得更大。

      实验结果显示了所提出的 task-specific network 的有效性,并证明了区分不同任务的必要性。

    • Universal Knowledge-Text Prediction:为了 universal knowledge-text prediction 任务的性能,我们进行了一组消融实验。

      关系抽取任务是一个典型的 knowledge-driven 任务,旨在预测给定句子中提到的两个实体之间的关系。具体来说,我们增加了四个 special token[HD], [/HD], [TL], [/TL],分别用来识别提到的头部实体和尾部实体,然后根据上述四个 special tokenfinal representation 之和进行关系分类。我们在 SanWenFinRE 数据集上构建了实验,如下表所示,knowledge enhancement 策略在关系抽取任务上取得了卓越的经验性能。

      输入为 "[HD]实体A[\HD] .... [TL]实体B[\HD]...." 。这里的前提是,一个句子中只有两个实体。

      此外,在 CKBQA 上进行的 zero-shot generation 实验也证实了 universal knowledge-text prediction 任务的有效性。具体来说,基于知识的问答任务需要一个模型基于知识图谱来搜索和推理出正确答案。用 KBQA 任务来衡量预训练语言模型的知识学习能力是合适的。我们使用 "QUESTION: $QUESTION? ANSWER:" 作为 zero-shot learningprompt ,然后在 CKBQA 数据集上比较我们提出的模型和几个 SOTA 的预训练语言模型的性能。如 Table 5 所示,ERNIE 3.0CKBQA 数据集中的表现明显优于 PanGu-αCPM-1 ,这表明 ERNIE 3.0 具有记忆和学习更多知识的能力。

    • Progressive Learning to Speed up Convergence:我们记录了两种架构配置的训练收敛速度,包括 ERNIE_BaseERNIE_1.5B 。其中, ERNIE_Base 的架构设置遵循 《Ernie: Enhanced representation through knowledge integration》ERNIE_1.5B 模型的配置为 48 层、1536 维、24 个注意力头。

      如下表所示,我们记录了模型的 loss 值收敛到与 ERNIE3.0 相同的训练时间。

      • 对于 ERNIE_Base 模型,渐进式学习的收敛时间减少了 65.21% ,从11 小时减少到4 小时。

        在渐进式预热阶段,对于 ERNIE_Base ,我们将 batch size8 增加到 2048 ,序列长度从 128 增加到 512 ,学习率从 0 线性增加到 1e-4dropout rate 保持 0

      • 对于 ERNIE_1.5B 模型,渐进式学习的收敛时间减少了 48%

        在渐进式预热阶段,对于 ERNIE_1.5B ,我们将 batch size8 增加到 8192 ,学习率从 0 线性增加到 6e-4dropout rate 保持 0

      对于这两种配置,我们在 8NVIDIA Tesla V100 GPU 上进行了预训练。其余实验设置与 《Ernie: Enhanced representation through knowledge integration》相同。对于 ERNIE_1.5B ,为了在 GPU 内存的约束下达到峰值 batch size ,在预训练中使用梯度累积策略。

      梯度累积策略相当于增大 batch size 。假设有 mbatch {Bi},每个 batch 的梯度更新为:

      (19) for 1im:ΘΘη×1|Bi|jBigj

      其中 gj 为样本 j 的梯度,η 为学习率。

      梯度累积策略对于这 mbatch 执行一次梯度更新,而不是 m 次梯度更新。即,先累加 mbatch 的梯度,然后一次性更新。

十四、ERNIE-Huawei [2019]

  1. 预训练的 language representation model ,包括基于特征的方法和微调的方法,可以从文本中捕捉丰富的语言信息,从而使许多NLP 应用受益。BERT 作为最近提出的模型之一,通过简单的微调在各种 NLP 应用中获得了 SOTA 的结果,这些任务包括命名实体识别、问答、自然语言推理和文本分类。

    尽管预训练的language representation model 已经取得了可喜的成果,但它们忽略了为语言理解纳入知识信息。如下图所示,在不知道 "Blowin’ in the Wind" 是一首歌、以及 "Chronicles: Volume One" 是一本书的情况下,在 entity typing 任务(即,实体分类)中很难识别 Bob Dylan 的两个职业(即 "songwriter""writer" )。此外,在关系分类 relation classification 任务中,几乎不可能提取细粒度的关系,如 composer 作曲家和 author 作者。 对于现有的预训练的 language representation model 来说,下图例子中的两个句子在语法上是模糊 ambiguous 的,比如 "UNK wrote UNK in UNK"。因此,考虑丰富的知识信息可以导致更好的语言理解,并相应地有利于各种 knowledge-driven 的应用,例如 entity typingrelation classification

    将外部知识纳入 language representation model 有两个主要挑战:

    • Structured Knowledge Encoding:对于给定的文本,如何为 language representation model 有效地在知识图谱中抽取和编码该文本相关的 informative fact ,这是一个重要的问题。
    • Heterogeneous Information Fusion:针对 language representation 的预训练程序与 knowledge representation 程序截然不同,这导致了两个独立的向量空间。如何设计一个特殊的预训练目标来融合词法 lexical 的、句法 syntactic 的和知识knowledge 的信息是另一个挑战。

    为了克服上述挑战,论文 《ERNIE: Enhanced Language Representation with Informative Entities》提出了 Enhanced Language RepresentatioN with Informative Entities: ERNIE ,它同时在大规模文本语料和知识图谱上预训练 language representation model

    • 为了抽取和编码 knowledge informationERNIE 首先识别文本中提到的命名实体,然后将这些提到的实体与知识图谱中的相应实体对齐。ERNIE 不直接使用知识图谱中的 graph-based facts ,而是用 TransEknowledge embedding 算法对知识图谱的图结构进行编码,然后将 informative entity embedding 作为 ERNIE 的输入。基于文本和知识图谱之间的对齐 alignmentsERNIEknowledge module 中的 entity representation 集成到 semantic moduleunderlying layer
    • BERT 类似,ERNIE 采用 masked language modelnext sentence prediction 作为预训练目标。此外,为了更好地融合 textual featureknowledge feature ,论文设计了一个新的预训练目标,即随机掩码输入文本中的一些token-entity alignment ,要求模型从知识图谱中选择合适的实体来完成对齐alignment 。与现有的预训练 language representation model 只利用局部上下文来预测 token 不同,ERNIE 的目标要求模型同时聚合上下文和 knowledge fact 来同时预测 token 和实体,并导致一个 knowledgeable language representation model
    • 论文对两个 knowledge-drivenNLP 任务进行了实验,即 entity typingrelation classification 。实验结果表明:通过充分利用词法 lexical 的、句法 syntactic 的和知识knowledge 的信息,ERNIE 在这些 knowledge-driven 的任务上明显优于 BERT 。论文还在其他常见的 NLP 任务上评估了 ERNIEERNIE 仍然取得了可比 comparable 的结果。

    预训练语料库容易获得,但是知识图谱一般比较难以获得。

    本文中提到的 ERNIE 指的是 《ERNIE: Enhanced Language Representation with Informative Entities》 ,而不是 Ernie: Enhanced representation through knowledge integration》

  2. 相关工作:预训练方法可以分为两类,即 feature-based 的方法和 finetuning 方法。

    • 早期的工作主要是采用 feature-based 的方法,将单词转化为 distributed representation 。由于这些预训练的 word representation 捕捉了文本语料中的句法信息 syntactic information 和语义信息 semantic information ,它们经常被用作各种 NLP 模型的 input embedding 和初始化参数,并且比随机初始化参数有显著的改进。由于这些 word-level 模型经常受到单词多义性的影响,ELMo 进一步采用 sequence-level 模型来捕捉不同语言上下文下的复杂的 word feature ,并使用ELMo 来生成 context-aware word embedding
    • 与上述 feature-based 的方法只使用 pretrained language representation 作为 input feature 不同,《Semi-supervised sequence learning》 在未标记的文本上训练自编码器,然后将预训练的模型架构和参数作为其他 specific NLP model 的起点。受该论文的启发,人们提出了更多用于微调的预训练 language representation model,如 GPTBERT

    虽然 feature-based 的和 finetuninglanguage representation model 都取得了巨大的成功,但它们忽略了纳入知识信息。 正如最近的工作所证明的那样,注入额外的知识信息可以大大增强原始模型。因此,我们认为,额外的知识信息可以有效地有助于现有的预训练模型。事实上,一些工作已经尝试对单词和实体进行联合的 representation learning ,以有效利用外部知识图谱,并取得了可喜的成果。《Ernie: Enhanced representation through knowledge integration》提出了 knowledge masking 策略用于 masked language model 从而通过知识来增强 language representation 。在本文中,我们进一步利用语料库和知识图谱来训练 BERT-basedenhanced language representation

14.1 模型

  1. 我们记一个 token 序列为 {w1,w2,,wn} ,其中 ntoken 序列的长度。同时, 我们用 {e1,e2,,em} 对齐了给定 token 序列的实体序列 entity sequence ,其中 m 为实体序列的长度。注意,在大多数情况下,mn ,因为在知识图谱中,并不是每个 token 都能对齐一个实体。此外,我们把包含所有 token 的整个词表 vocabulary 表示为 V,把包含知识图谱中所有实体的 entity list 表示为 E 。如果一个 token wV ,并且它有一个对应的实体 eE ,那么 tokenentity 之间的对齐 alignment 定义为:f(w)=e 。在本文中,我们将实体与它的命名实体短语 named entity phrase 中的第一个 token 对齐。

    实体有两种位置:第一种位置是位于知识图谱中的实体,第二种位置是位于文本句子中的实体。除了特别说明之外,本文中的实体都指的是位于文本句子中的实体。

    这篇文章价值不大,实验部分参考意义也不大(用了预训练好的 BERT 参数来初始化,这导致不公平的比较,而且效果反而不如 BERT )。浪费时间。

14.1.1 模型架构

  1. 如下图所示,ERNIE 的整个模型架构由两个堆叠的模块组成:

    • T-Encoder:底层的文本编码器 textual encoder 负责从 input token 中获取基本的词法信息和句法信息。
    • K-Encoder:上层的知识编码器 knowledgeable encoder 负责将额外的 token-oriented knowledge information 集成到底层的文本信息中,这样我们就可以将 token 和实体的异质信息 heterogeneous information 表示为一个统一的特征空间 feature space

    此外,T-Encoder 的层数记做 NK-Encoder 的层数记做 M

    这里的 Entity Input 是实体经过 TransE 算法之后得到的 entity embedding

  2. 具体而言,给定一个 token 序列 {w1,,wn} 及其对应的实体序列 {e1,,em},文本编码器首先将每个 tokentoken embeddingsegment embeddingpositional embedding 相加从而计算其 input embedding ,然后计算词法特征 lexical featuresyntactic feature {w1,,wn}如下:

    (20){w1,,wn}=T-Encoder({w1,,wn})

    其中 T-Encoder() 是一个多层双向的 Transformer encoder 。由于 T-Encoder()BERT 中的实现相同,而且 BERT 很流行,我们不再对这个模块进行详述。

    在计算完 {w1,,wn} 后,ERNIE 采用 knowledgeable encoderK-Encoder )将知识信息注入 language representation 中。具体而言,我们用 entity embedding {e1,,em}来表示这些实体 {e1,,em},这是由有效的 knowledge embedding 模型 TransE 预训练的。然后, {w1,,wn}{e1,,em} 都被馈入K-Encoder ,从而融合异质信息并计算 final output embedding

14.1.2 Knowledgeable Encoder

  1. Figure 2 所示,K-Encoder 由堆叠的 aggregator 组成,这些 aggregator 被设计用来对 token 和实体进行编码,并融合它们的异质特征 heterogeneous feature 。在第 iaggregator 中,来自前一个 aggregator 的输出被作为 input token embedding {w1(i1),,wn(i1)}entity embedding {e1(i1),,em(i1)} 分别被馈入两个多头自注意力 multi-head self-attention: MH-ATT

    (21){w~1(i),,w~n(i)}=MH-ATT({w1(i1),,wn(i1)}){e~1(i),,e~m(i)}=MH-ATT({e1(i1),,em(i1)})

    然后,第 iaggregator 采用信息融合层 information fusion layertoken 序列和实体序列进行相互集成 mutual integration ,并计算出每个 token 和实体的 output embedding 。对于一个 token wj 及其对齐的实体 ek=f(wj),信息融合过程如下:

    (22)hj=σ(W~t(i)w~j(i)+W~e(i)e~k(i)+b~(i))wj(i)=σ(Wt(i)hj+bt(i))ek(i)=σ(We(i)hj+be(i))

    其中:

    • hj 为同时集成了 token 信息和实体信息的 inner hidden state
    • σ() 为非线性激活函数,通常是 GELU 函数。

    information fusion layer 其实就是单层前馈神经网络。

    对于没有相应实体的 tokeninformation fusion layer 计算 output embedding 而不进行集成,如下所示:

    (23)hj=σ(W~t(i)w~j(i)+b~(i))wj(i)=σ(Wt(i)hj+bt(i))

    为简单起见,第 iaggregator 的操作表示如下:

    (24){w1(i),,wn(i)},{e1(i),,em(i)}=Aggregator({w1(i1),,wn(i1)},{e1(i1),,em(i1)})

    最顶部 aggregator 计算的、token 和实体的 output embedding 将被用作 K-Encoderfinal output embedding

14.1.3 Pre-training for Injecting Knowledge

  1. 为了通过 informative entitylanguage representation 注入知识,我们为 ERNIE 提出了一个新的预训练任务,即随机掩码一些 token-entity alignment ,然后要求系统根据 aligned token 来预测所有相应的实体。由于我们的任务类似于训练降噪自编码器 denoising auto-encoder ,我们把这个过程称为 denoising entity auto-encoder: dEA 。考虑到 E 的规模对于 softmax 层来说是相当大的,因此我们仅要求系统根据给定的实体序列而不是知识图谱中的所有实体来预测。

    这里把候选的实体集合从 E 缩小到实体序列 {e1,,em} ,相当于是负采样策略,只是负样本局限在当前 token 序列所对应的实体集合中。由于当前 token 序列所对应的实体集合存在一定的相关性,因此这些负样本和 ground-truth 实体之间是相关的,因此是 hard 负样本。因此,建议随机从知识图谱中采样 K 个负样本,作为 easy 负样本。

    给定 token 序列 {w1,,wn} 及其相应的实体序列 {e1,,em},我们为 token wi 定义 aligned entity distribution 为:

    (25)p(ejwi)=exp(linear(wio)ej)k=1mexp(linear(wio)ek)

    其中:

    • linear() 是一个线性层(用于将 token embedding 空间映射到 entity embedding 空间)。
    • wi(o)token wifinal output embedding
    • ejentity ejentity embedding

    entity embedding 没有采用 final output 的,因为候选的 entity 可能没有馈入模型(如,某些 entitymasked 了)。

    然后我们根据 p(ejwi) 来计算 dEA 的交叉熵损失函数。

    如何进行掩码?作者并未详细说明。读者猜测:以第一个实体为例,假设第一个实体对应 token {w1,w2} ,那么 input 变成:token 序列 {[MASK],[MASK],w3,,wn} 。模型需要从候选的实体序列 {e1,,em} 中预测被掩码的实体。

    但是根据 Figure 2,感觉作者是把 token 序列 {[MASK],[MASK],w3,,wn}entity embedding 序列 {e1,,em} 都作为输入。这种做法产生了信息泄露,会降低模型的预测能力。

  2. 考虑到在 token-entity alignment 中存在一些错误,我们对dEA 进行了以下操作:

    • 5% 的时间里,对于一个给定的 token-entity alignment ,我们用另一个随机的实体替换该实体,这旨在训练我们的模型来纠正如下错误: tokenaligned 以一个 wrong entity
    • 15% 的时间里,我们掩码了 token-entity alignment ,这旨在训练我们的模型来纠正如下错误: entity alignment system 没有抽取所有现有的 alignment
    • 在其余的时间里,我们保持 token-entity alignment 不变,这旨在鼓励我们的模型将实体信息集成到 token representation 中,以便更好地理解语言。
  3. BERT 类似,ERNIE 也采用了 masked language model: MLMnext sentence prediction: NSP 作为预训练任务,以便 ERNIE 能够从文本中的 token 中获取词法信息 lexical information 和句法信息 syntactic information 。总体的预训练损失是dEAMLMNSP 损失之和。

14.1.4 Fine-tuning for Specific Tasks

  1. 如下图所示,对于各种常见的 NLP 任务,ERNIE 可以采用类似于BERT 的微调程序。我们可以把第一个 tokenfinal output embedding (这对应于特殊的[CLS] token )作为具体任务的输入序列的representation

    对于一些 knowledge-driven 的任务(例如,relation classificationentity typing ),我们设计了特殊的微调程序。

    • 对于relation classification:该任务要求系统基于上下文对给定 entity pairrelation label 进行分类。对relation classification 进行微调的最直接的方法是:将池化层应用于给定实体的 final output embedding ,并用它们的entity embedding 的拼接来表示给定的entity pair 从而用于分类。在本文中,我们设计了另一种方法,它通过添加两个 mark token 来修改 input token sequence 从而以突出 entity 。这些额外的mark token 起到了类似于 relation classification 模型中 position embedding 的作用。然后,我们也采用 [CLS] token embedding 来进行分类。注意,我们为 head entitytail entity 分别设计了不同的token ,即 [HD][TL]
    • 对于 entity typing:该任务是 relation classification 的简化版。由于之前的 entity typing 模型充分利用了 context embeddingentity embedding ,我们认为:带有 mark token [ENT] 的被修改的输入序列可以引导 ERNIE 结合上下文信息和实体信息。

14.2 实验

  1. 预训练数据集:对于从头开始训练 ERNIE 的巨大成本,我们采用谷歌发布的 BERT 的参数来初始化 Transformer block 从而用于 编码 token 。由于预训练是一个由NSPMLMdEA 组成的多任务程序,我们使用 English Wikipedia 作为预训练的语料库,并将文本与 Wikidata 对齐。在将语料库转换为预训练的格式化数据后,input 有近 45 亿个 subword1.4 亿个实体,并抛弃了少于 3 个实体的句子。

    采用 BERT 的参数来初始化 ERNIE ,这并不是一个公平的比较。

    在对 ERNIE 进行预训练之前,我们采用 TransEWikidata 上训练的 knowledge embedding 作为实体的 input embedding 。具体来说,我们从 Wikidata 中抽取部分样本,其中包含 5,040,986 个实体和 24,267,796fact 三元组。 entity embedding 在训练期间是固定的,entity encoding module 的参数都是随机初始化的。

  2. 超参数配置和训练细节:我们将 token embeddingentity embedding 的隐层维度分别表示为 Hw,He,将自注意力头的数量分别表示为 Aw,Ae 。详细而言,我们遵从以下的 model sizeN=6,M=6,Hw=768,He=100,Aw=12,Ae=4 ,总参数规模约为 114M

    BERT_BASE 的参数总量约为 110M ,这意味着 ERNIEknowledgeable module 要比 language module 小得多,对运行时性能的影响很小。而且,我们只在有标注的语料库上对 ERNIE 进行了一个 epoch 的预训练。为了加速训练过程,我们将最大序列长度从512 减少到 256 ,因为自注意力的计算复杂度是序列长度的二次函数。为了保持一个 batch 中的 token 数量与 BERT 相同,我们将 batch size 加倍到 512 。除了将学习率设置为 5×105 之外,我们基本上沿用了 BERT 中使用的预训练超参数。

    对于微调,大多数超参数与预训练相同,除了 batch size、学习率和训练 epoch 数量。我们发现以下可能的数值范围的效果较好: batch size = 32 ,学习率(Adam 优化器)为 {5×105,3×105,2×105}, 训练 epoch 数量从 310

    我们还在 distantly supervised dataset (即 FIGER )上评估 ERNIE 。由于深度堆叠的 Transformer block 的强大表达能力,我们发现小的 batch size 会导致模型对训练数据的过拟合。因此,我们使用较大的 batch size 和较少的训练 epoch 来避免过拟合,并保持学习率的范围不变,即批 batch size = 2048、历时数为 {2,3}

    由于大多数数据集没有实体标注,我们使用 TAGME 来抽取句子中提到的实体,并将它们与知识图谱中的相应实体联系起来。

  3. Entity Typing:给定实体及其上下文,entity typing 要求系统为实体标注其各自的语义类型 semantic type 。为了评估这一任务的性能,我们在两个成熟的数据集 FIGEROpen Entity 上对 ERNIE 进行了微调。FIGER 的训练集是用 distant supervision 进行标注的,其测试集是由人类进行标注的。Open Entity 是一个完全由人工标注的数据集。这两个数据集的统计数据如下表所示。我们将我们的模型与以下 entity typingbaseline 模型进行比较:NFGECUFET 。此外,我们还考虑了对 BERT 进行微调的结果,以便进行公平的比较。

    远程监督 distant supervision:对于一个给定的知识图谱中的一个三元组(由一对实体和一个关系构成),假设外部文档库中任何包含这对实体的句子,在一定程度上都反映了这种关系。因此可以利用知识图谱为外部文档库的句子标注 relation

    FIGER 上的结果如下表所示。可以看到,ERNIE 在所有指标上超越了所有的 baseline

    Open Entity 上的结果如下表所示。可以看到,ERNIE 在所有指标上超越了所有的 baseline

  4. Relation Classification:关系分类旨在确定给定句子中两个实体之间的正确关系,这是一项重要的 knowledge-drivenNLP 任务。为了评估这项任务的性能,我们在两个成熟的数据集 FewRelTACRED 上对 ERNIE 进行了微调。这两个数据集的统计数据见下表。由于 FewRel 的原始实验设置是 few-shot learning ,我们重新安排了 FewRel数据集从而用于通用的关系分类。具体来说,我们从每个类中抽取 100 个实例作为训练集,并从每个类中分别抽取 200 个实例作为验证集和测试集。FewRel 中有 80 个类,而 TACRED 中有 42 个类(包括一个特殊的关系 "no relation")。

    我们将我们的模型与下列关系分类的基线模型进行比较:CNNPA-LSTMContextualized GCN: C-GCN。此外,我们还考虑了对 BERT 进行微调的结果,以便进行公平的比较。

    FewRelTACRED 的实验结果如下表所示。可以看到,ERNIE 在所有指标上超越了所有的 baseline

  5. GLUEGeneral Language Understanding Evaluation: GLUE 基准是一个多样化自然语言理解任务的集合。我们在 GLUE8 个数据集上评估了 ERNIE ,并与BERT 进行了比较。

    在下表中,我们报告了我们提交的评估结果和来自排行榜的 BERT 的结果。我们注意到:

    • MNLIQQPQNLISST-2 等大数据集上,ERNIEBERT_BASE 一致。
    • 在小数据集上,结果变得更加不稳定,即,ERNIECoLARTE 上更好,但在STS-BMRPC 上更糟。

    ERNIE 采用了 BERT_BASE 权重初始化,并且模型容量更大,结果反而效果更差?这意味着 ERNIE 没有什么价值,或者 ERNIE 没有被充分训练?

  6. 消融研究:我们利用 FewRel 数据集探讨了 informative entityknowledgeable pretraining taskdEA )对 ERNIE 的影响。w/o entitiesw/o dEA 分别指在没有实体序列输入和预训练任务 dEA 的情况下对 ERNIE 进行微调。如下表所示:

    • 在没有实体序列输入的情况下,dEA 在预训练期间仍然将知识信息注入到 language representation 中,这使F1 分相对于 BERT 增加了 0.9%

      没有实体序列输入,是怎么执行 dEA 的?作者没有讲。

    • 在没有 dEA 的情况下,informative entity 带来了很多知识信息,从直观上有利于关系分类,这使F1 分相对于 BERT 增加了 0.7%

十五、MT-DNN [2019]

  1. 学习文本(如单词和句子)的 vector-space representation 是许多自然语言理解 natural language understanding: NLU 任务的基础。两个流行的方法是多任务学习 multi-task learning: MTL 和语言模型预训练 language model pre-training 。在论文 《Multi-Task Deep Neural Networks for Natural Language Understanding》中,作者通过提出一个新的 Multi-Task Deep Neural Network: MT-DNN 来结合这两种方法的优势。

    • 多任务学习的灵感来自于人类的学习活动,人们经常应用从以前的任务中学到的知识来帮助学习新的任务。例如,一个知道如何滑雪的人比不知道的人更容易学习滑冰。同样地,多个(相关的)任务联合起来学习是很有用的,这样在一个任务中学到的知识可以使其他任务受益。

      最近,人们对将多任务学习应用于深度神经网络的 representation learning 越来越感兴趣,有两个原因:

      • 首先,DNN 的监督学习需要大量的 task-specific 的标记数据,而这些数据并不总是可用的。多任务学习提供了一种有效的方式来利用来自许多相关任务的监督数据。
      • 其次,多任务学习通过缓解对特定任务的过拟合从而从正则化效应中获益,从而使学到的 representation 在不同的任务中通用。
    • 与多任务学习不同的是,通过利用大量未标记的数据,语言模型预训练显示出针对学习通用 language representation 的有效性。一些最突出的例子是 ELMoGPT、以及 BERT。这些都是使用无监督目标在文本数据上训练的神经网络语言模型。例如,BERT 基于多层双向 Transformer ,在纯文本上进行训练从而用于 masked word prediction 任务和 next sentence prediction 任务。为了将预训练的模型应用于特定的自然语言理解任务,我们通常需要针对每项任务,利用 task-specific 的训练数据来微调具有 task-specific layer 的模型。例如,BERT 原始论文表明:BERT 可以通过这种方式进行微调从而为一系列自然语言理解任务(如,问答、自然语言推理)创建 SOTA 的模型。

    作者认为,多任务学习和语言模型预训练是互补的技术,可以结合起来改善 text representation 的学习,以提升各种自然语言理解任务的性能。为此,作者扩展了最初在 《Representation learning using multi-task deep neural networks for semantic classification and information retrieval》 中提出的 MT-DNN 模型,将 BERT 作为其 shared text encoding layer 。如下图所示:

    • 较低的层(即文本编码层)在所有任务中都是共享的。
    • 而顶层是 task-specific ,结合了不同类型的自然语言理解任务,如单句分类、成对文本pairwise text 分类、文本相似性、以及相关性排名。

    这里的多任务指的是 微调期间的多任务,而不是预训练期间的多任务。BERT 在预训练期间就是多任务的。

    BERT 模型类似,MT-DNN 可以通过微调来适配特定的任务。与 BERT 不同,MT-DNN 除了语言模型预训练外,还使用多任务学习来学习 text representation

    MT-DNN 在通用语言理解评估 General Language Understanding Evaluation: GLUE 基准中使用的 9 个自然语言理解任务中的 8 个获得了 SOTA 的结果,将 GLUE benchmark 得分推到 82.7% ,相比于 BERT2.2% 的绝对改进。

    论文进一步将 MT-DNN 的优势扩展到 SNLISciTail 任务。由 MT-DNN 学到的 representation 允许以比预训练的 BERT representation 少得多的域内标签in-domain label 进行域适应 domain adaption 。例如:

    因为训练数据的 domain 和目标任务的 domain 不同,因此需要执行 domain adaption

    • MT-DNNSNLI上 实现了 91.6% 的准确率、在 SciTail 上实现了95.0% 的准确率,分别比 SOTA 高出 1.5%6.7%
    • 即使只有 0.1%1.0% 的原始训练数据,MT-DNNSNLISciTail 数据集上的表现也优于许多现有模型。

    所有这些都清楚地表明,MT-DNN 通过多任务学习具有卓越的泛化能力。

15.1 模型

15.1 任务

  1. MT-DNN 模型结合了四种类型的自然语言理解任务:单句分类single-sentence classification 、成对文本分类 pairwise text classification 、文本相似度评分 text similarity scoring 、以及相关性排名 relevance ranking

    • 单句分类:给定一个句子,模型使用预定义的类标签之一对其进行标注。例如:

      • CoLA 的任务是预测一个英语句子在语法上是否合理。
      • SST-2 的任务是判断从电影评论中提取的句子的情感是正面 positive 的还是负面 negative 的。
    • 文本相似度评分:这是一项回归任务。给定一对句子,模型预测一个实值分数来表示这两个句子的语义相似度 semantic similaritySTS-BGLUE 中该任务的唯一例子。

    • 成对文本分类:给定一对句子,模型根据一组预先定义的标签来确定这两个句子之间的关系。例如:

      • RTEMNLI 都是语言推理任务,其目标是预测一个句子相对于另一个句子是蕴含关系 entailment 、矛盾关系 contradiction 还是中性关系 neutral
      • QQPMRPC 是由句子对组成的同义转述 paraphrase 数据集,其任务是预测这对句子是否在语义上等价。
    • 相关性排名:给出一个 query 和一个候选答案列表,该模型按照与 query 的相关性顺序对所有候选答案进行排名。QNLIStanford Question Answering Dataset 数据集的一个版本。该任务涉及评估一个句子是否包含给定 query 的正确答案。虽然 QNLIGLUE 中被定义为二分类任务,但在本研究中,我们将其表述为 pairwise ranking task ,其中预期模型将包含正确答案的候选 candidate 排在比不包含正确答案的候选更高的位置。我们将表明,这种形式化导致了比二分类更高的准确性。

15.2 MT-DNN Model

  1. MT-DNN 模型的架构如下图所示。低层是所有任务共享的,而顶层代表 task-specific 的输出。

    • 输入 X 是一个单词序列(要么是一个句子,要么是打包在一起的 sentence pair ),首先在 l1 中被表示为 embedding vector 的一个序列,每个单词都有一个 embedding
    • 然后, transformer encoder 通过自注意力捕获每个单词的上下文信息,并在 l2 中生成 contextual embedding 的一个序列。这就是我们的多任务目标所训练的 shared semantic representation

    在下面的内容中,我们将详细阐述该模型。

  2. Lexicon Encoderl1): 输入 X={x1,,xm} 是一个长度为 mtoken 序列。遵从 BERT 的做法,第一个 token x1 总是 [CLS] token 。如果 X 是根据一对句子 (X1,X2) 打包而来,我们用一个特殊的token ,即 [SEP] ,来分隔这两个句子。

    lexicon encoderX 映射成 input embedding vectors 的一个序列,每个 token 对应一个 embedding 向量(由相应的 word embeddingsegment embeddingpositional embedding 相加而成)。

  3. Transformer Encoderl2 ): 我们使用多层双向 Transformer encoderinput representation vector l1 映射为contextual embedding vector的一个序列 CRd×m,这是跨不同任务之间的 shared representation

    与通过预训练学习representationBERT 模型不同,MT-DNN 除了预训练之外还使用多任务目标学习 representation

    下面,我们将以 GLUE 中的自然语言理解任务为例来描述具体的 task specific layer ,尽管在实践中我们可以加入任意的自然语言任务(如文本生成,其中 output layer 被实现为神经解码器)。

  4. 单句分类输出 Single-Sentence Classification Output:假设 xtoken [CLS]contextual embeddingl2 ),它可以被视为输入句子 Xsemantic representation 。 以 SST-2 任务为例,X 被标记为 c 类(即情感分类)的概率是根据具有 softmax 的逻辑回归来预测的:

    (26)Pr(cX)=softmax(WSSTx)

    其中:WSSTtask-specific 参数矩阵。

  5. 文本相似性输出 Text Similarity Output :以 STS-B 任务为例。假设 x[CLS]contextual embeddingl2 ),可以看作是输入句子对 (X1,X2)semantic representation 。我们引入一个 task-specific 的参数向量 wSTS 来计算相似性分数,即:

    (27)Sim(X1,X2)=wSTSx

    其中 Sim(X1,X2) 是一个实数,取值范围:(,)

  6. 成对文本分类输出Pairwise Text Classification Output:以自然语言推理 natural language inference: NLI 为例。这里定义的 NLI 任务涉及一个由 m 个词组成的前提 premise P=(p1,,pm) 和一个由 n 个词组成的假设 hypothesis H=(h1,,hn)NLI 任务旨在找到 PH 之间的逻辑关系 R 。输出模块的设计遵循 stochastic answer network: SAN (一个 SOTAneural NLI 模型)的答案模块answer moduleSAN 的答案模块使用多步骤推理 multi-step reasoning 。它不是直接预测给定输入的蕴含 entailment ,而是保持一个 state 并迭代地 refine 它的预测。

    直接用句子对 (X1,X2)semantic representation 馈入 softmax layer 进行分类,简单又直接,不是挺好的吗?

    SAN 的答案模块工作如下:

    • 首先,我们通过拼接 premise P 中单词的 contextual embedding (这是 transformer encoder 的输出)来构建 premiseworking memory ,记做 MpRd×m 。类似的方法,我们也构建 hypothesis Hworking memory ,记做 MhRd×n

    • 然后,我们对 memory 进行 K-step reasoning 从而输出关系标签,其中 K 是一个超参数。

      • 开始时,初始状态 s0Mhsummary

        (28)s0=j=1nαj×mjhRdαj=exp(w1mjh)i=1nexp(w1mih)

        其中: mjhMh 的第 j 列,代表 hypothesis 中的单词 hjcontextual embeddingw1Rd 为待学习的权重向量。

      • time step k ,其中 1kK1state 定义为:

        (29)sk=GRU(s(k1),xk)

        其中,xk 是根据前一个状态 s(k1)memory Mp 计算而来:

        (30)xk=j=1mβjmjpRdβj=exp((s(k1)W2)mjp)i=1mexp((s(k1)W2)mip)

        其中: mjpMp 的第 j 列,代表 premise 中的单词 pjcontextual embeddingW2Rd×d 为待学习的权重矩阵。

    • 最终,一个单层分类器被用来在每个 step k 确定 relation

      (31)Prk=softmax(W3[sk;xk;|skxk|;skxk])RC

      其中:[;] 为向量拼接,|| 为向量的逐元素绝对值, 为逐元素乘法,W3 为待学习的权重矩阵,C 为分类的类别数。

    • 最后,我们通过均值池化来利用所有的 K 个输出(从而提高鲁棒性)。

      (32)Pr=avg({Pr0,Pr1,,PrK1})RC

      其中 Pr 为所有 C 种关系的概率分布。

    在训练期间,我们在上述均值池化之前应用 stochastic prediction dropout

  7. 相关性排名输出 Relevance Ranking Output:以 QNLI 为例。假设 x[CLS]contextual embeddingl2 ),它是一对 question 及其候选答案 (Q,A)semantic representation 。我们计算相关性分数为:

    (33)Rel(Q,A)=g(wQNLIx)

    其中:wQNLI 为待学习的权重向量,g() 为变换函数(如 sigmoid)。

    对于一个给定的 question ,我们根据计算的相关性分数对其所有的候选答案进行排序。

15.3 训练过程

  1. MT-DNN 的训练程序包括两个阶段:预训练阶段、多任务学习阶段。

  2. 预训练阶段:遵循 BERT 模型的预训练。lexicon encoderTransformer encoder 的参数是通过两个无监督的预测任务来学习的:masked language modelingnext sentence prediction

    根据 RoBERTa 的实验结论,应该去掉 next sentence prediction 任务。

  3. 多任务学习阶段:在多任务学习阶段,我们使用 mini batch-based 的随机梯度下降 SGD 来学习模型的参数(即所有 shared layertask-specific layer 的参数)。在每个 epoch 中,选择一个 mini-batch bt (即,在所有 9GLUE 任务中),并根据任务 t 的特定目标来更新模型。这大约是优化所有多任务目标的 sum

    即,一个 mini-batch 仅包含特定任务 t 的样本(而不是包含多个任务的样本)。具体做法为:首先随机选择任务 t (选择的概率不一定是均匀的,因为不同任务的样本数不同),然后随机选择该任务的一个 mini-batch

    另外,这里并没有先训练完一个任务、然后再训练其他任务,而是不同任务之间交错地训练。

    • 分类任务:即单句分类或成对文本分类,我们使用交叉熵损失作为目标。

      (34)cI(X,c)log(Pr(cX))

      其中:

      • I(X,c) 为二元示性函数:如果 Xground-truth 标签为 c 则返回 1,否则返回 0
      • Pr(cX) 为模型预测 X 属于类别 c 的概率。
    • 文本相似性任务:如 STS-B ,其中每个 sentence pair 都被标注以一个实值分数 y 。我们使用均方误差作为目标。

      (35)(ySim(X1,X2))2

      其中 Sim(X1,X2) 为模型预测句子对 (X1,X2) 的相似度。

    • 相关性排名任务:其目标遵循 pairwise learning-to-rank 范式。以 QNLI 为例。给定一个 query Q ,我们得到一个候选答案的列表 A ,其中包含一个正样本 A+ (它包含正确答案)、以及 |A|1 个负样本(它们不包含正确答案)。然后在训练数据中,我们最小化给定 query 的正样本的负对数似然:

      (36)(Q,A+)log(Pr(A+Q))Pr(A+Q)=exp(γ×Rel(Q,A+))AAexp(γ×Rel(Q,A))

      其中:Rel(Q,A)query Qanswer A 之间的相关性;γ 为一个调节因子,它是一个超参数并在 held-out data 上调优。在我们的实验中,我们设置 γ=1

  4. MT-DNN 模型的训练算法:

    • 输入:

      • 模型参数 Θ
      • 预训练的数据集和任务。
      • 最大的训练 epoch 数量 epochmax
      • T 个任务 t=1,2,,T
      • 学习率 ϵ
    • 输出:训练好参数 Θ

    • 算法步骤:

      • 随机初始化模型的参数 Θ

      • 根据预训练的数据集和任务,预训练 shared layer (即,lexicon encodertransformer encoder )。

      • 构建 dataset-levelmini-batch

        (37) for t{1,2,,T}:pack dataset t into mini-batch Dt
      • 迭代:epoch1epochmax,迭代过程为:

        • 合并所有的数据集:D=D1D2DT

        • 随机混洗 D

        • 遍历 mini-batch btD :(注意,此时 bt 是某个任务 t 的一个 mini-batch

          • 计算损失函数 L(Θ)

            • 如果 t 是分类任务,则用 L(Θ)=cI(X,c)log(Pr(cX))
            • 如果 t 是回归任务,则用 L(Θ)=(ySim(X1,X2))2
            • 如果 t 是排序任务,则用 L(Θ)=(Q,A+)log(Pr(A+Q))
          • 计算梯度 ΘL(Θ)

          • 更新参数:Θ=Θϵ(Θ)

15.4 实验

  1. 数据集:我们使用了 GLUESNLI 、以及 SciTail 数据集,如下表所述。

    • General Language Understanding Evaluation: GLUEGLUE benchmark 是一个由 9 个自然语言理解任务组成的集合,如下表所示,包括问答、情感分析、文本相似性、以及文本相关性。它被认为是为评估自然语言理解模型的泛化性和鲁棒性而精心设计的。

    • Stanford Natural Language Inference: SNLISNLI 数据集包含 57 万个人工标注的句子对,其中的前提 premises 来自Flickr30 语料库的标题,假设 hypotheses 则是人工标注的。这是最广泛使用的蕴含数据集 entailment dataset 从而用于自然语言推断 NLI 。在本研究中,该数据集仅用于 domain adaptation

    • SciTailSciTail 是一个源自科学问答science question answering: SciQ 数据集的文本蕴含数据集 textual entailment dataset 。该任务涉及评估一个给定的前提 premise 是否蕴含一个给定的假设 hypothesis

      与前面提到的其他蕴含数据集不同,SciTail 中的假设是从科学问题创建的,而相应的答案候选和前提来自于从大型语料库中检索的相关的 web sentence 。因此,这些句子在语言上具有挑战性,而且前提和假设的词汇相似度 lexical similarity 往往很高,从而使 SciTail 特别困难。在本研究中,该数据集仅用于 domain adaptation

  2. 实现细节:我们对 MT-DNN 的实现是基于 BERTPyTorch 实现。

    • 遵循 BERT ,我们使用 Adamax优化器,学习率为 5e-5batch size32 。除非另有说明,我们使用了一个线性学习率衰减的调度,并且在 10% 的训练步上执行预热。
    • 我们还将所有 task-specific 层的 dropout rate 设置为 0.1 ,除了 MNLI 设置为 0.3CoLa 设置为 0.05
    • 最大的训练 epoch 数量被设置为 5
    • 为了避免梯度爆炸的问题,我们将梯度规范剪裁在 1 以内。
    • 所有的文本都使用 wordpiece 进行 tokenize ,并拆分为不超过 512token

    这里是预训练细节还是多任务学习的细节?从作者这里的描述来看,作者应该是用到了预训练好的 BERT,然后再继续多任务学习,从而省略了预训练阶段。

    因此,将 MT-DNNBERT 直接进行比较是不公平的,因为 MT-DNN 使用了更多的数据、训练了更多的轮次。因此作者引入了 ST-DNN 从而与 MT-DNN 进行更公平的对比。

  3. GLUE 结果:我们将 MT-DNN 及其变体,与 GLUE 排行榜的 SOTA 模型的列表进行比较。结果如下表所示。

    • BERT_LARGE :这是 large BERT 模型,我们将其作为 baseline 。我们为每个 GLUE 任务在 task-specific 数据上微调了模型。

      为了公平地比较,BERT_LARGE 也应该在多任务数据集上进行预训练相同的 epoch 数。

      事实上,ST-DNN 才是和 MT-DNN 公平的比较,二者都采用预训练好的 BERT_LARGE,也都在多任务数据集上进行预训练。

    • MT-DNN :这是我们提出的模型。我们使用预训练好的 BERT_LARGE 来初始化它的 shared layer ,通过多任务学习在所有的GLUE 任务上 refine 模型,并使用 task-specific 数据为每个 GLUE 任务微调模型。

      Table 2 中的测试结果显示,MT-DNN 在所有任务上都优于现有的系统,除了WNLI ,在八个 GLUE 任务上创造了新的 SOTA 结果,并将 benchmark 推高到 82.7% ,这比 BERT_LARGE2.2% 的绝对改进。由于 MT-DNN 使用 BERT_LARGE 来初始化它的 shared layer ,因此收益主要归功于使用多任务学习来 refine shared layer

      收益不仅仅归功于多任务学习来 refine shared layer,还归功于多任务学习来 refine task-specific layer

      多任务学习对于域内 in-domain 训练数据少的任务特别有用。正如我们在表中所观察到的,在同一类型的任务上,对于域内训练数据较少的任务,相比那些有较多域内数据的任务,对 BERT 的改进要大得多,即使它们属于同一任务类型,例如,两个 NLI任务(RTE vs. MNLI),以及两个转述任务(MRPC vs. QQP)。

    • MT-DNN_no-fine-tune :由于 MT-DNN 的多任务学习使用了所有的 GLUE 任务,因此可以直接将 MT-DNN 应用于每个 GLUE 任务,而不需要进行微调。

      MT-DNN 经过三个阶段的训练:预训练、多任务训练、task-specific 任务的微调。其中,前两个阶段是所有任务都共享的,得到一个所有任务都通用的模型。最后一个阶段是每个任务独自微调的,得到 task-specific 的模型(有多少个任务就得到多少个模型)。

      MT-DNN_no-fine-tune 是两个阶段的训练:预训练、多任务训练。最后得到一个所有任务都通用的模型。

      ST-DNN 也是两个阶段的训练:预训练、task-specific 任务的微调。最后得到 task-specific 的模型(有多少个任务就得到多少个模型)。

      Table 2 中的结果显示,除了 CoLAMT-DNN_no-fine-tune 在所有任务中仍然一致地优于 BERT_LARGE 。我们的分析表明,CoLA 是一个挑战性的任务,它的域内数据比其他任务小得多,而且它的任务定义和数据集在所有 GLUE 任务中是独一无二的,这使得它很难从其他任务中获得知识。因此,多任务学习倾向于不适合 CoLA 数据集。在这种情况下,有必要进行微调以提高性能。

      如下表所示,经过微调后,准确率从 58.9% 提高到 62.5% ,尽管只有非常少量的域内数据可用于 adaptation 。这个事实,再加上微调后的 MT-DNNCoLA 上的表现显著优于微调后的 BERT_LARGE62.5% vs. 60.5%),显示出学到的 MT-DNN representation 比预训练的 BERT representation 得到更有效的 domain adaptation 。我们将在接下来通过更多的实验重新审视这个话题。

    • ST-DNNMT-DNN 的收益也归功于其灵活的建模框架,它允许我们纳入 task-specific 的模型结构和训练方法。这些模型结构和训练方法都是在单任务 setting 中开发的,有效地利用了现有的研究成果。两个这样的例子是:将 SAN answer module 用于 pairwise text classification output module 、以及将 pairwise ranking loss 用于QNLI 任务(该任务在 GLUE 中的设计是一个二分类问题)。为了研究这些建模设计选择的相对贡献,我们实现了 MT-DNN 的一个变体,即 Single-Task DNN: ST-DNN

      ST-DNN 使用与 MT-DNN 相同的模型结构。但它的 shared layer 是预训练好的 BERT 模型,没有通过多任务学习进行 refine 。然后,我们使用 task-specific 数据为每个 GLUE 任务微调 ST-DNN 。因此,对于 pairwise text classification 任务,其 ST-DNNBERT 模型之间的唯一区别是 task-specific output module 的设计。

      Table 3 中的结果显示:在所有四个任务(MNLIQQPRTEMRPC)中,ST-DNN 都优于BERT,证明了 SAN answer module 的有效性。

      这四个任务上,ST-DNN 相对于 BERT 的提升都很小。这是因为多任务数据集的数据规模相比 BERT 预训练数据集的数据规模小得多。

      我们还比较了 ST-DNNBERTQNLI 上的结果。ST-DNN 使用 pairwise ranking loss 进行微调,而 BERTQNLI 视为二分类,并使用交叉熵损失进行微调。ST-DNN 明显优于BERT,清楚地表明了问题形式 problem formulation 的重要性。

      ST-DNN 优于 BERT,除了task-specific 模块、问题形式的优势之外,还有更多的预训练数据(来自于多任务数据集)、更多的训练步数(来自于多任务 数据集上的预训练)。

  4. SNLISciTaildomain adaption 结果:构建实际系统 practical system 的最重要标准之一是快速适应新的任务和领域。这是因为为新的领域或任务收集带标签的训练数据是非常昂贵的。很多时候,我们只有非常小的训练数据,甚至没有训练数据。

    为了使用上述标准评估模型,我们在两个自然语言推断任务(即 SNLISciTail )上进行了 domain adaptation 实验,使用如下过程:

    • 使用 MT-DNN 模型或 BERT 作为初始模型,包括 BASELARGEmodel setting
    • 为每个新任务(SNLISciTail )创建一个 task-specific 的模型,通过使用 task-specific 的训练数据来适配训练好的 MT-DNN
    • 使用 task-specific 的测试数据评估模型。

    我们以这些任务的默认 train/dev/test set 开始。但我们随机抽取训练数据的 0.1%1%10%100% 。因此,我们为 SciTail 获取了四组训练数据,分别包含232352.3k23.5k 的训练样本。同样地,我们为 SNLI 获取了四组训练数据,分别包含5495.5k54.9k549.3k 的训练样本。

    我们进行了五次随机采样,并报告了所有运行中的平均值。 来自 SNLISciTail 的不同训练数据量的结果在下图中报告。可以看到:

    • MT-DNN 的性能一直优于 BERT baseline ,更多细节见 Table 4

    • 使用的训练样本越少,MT-DNNBERT 的改进就越大。例如在 SNLI数据集上:

      • 仅用 0.1%23 个样本)的训练数据,MT-DNN 就达到了 82.1% 的准确率,而 BERT 的准确率是 52.5%
      • 1% 的训练数据,MT-DNN 的准确率是85.2%BERT78.1%

      我们在 SciTail 上观察到类似的结果。

    结果表明,由 MT-DNN 学到的 representationdomain adaptation 方面比 BERT 更有效。

    在下表中,我们使用所有的 in-domain 训练样本,将我们的 adapted model 与几个强大的 baseline (包括排行榜中报告的最佳结果)进行比较。可以看到:MT-DNN_LARGE 在两个数据集上都产生了新的 SOTA 结果,在 SNLI 上将 baseline 推高到 91.6% (绝对改进 1.5% )、在 SciTail 上将 baseline 推高到 95.0% (绝对改进 6.7% )。这同时为 SNLISciTail 带来了新的 SOTA 。所有这些都证明了 MT-DNNdomain adaptation 上的卓越表现。

十六、BART [2019]

  1. 自监督方法在广泛的 NLP 任务中取得了显著的成功。最成功的方法是 masked language model 的变体,它是降噪自编码器 denoising autoencoder ,被训练从而重建文本,其中掩码了一组随机的单词。最近的工作显示,通过改善 masked token 的分布(SpanBERT)、masked token 的预测顺序(XLNet)、以及替换 masked token 的可用上下文(UNILM )而获得收益。然而,这些方法通常专注于特定类型的下游任务(如 span prediction 任务、生成任务等),限制了其适用性。

    在论文 《BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension》 中,作者提出了 Bidirectional and Auto-Regressive Transformer: BART ,它预训练了一个结合了双向的和自回归的Transformer 的模型。BART 是一个用 sequence-to-sequence 模型构建的降噪自编码器,适用于非常广泛的下游任务。预训练有两个阶段:

    • 以任意的噪音函数破坏文本。
    • 学习一个 sequence-to-sequence 的模型来重建原始文本。

    BART 使用一个标准的基于 Tranformer 的神经机器翻译架构,尽管它很简单,但可以看作是对 BERT (具有双向编码器)、GPT (具有有从左到右的解码器)、以及许多其他最近的预训练方案的推广(如下图所示)。

    这种设置的一个关键优势是噪音的灵活性:可以对原始文本进行任意的变换,包括改变其长度。论文评估了一些噪音方法,发现性能最佳的方法是:同时进行随机混洗原始句子的顺序、以及使用一种新颖的 in-filling 方案(任意长度的文本区间 text span ,包括零长度,被替换为单个 mask token )。这种方法通过迫使模型对整体句子的长度进行更多的推理,以及对输入进行更长范围的变换,从而推广了 BERT 中的原始 word maskingnext sentence prediction 的目标。

    当对文本生成任务进行微调时,BART 特别有效,但对文本理解任务也很有效。BARTGLUESQuAD上以 comparable 的训练资源获得与RoBERTa 相匹配的性能,并在一系列抽象式对话 abstractive dialogue 、问答、和摘要 summarization 任务上取得了新的 SOTA 的结果。例如,BAER 比以前关于 XSum 的工作提高了 6 ROUGE 的性能。

    abstractive dialogue 是非抽取式的。抽取式对话是从给定的段落中抽取答案,而抽象式对话需要生成答案。

    BART 还开辟了微调的新思维方式。论文提出了一个新的机器翻译方案,其中 BART 模型被堆叠在几个额外的 transformer layer 之上。这些额外的 transformer layer 被训练成将外语翻译成有噪音的英语,通过 BART 的传播,从而将 BART 作为预训练的 target-side language model 。在 WMT Romanian-English benchmark 中,这种方法比强大的机器翻译 baseline 的性能提高了1.1 BLEU

    为了更好地理解这些效果,论文还报告了复现最近提出的其他训练目标的消融研究。这项研究使我们能够仔细控制一些因素,包括数据和优化超参数,这些因素已被证明和训练目标的选择一样对整体性能同样地重要。论文发现,在所考虑的所有任务中,BART 表现出一致的最强大性能。

  2. 相关工作:

    • 早期的预训练方法是基于语言模型的。

      • GPT 只建模左侧的上下文,这对某些任务来说是有问题的。
      • ELMo 拼接了纯左侧和纯右侧的representation ,但没有预训练这些特征之间的交互。
      • GPT-2 证明,非常大的语言模型可以作为无监督的多任务模型。
    • BERT 引入了 masked language modelling ,允许预训练学习左右两侧上下文单词之间的交互。最近的工作表明,通过更长的训练时间(Roberta )、通过跨层绑定参数(Albert)、以及通过masking span 而不是单词(Spanbert ),可以实现非常强大的性能。然而,预测不是自回归地进行的,这降低了 BERT 对生成任务的有效性。

    • UniLMan ensemble of masksBERT 进行了微调,其中某些 mask 只允许左侧的上下文。与 BART 一样,这使得 UniLM 可以同时用于生成式的和判别式的任务。一个区别是:UniLM 的预测是条件独立的,而 BART 的预测是自回归的。BART 减少了预训练和生成任务之间的不匹配,因为解码器总是在未被破坏的上下文中被训练。

    • MASS 可能是与 BART 最相似的模型。掩码了一个连续区间 tokeninput sequence 被映射到由这些缺失的 token 组成的序列上。MASS 对判别式任务不太有效,因为不相交的 token 集合被馈入编码器和解码器。

    • XL-Net 通过以 permuted order 来自回归地预测被 masked token 从而扩展了 BERT 。这一目标允许预测同时以左侧上下文和右侧上下文为条件。相比之下,BART decoder 在预训练期间从左到右地工作,在generation 期间与 setting 相匹配。

    有几篇论文探讨了使用预训练的 representation 来改进机器翻译。最大的改进来自于同时对源语言和目标语言的预训练,但这需要对所有感兴趣的语言进行预训练。其他工作表明,使用预训练的 representation 可以改善编码器(《Pre-trained language model representations for language generation》),但解码器的收益更为有限。我们展示了如何使用 BART 来改善机器翻译解码器。

16.1 模型

  1. BART 是一个降噪自编码器denoising autoencoder: DAE ,它将被破坏的文档映射到其原始文档。BART 被实现为一个 sequence-to-sequence 的模型,包含一个双向编码器(作用于被破坏的文本上)、以及一个从左到右的自回归解码器。对于预训练,我们优化原始文档的负对数似然。

    这意味着仅在自回归解码器上计算生成原始文本的损失函数,而编码器用于编码各种被破坏的文本,因此统一了各种预训练任务(如 masked languate modelingnext stentence prediction)。

  2. 架构:BART 使用 《Attention is all you need》中的 sequence-to-sequenceTransformer 架构,除了以下不同:遵从 GPT ,我们将ReLU 激活函数修改为 GeLU,并从 N(0,0.02) 初始化参数。

    对于我们的 base model ,我们在编码器和解码器中各使用 6 层;对于我们的 large model 模型,我们在编码器和解码器中各使用 12 层。BART 架构与 BERT 架构密切相关,但有以下区别:

    • 解码器的每一层都额外地对编码器的 final hidden laye 进行交叉注意cross-attention (就像在 sequence-to-sequencetransformer 模型中那样)。
    • BERTword-prediction 之前使用了一个额外的前馈网络,而 BART 没有这样做。

    总体而言,BART 比同等规模的 BERT 模型多了大约 10% 的参数。

  3. 预训练 BARTBART 是通过破坏文档,然后优化重建损失(解码器的输出和原始文档之间的交叉熵)来训练的。与现有的降噪自编码器不同,BART 允许我们应用任何类型的文档损坏 document corruption 。在极端的情况下,关于原始文档的所有信息都丢失了,BART 就相当于一个语言模型。

    我们用几个先前提出的、新颖的变换 transformation 来进行实验,但我们相信其它的一些新的替代方案有很大的潜力。我们使用的变换总结如下,一些例子如下图所示。

    • Token 掩码 Token Masking :遵从 BERT ,随机采样的 token 被替代为 [MASK]

    • Token 删除 Token Deletion:随机采样的 token 被直接删除。与 Token Masking 相反,模型必须决定哪些位置是缺失的(Token Masking 通过 [MASK] 知道哪些位置是缺失的)。

      下图中的 Token Deletion 有误,应该是 AC.E.,因为原始的文本只有两个 .

    • 文本填充 Text Infilling:随机采样一些 text span,其中 span 长度服从泊松分布 λ=3 。每个 span 都被替换为一个 [MASK] 。如果 span 长度为 0,那么对应于插入 [MASK]

      Text Infilling 受到 SpanBERT 的启发,但是 SpanBERT 从一个不同的分布(截断的几何分布 clamped geometric )中采样 span 长度,并且用一个长度完全相同的 [MASK] 序列来替换每个 spanText Infilling 使模型能够预测一个 span 中缺失多少个 token

      泊松分布的 λ 指定了期望,即,这些 span 长度的期望为 3 。假设平均的输入序列长度为 n,那么掩码率为 3/n

    • 句子排列 Sentence Permutation:一个文档根据句号被分成几个句子,这些句子以随机的顺序被混洗。

    • 文档旋转 Document Rotation:均匀随机地选择一个 token ,然后旋转文档,使其以该 token 开始。这项任务训练模型来识别文档的开始。

    这些 transformation 的价值在不同的下游任务中差异很大。

  4. 微调 BARTBART 产生的 representation 可以通过多种方式用于下游应用。

    • 序列分类任务 Sequence Classification Tasks :对于序列分类任务,相同的输入被馈入编码器和解码器, final decoder tokenfinal hidden state 被馈入新的线性分类器。

      编码器输入:被整体分类的文本序列;解码器输入:被整体分类的文本序列。

      这种方法与 BERT 中的[CLS] token 有关。但是,我们将 additional token 添加到最后,这样解码器中的 additional tokenrepresentation 就可以从完整的输入中 attend 解码器状态(如下图 (a) 所示)。

      BART 中没有 [CLS] token ,而是把解码器整个序列的 representation 视为 additional token (下图中没有画出来)的 representation

      因为解码器是从左右到的,因此 [CLS] token 不能位于左侧第一个位置,因为这个位置无法看到任何上下文。

    • Token 分类任务 Token Classification Tasks :对于 token 分类任务,如 SQuADanswer endpoint 分类 ,我们将完整的文档馈入编码器和解码器,并使用解码器的 top hidden state 作为每个单词的 representation 。这个 representation 被用来对 token 进行分类。

      编码器输入:被 token 分类的文本序列;解码器输入:被 token 分类的文本序列。

    • 序列生成任务 Sequence Generation Tasks: 因为 BART 有一个自回归解码器,它可以直接为序列生成任务进行微调,如抽象式问答abstractive question answering 任务、摘要任务。在这两项任务中,信息都是从输入中复制出来的,这与降噪预训练的目标密切相关。在这里,编码器的输入是输入序列,而解码器则自动生成输出。

      编码器输入:上下文序列;解码器输入:目标序列。

    • 机器翻译 Machine Translation: 我们还探索使用 BART 从而为英语翻译来改进机器翻译解码器。之前的工作 《Pre-trained language model representations for language generation》 表明,通过融合预训练的编码器可以改善模型,但在解码器中使用预训练的语言模型的收益有限。我们表明:可以将整个 BART 模型(包括编码器和解码器)作为机器翻译的单个预训练解码器,方法是增加一组新的编码器参数,这些参数是从 bi-text 中学到的(如下图 (b) 所示)。

      bi-text 指的是同时包含源语言文本和对应的翻译语言文本的 text pair

      更准确而言,我们用一个新的随机初始化的编码器取代 BARTencoder embedding layer 。该模型是端到端来训练的,它训练新的编码器将外语单词映射成 BART 可以降噪成英语单词的 input 。新的编码器可以使用与原始 BART 模型不同的词表。

      我们分两步训练新的编码器,在这两种情况下,都是从 BART 模型的输出中反向传播交叉熵损失:

      • 在第一步中,我们冻结了大部分 BART 参数,只更新随机初始化的新编码器、BART positional embedding 、以及 BART 编码器第一层的 self-attention input projection matrix

        给定 query 矩阵 Qkey 矩阵 Kvalue 矩阵 V 作为 self-attention 的输入,self-attention 为:

        (38)Attention(QWQ,KWK,VWV)=softmax((QWQ)(KWK)dk)(VWV)

        其中:WQ,WK,WV 就是 self-attention 的输入投影矩阵。 通过针对不同的任务来适配这三个输入投影矩阵,模型就可以很好地迁移到不同的任务。因为冻结后面的层,只需要调整第一层,就可以使得第一层的输出能够适配后面层的需求。

      • 在第二步中,我们以少量的迭代来训练所有模型参数。

16.2 预训练目标的比较

  1. 与以前的工作相比,BART 在预训练期间支持更广泛的噪声方案。我们使用 base-size 的模型(6 个编码器层和6 个解码器层,隐层维度为 768 )对一系列方案进行了比较,在一个有代表性的任务子集上进行了评估。

  2. 预训练目标之间的比较:虽然人们已经提出了许多预训练目标,但这些目标之间的公平比较一直难以进行,至少部分原因是训练数据、训练资源、模型之间的结构差异、以及微调程序的不同。我们重新实现了最近提出的强大的预训练方法。我们的目标是尽可能地控制与预训练目标无关的差异。然而,我们确实对学习率和 layer normalisation 的使用做了微小的改变,以提高性能(为每个预训练目标分别调优这些)。作为参考,我们将我们的实现与 BERT 公布的数字进行了比较。BERT 也是在 BooksWikipedia 数据的组合上训练了 100 万步。我们比较了以下预训练目标:

    • Language Model:与 GPT 类似,我们训练一个 left-to-rightTransformer语言模型。这个模型等同于 BART 解码器,没有与编码器的 cross-attention
    • Permuted Language Model:基于 XLNet ,我们采样了 1/6token ,并以随机顺序自回归地生成它们。为了与其他模型保持一致,我们没有实现 XLNetrelative positional embedding 或跨 segment 的注意力。
    • Masked Language Model:遵从 BERT ,我们随机选择 15%token 并用 [MASK] 符号来替代,并训练模型独立地预测被掩码的原始 token
    • Multitask Masked Language Model:与 UniLM 一样,我们用额外的自注意力掩码来训练 Masked Language Model 。自注意力掩码是按以下比例随机选择的:1/6 从左到右、1/6 从右到左、1/3 无掩码、1/3 采用前 50%token 无掩码而剩下的 50% 是从左到右的掩码。
    • Masked Seq-to-Seq:受 MASS 的启发,我们掩码了一个 span ,其中这个 span 包含了 50%token ,并训练一个 sequence-to-sequence 模型来预测被掩码的 token

    对于 Permuted LMMasked LM 、以及 Multitask Masked LM ,我们使用双流注意力two-stream attention (参考 Xlnet 的原始论文)来有效地计算序列的输出部分的似然 likelihood

    我们进行了两种实验:

    • 将任务视为标准的 sequence-to-sequence 问题,其中 source sequence 馈入编码器,而 target sequence 是解码器的输出。

    • 在解码器中把source sequence 作为前缀加入 target sequence 作为一个整体序列,仅在这个整体序列的 target sequence 部分上计算损失。

      即,把 source sequence 视为上下文,而 target sequence 视为预测目标。

    我们发现前者对 BART 模型的效果更好,而后者对其他模型的效果更好。

    论文没有数据来支撑这个结论,所以感觉很突兀。

    为了最直接地比较我们的模型对微调目标的建模能力,对于生成任务,我们在Table 1 中报告了困惑度(而不是 ROUGE 指标)。

  3. 任务:

    • SQuAD:是一项关于百科全书段落的抽取式问答任务 extractive question answering task。答案是从一个给定的文档上下文中抽取的 text span 。与 BERT 类似,我们使用拼接的问题和上下文作为 BART 编码器的输入;此外,我们也把拼接的问题和上下文传递给解码器,并在解码器上为每个 token 预测:该 token 作为答案开始的概率、作为答案结束的概率。
    • MNLI:一个 bi-text 的分类任务,预测一个句子是否包含另一个句子。微调后的模型将两个句子与附加的 EOS token 拼接起来,并将它们同时传递给 BART 编码器和解码器。与 BERT 不同的是,解码器上 EOS tokenrepresentation 被用来对句子关系进行分类。
    • ELI5:一个格式很长的抽象式问答数据集 abstractive question answering dataset。模型拼接问题和支持性文档 supporting document,然后以拼接后的字符串为条件来生成答案。
    • XSum:一个新闻摘要数据集。
    • ConvAI2:一个对话响应生成任务 dialogue response generation task ,以上下文和人物为条件。
    • CNN/DM:一个新闻摘要数据集。这里的摘要通常与源句子 source sentence 密切相关。
  4. 结果如下表所示,有几个趋势是明显的:

    • 同一个预训练方法的性能在不同的任务中差异很大:预训练方法的有效性高度依赖于任务。例如,简单的语言模型在 ELI5 中取得了最好的性能,但是在 SQUAD 中取得了最差的性能。

      根据下表的第二个 block (即 Masked Language ModelMultitask Masked Language Model)。

    • Token Masking 是至关重要的:基于 Document RotationSentence Shuffling 的预训练目标在单独的情况下表现很差。成功的方法要么使用 Token DeletionToken Masking ,要么使用 Text Infilling 。在生成任务上,Token Deletion 似乎比 Token Masking 更有优势。

      最后四个任务为生成式任务(指标为 PPL)。

    • 从左到右的预训练改善了生成任务:Masked Language ModelPermuted Language Model 在生成方面的表现不如其他模型。

    • 双向编码器对 SQuAD 至关重要 :正如以前的工作(BERT 论文)所指出的,仅仅从左到右的解码器在 SQuAD 上表现不佳(参考 Language Model 这一行),因为未来的上下文对分类决策至关重要。然而,BART 只用一半数量的bidirectional layer 就能达到类似的性能。

    • 预训练目标不是唯一的重要因素:我们的 Permuted Language Model 的表现不如 XLNet 。这种差异的一部分可能是由于没有包括 XLNet 的其他改进,如 relative-position embeddingsegment-level recurrence

    • 纯语言模型在 ELI5 上表现最好:ELI5 数据集是一个例外,其困惑度比其他任务高得多,是唯一的、其他模型优于 BART 的生成任务。纯语言模型表现最好,这表明当输出只受到输入的松散约束时,BART 的效果较差。

    • BART 取得了最一致的强劲表现:除了 ELI5 之外,使用 Text InfillingBART 模型在所有任务中都表现良好。

16.3 大型预训练实验

  1. 最近的工作表明,当预训练扩展到大 batch size 和大型语料库时,下游任务的性能可以大幅提高。为了测试 BART 在这种范围下的表现,并为下游任务创建一个有用的模型,我们使用与 RoBERTa 模型相同的规模来训练 BART

  2. 实验配置:我们预训练了一个大型模型,编码器和解码器各有 12 层,隐层维度为 1024 。遵从 RoBERTa 的做法,我们 batch size = 8K ,并对模型训练 500K 步。文档采用与 GPT-2 相同的 BPE 进行 tokenize

    根据前面的实验结果,我们使用 text infillingsentence permutation 的组合。对于每篇文档我们掩码了 30%token ,并对所有的句子进行 permute 。虽然 sentence permutationCNN/DM 摘要数据集上显示出明显的加性增益 additive gain ,但我们假设更大的预训练模型可能会更好地从这个任务中学习。

    为了帮助模型更好地适应数据,我们在最后 10% 的训练 step 中禁用 dropout 。我们使用与 Roberta 相同的预训练数据,由新闻、书籍、故事和网络文本组成的 160Gb 数据。

  3. 判别式任务:下表将 BART 的性能与最近几种方法在 SQuADGLUE 任务上进行了比较。最直接的可比 baselineRoBERTa ,它是用相同的资源进行预训练的,但采用不同的预训练目标。

    总的而言,BART 和这些模型的表现相似。在大多数任务上,模型之间只有很小的差异。这表明 BART 在生成任务上的改进并没有牺牲分类任务上的性能。

    CoLA 任务上,BARTCoLA 的差距有点大。

  4. 生成任务:我们还对几个文本生成任务进行了实验。BART 作为标准的 sequence-to-sequence 模型来被微调。在微调过程中,我们使用label smoothed 的交叉熵损失,平滑参数设置为 0.1 。在生成过程中,我们将 beam size 设置为 5 ,在 beam search 中删除重复的 trigram ,并在验证集上调优 min-len, max-len, length penalty

    • 摘要:为了提供与 SOTA 的文本摘要方法的比较,我们在两个摘要数据集 CNN/DailyMailXSum 上展示了结果,这两个数据集有不同的属性。

      • CNN/DailyMail 中的摘要倾向于类似于源句子。抽取式模型 extractive model 在这里表现良好,甚至前三个源句子的 baseline 也具有很强的竞争力。然而,BART 的表现超过了所有现有的工作。

      • 相比之下,XSum 是高度抽象 abstractive 的,抽取式模型表现很差。BART 在所有的 ROUGE 指标上比以前最好的工作高出大约 6.0 分(这表明这个问题上性能的重大进步)。从质量上看,样本质量很高(参考本文后续的定性分析)。

        ROUGE-N 为: ground-truthN-gram 召回率;ROUGE-L 为: predictionground-truth 的最长公共子序列(以 token 来计算)的 F1 得分。

    • 对话:我们评估了 CONVAI2 的对话响应生成 dialogue response generation ,其中 agent 必须同时根据先前的上下文和文本指定的角色来生成响应。BART 在两个 automated metrics 上优于之前的工作。

    • 抽象式问答:我们使用最近提出的 ELI5 数据集来测试该模型生成长的自由格式答案的能力。我们发现 BART 比以前最好的工作高出 1.2 ROUGE-L 。但该数据集仍然具有挑战性,因为答案只是由问题弱弱地指定了。

  5. 翻译: 我们还评估了 WMT16 Romanian-English 的性能,并以 《Edinburgh neural machine translation systems for WMT 16》back-translation 数据作为数据增强。我们使用一个 6 层的 transformer source encoder 将罗马尼亚语 Romanian 映射成一个 representation,然后 BART 能够利用这个 representation 来降噪成英语 English

    即,Romanian 句子首先馈入一个 6 层的 transformer source encoder,这个 encoder 的输出再馈入 BART

    假设我们需要将 A 语言翻译成 B 语言,back-translation 的做法分为三步:

    • 首先,利用 B -> Abi-text 语料来训练一个从 B 语言翻译成 A 语言的模型(与目标方向相反)。
    • 然后,利用 B 语言的单语语料、以及 B -> A 的模型,翻译得到 A 语言的单语语料。
    • 将生成的 A 语言的单语语料与 B 语言的单语语料人工合成 A -> Bbi-text 语料。

    实验结果如下表所示。baselineTransformer-Large 。我们同时评估了 Fixed BARTTuned BART 。我们 beam width = 5、以及 length penalty = 1 。初步结果表明:我们的方法在没有 back-translation 数据的情况下效果较差,而且容易出现过拟合。未来的工作应该探索更多的正则化技术。

    这个结论没有数据支撑?Fixed BARTTuned BART 表示什么?作者都没有讲。

    BLEUpredictionn-gramprecision 的加权和,n=1,2,...,N,权重分为两部分:第一部分是 1/N ,用于对多个 n-gram 取平均;第二部分是句子简短惩罚Brevity Penalty,用于惩罚太短的 prediction

  6. 定性分析:BART 在文本摘要指标上有很大的改进,比之前的 SOTA 提升高达 6 个点。为了理解 BARTautomated metrics 之外的表现,我们对它的生成内容进行了定性分析。

    下表展示了由 BART 生成的摘要实例。样本来自 WikiNews 文章,该文章是在我们创建预训练语料库之后才发表的,以消除被描述的事件存在于模型训练数据中的可能性。遵从 《Don’t give me the details, just the summary! topic-aware convolutional neural networks for extreme summarization》 的做法,在总结文章之前,我们删除了文章的第一句话,所以不存在容易抽取的文章摘要。

    不出所料,模型输出是流利的、符合语法的英语。然而,模型的输出也是高度抽象的,很少有从输入中复制的短语。输出通常也是事实上准确的,并将整个输入文件的支持性证据 supporting evidence 与背景知识结合起来(例如,正确补全名字,或推断 PG&ECalifornia 运营)。在第一个例子中,推断出 “鱼在保护珊瑚礁免受全球变暖的影响” 需要从文本中进行困难的推理。然而,关于 “这项工作发表在《科学》上” 的说法并没有得到 source document 的支持。

    这些样本表明,BART 预训练已经学会了自然语言理解和自然语言生成的强大组合。

十七、mBART[2020]

  1. 尽管已被广泛用于其他 NLP 任务,但自监督的预训练在机器翻译machine translation: MT 中还不是常见的做法。现有的方法要么是对模型进行部分预训练partially pre-train 、要么是仅关注英语语料。在论文 《Multilingual Denoising Pre-training for Neural Machine Translation》 中,作者表明:通过预训练一个完整的自回归模型可以获得显著的性能提升,其中这个自回归模型的目标是跨多种语言的完整文本进行加噪音和重建。

    在这项工作中,论文提出了mBART ,一个多语言 sequence-to-sequence: Seq2Seq 降噪自编码器。mBART 是通过将 BART 应用于跨多种语言的大型单语语料库 monolingual corpora 而训练的。通过 masking phrasepermuting sentence 来对输入文本添加噪音,并学习一个 Transformer 模型来恢复文本。与其他机器翻译的预训练方法不同,mBART 预训练了一个完整的自回归Seq2Seq 模型。mBART 仅对所有语言进行一次训练,提供一组参数。这组参数可以在 supervised settingunsupervised setting 下对任何 language pair 进行微调,无需任何 task-specificlanguage-specific 修改或初始化方案 initialization scheme

    大量的实验表明,这种简单的方法效果非常好。

    • 对于supervised sentence-level 机器翻译,mBART initializationlow-resource/medium-resource pair(小于 10Mbi-text pair )中带来了显著的增益(高达 12BLEU point ),而在 high-resource setting 中没有牺牲性能。这些结果通过 back-translation: BT 进一步改善,在 WMT16 English-RomanianFloRes 测试集上创造了新的 SOTA

      Romanian:罗马尼亚语;Nepali:尼泊尔语;Korean:韩语;Italian:意大利语。

    • 对于 document-level 机器翻译,mBARTdocument-level 预训练将结果提高了 5.5BLEU point 。在无监督的情况下,mBART 得到了一致的增益,并对相关性较低的语言对产生了首个非退化 non-degenerate 的结果(例如,Nepali-English 上的 9.5 BLEU 增益)。以前的预训练方案只考虑了这些 application 的子集,但论文尽可能地比较了性能,并证明 mBART 始终表现最佳。

    • 论文还表明,mBART 能够实现新类型的跨language pair 的迁移。例如,对一个language pair (如 Korean-English )中的 bi-text 进行微调,可以创建一个模型,该模型可以翻译在单语预训练集中的所有其他语言(如 Italian-English ),而无需进一步训练。

    • 论文还表明,不在预训练语料库中的语言也能从 mBART 中受益,这强烈表明 initialization 至少部分地是语言通用language universal 的。

    最后,论文详细分析了哪些因素对有效的预训练贡献最大,包括语言的数量和它们的整体相似度 overall similarity

  2. 相关工作:

    • 用于文本生成的自监督学习:这项工作继承了最近预训练为 NLP application 带来的成功,尤其是文本生成。预训练的模型通常被用作 initialization 从而用于微调下游任务(如,可控语言建模controllable language modeling、摘要、和对话生成)。

      具体到机器翻译,无监督的预训练方法也被探索出来,以提高性能。

      • 《When and why are pretrained word embeddings useful for neural machine translation?》 研究了预训练的 word embedding 在机器翻译中的应用。
      • 《Unsupervised pretraining for sequence to sequence learning》 提出将 encoder-decoder 模块作为两个独立的语言模型进行预训练。
      • 《Towards making the most of bertin neural machine translation》《Incorporating BERT into neural machine translation》 探索了融合方法从而集成预训练的 BERT 权重来改善神经机器翻译的训练。

      与大多数先前的工作相比,我们专注于预训练一个降噪自编码器,并为各种机器翻译 application 来适配整个模型的权重。

    • NLP 中的多语言性 Multilinguality:这项工作也与多语言学习的持续趋势 continual trend 有关,包括将 multilingual word embedding 对齐到通用空间,以及学习跨语言模型 crosslingual model 从而利用跨语言的 shared representation

      对于机器翻译来说,最相关的领域是多语言翻译 multilingual translation 。多语言翻译的最终目标是联合训练一个翻译模型,该模型同时翻译多种语言,并共享 representation 从而提高 low-resource language 的翻译性能(《Universal neural machine translation for extremely low resource languages》)。

      low-resource languagebi-text 语料很少的 language pair

      在本文中,我们聚焦于预训练阶段的多语言,并在标准的双语场景 bi-lingual scenario 下对所学模型进行微调。与多语言翻译相比,我们不需要跨多种语言的平行数据 parallel data ,只需要目标方向 targeted direction (即,翻译方向),这提高了对 low-resource languagespecific domain 的可扩展性。

      假设有 100 种语言,多语言翻译需要 C1002=4950language pair 的平行数据 。而这里我们只需要 100 种语言的单语语料,以及翻译方向。

    • 文档翻译 Document Translation:作为关键应用之一,我们的工作也与之前将 document-level 上下文纳入神经机器翻译的工作有关。

      《Pretrained language models for document-level neural machine translation》是最相关的工作,也利用预训练的编码器(BERT )来处理更长的上下文。然而,他们的重点是设计新的 task-specific 技术,并在更 widerinput context 下做 sentence-level 翻译 。

      据我们所知,我们的多语言预训练模型是首个显示出在 document-level 翻译上相比标准Seq2Seq 模型有改进的结果。

    • 无监督翻译:这项工作也总结了之前的一些工作,其中在语言之间没有直接的平行语料库的情况下来学习翻译。

      • 当没有任何类型的平行数据时,《Unsupervised neural machine translation》《Unsupervised machine translation using monolingual corpora only》 提出从两个 direction 联合学习降噪自编码器和 back-translation ,然而,这需要良好的 initialization ,并且只在相似的 language pair 上效果良好。
      • 《Machine translation with weakly paired bilingual documents》 通过从维基百科中挖掘句子并将其作为弱监督的 translation pair 来解决这个问题。

      类似于 《Cross-lingual language model pretraining》《MASS: Masked sequence to sequence pre-training for language generation》,我们遵循第一种方法,并将我们预训练的模型作为 initialization

      我们还研究了使用 language transfer 的无监督翻译,这与 《Translating translationese: A two-step approach to unsupervised machine translation》类似,其中他们生成源语言的翻译语translationese ,并在 high-resource language 上训练一个系统来纠正这些中间结果。

      我们的工作也与 《XNLI: Evaluating cross-lingual sentence representations》《On the cross-lingual transferability of monolingual representations》的跨语言 representation learning 密切相关,我们也表明通过 mBART 学到的 representation可以在没有监督数据的情况下轻松地在语言之间迁移。

17.1 预训练

  1. 我们使用 Common Crawl: CC 语料库来预训练 BART 模型。我们的实验涉及微调一组模型(这些模型在不同子集上预训练)。

17.1.1 Data: CC25 语料库

  1. 数据集:我们对从 CC 语料库中提取的 25 种语言(CC25 )进行预训练。CC25 包括来自不同语言的、不同数量的文本(如下图所示)。遵从 《Cross-lingual language model pretraining》,我们通过对每种语言 i 的文本以比例 λi 进行 up/down-sampling ,从而重新平衡语料库:

    (39)λi=1pi×piαjpjα

其中:pi 是语言 iCC-25 中的百分比;α=0.7 为平滑参数。

pi 是以 byte-level 还是 character-level 还是 word-level 还是 document-level ?作者并未说明。根据下图,猜测是 byte-level

α=0 时,λi1pi ,即语言 i 的文本越少则采样比例越大;α=1 是,λi=1 ,即均匀采样。

语言缩写:En 英语,Ru 俄语;Vi越南语;Ja日语;De 德语;Ro 罗马尼亚语;Fr 法语;Fi 芬兰语;Ko 韩语;Es 西班牙语;Zh 中文;It 意大利语;NI 尼加拉瓜语;Ar 阿拉伯语;Tr 土耳其语;Hi 印度语;Cs 捷克语;Lt 立陶宛语;Lv 拉脱维亚语;Kk 哈萨克语;Et 爱沙尼亚语;Ne 尼泊尔语;Si 斯里兰卡语;Gu 古吉拉特语;My 马来西亚语。

  1. 预处理:我们用一个在完整的 CC 数据上学习的 sentence-piece model (包括 250Ksubword token )来 tokenize 。虽然不是所有这些语言都被用于预训练,但这种 tokenization 支持对额外的语言进行微调。我们不应用额外的预处理,如 true-casing (即决定单词的合适的大小写)、或者对标点符号以及字符进行规范化。

    因为有 25 种语言,因此相当于每种语言包含 10K 规模的词表。

17.1.2 Model: mBART

  1. 我们的模型遵循 BARTSeq2Seq 预训练方案。然而 BART 只对英语进行了预训练,我们系统地研究了在不同语言的集合上预训练的影响。

  2. 架构:我们使用标准的 Seq2Seq Transformer 架构,模型配置为: 12 层编码器和 12 层解码器,隐层维度为102416 个注意力头,一共大约 680M 参数。我们在编码器和解码器的基础上加入了一个额外的 layer-normalization 层,我们发现它在 FP16 精度下稳定了训练。

  3. 学习:我们的训练数据覆盖了 K 种不同的语言 D={D1,,DK},其中 Di 是语言 i 的单语料文档的集合。 我们假设可以获得一个噪声函数 g() ,它可以破坏文本。然后我们训练模型在给定 g(X) 的条件下预测原始文本 X 。更正式而言,我们的目标是最大化 Lθ

    (40)Lθ=DiDXDilogP(Xg(X);θ)

    其中:X 是语言 i 中的一个文本实例,P 是由 Seq2Seq 模型定义的条件概率分布。

  4. 噪声函数 Noise Function:遵从 BART,我们在 g() 中使用了两种类型的噪声。

    • 首先,我们删除一个区间span 的文本并代之以一个 mask token 。我们根据泊松分布(λ=3.5 )随机采样一个 span length ,从而掩码每个文本实例中 35% 的单词。

      这意味着平均每个文本序列的长度为 10 个单词。

    • 我们还对每个文本实例中的句子顺序进行了排列。

    解码器的输入是带有一个位置偏移的原始文本。一个 language id 符号 <LID> 被用来作为 initial token 从而用于预测句子。

    假设原始文本为 ABCDEFG,而被掩码的文本为 [mask]EFG。那么:

    • 编码器的输入为 [mask]EFG<LID>
    • 解码器的输入为 <LID>ABCDEF,解码器的 labelABCDEFG<LID>

    也可以使用其他噪音类型,如 《Phrase-based & neural unsupervised machine translation》 中的噪音,但我们将最佳噪音策略的探索留给未来工作。

  5. 实例格式 Instance Format:对每个 batch 的每个文本实例,我们对一个 language id 符号 <LID> 进行采样,并尽可能多地打包从<LID> 的相应语料库中采样的连续句子,直到它命中文档边界或达到 512max token length 。实例中的句子由 end of sentence token</S>)分隔。然后,我们将选定的 <LID> token 附加到该实例的末尾。在 "multi sentence" 层面的预训练使我们能够同时在句子翻译和文档翻译上工作。

    每个 batch 包含多种语言的文本,即:

    注意:这里的 <LID> 是位于输入序列的末尾,但是在馈入到 BART 时:

    • 如果是编码器的输入,则 <LID> 仍然位于原始序列的末尾。
    • 如果是解码器的输入,则 <LID> 放置到原始序列的开头。如果是解码器的输出,那么 <LID> 仍然位于原始序列的末尾。一旦 解码器发现解码的 token<LID>,那么解码结束。
  6. 优化:我们的完整模型(包括 25 种语言)是在 256Nvidia V100 GPU32GB )上训练了 500K 步 。每个 GPU 的总 batch size 约为 128Ktoken,与 BART 的配置相匹配。

    因为采用了梯度累加策略,因此 GPUbatch size 会增加。

    我们使用 Adam 优化器 ( ϵ=106,β2=0.98)和线性学习率衰减调度。总的训练时间约为 2.5 周。我们以 dropout rate = 0.1 开始训练,在 250K 步时减少到 0.05 ,在 400K 步时减少到 0

    所有的实验都是用 Fairseq完成的。

  7. 可复现性:所提出方法的一个潜在问题是可复现性问题,因为需要大量的单语语料和计算资源,以及在预训练期间对超参数进行细粒度选择。如果我们再次对系统进行重新训练,可能会得到略有不同的微调性能。为了解决这个问题,我们将发布预训练的 checkpoint ,以及完整说明的代码从而用于预训练一个新模型。

  8. 相关工作 XLM(-R)MASS:有几种密切相关的机器翻译多语言预训练的方法。

    • XLMXLM-R以多语言方式预训练 BERT,结果得到的参数可用于初始化翻译模型的编码器。与 XLM(-R) 不同的是,由于Seq2Seq 的配置,mBART 同时预训练编码器和解码器,这对于适配机器翻译应用来说更为自然。
    • mBART 类似,MASS 也是一种基于 Seq2Seq 的、具有 word-masking 的预训练技术。然而,MASS 的解码器只预测在编码器中被 maskedtoken ,而 mBART 重建了完整的 target 序列,不仅可以应用于 "masking" (是噪音函数中的一种) ,还可以应用任何可能的噪音函数。

    此外,XLMMASS 都没有显示出预训练模型改善两种语言上的翻译性能的证据。

17.1.3 预训练的模型

  1. 为了更好地衡量预训练期间不同 level 的多语言性的影响,我们构建了一系列模型,具体如下:

    • mBART25:如前所述,我们在所有 25 种语言上预训练一个模型。

    • mBART06:为了探索对相关的语言进行预训练的效果,我们对所有语言的一个子集(包含 6 种欧洲语言)进行预训练:Ro, It, Cs, Fr, Es, En (即 ,罗马尼亚语、意大利语、捷克语、法语、西班牙语、英语)。为了进行公平的比较,我们使用了 mBART25 batch size 的大约 1/4 ,这使得我们的模型在预训练期间对每种语言有相同的更新数量。

    • mBART02:我们预训练双语模型,采用英语和另外一种语言,最终包括各种 language pairEn-De, En-Ro, En-It 。我们使用了 mBART25 batch size 的大约 1/12

      注意,这里是每种 language pair 训练一个模型,而不是在这三个 pair 上总共训练一个模型。

    • BART-En/Ro:为了帮助建立对多语言预训练的更好理解,我们还分别在仅包含 En 语料库、以及仅包含 Ro 语料库上训练单语言 BART 模型。

      注意,这里是每种语言训练一个模型,而不是在包含英语和罗马尼亚语的语料库上总共训练一个模型。

    • Random:作为额外的 baseline ,我们还将包括与随机初始化的模型的比较,不对每个翻译任务进行预训练。由于不同下游数据集的大小不同,我们总是对超参数(架构、dropout rate 等)进行网格搜索,从而找到最佳的 non-pretrained configuration

    所有模型都使用相同的词表vocabularyCC25 语料库上学到的,包括 250Ksubword token )。并非所有的 token 都会频繁地出现在所有的预训练语料库中,但后来的实验表明:这种大型词表可以在多语言环境中提高泛化能力,即使是对未见过的语言。

17.1.4 扩大规模的问题

  1. 扩大训练数据和模型参数的规模一直是预训练的关键因素。与传统的半监督方法(如 back-translation )和其他机器翻译的预训练相比,我们以相对更深的架构在更多的单语数据上预训练 mBART 。这种数据规模和模型参数规模,结合新的多语言训练,是我们结果的核心,尽管未来的工作可以更仔细地研究每一种因素的相对贡献。

17.2 Sentence-level Machine Translation

  1. 本节显示,mBART 预训练在low resourcemedium resourcesentence-level Machine Translation setting 中提供了一致的性能提升,包括仅有 bi-text 和有 back translation 的情况,并且优于其他现有的预训练方案。我们还进行了详细的分析,以更好地了解哪些因素对这些提升贡献最大,并显示预训练甚至可以提高那些不在预训练数据中的语言的性能。

17.2.1 实验配置

  1. 数据集:我们收集了 24 对公开可用的平行语料 parallel corpora ,这些语料涵盖了 CC25 的所有语言。大多数 pair 来自以前的 WMTGu, Kk, Tr, Ro, Et, Lt, Fi, Lv, Cs, Es, Zh, De, Ru, Fr <-> En)和 IWSLTVi, Ja, Ko, Nl, Ar, It <-> En)比赛。我们还使用 FLoRes pair《The FLORES evaluation datasets for low-resource machine translation: Nepali–English and Sinhala–English》),IITBEn-Hi《The IIT Bombay English-Hindi parallel corpus》),以及 WAT19En-My 。我们将数据集分为三类:low resource (小于 1Msentence pair ),medium resource (大于 1M 且小于 10Msentence pair ),以及 high resource (大于 10Msentence pair )。

  2. 微调和解码:我们在 bi-text 数据的单个 pair 上微调 mBART,将 source language 馈入编码器并且解码 target language 。如下图所示,我们加载预训练的权重,在 bi-text 上训练机器翻译模型。对于所有的翻译方向,我们用 dropout rate = 0.3label smoothing = 0.2warm-up steps = 2500、最大学习率为 3e-5 来进行训练。我们对所有low resource, medium resourcepair 使用最多 40K 的训练更新,对 high resource pair 使用最多100K 的训练更新。最后的模型是根据验证集的似然 likelihood 来选择的。

    这里没有说明微调的序列长度是多少。由于这里是 sentence-level 的翻译,因此序列长度可能不大。相比较而言,document-level 的翻译中,序列长度为 512token

    我们解码期间使用beam-searchbeam size = 5 。我们的初步实验表明,微调过程在不同的随机数种子下通常是稳定的。因此,为了减少总的计算量,我们所有的结果都是以单次执行来报告的。我们用mosesdecoder的脚本来验证统计意义。

    注意:

    • 编码器输入的末尾为 <LID>,例如 <En> ;解码器输入的开头为 <LID>、解码器输出的末尾为 <LID> ,如 <Ja>
    • 编码器输入、解码器输入、解码器输出中,句子之间的分隔符均为 </s>

17.2.2 实验结果

  1. 主要结果:

    • Table 1 所示,与随机初始化的 baseline 相比,用预训练的 mBART25 权重初始化在所有 low resource pairmedium resource pair 上都有提高。我们观察到:

      • low resource pair (如 En-ViEn-Tr )和 noisily aligned pair (如 En-Hi )上有 12 个点或更多的 BLEU 收益。
      • 微调在 extremely low-resource 的情况下仍然失败,如En-Gu ,它仅有大约 10K 个样本。在这些情况下,无监督翻译更合适,见后面的实验。

      注意,我们的 baseline 系统使用随机初始化权重的常规 Transformers 的一些运行报告,这与原始竞赛中报告的 SOTA 系统有相当明显的差距。这种差异主要是因为:我们只在官方提供的bi-text 中训练和搜索 baseline 的超参数,而没有使用任何单语语料库或多语适配。例如:

      • WMT19 中,En -> GuSOTA 得分是 28.2 ,而 Table 1 中是 0 。这基本上是因为原始 bi-text data的质量很低,而 SOTA 系统通常使用额外的语言(如 Hi )来提高性能。
      • 类似的差距也可以在 Kk-EnLt-Enpair 中观察到,其中Ru 作为额外的语言也很关键。

      这一部分的主要目的是讨论多语言预训练在受限的 bi-text setting 中的效果,以便进行更好的比较。我们将在未来的工作中加入更多关于多语言翻译与预训练相结合的讨论。

    • 对于 high resource 的情况(Table 2 ),我们没有观察到一致的收益,当有超过 25M 的平行句子 parallel sentence 时,预训练略微损害了性能。当给出大量的 bi-text data 时,我们怀疑监督训练会刷掉预训练的权重。

  2. Plus Back-Translationback-translation《Improving neural machine translation models with monolingual data》)是一种标准的方法,用 target-side 的单语数据增强 bi-text 。我们将我们的预训练与back-translation 相结合,并使用 FLoRes 数据集在 low resource language pairEn-SiEn-Ne )上进行测试。我们使用与 《The FLORES evaluation datasets for low-resource machine translation: Nepali–English and Sinhala–English》相同的单语数据来生成 back-translation 数据。结果如下图所示。

    可以看到:用我们的 mBART25 预训练的参数初始化模型,在back-translation 的每个迭代中提高了 BLEU 分数,从而在所有四个翻译方向上产生了新的 SOTA 的结果。这表明,预训练的 mBART 权重可以直接插入到使用back-translation的现有 pipeline 中。

  3. 对比其它的预训练方法:我们还将我们的预训练模型与最近的自监督预训练方法进行了比较,如下表所示。我们考虑了 En-Ro 翻译,这是唯一一对有既定结果的翻译。可以看到:

    • 我们的 mBART 模型优于所有其他预训练模型,无论是否有back-translation 增强。
    • 我们还展示了与仅在相同的 EnRo 数据上训练的传统 BART 模型的比较。尽管比 mBART 的结果要差,但两者都比 baseline 有改进,这表明在多语言环境下的预训练是非常重要的。
    • 此外,结合 back-translation 可以带来额外的收益,从而使 Ro-En 翻译达到新的 SOTA

    此外,mBART25 的效果比 mBART02 的效果更差,是否意味着更多的无关预训练数据反而影响下游任务的效果?因为 mBART25CC25 预训练数据集包含了 mBART02 的预训练数据集。

    接下来的实验表明:如果目标语言的单语料数据很少,那么对更多语言进行预训练对下游翻译任务有帮助;否则,对更多语言进行预训练会略微损害下游翻译任务的性能。

17.2.3 分析

  1. 需要对多少种语言进行预训练:我们研究了在什么情况下,将目标 language pair 以外的语言纳入预训练是有帮助的。下表显示了四组 X-En pair 的表现。可以看到:

    • target language 的单语数据有限时(如 En-MyMy 的单语言数据大小约为 En0.5% ),对更多语言进行预训练最有帮助。
    • 相反,当 target language 的单语数据丰富时(如 DeRo),对多语言的预训练对最终结果略有损害(小于 1 BLEU)。在这些情况下,额外的语言可能会减少每种测试语言的可用容量。此外,mBART06Ro-En 上的表现与 mBART02 相似,这表明用类似语言(都是欧洲语言)进行预训练特别有帮助。

  2. 需要预训练多少个 step :我们在下图中绘制了 Ro-EnBLEU 得分与预训练 step 数的对比,在图中我们采用了保存的 checkpoint (每 25K 步)并应用了前面描述的相同的微调过程。可以看到:

    • 在没有任何预训练的情况下,我们的模型过拟合,表现比 baseline 差很多。
    • 然而,在仅仅 25K 步( 5% 的训练)的预训练之后,两个模型的表现都超过了最佳 baseline
    • 在剩下的预训练中,这两个模型一直在超越了 baseline 高达 3 BLEU 以上,在 500K 步之后还没有完全收敛。
    • 此外,mBART25 始终比 mBART02 略差,这证实了 Table 4 的观察。

  3. 需要多少 bi-textTable 1Table 2 显示,预训练对low resourcemedium resourcelanguage pair 有持续改善。为了验证这一趋势,我们绘制了不同大小的 En-De 数据集子集的性能。更确切地说,我们采用了完整的 En-De 语料库(2800pair ),并随机抽取了10K50K100K500K1M5M10M 的子集。我们将没有预训练的性能与 mBART02 的结果进行比较,如下图所示。可以看到:

    • 预训练的模型能够在只有 10K 个训练样本的情况下达到高于 20 BLEU 的效果,而 baseline 系统的得分是 0 。不难看出,增加 bi-text 语料库的规模可以改善这两个模型。
    • 我们的预训练模型一直优于 baseline 模型,但随着 bi-text 数量的增加,差距也在缩小,特别是在 10Msentence pair 之后。这一结果证实了我们在前面的观察,即我们的预训练对 high-resource pair 的翻译没有帮助。

17.2.4 泛化到不在预训练中的语言

  1. 在这一节中,我们表明:即使对于没有出现在预训练语料库中的语言,mBART 也能提高性能,这表明预训练具有语言通用性。类似的现象在其他 NLP 应用中的其他多语言预训练方法中也有报道。

  2. 实验设置:我们报告了使用预训练的 mBART25mBART06mBART02En-Ro)模型对 Nl-EnAr-EnDe-Nl 三种 pair 进行微调的结果。mBART06mBART02 模型没有对 ArDeNl 文本进行预训练,但所有语言都在 mBART25 中。 DeNl 都是欧洲语言,与EnRo 以及 mBART06 预训练数据中的其他语言有关。

  3. 实验结果:如下表所示:

    • 我们发现 English-Romanian 预训练相比 baseline 获得了很大的增益,即使在翻译一种不相关且未见过的语言(阿拉伯语Arabic )、以及两种未见过的语言(德语 German 和荷兰语 Dutch )时也是如此。

      NI 尼加拉瓜语是荷兰语的一种。

    • 当预训练中包括双方的语言时(即,mBART25 ),取得了最好的结果,尽管在其他情况下的预训练也具有令人惊讶的竞争力。

  4. 未见过的词汇:ArabicmBART02mBART06 中的语言关系较远,并且有一个不相交的字符集 character set 。这意味着它的word embedding 在很大程度上没有在预训练中被估计。然而,从 Table 5 中可以看到:mBART02/mBART06Ar-En pair 上获得的改进与在 Nl-En pair 上获得的改进相似。

    这一结果表明:预训练的 Transformer layer 学习了语言的普遍属性,即使在词汇重叠度 lexical overlap 极低的情况下也能很好地进行泛化。

  5. 未见过的 source language 和未见过的 target language:从 Table 5 中可以看到:

    • 如果两边都是未见过的语言,其性能(从与mBART25 的差异来看)比在预训练期间至少见到一种语言(source language 或者 target language )的情况要差。
    • 此外, mBART06X-En pair 上的表现优于 mBART02 ,尽管它们在 En-X pair 上表现相似。在 source-side 对未见过的语言进行微调是比较困难的(这里 source-side 就是 NIAr ),值得今后广泛研究。

17.3 Document-level Machine Translation

  1. 我们在 document-level 机器翻译任务中评估了 mBART ,其目标是翻译包含一个以上句子的文本片段(直到整个文档)。在预训练期间,我们使用多达 512token 的文档片段,允许模型学习句子之间的依赖关系。我们表明,这种预训练大大改善了 document-level 的翻译。

17.3.1 实验配置

  1. 数据集:我们在两个常见的 document-level 机器翻译数据集上评估性能:WMT19 En-DeTED15 Zh-En

    • 对于 En-De ,我们使用 WMT19 的文档数据来训练我们的模型,没有任何额外的 sentence-level 数据。
    • Zh-En 数据集来自 IWSLT 2014IWSLT 2015。遵从 《Document-level neural machine translation with hierarchical attention networks》,我们使用 2010-2013 TED 作为测试集。
  2. 预处理:我们用预训练中使用的方法进行预处理。对于每个 block ,句子被符号</S> 所分隔,整个实例以 specific language id<LID>)结束。平均而言,一个文档被分割成 24 个实例。

  3. 微调和解码:

    • 我们使用与 sentence-level 翻译相同的微调方案,不使用以前的工作所开发的任何 task-specific 的技术,如约束的上下文constrained context、或受限注意力 restricted attention
    • 对于解码,我们只是将 source sentence 打包成 block ,并对每个实例 block 进行自回归地翻译。该模型不知道要提前生成多少个句子,当预测到 <LID> 时,解码就会停止。我们默认使用 beam size = 5
  4. baseline 和评估:我们训练了 4 个模型:一个 document-levelDoc-MT)机器翻译模型,以及 baseline 为一个对应的 sentence-levelSent-MT)机器翻译模型,包括预训练和不预训练。我们使用 mBART25 作为 En-DeZh-En 的通用预训练模型。

    • 对于 En-De ,即使我们的 mBART25 Doc-MT 模型将多个句子解码在一起,但翻译的句子仍然可以与 source sentence 对齐,这使得我们可以同时在 sentence-levels-BLEU )和 document-leveld-BLEU )评估 BLEU 分数。
    • 然而,对于 Zh-En,由于测试数据中的对齐错误,我们无法产生与reference 相同数量的翻译句子。我们只提供 d-BLEU 分数。

    我们还将我们的模型与 Hierarchical Attention Networks《Document-level neural machine translation with hierarchical attention networks》)在 Zh-En 上进行了比较,这是 document-level 翻译的 SOTAnon-pretraining 方法。它们结合了两层注意力:首先是在句子内部,然后是跨句子。

17.3.2 实验结果

  1. 下表显示了 En-DeZh-Ensentence-leveldocument-level 的主要结果:

    • 随机初始化 vs. 预训练初始化:

      • 对于 sentence-level 训练和 document-level 训练,用预训练权重初始化的机器翻译模型比随机初始化的机器翻译模型要好得多。
      • 我们的 mBART25 模型(Sent-MTDoc-MT )也优于 HAN ,尽管 Sent-MTDoc-MT 不是为 document-level 机器翻译而定制化的。
    • Sent-MT vs. Doc-MT:对于 En-DeEn-Zh

      • mBART25 Doc-MT 模型的表现超过了 mBART25 Sent-MT

        超出的绝对数值在 1.0 分左右,不是特别多。

      • 相反,没有预训练的模型的趋势相反,即 Random Doc-MT 模型的表现远远差于 Random Sent-MT

        对于这两个数据集,随机初始化的 Doc-MT 未能发挥作用,导致其结果比 sentence-level 模型差得多。如此大的性能gap 表明,预训练对 document level 的性能至关重要。一般而言,很难大量收集高质量的document level 数据,这表明预训练可能是未来工作的一个强有力的策略。我们还在 Figure 6 中包括一个采样到的例子。

17.4 Unsupervised Machine Translation

  1. 除了有监督的机器翻译,我们还在对于 target language pair 没有 bi-text 的任务上评估我们的模型。我们定义了三种类型的无监督翻译:

    • 没有任何类型的 bi-text :一个常见的解决方案是从 back-translation 中学习。我们表明,mBART 为这些方法提供了一个简单而有效的初始化方案。

      即,这里只有单语语料。

    • 对于 target language pair 没有 bi-text ,但两种语言都出现在与其他 pairbi-text 语料中:这种配置在多语言机器翻译系统中很常见。在本文中,我们将重点限制在为单个 language pair 建立模型,并将多语言机器翻译的讨论留给未来的工作。

      即,没有 A -> Bbi-text,但是有 A -> CD -> Bbi-text

      注意,A,B,C,D 都在预训练语料中。

    • 没有 target pairbi-text ,但有从其他语言翻译成 target languagebi-text :即使 source language 没有任何形式的 bi-textmBART 也支持有效的迁移。

      即,没有 A -> Bbi-text ,但是只有 D -> Bbi-text,没有 A 的任何 bi-text

      注意,A,B,D 都在预训练语料中。

17.4.1 通过 Back-Translation 的无监督机器翻译

  1. 数据集:我们在 En-DeEn-NeEn-Si 上评估我们的预训练模型。EnDe 都是共享许多子词 subword 的欧洲语言,而 NeSi 则与 En 完全不同。我们使用与监督学习相同的测试集,并使用相同的预训练数据(CC25 )进行 back-translation 以避免引入新信息。

    只有 CC25 如何进行 back-translation?因为 back-translation 需要预先训练好一个翻译模型。而 CC25 没有 bi-text 来微调从而得到一个翻译模型。猜测是:不需要微调,用 CC25 预训练好的模型本身就可以充当一个翻译模型。

  2. 学习:遵从《Cross-lingual language model pretraining》XLM)的做法,我们用 mBART 的权重初始化翻译模型,然后以 source sentence (通过 on-the-fly back-translation 来生成)为条件来生成单语句子 monolingual sentence (即,翻译为单语文本)。此外,对于 on-the-fly back-translation 的前面 1000 步,我们将 mBART 限制为仅生成 target languagetoken ,从而避免 mBART 复制 source text

    这里是没有任何类型的 bi-text 的情形。

  3. 结果:下表显示了与 non-pretrained 模型、以及采用现有预训练方法的模型相比的无监督翻译结果。可以看到:

    • 我们的模型在所有方向上都比non-pretrained 模型取得了很大的进步。
    • 对于不相似的 pairEn-Ne, En-Si), 我们的模型显著超越了 XLM。在这些 pair 上,现有的方法完全失败。
    • 对于 En-De ,我们的模型与 XLMMASS 相比也是相差无几的。

17.4.2 通过 Language Transfer 的无监督机器翻译

  1. 我们还报告了 target language 与其他 source language 出现在 bi-text 中时的结果。

    即,没有 A -> Bbi-text ,但是只有 D -> Bbi-text,没有 A 的任何 bi-text

  2. 数据集:我们只考虑 X -> En 的翻译,并从监督学习的配置中选择了 12language pairbi-text ,包括 Indic languageNe, Hi, Si, Gu )、European languageRo, It, Cs, Nl)、East Asian languageZh, Ja, Ko)以及ArabicAr)。

  3. 结果:如下表所示,预训练的 mBART25 模型在每个language pair 上进行了微调,然后在剩余 language pair 上进行了评估。我们还在对角线上展示了直接的微调性能,以供参考。可以看到:

    • 除了 Gu-En 之外(最后一列),所有微调模型都能实现迁移,因为在 Gu-En 中,监督模型完全失败(0.3 BLEU )。
    • 在某些情况下,我们可以取得与监督结果相似(Cs-En,第四行)甚至更好的结果(Ne-En, Gu-En,倒数第三行和最后一行)。

    我们还在下图中展示了一个语言迁移的例子。

    作为对比,我们也在没有预训练的随机初始化模型上应用同样的程序,其结果总是约为 0 BLEU 。这表明多语言预训练是非常重要的,它能产生跨语言的 universal representation ,因此一旦模型学会了将一种语言翻译成英语,它就能学会用类似的 representation 来翻译所有语言到英语。

    下图中,同一个浅色阴影块表示相同语系。

  4. 什么时候 language transfer 是有用的:Table 8 还显示,迁移效应的大小随着不同语言的相似度而变化。

    • 首先,对于大多数语言对来说,当微调也是在同一语系 language family 中进行时(浅色阴影块所示),语言迁移效果更好,特别是在 Indic languageHi, Ne, Gu)之间。
    • 然而,显著的词表共享vocabulary sharing 并不是有效迁移的必要条件。例如,Zh-En (第一行)和 It-En (第七行)分别从 Ko-EnAr-En 上取得了最好的迁移学习效果。尽管(Zh,Ko)(It,Ar) 之间的词表重合度很低(甚至是字符重合度也很低)。
  5. 使用 back-translation:我们在下表中比较了使用 back-translation 的无监督机器翻译 vs. 语言迁移的无监督机器。当有相近的语言翻译可以迁移时,语言迁移效果更好。

    此外,我们显示了结合这两种技术的有前景的结果。我们从最好的被迁移模型 transferred model 开始,在预训练中使用的同一单语语料库上应用(迭代式的)back-translation。下表显示了 back-translation1 轮迭代的结果。我们看到所有的 language pair 都有改进。对这两种方法的完整分析将作为未来的工作。