文献阅读笔记-Key-Value Memory Networks for Directly Reading Documents
0-背景
在问答系统中直接从文本中获取答案要难于从KB(knowledge bases),这是由于文本一般都是非结构化的。虽然KB能提高训练的效果,但是KB存在太多的限制,比如设计的scheme不能够支持所有的答案类型,数据量稀少(比如Freebase的信息量远低于Wikipedia)等。即使目前的信息抽取技术能够逐渐提供更加丰富的信息,但是其准确性和可靠性依然不足。虽然说特定领域的KB能够满足一定的要求,但是无法扩大到回答涉及任何话题的一般性问题。
因此,本文Key-Value Memory Networks for Directly Reading Documents通过阅读文档直接回答问题,撇开对于KB的依赖。
1-详情
Kv- MN是基于Memory Network (MemNNs)的改造和扩展。
查询阶段(addressing)是基于key,读取(reading)阶段是基于value。前者是关于question的特征相似度匹配,后者是answer的特征相似度匹配。该模型可以归结为key-value变换模型,在模型求解过程可以使用标准的后向算法和SGD。
1-1 模型介绍
该模型定义了一个划分成大量矩阵槽(slot)的memory。这些slot可以对短/长的上下文进行encode。在测试阶段,输入的question对memory迭代(每一次迭代称为hop)地进行addressing和reading,以查询question对应的信息。每个迭代过程都是从memory中收集积累对于question有用的上下文信息。最后一次的迭代的上下文context信息和最新的一次query联合组成特征向量,从而实现在候选列表(整个实体集合)中预测出结果。
Key-Value MemNN模型结构如下:
memory slots定义:
(
k
1
,
v
1
)
,
(
k
2
,
v
2
)
,
(
k
3
,
v
3
.
.
.
(
k
N
,
v
N
)
(k_1,v_1),(k_2,v_2),(k_3,v_3...(k_N,v_N)
(k1,v1),(k2,v2),(k3,v3...(kN,vN)
question:
x
x
x
memory的addressing和reading由以下3个步骤组成:
(1)Key Hashing
对于question x, 在M个memory选择key至少与x有一个单词相同的N个组成子集(倒排索引),得到memory subset:
(
k
1
,
v
1
)
,
(
k
2
,
v
2
)
,
(
k
3
,
v
3
.
.
.
(
k
N
,
v
N
)
(k_1,v_1),(k_2,v_2),(k_3,v_3...(k_N,v_N)
(k1,v1),(k2,v2),(k3,v3...(kN,vN)
(2)Key Addressing
计算上述选出的每个memory的概率值。
p
i
=
S
o
f
t
m
a
x
(
A
ϕ
X
(
x
)
⋅
A
ϕ
K
(
k
i
)
)
p_{i} = Softmax(A \phi_X(x) \cdot A \phi_K(k_i))
pi=Softmax(AϕX(x)⋅AϕK(ki))
其中
ϕ
X
(
x
)
\phi_X(x)
ϕX(x)和
ϕ
K
\phi_K
ϕK分别是x和key的D维bag-of-word表示,A是一个d×D的embedding matrix。
由上面式子可以看出是联合了question x的特征。
具体的
ϕ
\phi
ϕ特征映射函数,后续介绍。
(3)Value Reading
result o是memory中的value在上一步的概率下加权求和。
o
=
∑
i
p
i
A
ϕ
V
(
v
i
)
o= \sum_i p_iA \phi_V(v_i)
o=∑ipiAϕV(vi)
把embedding之后的question 记作q,则
q
=
A
ϕ
X
(
x
)
q=A\phi_X(x)
q=AϕX(x),即paper中提到的query。
key Addressing和key Value是可以多次迭代的:
对query进行更新:
q
i
+
1
=
R
i
(
q
i
+
o
i
)
q_{i+1}=R_i(q_i+o_i)
qi+1=Ri(qi+oi)
注意:每个hop的R都是不同的。
同时基于更新后的query对key addressing的结果进行更新
p
i
=
S
o
f
t
m
a
x
(
q
j
+
1
T
A
ϕ
K
(
k
i
)
)
p_i=Softmax(q_{j+1}^TA\phi_K(k_i))
pi=Softmax(qj+1TAϕK(ki))
通过迭代Key addressing与Value reading过程实现memory access process。
answering 作答:
最后第 H hop后得到
q
H
+
1
q_H+1
qH+1, 计算所有可能答案的分数:
a
^
=
a
r
g
m
a
x
S
o
f
t
m
a
x
(
q
H
+
1
T
B
ϕ
Y
(
y
i
)
)
\hat a = argmax Softmax(q_{H+1}^TB\phi_Y(y_i))
a^=argmaxSoftmax(qH+1TBϕY(yi))
这里 y i y_i yi是答案,将答案映射到embedding空间,与最后一次的q作softmax得到每一个答案的概率,取最大的那个作为输出。
1-2 Key-Value memory的选取
KB triple
key考虑为subject+relation,value为object,逆关系也考虑进去:
“Blade Runner directed_by Ridley Scott” v.s. “Ridley Scott !directed_by Blade Runner”。
使得问答方式更全面。
标准的MemN2N模型没有key-value,所以整个triple被encode之后存放在同一个memory slot中。
sentence Level
以句子为单位进行存储的时候,与end-to-end模型一样,都直接将句子以BOW(bag-of-words)表示存入memory。此时的key和value一样。每个memory slot存储一个句子,此时模型就退化为MemN2N。
Window Level
窗口长度W对原始wiki文章进行切分(只取以实体作为窗口中心的样本),然后将整个窗口的BOW表示作为key,该中心实体(word)作为value。因为整个窗口的模式与问题模式更像,所以用它来对问题相关性评分可以找到最相关的memory,而答案往往就是实体,所以将窗口中心的实体作为value对生成答案更方便。
Window + Center Encoding
Window + Title
2-实验
后续再补充吧。。。。