文献阅读笔记-Key-Value Memory Networks for Directly Reading Documents

文献阅读笔记-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模型结构如下:
文献阅读笔记-Key-Value Memory Networks for Directly Reading Documents

memory slots定义:(k1,v1),(k2,v2),(k3,v3...(kN,vN)(k_1,v_1),(k_2,v_2),(k_3,v_3...(k_N,v_N)
question:xx
memory的addressing和reading由以下3个步骤组成:
(1)Key Hashing
对于question x, 在M个memory选择key至少与x有一个单词相同的N个组成子集(倒排索引),得到memory subset:
(k1,v1),(k2,v2),(k3,v3...(kN,vN)(k_1,v_1),(k_2,v_2),(k_3,v_3...(k_N,v_N)
(2)Key Addressing
计算上述选出的每个memory的概率值。
pi=Softmax(AϕX(x)AϕK(ki))p_{i} = Softmax(A \phi_X(x) \cdot A \phi_K(k_i))
其中ϕX(x)\phi_X(x)ϕK\phi_K分别是x和key的D维bag-of-word表示,A是一个d×D的embedding matrix。
由上面式子可以看出是联合了question x的特征。
具体的ϕ\phi特征映射函数,后续介绍。

(3)Value Reading
result o是memory中的value在上一步的概率下加权求和。
o=ipiAϕV(vi)o= \sum_i p_iA \phi_V(v_i)
把embedding之后的question 记作q,则q=AϕX(x)q=A\phi_X(x),即paper中提到的query。
key Addressing和key Value是可以多次迭代的:
对query进行更新:
qi+1=Ri(qi+oi)q_{i+1}=R_i(q_i+o_i)
注意:每个hop的R都是不同的。
同时基于更新后的query对key addressing的结果进行更新
pi=Softmax(qj+1TAϕK(ki))p_i=Softmax(q_{j+1}^TA\phi_K(k_i))

通过迭代Key addressing与Value reading过程实现memory access process。

answering 作答:
最后第 H hop后得到qH+1q_H+1, 计算所有可能答案的分数:
a^=argmaxSoftmax(qH+1TBϕY(yi))\hat a = argmax Softmax(q_{H+1}^TB\phi_Y(y_i))

这里yiy_i是答案,将答案映射到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-实验

后续再补充吧。。。。