博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
论文笔记 | Enhancing Pre-Trained Language Representations with Rich Knowledge for MRC
阅读量:4289 次
发布时间:2019-05-27

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

目录

 


摘要

      机器阅读理解 (MRC) 是 NLP 中⼀项⾄关重要且具有挑战性的任务。 最近,预训练的语⾔模型(LM),尤其是 BERT取得了显著的成功。本文中,作者研究了利用外部知识库 (knowledge base,KB) 结合BERT 的潜力,并由此提出了 KT-NET。它采用注意力机制从知识库中自适应地选择所需的知识,然后将所选知识与 BERT 融合,以实现上下文感知和知识感知预测。这种方法结合了深度 LM 和 KB 的优点,以更好地实现 MRC任务。 实验结果表明,KT-NET 与BERT 相比取得了显着改进,在 ReCoRD 和 SQuAD1.1 基准上的表现优于基线。值得一提的是,KT-NET在 ReCoRD 排⾏榜上排名第⼀,也是提交时 (2019 年 3 ⽉ 4 ⽇)SQuAD1.1 排⾏榜上最好的单⼀模 型。

1 介绍

      机器阅读理解(MRC)需要机器理解文本并回答相关问题,是自然语⾔处理中的⼀项关键任务。 随着深度学习的发展和可用数据集的增加,MRC 在过去几年取得了显著进步。 最近预训练语⾔模型在 MRC 社区引起了轰动。 这些 LM 模型在未标记的⽂本上进行了预训练,然后以基于特征 或微调的方式应用于 MRC,两者都提供了可观的性能提升。在不同的预训练机制中,使用Trans-former并训练 双向 LM 的 BERT⽆疑是迄今为⽌最成功的,在 MRC 和各种其他语⾔理解任务中都展现了最好成果。由于在预训练期间使用了⼤量未标记的数据和深框架,诸如 BERT 的先进LM 能够捕获复杂的语⾔现象,能比以前更好地理解语⾔。

     然而,众所周知,真正的阅读理解不仅需要语言理解,还需要支持复杂推理的知识。因此,尽管经过预训练的LM功能强大,但可以通过整合背景知识进⼀步改进 MRC。图 1 给出 了⼀个来⾃ ReCoRD 的示例。在这个例⼦中,即使像 BERT 这样相当强⼤的模型在这个案例中也失败了,表明了整合知 识的重要性和必要性。

     因此在本⽂中,作者设计了 KT-NET模型,它通过知识库 (KB) 中的附加知识改进了预训练的 LM,目的是充分利⽤深度 LM 所涵盖的语⾔规律和从知识库中获得的高质量知识, 以实现更好的 MRC。 作者利用两个知识库:记录单词之间 的词汇关系的 WordNet、存储实体信念的 NELL。由图1可知,两者都对任务有作⽤。使用了知识库的分布式表示,可以 (i) 不仅在本地整合与阅读⽂本相关的知识,而且在全球范围内整合关于整个知识库的知识; (ii) 以最少的特定⼯程轻松地合并多个 KB。

      如图 2 所示,给定⼀个问题和⼀段话,KT-NET 首先检索潜在相关的 KB embedding 并将它们编码到内存中。 然后依次使用: (i)BERT 编码层(BERT encoding layer)来进行⽂本的深度、上下文感知表示; (ii) 知识集成层(knowledge integration layer),用于从内存中选择所需的 KB 嵌⼊,并将它们与 BERT 集成; (iii) 自匹配层(self-matching layer),来融合 BERT 和 KB em-bedding,从而实现它们之间的交互; (iv) ⼀个输出层来预测最终答案。 通过这种方式,用精选的知识丰富了 BERT,结合了两者的优点,并进行了知识感知预测。

      作者在ReCoRD 和 SQuAD1.1上评估了此方法。在 ReCoRD 上,从新闻⽂章的前几段⽣成⼀个段落,文章的其余部分生成需要背景知识和推理的问题。在 SQuAD1.1 上,最好的模型已经胜过⼈类的准确率,但仍存在未解决的问题。两者都是很好评估真正阅读理解能力的测试平台。 结果表明,结合知识的模型可以为 BERT 带来显着的改进。 本文的贡献有两个方面:(i)研究并证明了使用具有丰富知识的预训练 LM 的可行性。 这是同类研究中的第⼀次,为未来的研究指明了⼀个潜在的方向。 (ii) 设计了⼀种新的方法 KT-NET ,它超越了 其他基线,在 ReCoRD 排行榜上排名第⼀,也是提交时(2019.3.4)SQuAD1.1 排行榜上最好的单⼀模型。

2  方法

     在本⽂中,作者使用的是提取式MRC 任务。 给定⼀个带有 m 个token的段落P和⼀个带有 n 个token的问题Q,目标是预测⼀个答案 A,它被限制为段落中的连续跨度。

     为此,作者提出了 KT-NET,其关键思想是使用KB 中的知识来增强 BERT,从而结合两者的优点。 为了对知识进行编码,作者采用知识图嵌⼊技术,并学习知识库中概念的向量表示。 给定段落 P 和问题 Q,为每个标记 w ∈ P ∪ Q 检索⼀组潜在相关的知识库内容C(w),其中每个c ∈ C(w) 与学习到的向量嵌⼊ c 相关联。 KT-NET的结构如图 2 所示。

 2.1  KT-NET的主要组件

    BERT 编码层:该层使用BERT 编码器对段落和问题进行建模。 它将段落 P 和问题 Q 作为输入,并为每个标记计算上下文感知的表示。 给定段落 Pm 和问题 Qn,⾸先将它们打包成⼀ 个长度为 m + n + 3 的序列,即

                 

    其中 〈SEP〉 是分隔 Q 和 P 的标记;〈CLS〉 是⽤于分类的 token(本⽂不会用到)。对于 S 中的每个标记 si,我们将其输入表示构造为:

              

  其中 tok、pos 和 seg 分别是si的token 嵌入,位置嵌入和分 段嵌入。Q 中的token共享⼀个seg,P 中的token也共享⼀个 seg。然后将此类输入表示为L 个连续的 Transformer 编码器块,即:

               

    知识集成层:该层旨在将知识进⼀步集成到 BERT 中,是本文方法的核心模块。它将上⼀层的 BERT 表示输出作为输⼊,并通过相关的 KB 嵌⼊对其进行扩充,这使得表示不仅具有上下文感知能力,而且具有知识感知能力。 具体做法如下,对于每个标记 si,得到它的 BERT 表示 ,并检索⼀组潜在相关的知识库概念 C(si),其中每个概念 cj 与知识库嵌入相关联。然后采用自适应注意力机制来选择最相关的 KB 概念。使用双线性运算测量概念 cj 与标记 si 的相关性,并计算注意力权重为:

                 

由于得到的知识库概念不会都用到,因此提出了

             

由此可得,

             

其中,这⾥ ki 可以看作是⼀个知识状态向量,它编码了额外的 KB 信息。

  自匹配层:该层将知识丰富的表示 {ui} 作为输⼊,并采用自注意力机制进⼀步启用上下文和知识之间的交互。它也是本文方法的⼀个重要模块。 作者同时对直接和间接交互进行建模。对于直接交互,给定两个标记 si 和 sj(以及它们的知识表示形式 ui 和 uj),⽤三线性函数测量它们的相似性: 

               

由此得到矩阵R,然后对 R 逐行softmax 操作以获得自注意力权重矩阵 A,并为每个标记 si 计算⼀个注意向量 vi。

    除了直接交互之外,例如 si 和 sj 之间通过中间标记 sk 的交互也很有用。为了进⼀步对这种间接交互进行建模,作者对原始注意力矩阵 A 进行自乘,并为每个标记 si 计算另⼀个参与向量 vi。最后通过串联这两个vi得到Oi作为此层的输出。

  输出层:遵循了BERT 简单地使用线性输出层,然后使⽤softmax 操作来预测答案。

2.2   知识嵌入和检索

    作者使用了两个 KB:WordNet 和 NELL,它们都存储为(主体、 关系、客体)三元组,其中每个三元组是⼀个事实,表示两个实体之间的特定关系。 WordNet 存储单词同义词集之间的词汇关系,NELL 存储关于实体的信念,其中主体通常是现实世界的实体。 正如图 1 所示,这两个知识库 对 MRC 都很有用。

   KB 嵌⼊:与将 KB 直接编码为(主体、关系、客体)相比,本文 选择在连续向量空间中对它们进行编码。 具体来说,给定任何三元 组 (s, r, o),需要学习主题 s、关系 r 和对象 o 的向量嵌⼊,以便可以基于嵌⼊在向量空间中测量三元组的有效性。 因此本文采用 BILINEAR 模型。 已经存储在 KB 中的三元组应该具有更⾼的有效性,然后设计了基于边界的margin-based ranking函数来学习嵌⼊。在这个嵌入过程之后,可以获得两个 KB 的每个实体(以及关系)的向量表示。

  KB 检索:将 WordNet 同义词集和 NELL 实体视为要从 KB 中检索的知识。对于 WordNet,给定⼀个段落或疑问词,将其同义词集作为候选 KB 实体返回。 对于 NELL,⾸先从给定的段落和问题 中识别命名实体,通过字符串匹配将识别出的提及项链接到 NELL 实体,然后收集相应的 NELL 概念作为候选。 同⼀实体名称内的词和同⼀词内的子词将共享相同的检索概念,例 如,“Coca”和“Cola”都将检索到“company”。

  优点:以前利⽤额外知识进行MRC 的尝试通常遵循检索然后编码的方式,换⽽⾔之,他们⾸先从知识库中检索相关知识,并且只有检索到的知识(与阅读⽂本在本地相关)才会被编码和集成用于 MRC。相比之下,本⽂的方法⾸先在考虑整个知识库(或⾄少⾜够⼤的知识库)的情况下学习知识库概念的嵌⼊。然后为 MRC 检索和整合学习到的嵌⼊,因此它们不仅与阅读⽂本局部相关,⽽且与整个 KB 全局相关。这些知识信息量更⼤,对 MRC 可能更有用。此外,本⽂提供了⼀种能同时集成来⾃多个知识库知识的方法。

3   实验

3.1  数据集

    在本⽂中使用了两个基准:ReCoRD 和 SQuAD1.1。 ReCoRD是⼀个需要常识推理的⼤规模 MRC 数据集。它由从 CNN 和 《每⽇邮报》新闻⽂章中收集的段落-问题-答案元组组成,这可以看作是⼀个提取性的 MRC 任务,设计的数据收集过程会产⽣需要外部知识和推理的问题。它还过滤掉了可以简单地通过模式匹配回答的问题,对当前的 MRC 系统提出了进⼀步的挑战SQuAD1.1 是⼀个众所周知的提取式MRC 数据集,它由维基百科文章创建的问题组成,每个问题的答案是相应段落的跨度。

3.2  实验设置

    数据预处理: 

    1. ⾸先准备预训练的 KB 嵌⼊。

    2. 然后从两个知识库中检索知识。对于 WordNet,使⽤ BERT 中内置的 BasicTokenizer 来标记⽂本,并使⽤ NLTK查找每个单词的同义词集。对于 NELL,将实体提及链接到整个知识库,并将子集中的相关概念作为候选知识库概念返回。

    3. 最后使用 BERT 内置的 FullTokenizer 将单词分割成词条。最大问题长度设置为 64。超过此长度的问题将被截断。

   比较设置:KT-NETWordNet、KT-NETNELL 和 KT-NETBOTH是分别结合来自 WordNet、NELL 和这两个知识库的知识。 以 BERT 作为直接基线,只使用了 BERT 编码层和输出层,不会引⼊任何知识。除了 BERT,作者进⼀步将每个数据集上排名靠前的系统作为额外的基线。

  训练细节 : 对于 KT-NET(以及 BERT)的三个设置,使用了Google4 官方发布的预训练模型初始化 BERT 编码层的参数。凭经验发现cased, large模型在两个数据集上都表现地最好,因此在整个实验中,除非另有说明,否则默认使用此设置。

3.3  结果

     在 ReCoRD 和 SQuAD1.1 上,与 BERT 和排行榜上top的单⼀模型进行比较,结果分别在表 2 和表 3 中给出。

在 ReCoRD上(表 2): DCReader+BERT 是提交之前的最好结果;BERTBASE 是具有基本设置的 BERT;DocQA 和 SAN是之前两个最先进的 MRC 模型;在 DocQA 中进⼀步使用了预训练的 ELMo。

    在 SQuAD6 上(表 3): BERT+TriviaQA 是⾕歌官方提交的最佳模型;WD、nlnet 和MARS 是三个尚未公开的模型; QANet 是⼀个性能良好的 MRC 模型,后来由 Google Brain & CMU 重新实现和提交。

      Dev集的结果表明 (i) KT-NET 始终优于 BERT(它本身已经超过所有其他基线),⽆论使⽤哪个 KB在这两个数据集上,最好的 KT-NET 模型在 ReCoRD 上的 EM/F1 比 BERT 提⾼了 1.38/1.45,在 SQuAD1.1 上的 EM/F1 提⾼了 0.74/0.46。 (ii) 两个知识库都能够改进 MRC 的 BERT,但最佳设置因数据集⽽异。Test集的结果进⼀步证明了此发方法的优越性。它在 ReCoRD 上以 +2.52 EM/+2.78 F1 显着优于排行榜上以前的模型,⽽在 SQuAD1.1 上,虽然改进的空间很小,但它仍然比以前最好的单⼀模型获得了 +0.86 EM/+0.60 F1 的增益。

4   总结

本⽂介绍了⽤于 MRC 的 KT-NET模型,它利⽤知识库中的结构化知识增强了 BERT,并结合了两者的优点。 作者使用了两个知识库:WordNet 和 NELL,学习两个 KB 的嵌⼊,从中选择所需的嵌⼊,并将所选嵌⼊与 BERT 隐藏状态融合,从而实现上下⽂和知识感知预测。此模型与以前的方法相比取得了显著的改进,成为在ReCoRD 和 SQuAD1.1 基准上最好的单⼀模型。 本文证明了利用KB 的知识进⼀步增强LM 的可行性,这表明了未来研究的潜在方向。

 

 

论文地址:https://www.aclweb.org/anthology/P19-1226.pdf

代码地址:http://github.com/paddlepaddle/models/tree/develop/PaddleNLP/Research/ACL2019-KTNET

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

你可能感兴趣的文章
Git恢复之前版本的两种方法reset、revert(图文详解)
查看>>
Maven打包的三种方式
查看>>
电商场景:并发扣库存,怎么保证不超卖又不影响并发性能
查看>>
分布式事务处理方式总结
查看>>
延迟队列有哪些实现方案?说说你的看法
查看>>
厉害了!我们老大半小时把我的springboot项目并发提升几倍
查看>>
Spring 中Bean 的生命周期
查看>>
为什么要用枚举实现单例模式(避免反射、序列化问题)
查看>>
微服务架构下的分布式限流方案思考
查看>>
全网最详细的一篇SpringCloud总结
查看>>
消息中间件中的有序消息,其实是排队但是不能插队
查看>>
不知道分布式事务,还想进互联网大厂
查看>>
mysql为什么使用B+树作为索引的结构
查看>>
mysql索引总结(1)-mysql 索引类型以及创建(文章写的不错!!!)
查看>>
聊聊CAS - 面试官最喜欢问的并发编程专题
查看>>
Spring Boot 中使用一个注解轻松将 List 转换为 Excel 下载
查看>>
高并发环境下,先操作数据库还是先操作缓存?
查看>>
MySQL Explain详解
查看>>
一直搞不清楚什么是读写分离,主从复制的原理,今天总算搞懂了
查看>>
消息队列 mq 必会面试题
查看>>