博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
论文解读 | 百度 ERNIE: Enhanced Representation through Knowledge Integration
阅读量:4290 次
发布时间:2019-05-27

本文共 3308 字,大约阅读时间需要 11 分钟。

作 者:王 琴

单 位:燕山大学

摘要

本文受Bert mask策略的启发,提出一种新的语言表示模型,称为ERNIE(Enhanced Representation through Knowledge Integration).ERNIE旨在学习到通过知识屏蔽策略增强的语言表示,其中屏蔽策略包括实体级屏蔽(Entity-level strategy)和短语级屏蔽(Phrase-level strategy)。 entity-level 策略通常会掩盖由多个单词组成的实体; Phrase-level 策略会掩盖由几个词共同作为概念单元的整体短语。实验结果表明,ERNIE优于其他基准方法,在包括自然语言推理、语义相似性、命名实体识别、情感分析、问答系统在内的五个自然语言处理任务上取得了好结果 。作者还证明了ERNIE在完形填空测试中具有更强大的知识推理能力。

文章介绍

在绝大多数的研究中,仅仅通过上下文来预测丢失的单词并对其进行建模。 这些模型没有考虑句子中的先验知识。 例如,在句子“哈利·波特是由罗琳(J. K. Rowling)创作的一系列幻想小说”中。 哈利·波特(Harry Potter)是小说的名字,而罗琳(J. K. Rowling)是作家。 模型很容易通过实体内部的单词搭配来预测实体Harry Potter的缺失单词,而无需借助较长的上下文。如果模型学习更多有关先验知识的信息,则该模型可以获得更可靠的语言表示。ERNIE不是直接添加知识嵌入(knowledge embedding),而是隐式地学习有关知识和较长语义依赖性的信息,例如实体之间的关系,实体的属性和事件的类型,以指导单词嵌入学习。

 作者所做的贡献如下:
 (1)引入了一种新的语言模型学习处理,掩盖了诸如短语和实体之类的单元,以便从这些单元隐式学习语法和语义信息。
 (2)在各种中文自然语言处理任务上,ERNIE大大优于以前的最新方法。
 (3)发布了ERNIE和预训练模型的代码,可在中找到这些代码。

相关研究

1. 上下文感知表示

 BERT随机掩盖句子中一定比例的单词,并学习预测那些被掩盖的单词。此外,BERT学习预测两个句子是否相邻。该任务试图对传统语言模型无法捕获的两个句子之间的关系进行建模。因此,这种特殊的预训练方案可以帮助BERT在各种关键的NLP数据集(例如GLUE和SQUAD等)上大幅度超越最新技术。同时,其他一些研究人员尝试根据这些模型添加更多信息,例如 MT-DNN结合了预训练学习和多任务学习,以提高GLUE中多个不同任务的绩效。 GPT-2将任务信息添加到预训练过程中,并使模型适应零击(zero-shot)任务。 XLM在预训练过程中增加了语言嵌入功能,从而在跨语言任务中取得了更好的结果。

2. 异构数据

 对异构无监督数据进行预训练的语义编码器可以提高传递学习性能。基于响应预测的句子编码器受益于从Reddit对话中提取的查询-响应对数据。 XLM在BERT中引入了并行语料库,将其与masked language model task一起训练,基于对异构数据进行预训练的transformer模型,XLM在监督/非监督MT任务和分类任务上显示出巨大的性能提升。

实验方法

- Transformer编码

 ERNIE像之前的预训练模型一样使用多层transformer作为基本编码器。transformer可以通过自注意力机制来捕获句子中每个标记的上下文信息,并生成一系列上下文嵌入。

- 知识整合(Knowledge Integration)

 作者使用先验知识来增强预训练语言模型,提出了一种多阶段的知识掩盖策略,将短语和实体级别的知识集成到语言表示中而不是直接添加知识嵌入。句子的不同掩蔽级别在图2中进行了描述。
图2 不同Mask水平的区别

  • 第一阶段:使用基本级别掩盖,它将句子作为基本语言单位的序列,对于英语,基本单元是单词,对于中文,基本单元是汉字。 在训练过程中,我们随机掩盖15%的基本语言单元,并使用句子中的其他基本单元作为输入,并训练一个transformer来预测被掩盖单元。这一步与bert相同。因为它是在基本语义单元的随机掩码上训练的,所以高级语义知识很难完全建模。
  • 第二阶段:使用短语级掩盖,使用词法分析和分块工具来获取句子中短语的边界。此时也使用基本语言单位作为训练输入,但与基本单元掩盖不同的是,这次随机选择句子中的一些短语,对同一短语中的所有基本单位进行掩盖和预测。在此阶段,短语信息被编码到单词嵌入中。
  • 第三阶段:使用实体级掩盖。 名称实体包含人员,位置,组织,产品等,可以用专有名称表示。通常,实体在句子中包含重要信息。 与短语屏蔽阶段一样,首先分析句子中的命名实体,然后屏蔽并预测实体中的所有时隙。 经过三个阶段的学习,获得了通过更丰富的语义信息增强的单词表示。

实验过程

  • 采用异构语料进行预训练

     收集百度贴吧、百度新闻、百度百科的混合语料,其中百度百科包含以正式语言撰写的文章,是模型训练的强大基础;百度新闻提供了最新的电影名、演员名、球队名等;百度贴吧中的每个帖子可以看作是对话,将被用于DLM任务。

  • DLM(Dialogue Language Model)任务

     对话数据对于语义的分析十分重要,因为具有相同回复的问题往往具有相似性,如图3所示。
    图3
     不同于普遍的句子编码器,模型引入了对话嵌入来识别对话中的角色。ERNIE的Dialogue embedding与Bert中Token embedding功能相同,不同之处在于ERNIE还可以表示多回合对话(例如QRQ,QRR,QQR,其中Q和R分别代表“查询”和“响应”)。除此之外,模型还通过用随机生成的假样本来替换查询或响应的真样本,旨在判断多轮对话是真实的还是假的。DLM任务可帮助ERNIE学习对话中的隐式关系,这也增强了模型学习语义表示的能力。

  • 实验结果

    表1 在五种主要的中文NLP任务上的表现结果其中,XNLI是自然语言推理方面的数据集;LCQMC是语义相似度方面的数据集;MSRA-NER是用于命名实体识别的数据集;ChnSentiCorp是用于句子情感分析的数据集;NLPCC-DBQA是用于问答系统的数据集。由图3可以得出,ERNIE在这五个任务上都优于Bert,这都归功于ERNIE的知识整合(Knowledge Integration)策略。

  • 消融研究(Ablation Studies)

    为了得出ERNIE中哪个部分对实验结果影响较大,作者进行了消融实验。

    • Knowledge Integration的影响
       作者从整个语料库中抽取10%的训练数据,来验证knowledge mask策略的有效性。 结果显示在表2中。我们可以看到,将phrase-level mask添加到基线word-level mask可以提高模型的性能。 在此基础上,继续添加的entity-level mask进一步提高了模型的性能。 此外,这
      结果还显示,如果将数据集全部用于预训练,XNLI测试集可实现0.8%的性能提升。
      表2 ERNIE在XNLI任务上基于不同的mask策略和数据集容量上的表现
    • DLM的影响
       作者取整体数据集的10%进行训练,并对不同类型数据所占的比例进行了调整,来说明DLM任务对XNLI任务的贡献。表3给出了详细的实验设置和实验结果。我们可以看到,在此DLM任务中,验证/测试精度的提高是0.7%/ 1.0%。
      表3 XNLI任务在不同占比的语料上的表现
  • 完型填空

     为了验证ERNIE的知识学习能力,作者使用了多个Cloze测试样本来检验模型。在实验中,命名实体已从段落中删除,模型需要推断其名称。图4中显示了一些情况。这些案例表明ERNIE在基于上下文的知识推理中表现更好。
    图4 ERNIE与Bert在完型填空上的结果

总结

在本文中,作者提出了一种将知识整合到预训练语言模型中的新方法。 在5个中文处理任务上的实验表明,作者的方法均优于BERT。 文章还证实,知识整合和对异构数据的预训练都能使模型获得更好的语言表示。 文章还提到,作者会在以后将其他类型的知识整合到语义表示模型中,例如使用语法分析或来自其他任务的弱监督信号。 此外,作者还将用其他语言来验证该想法。

论文链接:

转载地址:http://aqmgi.baihongyu.com/

你可能感兴趣的文章
谈谈JDBC
查看>>
jdbc_API中的说明
查看>>
jdbc_javax包
查看>>
Android 6.0 APIs_新特性(google官方)
查看>>
maxwell斗胆也来谈谈"学习方法“_转自黑马论坛
查看>>
XML解析
查看>>
AndroidManifest.xml详解
查看>>
activity的xml详解
查看>>
JNI 简介与实现-JavaNativeInterface
查看>>
ResourceBundle和Properties
查看>>
javascript *** is not a function
查看>>
老韩思考:卖点----卖豆腐的能转行IT
查看>>
Android_属性动画
查看>>
网络下载-xUtils,HttpUtils
查看>>
网络下载-AsyncHttpClient
查看>>
myUtils-多线程下载
查看>>
网络下载-断点续传原理
查看>>
线程-消息回环处理机制
查看>>
感谢伤害我的人
查看>>
请不要做浮躁的人----(学习编程的忠告)
查看>>