Key-Value Memory Networks for Directly Reading Documents

Key-Value Memory Networks for Directly Reading Documents. EMNLP, 2016.

解决的问题

从文档中直接提取问题答案

主要的贡献

WIKIMOVIES 一个电影领域的QA数据集 同时也是检测QA系统性能的分析工具 包含100k个问题

使用的方法

在问答系统中加入知识库KB完成QA任务,虽然有效但存在很多限制,比如不完备、领域局限。Freebase是一个大规模KB,将信息有结构地进行了组建。从文本中检索答案比从数据库中检索困难得多,因为答案可以被任意表示,没有结构化,在多个文档中。本文建立KV-MemNN结构,通过一种key-value的结构存储facts,其中key用于定位问题,对应的value作为答案被返回。这个model可以使用反向传播算法中的随机梯度下降法训练。

Key-Value Memory Networks for Directly Reading Documents

模型结构
  • 依赖于2015年Weston的End-to-End Memory Networks。
  • 1.key hashing
    使用问题从非常大的key-value对中筛选出一个子集,选出N个key-value对,每一个key都与问题有至少一个单词相同。其他筛选机制可以参考2008年Manning的文章。
  • 2.key addressing
    比较每一个问题和对应key计算相关概率p:
    Key-Value Memory Networks for Directly Reading Documents
    其中fai是D-d的feature map,A是d*D的矩阵。问题的表示和key值的表示点乘后取softmax为每个memory slot的概率。
  • 3.value reading
    使用address概率p对候选项的value进行加权:
    Key-Value Memory Networks for Directly Reading Documents
启发点
  • 1/ memory存储形式是key-value对应关系,其中key可以是source+ relation,value是target。
  • 2/ 使用memory填补了问题和文本内容之间的gap,生成caption时也可以使用memory network沟通video和caption间gap,记录对应关系,softMax,加权。
  • 3/ sorted containers库可以将实体按照字典顺序排序
  • 4/ gen_kv_data.py文件中使用图表示三元组,筛选top n时论文中说使用倒序索引筛选,代码中使用whoose和networkx实现。
  • 5/ Agent是Memory Network时,Environment是PickNet+ResNet,action是topic vector,reward是value of features,State是frame。当一个frame(state)输入Memory Network,Policy网络计算frame之间的差异,产生动作topic vector决定了topic的种类和要pick的index,环境提取特征后产生features,奖励就是features的差异性or丰富程度,我们最终希望这个reward越大越好。这样就是一个强化学习的过程,使用memory网络指导video选帧和提特征操作。
    这个reward还需要好好设计,要和topic有关,要frame越少越好,context越大越好。
  • 6/ 需要解决问题:如何设计topic vector辅助选帧,如何两者相互训练。
  • 7/ topic vector应该是记录所有videos的记忆网络,然后在具体一个视频时可以指导生成更丰富的融合特征,或者用在生成word阶段,指导生成更准确的caption。类似于attention的操作。使用softmax再加权之类的。
  • 8/ 这篇文章也解决了外加kb的方法,看在caption中能不能添加kb增加caption准确率,提高模型性能。
主要参考代码

https://github.com/dapurv5/neural_kbqa
https://github.com/siyuanzhao/key-value-memory-networks