知识库问答通常存在一个问题,就是由于知识库不充分导致在一定的推理范围内无法找到相应的答案,因此,可以通过引入额外非结构化文本做辅助增强。本文提出一种开放领域的知识库和文本问答方法。
开放领域的问答设计由原来的流水线模式到以深度学习为主的端到端模式,现如今大多数的以神经网络为主的问答均单独从知识库或者文本中抽取答案。本文,我们发现一个更有实在意义的尝试,即结合知识库和文本一起做问答,当知识库不充分时候,结合文本做问答最为合适。基于最新的图表征技术,我们提出一种新的模型叫做GRAFT-Net,用于从问题有关的子图以及链接的文本中抽取答案。我们为此构建一个评测任务数据,在该数据集我们发现,当同时考虑知识库和文本时,问答的效果达到最好。
在问答中,有一些问题可以从文本(Text)中获得答案,有一些问题则可以从知识库(Knowledge Base,KB)中获得答案,因此一个可以想到的问题是,如何将文本和知识库结合起来,因此本文更加关注的场景是,同时使用大规模的知识库和文本进行问答会比单独使用其中一个更加有效。 将文本和知识库结合起来有两种方法,包括:
late fusion(迟融合):即分别使用最好的模型对文本和知识库进行问答,然后启发式地将两个答案进行融合。通常这种想法比较简单,且可能会陷入局部最优; early fusion(早融合):即使用单独的模型进行训练,但可以将知识库和文本提前进行结合。这种方法可以灵活地将不同资源结合起来。
因此GRAFT-Net(Graphs of Relations Among Facts and Text Networks)模型主要致力于early fusion。大体思路是:
如何将文本和知识库结合起来? 通过实体链接实现知识库中的实体与文本进行关联。如果知识库中的实体在某一个文本中出现,则该实体与该文本可以相互连接。如何表示图? 这个图既包含原有的实体结点,又包含连接的文本结点,因此属于异构图,本文提出一种异构更新规则来学习异构表示,例如如图1所示。在单次传播时如何控制更新? 当给定一个问句以及其对应的种子实体时(即主题词),如何在更新图过程中,如何保证只更新在图中以及连接的文本中的种子实体以及邻接实体,本文提出一种异构更新规则(heterogeneous update rule)和有向传播方法(directed propagation method) 。任务描述:给定一个问句和对应的主题词(种子实体),根据主题词获得对应的子图,以及实体与文档链接后构成异构图,对异构图中的每个实体以及文档内的名词进行二分类,选择超过阈值的实体或名词。因此本文将KBQA视为对图中各个实体结点的二分类问题。
定义问句 q q q 以及其对应的所有答案 { a } q \{a\}_q {a}q ,因此对于问句 q q q 对应的子图 V q \mathcal{V}_q Vq 中的各个实体 v ∈ V q v\in\mathcal{V}_q v∈Vq,其标签满足(1)当 v ∈ { a } q v\in\{a\}_q v∈{a}q 时, y v = 1 y_v=1 yv=1,否则(2)当 v ∈ ( V q − { a } q ) v\in(\mathcal{V}_q - \{a\}_q) v∈(Vq−{a}q) 时, y v = 0 y_v=0 yv=0 。因此可以将本任务视为对每个结点的二分类,在传统的图表征任务中,结点表征通常为“聚集-应用-发散”的过程,即先将周围的实体的信息聚集在某个实体上使得该实体能够拥有周围实体的信息并进行相应的迭代计算,其次通过梯度向外扩散。
传统的图表征公式可表示为:
h v l = ϕ ( h v l − 1 , ∑ v ′ ∈ N r ( v ) h v ′ l − 1 ) h_v^{l} = \phi(h_v^{l-1},\sum_{v'\in N_r(v)}h_{v'}^{l-1}) hvl=ϕ(hvl−1,v′∈Nr(v)∑hv′l−1)
其中 N r ( v ) N_r(v) Nr(v) 表示实体 v v v 的关于关系边 r r r 的邻接实体, ϕ \phi ϕ 则为前馈神经网络。
不同于传统的图表征方法,本文不同点在于:(1)我们的图包含异构结点、(2)我们希望在迭代训练时是基于问句进行的。
实体初始化:定义每个实体的向量为 x v x_v xv,其可以使用知识表示学习(Knowledge Base Embedding)进行预训练。网络结点初始化则表示为 h v ( 0 ) = x v h_v^{(0)} = x_v hv(0)=xv 。
文档初始化:对于文档结点,需要对整个文档进行表示,因此定义 H d ( l ) ∈ R ∣ d ∣ × n H_d^{(l)}\in\mathcal{R}^{|d|\times n} Hd(l)∈R∣d∣×n 表示第 l l l 次迭代时文档的表征向量,初始化可使用一层长短期记忆神经网络:
H d ( 0 ) = L S T M ( w 1 , w 2 , . . . ) H_d^{(0)} = LSTM(w_1,w_2,...) Hd(0)=LSTM(w1,w2,...)
为了便于表示,我们定义 H d , p ( l ) H_{d,p}^{(l)} Hd,p(l) 表示第 l l l 次迭代计算时,文档 d d d 的第 p p p 个单词(token)的输出表征向量。
网络中包含原有的实体结点以及链接的文档结点,如何表示异构图是图表征任务中的一个研究点,本文希望能够充分学习到异构图中的信息。
实体表征: 在第 l l l 轮迭代更新时,实体结点表征 h v ( l ) h_v^{(l)} hv(l) 可综合为如下公式,从上往下其包含四个部分信息:
(1)来自于上一迭代时计算得到的实体表征 h v ( l − 1 ) h_v^{(l-1)} hv(l−1);(2)来自于上一迭代时计算得到的问句表征 h q ( l − 1 ) h_q^{(l-1)} hq(l−1);(3)来自当前实体 v v v 有关所有关系 r r r 的邻接实体的表征信息 h v ′ ( l − 1 ) h_{v'}^{(l-1)} hv′(l−1),值得注意的是,其实两个求和,外层的求和表示对所有该实体所相连边的关系,内层的求和表示在某一关系下所有的相邻的实体,权重 α r v ′ \alpha_r^{v'} αrv′ 则表示邻接的实体与当前实体的权重, ψ r \psi_r ψr 表示线性函数,定义为:其中 p r v ′ ( l − 1 ) pr_{v'}^{(l-1)} prv′(l−1) 表示第 l l l 次迭代时每个实体自身的得分,当 l = 0 l=0 l=0 时则表示初始时每个实体的pagerank得分。
(4)上一迭代中文档的表征,特别说明的是,只取与文档相连接的实体名词对应的表征信息 H d , p ( l − 1 ) H_{d,p}^{(l-1)} Hd,p(l−1) ,其中 ( d , p ) ∈ M ( v ) (d,p)\in M(v) (d,p)∈M(v) 表示文档 d d d 的第 p p p 个单词(token)是与当前实体 v v v 链接的。我们可以发现,在对实体进行表示运算时,除了与传统邻接实体结点进行聚合运算之外,与传统方法主要有两个不同点: (1)融入问句表征信息,说明不同问句的条件下,虽然是同一个实体但会有不同的表示形态; (2)通过最初构建子图时,使用的pagerank得分,来控制后期迭代过程中的传播问题,当第 l = 0 l=0 l=0 层时,只对pagerank得分不为0的进行梯度传播; (3)融入文档信息,但不同的是,并不全将整个文档信息聚合过来,而是只取文档中与当前实体相链接的名词,这也进一步保证我们要表征的信息时来自特定文档中的实体,而不会使得所有实体链接的同一个文档时都取相同的文档表征;
文档表征: 对于文档结点,同样也是只对文档中各个单词分别进行更新,公式表示为:
H ~ d , p ( l ) = F F N ( H d , p ( l − 1 ) , ∑ v ∈ L ( d , p ) h v ( l − 1 ) ) \tilde{H}_{d,p}^{(l)} = FFN(H_{d,p}^{(l-1)},\sum_{v\in L(d,p)}h_v^{(l-1)}) H~d,p(l)=FFN(Hd,p(l−1),v∈L(d,p)∑hv(l−1))
直观的意思是当前文档 d d d 中第 p p p 个单词(token)的表征更新取决于该词在上一轮的表征信息以及上一迭代中与该词链接的所有实体结点的表征信息的和。
最后对于当前的文档,所有词都会做一次更新,然后再次通过LSTM进行表征:
H d ( l ) = L S T M ( H ~ d , p ( l ) ) H_d^{(l)} = LSTM(\tilde{H}_{d,p}^{(l)}) Hd(l)=LSTM(H~d,p(l))
问句表征 在实体表征中所提及的第(3)个表征信息中,如何融入问句呢?首先初始化是使用一层LSTM对问句进行特征提取,记做:
h q ( 0 ) = L S T M ( w 1 q , . . . , w ∣ q ∣ q ) ∣ q ∣ ∈ R n h_q^{(0)} = LSTM(w_1^q,...,w_{|q|}^{q})_{|q|}\in\mathcal{R}^{n} hq(0)=LSTM(w1q,...,w∣q∣q)∣q∣∈Rn
后续的每一次迭代过程中,则不再使用LSTM,而是只对问句中的主题词进行迭代表示:
h q ( l ) = F F N ( ∑ v ∈ S q h v ( l ) ) h_q^{(l)} = FFN(\sum_{v\in S_q}h_v^{(l)}) hq(l)=FFN(v∈Sq∑hv(l))
其中 F F N FFN FFN 为前馈神经网络。
另外上面所提及的权重系数,则可以表示为:
α r v ′ = s o f t m a x ( x r T h q ( l − 1 ) ) \alpha_r^{v'} = softmax(x_r^Th_q^{(l-1)}) αrv′=softmax(xrThq(l−1))
即表示当前问句与关系表征 x r x_r xr 之间的相似度的权重。
上述所提及的实体表征更新(Entity Update)和文档表征更新(Text Update)可用如下图表示:
控制传播
为什么要设置控制传播机制呢,主要是在异构更新过程中,要确保只在当前问句的主题词以及相应的邻接实体上完成聚合,而不会让其他实体受到影响,因此本文通过pagerank确保控制。
初始化时,需要对原来的知识库根据问句中的主题词来缩小候选实体的规模,一些其他工作是直接将主题词相关联的多跳范围内的实体构建为一个子图,本文则利用了pagerank机制,将实体作为互联网中的网页,边则表示网页之间的超链接,因此可以得到得分,即其属于问句主题词的答案的得分:
其中 p r v ( 0 ) pr_v^{(0)} prv(0) 表示实体 v v v 可以被作为答案的得分,初始时则为平均数, ∣ S q ∣ |S_q| ∣Sq∣ 表示主题词的个数,在后面的更新中,pagerank得分也会进行加权更新。
答案选择
由于是一个图结点的二分类问题,因此每个结点表示向量通过全连接层映射到二分类上:
P r ( v ∈ { a } q ∣ G q , q ) = σ ( w T h v L + b ) Pr(v\in\{a\}_q|\mathcal{G}_q,q) = \sigma(w^Th_v^{L}+b) Pr(v∈{a}q∣Gq,q)=σ(wThvL+b)
因此需要根据阈值,对每个候选的答案实体结点被预测为1的概率进行筛选。