文献阅读笔记-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模型结构如下:
memory slots定义:
question:
memory的addressing和reading由以下3个步骤组成:
(1)Key Hashing
对于question x, 在M个memory选择key至少与x有一个单词相同的N个组成子集(倒排索引),得到memory subset:
(2)Key Addressing
计算上述选出的每个memory的概率值。
其中和分别是x和key的D维bag-of-word表示,A是一个d×D的embedding matrix。
由上面式子可以看出是联合了question x的特征。
具体的特征映射函数,后续介绍。
(3)Value Reading
result o是memory中的value在上一步的概率下加权求和。
把embedding之后的question 记作q,则,即paper中提到的query。
key Addressing和key Value是可以多次迭代的:
对query进行更新:
注意:每个hop的R都是不同的。
同时基于更新后的query对key addressing的结果进行更新
通过迭代Key addressing与Value reading过程实现memory access process。
answering 作答:
最后第 H hop后得到, 计算所有可能答案的分数:
这里是答案,将答案映射到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-实验
后续再补充吧。。。。