基于迭代序列匹配模型的多跳知识库问答
Multi-hop knowledge base question answering with an iterative sequence matching model
一、INTRODUCTION
- 本文提出了一种迭代序列匹配模型来解决这些局限性,并通过实例验证了该方法的有效性。
- 我们建议迭代地增长最终会导致候选答案的候选关系路径,在每一次迭代中,我们修剪掉不太可能导致正确答案的分支。
- 我们提出了一种新的增量序列匹配模型,无需重新访问关系路径中的早期关系,即可高效地计算序列匹配分数。
- 我们提出一种机制来自动确定所需的跳数。我们假设导致正确答案的关系序列在训练期间是已知的。相比之下,我们的方法不需要这些信息进行训练,但我们可以比他们的方法做得更好。
- 我们的方法包括三个模块:迭代路径增长、增量序列匹配和终止检查。这三个模块共同迭代考虑1跳、2跳等关系路径,并将这些路径与问题进行迭代匹配,从而对这些路径进行排序。该方法自动检测何时终止迭代。
二、RELATED WORK
-
KBQA通常有两种工作:基于语义解析和基于嵌入。
1. 基于语义解析:
将问题映射到逻辑形式,一旦将问题转换为逻辑形式,就可以立即从知识库中检索答案。2. 基于嵌入式:
首先标识主题实体,从知识库中检索距离主题实体1跳或2跳的实体作为候选答案。–> 对这些候选答案进行排序。
三、OUR METHOD
1. Problem Definition(问题定义)
知识库是一组三胞胎,我们使用 KB = {(E, r, e0)} 代表。对于训练,我们假设我们有一组 (q, a) 对,但我们不知道知识库中的哪条关系路径通向主题实体 e0 in q 中的答案 a 。
2. Method Overview(方法概述)
迭代地增加候选路径,并删除那些不太可能在每次迭代中得到正确答案的路径。同时设计了一种新的增量序列匹配方法来对候选路径进行评分,并帮助检查何时终止迭代。
方法包括三个模块:
(1)迭代路径增长模块, (2)增量序列匹配模块和, (3)终止校验模块。
3. Iterative Path Growth(迭代路径增长)
Candidate path: 设 p = (e0, r1, e1, r2, e2,…, rt, et) 表示具有 t 个关系跳数的候选路径。
Candidate path set: 用 P(t) 表示该候选路径集。注意,每个|P(t)| = K,每个 P∈P(t) 有 t 跳的关系。
Tail Entity: 候选路径的尾部实体(tail ( p ) )是候选路径p中的最后一个实体。
Algorithm 1 Iterative Path Growth
01: Input: KB, question q, topic entity e0, number of hops T
02: Output: P(T)
03: Initialize: P(0)← {(e0)}
04: for t = 1,2, . . . , T do
05: ˜P(t)← ∅
06: for each p ∈ P(t−1)do
07: et−1← tail ( p )
08: for each (e, r, e’) ∈ KB such that e = et−1do
09: p’← p ⊕ (r, e’) ▷ sequence concatenation
10: P(t)←˜P(t)∪ {p’}
11: score and rank elements in˜P(t)
12: P(t)← top-K elements in˜P(t)
工作原理:
从 e0 开始,在第 t 次迭代的时候,识别出 tail( p ) 的所有与之相连的关系,用它们使p增加一跳关系,然后,我们使用序列匹配模块(在下一节中给出)来对其中的路径进行评分和排序,并保持前k位路径形成P(t)。
增量序列匹配模块的目标是为每个候选路径p分配一个分数,以便我们可以对路径p (t)进行排序。分数应该反映路径p与问题q的匹配程度。
通常采用标准的序列匹配模型,如如自然语言推理[10]、释义检测[12]和机器理解[36]中常用的序列匹配模型。
在此论文中的序列匹配模型是增量的。就有之前所相加得到的分数加上最后一次的评分。
整体模型如下:
符号介绍:
在迭代的过程中我们更加关注的是关系(r)与问题(p)之间的匹配,而较为忽略实体(e)。
在第 t 次迭代中,设 p 为来自于 p (t) (需要评分和排序的候选路径集)的一条候选路径,设p (t)为 p 的表示。我们首先使用标准BiLSTM处理Q,得到Q = (
q
1
‾
\overline{q1}
q1,
q
2
‾
\overline{q2}
q2, . .)。(对应于模型中的第1、2行
)
BiLSTM是Bi-directional Long Short-TermMemory的缩写,是由前向LSTM与后向LSTM组合而成。两者在自然语言处理任务中都常被用来建模上下文信息。
·
在我看来,所谓的Bi-LSTM以及Bi-RNN,可以看成是两层神经网络,第一层从左边作为系列的起始输入,在文本处理上可以理解成从句子的开头开始输入,而第二层则是从右边作为系列的起始输入,在文本处理上可以理解成从句子的最后一个词语作为输入,反向做与第一层一样的处理处理。最后对得到的两个结果进行处理。
·
引用自 通俗易懂理解——BiLSTM
接下来,我们计算两组注意力权重,一组跨越Q,另一组跨越P(t)。
注意力权重参数(a set of attention weights)表示当你在时间步处生成输出词,你应该花多少注意力在第个输入词上面。例如分别表示前三个单词对第一个词语的翻译结果具有的影响力。类似的分别表示表示在翻译得到第二个单词时,要分别放多少注意力在前三个单词上。并且前一步翻译的输出也会作为下一步的输入。
·
引自 吴恩达·注意力模型(Attention Model)简记
个人感觉:在此处应该是使用了注意力机制,通过计算最后得到的候选路径集,与最初输入的整个问题的匹配程度进行评分。
可参考:注意力机制
下一步,计算 P(t) 与 Q 的匹配程度,对于Q中的每个单词
q
i
‾
\overline{qi}
qi,我们推导出
P
(
t
)
‾
\overline{P(t)}
P(t)的注意加权和。
然后通过直觉将 qi 与 vit 比较。而为了辅助我们的这种直觉,我们借用了神经机器翻译的一个想法,即在顺序生成目标句时,不要重新翻译源句中的单词。我们定义一个标量值 ai(t) 来记住 qi 在路径 p 中直到第 t 次迭代的匹配程度。具体来说,我们令ai(0) = 0。然后我们定义:
这里的
∑
j
=
1
n
\sum_{j=1 }^n
∑j=1n βi,j 表示与 Q 中其它单词相比,rt 与 qi 的匹配程度如何。
随后定义匹配向量如下:(⊙表示两个向量按元素顺序相乘)
Note that using v1⊙ v2 and (v1− v2) ⊙ (v1− v2) to represent how well
vectors v1 and v2 match has been commonly used in previous work .
(这里的意思不是很理解)
该匹配向量的计算中还含有ai(t-1),表示之前的匹配结果。
已知序列(m1(t),m2(t),. . ,mm(t)),我们使用LSTM来处理序列,然后使用 max pooling(最大池化,这个我只在卷积神经网络里面了解过,不太清楚LSTM里面怎么计算) 来导出单个向量
m
‾
\overline{m}
m(t)(对应于模型第3行
),这一步过程如下:
然后利用这个向量得到 Q 与 P(t) 之间的匹配得分如下:
注:其中向量w和标量b是需要学习的参数
并将 p 的最终分数定义为 γ(t) 与 γ(t−1)、γ(t−2) 等的乘积。
s(t)(·p) 表示候选路径p与问题的完全匹配得分。 s(t)(·p)可以递归定义为:S(0)(·)= 1。对于 p 和 t 的关系,(这里对应模型中的最后一行
)
之后就可以是有上述评分函数对候选路径进行排序,从而选出前K位的路径最后形成P(t)
最后就是终止检查:
直观地说,如果一个候选路径p与整个问题q匹配得很好,那么我们就可以终止迭代。
因为我们之前已经导出了p与q的匹配程度
m
‾
\overline{m}
m(t) ,现在要做的就是将其转化为单个值以便于我们的终止检查。
首先对每个候选路径 p 在第 t 次迭代时的得分 z( p )∈[0,1] 定义如下:
注:向量v和标量c是需要学习的参数
然后取P(t)中所有路径中 z 的最大值。这隐式地利用了最佳匹配候选路径的z(t)( p )。
在模型训练的时候我们会学习参数v和c,在模型预测的时候会将我们最后计算出的
z
‾
\overline{z}
z(t) 与阈值(这个应该是自己定义的)τ比较,确定何时终止迭代。
在最后是损失函数的定义,损失函数是用于在训练中得到我们之前定义的那些需要学习的参数的一个函数,这个现在应该可以先不看。
四、CONCLUSIONS
总结:该方法对候选关系路径进行迭代增长,剔除不相关的路径,并自动检测迭代结束,使候选关系路径排序过程更加有效和准确。