1、KTNet架构图
KTNet利用知识库(Knowledge bases,KB)中的附加知识来改进预训练的LM。模型的目的是充分利用深层次的LM所覆盖的的语言规则和KB所产生的高质量知识来实现更好的机器阅读理解。
作者使用了两个KB:(1)WordNet,用于记录单词之间的词汇关系。(2)NELL,存储关于实体的依赖。通过这样的KB embedding,我们可以:(1)整合不仅与阅读文本相关的知识,还可以整合与整个知识库有关的全局知识。(2)可以同时轻松地合并多个知识库。
由上图所示,给定Question和Passage,KTNet首先检索潜在相关的KB embedding,并将其编码在知识存储器中。然后它以此采用
(1)BERT编码层来为阅读文本计算深层的context-aware representation。
(2)Knowledeg Intergration Layer,用于从存储器中选取所需的KB embedding,并将其与BERT表示相集成。
(3)一个self-matching layer用于融合BERT和KB表示,从而实现它们之间的丰富交互。
(4)Output Layer来预测最终的答案
通过这种方式,可以利用精选的知识来来丰富BERT,结合两者的有点,并进行knowledge-aware的预测。
作者通过KTNet研究并论证了通过丰富的MRC知识来增强预训练的LM的可行性。为以后的研究指明了一个潜在的方向。
2、模型具体架构
KTNet由四个主要的部分构成:
(1)BERT Encoding Layer
用于计算问题和段落的深层上下文感知表示
(2)Knowledge Integration Layer
这个知识整合层采用注意力机制来选择最相关的知识库嵌入,并将其与BERT表示相集成
(3)Self-Matching Layer
使BERT和KB表示进一步进行丰富的交互
(4)Output Layer
预测最终答案的输出层
2.1、BERT Encoding Layer
这一层使用BERT编码器对passage和question进行建模。它以输入段落P和问题Q作为输入,并为每个token计算context-aware representation。
给定段落 P P P= { p i } i = 1 m \{p_i\}^m_{i=1} {
pi}i=1m和问题 Q Q Q= { q i } j = 1 n \{q_i\}^n_{j=1} {
qi}j=1n,首先将它们打包成长度为m+n+3的单个序列,如下所示:
其中 ⟨ \langle ⟨SEP ⟩ \rangle ⟩是分隔Q和P的token, ⟨ \langle ⟨CLS ⟩ \rangle ⟩是用于分类的token,对于 S S S中的每个 s i s_i si,将其输入表示构造为:
h i 0 = s i t o k + s i p o s + s i s e g h_i^0 = s_i^{tok} + s_i^{pos} + s_i^{seg} hi0=sitok+sipos+siseg
其中 s i t o k s_i^{tok} sitok, s i p o s s_i^{pos} sipos, s i s e g s_i^{seg} siseg分别是 s i s_i si的token embedding,position embedding和segment embedding。 Q Q Q中的token共享一个segment embedding q s e g q^{seg} qseg, P P P中的token共享一个segment embedding p s e g p^{seg} pseg。将这样的输入表示送入L个连续的Transformer 编码块中,如下所示:
最终隐藏状态 { h i l } i = 1 m + n + 3 ∈ R d 1 \{h^l_i\}^{m+n+3}_{i=1}\in\mathbb{R^{d_1}} {
hil}i=1m+n+3∈Rd1作为这一层的输出。
2.2、Knowledge Integration Layer
这一层旨在将知识进一步集成在BERT中,