返回介绍

数学基础

统计学习

深度学习

工具

Scala

十二、ERNIE 2.0 [2019]

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

  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 任务来学习句子之间的关系。在这个任务的预训练过程中,一个给定的段落被随机拆分成1$ 1 $ 到m$ m $ 个 segment ,然后这些 segment 被随机混洗。我们让预训练模型来重新排序这些被打乱的 segment 。模型是一个k$ k $ 类分类问题,其中k=n=1mn!$ k=\sum_{n=1}^m n! $ 。根据经验, sentences reordering 任务可以使预训练的模型学习文档中句子之间的关系。

        通常k$ k $ 比较小,例如k=3$ 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.98$ \beta_1=0.9,\beta_2=0.98 $ ,batch 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

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

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

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

发布评论

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