An Yang, Quan Wang, Jing Liu, Kai Liu, Yajuan Lyu, Hua Wu, Qiaoqiao She and Sujian Li; Key Laboratory of Computational Linguistics, Peking University, MOE, China, Baidu Inc., Beijing, China; Enhancing Pre-Trained Language Representations with Rich Knowledge for Machine Reading Comprehension
论文原文:https://www.aclweb.org/anthology/P19-1226.pdf
源码:http://github.com/paddlepaddle/models/tree/develop/PaddleNLP/Research/ACL2019-KTNET(official)
文章目录
1 introduction
1.1 background
当前机器阅读理解问题已经取得了较好的成效,而这些模型往往依赖于预训练模型:也就是首先在众多未标记文本上进行预训练,以先得到能够较好地捕捉复杂语言的模型,再进一步地利用于机器阅读理解问题中。在这里 BERT 模型凭借多层 transformer 在众多预训练模型中表现较好。
但是注意到,在众多阅读理解问题中,整体模型不止需要 捕捉语义信息 / 理解语言的能力 ,同时还需要 足够的背景知识以支持问题推理
举个例子:
注意上面的例子,此时得到正确的答案同时需要背景知识来自 wordnet 的背景知识:
- Trump is the person who leads US
- sanctions has a common hypernym with ban
这些知识在文本中没有体现,可能是由于此时的文本默认大家已经有了类似的常识,人类在进行测试的时候可以轻松过地依赖这样的常识给出答案。但是机器没有,它只能依赖给定的文本去作推断(因为此时的预训练模型有的仅仅是 → 捕捉当前给定的文本的语义信息 的能力),这也就是 BERT 难以得到正确答案的原因
也就是说,此时不止需要整体的关于文本的阅读 + 问题的理解 = 对给定的文本的语义的捕捉,如果此时机器模型可以像人一样,在做阅读理解题目的时候同时已经具有了一定的自己的相关的背景知识,则理应可以在各类阅读理解问题上取得更好的表现(个人理解就类似gre RC的 assumption 题,选项都是在阅读文本 + 题目中没有出现的内容,此时需要的是个人的背景知识配合对文本的逻辑理解来判断哪一些选项确实是文本作者默认已经成立的前提假设)
则此时需要考虑的问题转化为了 → 如何进一步改进机器阅读理解所应用的预训练模型?使得它在学习如何捕捉已经给定文本的语义信息的同时(也就是阅读给定文本 + 阅读题目并提取信息的能力,BERT 已经较好地实现了)也像人一样具备了一定的和当前文章+问题相关的基础背景知识(本文的目标)
1.2 this work
综上,为解决上述问题并进一步提升机器阅读理解模型的效果,本文从其所依赖的预训练模型部分入手,提出了同时融合了语言-知识融合模型(KT-NET;Knowledge and Text fusion NET),作为较之 BERT 更为优秀的预训练模型以辅助后续的机器阅读理解问题的解决。
这里提供给预训练模型学习用的外部知识包括:
- WordNet:包含了词汇之间的词义关系信息( lexical relations between words)
- NELL:包含了多种实体信息( beliefs about entities)
注意在具体进行融合的时候采用的不是符号事实(symbolic facts),而是 KB embedding 的方法(具体在 2 会解释),优势如下:
- 此时融合的知识不只是和阅读文本相关,同时和整体 KB 的信息是相关的
- 可以更好地帮助同时融入多个 KB 进入预训练模型
2 Knowledge Embedding and Retrieval 针对背景知识的嵌入和检索
可以看到前面重点提到了一个东西叫 KB embedding,这里来解释一下它的相关内容
注意到此时我们存在两个需求,一个是前面提到的 KB embedding,也就是说需要先将背景知识 encode 为 KB embedding 的形式,再尝试将它融入到预训练模型中;另一个是 Retrieval 检索,注意到针对每一个文章 + 问题,我不能让机器为了这一个题学完世界上所有的背景知识,也就是我需要检索什么样的背景知识和当前问题+文章是相关的,在让预训练模型去学习
2.1 KB embedding 背景知识嵌入
KB embedding 可以理解为背景知识的 embedding,这里用到了两个 KB(也就是背景知识集合): WordNet 和 NELL,每一个 KB 都储存为三元组的形式: ( s u b j e c t , r e l a t i o n , o b j e c t ) (subject, relation, object) (subject,relation,object)这里 WordNet 主要是词义方面的(比如 organism, hypernym of, animal)而 NELL 是实体关系方面的(比如 Coca Cola, headquartered in, Atlanta)或者对于一个概念的解释(比如 Coca Cola, is a, company)
但是这里并不是直接采用符号事实的方式进行信息的存储,而是考虑将它们编码到一个连续的向量空间中,也就是说给定一个三元组 ( s , r , o ) (s, r, o) (s,r,o),此时我想要学习到 subject s,relation r,object o 三者的向量表示。这样做的好处是我就可以在向量空间内来衡量这个三元组的可信度(validity)
这里的具体实现采用的是 BILINEAR model(也就是双线性模型),利用双线性函数来进行 validity 的衡量: f ( s , r , o ) = s T d i a g ( r ) o f(s,r,o) = s^Tdiag(r)o f(s,r,o)=sTdiag(r)o,注意这里的 s,r,o 分别为 subject,relation,object 的向量表示且 ∈ R d 2 \in R^{d_2} ∈Rd2, d i a g ( r ) diag(r) diag(r) 是一个对角线由 r 给出的对角矩阵
认为已经存储在 KB 中的三元组是具有高 validity 的,则此时可以利用 KB 提供的信息学到三元组的向量表示,也就是最终通过学习可以得到两个 KB 中各个实体 + 关系的各自的向量表示
这里的具体训练原文参考的是Yang et al., 2015 的思路,该论文的源码戳这里(pytorch)
2.2 KB Concepts Retrieval 背景知识概念检索
此时还需要对所有两个 KB 提供的背景知识进行检索,以筛选出解决当前文章 + 问题的阅读理解问题所需要的背景知识再让预训练模型去学
针对 WordNet,此时给定问题和文章段落,将其中词汇的同义词集作为概念返回。也就是说这里只是用到了 WordNet 的同义词集,WordNet 本身就是标识各个词之间语义关系的 KB
针对 KEEL,需要首先从给定的问题和文章段落中识别实体(因为 KEEL 是指定实体之间关系的 KB),再直接用字符串匹配的方式去 KEEL 中找这些实体,并把所有和这些实体相关的其他实体也提取出来。注意这里提取到的 subword 也会共享检索结果,比如只是提取到了 coca,但是它本身可以作为 coca-cola 的一部分从 KEEL 中链接到 company 这个实体并提取出来。
经过上述的步骤,我们可以从两个 KB 中提取出和文章和问题相关的 concept 的集合。再结合前面对 KB 中所有 concept 的向量编码,此时可以得到一个候选 concept 的向量集合且每一个向量 ∈ R d 2 \in R^{d_2} ∈Rd2
这个候选集在后续模型中会用到。
3 Our Approach 模型介绍
3.1 overview
先来看看整体模型:
此时的整体目标还是给定带有 m 个 token 的文本 P,n 个 token 的问题 Q,最后输出文本中的某一段连续序列(contiguous span in the passage)作为答案 A
整体主要包括四个模块:
- BERT encoding layer → 基于 BERT 的编码:和前序研究相同,利用预训练的 BERT 模型来捕捉阅读文本 + 问题的上下文语义信息并进行 embedding
- knowledge integration layer → 背景知识整合:也就是从背景知识记忆中选择相关的可能需要的背景知识(以 K