0%

Large-scale Simple Question Answering with Memory Network

论文概要

论文地址,发表于 2015 年。 开放域问答系统的目的是在不受域限制的情况下,为用自然语言表达的问题提供准确的答案。问答系统有很长的历史,它们搜索文本文档或在网络上提取答案(see e.g.(Voorhees and Tice, 2000; Dumais et al., 2002))。最近在公开的大型知识库(KBS)方面也取得了进展,如 Freebase 知识库。然而,尽管最近大家都在关注设计一个具有推理能力的系统,它可以检索并使用 KB 中的多重事实进行问答。但是其实只涉及 KB 中单个事实的简单问答都还没被解决,本论文中将其称为 Simple Question Answering。 KBQA 现存的方法:1)将 question 转为结构化的 KB 查询语句(Berant et al. 2013);或者 2)学习将 question 以及 facts 嵌入到低维向量空间中,然后在这些向量中通过计算相似度检索答案(Bordes et al., 2014a)。 本文贡献有二: - 其一,为了研究现有系统以及通过多任务学习在不同数据源上同时训练成为可能,我们收集了第一个基于知识库的大规模的问答数据集,称为 SimpleQuestions。包含了人类编写和 Freebase facts 相关的超过 10 万个问题,另外现有的基准数据集 WebQuestions 包含的问题少于 6 千个,这些问题是使用 google suggest api 自动创建的。 - 其二,提出了一种基于词嵌入的问答系统,在 Memory Networks (MemNNs)(Weston et al., 2015;Sukhbaatar et al., 2015) 框架下开发而成。

虽然我们的模型与之前的 QA 嵌入模型(Bordes et al., 2014a;Bordes et al., 2014b)相似,但使用 MemNNs 的框架为未来工作中更复杂的推理方案提供了思路,因为 MemNNs 在复杂的推理问答任务上表现了很好的性能(Weston et al., 2015)。

论文内容介绍

  1. Sections 3, 4:介绍了基于词嵌入的问答系统;
  2. Section 5:相关工作;
  3. Section 6:实验结果。

Memory Network for Simple QA

Memory network 由一个 memory(一个索引对象数组)和一个神经网络组成。神经网络由 Input map(I), Generalization(G), Output map(O) and Response(R) 构成。其工作流如下所示: 1. Storing Freebase:第一阶段。解析 Freebase(可以是 FB2M 或 FB5M,取决于配置)并且将它存进 memory。它使用 Input module 去预处理数据; 2. Training:第二阶段。训练 MemNN 去回答问题。此处使用 Input, Output and Response modules,训练主要关注核心 Output module 嵌入模型的参数; 3. Connecting Reverb:第三阶段。将来自 Reverb 的 new facts 添加到 memory 中。这是在训练完毕后进行的,为了测试 MemNNs 在不需要重新训练的情况下处理 new facts 的能力。它使用 Input module 去预处理 Reverb facts 并且使用 Generalization module 将它们和已经被存储的 facts 连接。

Input module

此组件预处理 3 种类型的数据,它们会被输入进神经网络: 1. Freebase facts:用于填充 memory; 2. questions:系统需要回答的问题; 3. Reverb facts:在 workflow 第二阶段中,我们用它扩展 memory。

preprocessing Freebase

Freebase 数据最初存储原子 facts,包括将单个实体作为主语或者宾语,再在它们之间加上一个联系(即谓语)。但是这样的存储需要从两个方面与 QA 任务适应。 1. 为了回答不止有一个答案的问题,我们将 fact 重新定义为一个三元组,其包含 subject,relationship 以及通过 relationship 连接至 subject 的一组 objetcs 。这个分组过程将 atomic facts 转为 grouped facts,以下将其简单的称为 facts。Table 2 显示了这样分组可以减少 facts 的数量。 2.

Preprocessing Freebase facts

Preprocessing questions

Preprocessing Reverb facts

Generalization module

此模块负责将新的元素增加到 memory 中。在我们的例子中,memory 具有一个 multigraph 结构,其中每个结点都是 Freebase 的一个实体,multigraph 中被标记的 arcs 是 Freebase 中的 relationships:预处理之后,所有 Freebase 的 facts 都使用此结构存储。

为了将 Reverb 的 subject 和 object 链接到 Freebase 实体,我们使用 precomputed entity links (Lin et al., 2012)。。。。

Output module

Output 模块通过给定 input ,在 memory 中执行查表(lookup)操作,返回该问题的 supporting facts。在我们的 simple QA 例子中,此模块只返回一个 supporting fact。为了避免为所有存储的 facts 评分(即为了避免时间代价太大),我们先执行一步近似实体链接(proximate entity linking),以生成一个小的候选 facts 集合。最后, supporting fact 指的是与嵌入模型中的问题最相似的候选 fact。

Candidate generation

略。

Scoring

略。

Response module

在 memory network 中,Response 模块对 Output 模块的结果进行后处理操作,以计算预期的答案。在我们的例子中,它返回被挑选出来的 supporting fact 的对象集(博主注:这个对象集我猜测是 KG 中的三元组)。 注:不必纠结 Response 模块的具体功能,可以自己定制,必然在记忆网络之Memory Networks中写到最初的 memory network 的 response 模块只是简单地将向量转成单词。

推荐阅读

记忆网络之open-domain QA 应用,csdn 的一篇博客,也对此论文的训练方法做了总结。