赞
踩
这篇文章于2017年发表在ACL上,个人认为是在MCCNNs这个模型的基础上所作的增量式的工作,两者结构非常相似。
本文的任务依然是给定一个问题,模型根据知识库生成一组答案。这篇文章也是属于IR-based的范畴,根据主题词从知识库中提取出topic graph,然后根据问题和答案各自的特征进行相似度匹配来得到最终的答案。
本文提出的模型叫做Cross-Attention,也就是将attention机制引入到问题-答案的匹配中。并且,本文还将全局的KB信息考虑进来,这个做法也对模型的效果起到了提升作用。总之,本文的contributions有如下两点:
对于候选答案的生成,本文采取的做法与MCCNNs一致,使用Freebase Search API,对于top1结果生成一张2-hop的候选答案图。候选答案实体集合记为 C q C^{q} Cq
接下来就是模型的主体部分。特征的提取依然是分为问题、答案两个部分,然后通过attention机制来计算相似度得分。
首先来看问题的编码。对于问题 q = ( x 1 , x 2 , … , x n ) q\ =\ (x_1,x_2,\dots,x_n) q = (x1,x2,…,xn),作者首先用一个可训练的embedding层 E w ∈ R d × V E_{w} \in R^{d \times V} Ew∈Rd×V来获取word embedding。接下来,与MCCNNs不同的是,作者采用了双向LSTM对问题进行特征提取,那么对于每一时刻 t t t的问题token,我们能得到 h t → \overrightarrow{h_{t}} ht 和 h t ← \overleftarrow{h_{t}} ht ,concatenate起来作为最终表示 [ h t → ; h t ← ] [\overrightarrow{h_{t}};\overleftarrow{h_{t}}] [ht ;ht ]。
对于答案的特征学习,本文依然是考虑几个方面:答案entity a e a_{e} ae,答案relation a r a_{r} ar,答案type a t a_{t} at,答案context a c a_{c} ac。接下来,作者没有人工构建这些特征,而是针对每一个aspect分别用一个可训练的参数矩阵来学习特征,得到的embedding分别记为 e e , e r , e t , e c e_{e},e_{r},e_{t},e_{c} ee,er,et,ec。但是有一个细节,context是有多个KB resources所共同组成的 ( e c 1 , e c 2 , … , e c m ) (e_{c_1},e_{c_2},\dots,e_{c_m}) (ec1,ec2,…,ecm),因此作者对所有resources取了个平均得到 e e = 1 m ∑ j = 1 m e c j e_{e}\ =\ \frac{1}{m} \sum_{j=1}^{m}e_{c_{j}} ee = m1∑j=1mecj
得到问题和答案的特征以后,接下来就是cross-attention的部分。从cross这个词也能看得出来本文的attention计算是双向的,分为A2Q和Q2A两个反向。
对于答案的不同aspect,它应该对应问题中不同的单词。A2Q attention的计算公式如下:
w
i
j
=
f
(
W
[
h
j
;
e
i
]
+
b
)
α
i
j
=
e
w
i
j
∑
j
′
e
w
i
j
′
w_{ij}\ =\ f(W[h_{j};e_{i}]+b) \\ \alpha_{ij}\ =\ \frac{e^{w_{ij}}}{\sum_{j'}e^{w_{ij'}}}
wij = f(W[hj;ei]+b)αij = ∑j′ewij′ewij
然后用attention weight来计算query的加权和
q
i
=
∑
j
=
1
n
α
i
j
h
j
q_{i}\ =\ \sum_{j=1}^{n}\alpha_{ij}h_j
qi = j=1∑nαijhj
然后作者定义第
i
i
i个answer aspect与问题之间的相似度得分:
S
(
q
,
e
i
)
=
h
(
q
i
,
e
i
)
=
q
i
T
e
i
S(q,e_i)\ =\ h(q_i,e_i)\ =\ q^T_ie_{i}
S(q,ei) = h(qi,ei) = qiTei
对于不同的问题,它们也应该侧重于不同的answer aspect,Q2A的计算用到了上面所计算的相似度的得分。
q
ˉ
=
1
n
∑
j
=
1
n
h
j
w
e
i
=
f
(
W
[
q
ˉ
;
e
i
]
+
b
)
β
e
i
=
e
w
e
i
∑
j
e
w
e
j
\bar{q}\ =\ \frac{1}{n}\sum_{j=1}^{n}h_{j}\\ w_{e_{i}}\ =\ f(W[\bar{q};e_{i}]+b)\\ \beta_{e_{i}}\ =\ \frac{e^{w_{e_{i}}}}{\sum_{j}e^{w_{e_{j}}}}\\
qˉ = n1j=1∑nhjwei = f(W[qˉ;ei]+b)βei = ∑jewejewei
然后用attention weight来计算每个问题与不同answer aspect相似度得分的加权和:
S
(
q
,
a
)
=
∑
e
i
∈
{
e
e
,
e
r
,
e
t
,
e
c
}
β
e
i
S
(
q
,
e
i
)
S(q,a)\ =\ \sum_{e_i \in \{e_{e},e_{r}, e_{t}, e_{c}\}} \beta_{e_{i}}S(q,e_i)
S(q,a) = ei∈{ee,er,et,ec}∑βeiS(q,ei)
那么最终得到的这个
S
(
q
,
a
)
S(q,a)
S(q,a)就是本文所提出的模型得到的最终的问题-答案之间的相似得分。可以看到这里的cross-attention并不是两个方向互相独立,而是递进的关系,先通过A2Q计算出问题与每个answer aspect之间的相似度,然后再用Q2A计算总的问题-答案相似度。
本文所采取的训练方式与MCCNNs完全相同,先负采样,然后用Hinge Loss作为损失函数。inference的过程也和MCCNNs相同。
接下来是本文的另一个创新点:补充全局知识。具体的做法是使用TransE模型来做Multi-task training,KB-QA和TransE的训练交替进行。由于Freebase实在太大,肯定不能把所有知识都考虑进来,因此作者先忽略掉所有完全不相关的信息,然后提取出问题中的所有实体,对每个实体在知识库中提取2-hop的信息来进行训练。训练的方式仍然是negative sampling + Hinge loss。
在WebQuestions上的实验结果如下:
消融实验:
实验数据表明A2Q 的attention和Global Knowledge对模型效果的提升相对比较明显。
作者也把attention进行了可视化,我觉得这个例子非常好,两个方向的attention都很好的捕捉到了正确的信息。比如where对应的是answer type, Carpathian对应answer entity, Carpathian mountain range是answer context的主体部分。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。