KV-MemNN

1.Introduction

  • 传统的QA基于KB和IE,这种方法有很大局限性。现在试图直接从原始文本中给出答案。KV-MemNN是一种基于key-value的Memory Network. 它在查询相关记忆时使用key,而在回答问题时使用value. 这种方法可以灵活的增加先验信息。

  • KV-MemNN可以看作是MemN2N的一个拓展. 而Recurrent Entity Network也借用了key-value memory,不过EntNet中的key是可学习的参数. EntNet笔记见Recurrent Entity Network笔记

2.KV-MemNN

这里写图片描述

  • Key Hashing
    对于question x , 在 M 个memory中选择 N 个,它们的key至少与 x 有一个单词相同,得到memory subset: (k1,v1),(k2,v2),(k3,v3...(kN,vN)

  • Key Addressing

    pi=Softmax(AϕX(x)AϕK(ki))

    其中 ϕX ϕK 分别是 x key 的D维bag-of-word表示, A 是一个 d×D 的embedding matrix

  • Value Reading

    o=ipiAϕV(vi)

    把embedding之后的question 记作 q ,则
    q=AϕX(x)

    key Addressing和key Value是可以多次迭代的:
    qi+1=Ri(qi+oi)
    pi=Softmax(qTj+1AϕK(ki))

  • answering

    a^=argmaxSoftmax(qTH+1BϕY(yi))

这里 yi 是所有答案,将答案映射到embedding空间,与最后一次的q作softmax得到每一个答案的概率,取最大的那个作为输出.

3.Key的选取

  • KB triple
    KB triple 包含{subject, relation, object},使用KB作为memory时, key=subject+relation,value=object . 同时将KB triple颠倒:{object, !relation, subject} key=object+!relation,value=subject . 这里relation和!relation在字典中是两个不同的词

  • sentence Level
    key和value相同,都是sentence,这就和MemN2N模型一样了

  • window Level
    将文本分割成窗口(window),每个窗口包含W个单词。每个窗口的中心单词是一个entity. key=window,value=centerword

  • window+Center Encoding
    同window Level类似,不过它将vocab_size D 乘以2, 即两个字典,一个用来编码center word,另一个用来编码window中其他word.

  • window + Title
    某些问题的答案可能在文章标题中,所以考虑将title写入记忆中

4.Experiment

作者建立了WikiMovies数据集,包含三种不同形式的数据,用来比较基于KB,IE和直接读取文本三种方法的性能。在三种数据形式上,KV-MemNN都比其他的方法效果好.