论文地址。 凉了。读完论文,发现论文中的实验是使用 python2 写的,而且由于没有 VPN 无法下载实验附带的数据,训练数据有 17G,我都不想下了。
引子
人机对话时,人们通常会提出许多问题,其中大部分都可以通过大规模的 KG 回答。为此,我们提出了 Comples Sequential QA(CSQA) 任务,它由以下两种任组成: 1. 在拥有百万个实体的 KG 上进行复杂的推理从而回答事实性问题; 2. 通过一系列连贯的链接问答对去学习交谈。
接着还让工作人员创建了一个数据集,包括总共 1.6M 轮的 200k 的对话数据。我们还要求数据集含有逻辑推理(logical),定量推理(quantitative)以及比较推理(comparative )的能力(此三种能力下面有详解)。因此这就迫使我们的模型要做到: 1. 解析复杂的自然语言问题; 2. 使用对话上下文解析表达中的共指(coreferences )、省略(ellipsis )问题; 3. 要求理清含糊不清(ambiguous )的问题; 4. 检索相关的 KG 的子图去回答这些问题。
说明: - 共指问题(coreferences):就是说一个代词指向多个对象,机器人无法理解具体指向哪个 - 省略问题(ellipsis):表达没问题,但是表达中省略了一部分信息,需要人自己去上文中推测 - 含糊不清的问题(ambiguous):(与 1 类似,请看 1)
本文贡献
- 引入 CSQA 的概念;
- 展示一流的 QA 和对话系统的处理方法在解决这些任务时的不足之处;
- 对 CSQA 提出了一个模型,由一流的 hierarchical conversation model(HRED)(Serban 2016a,Serban 2017) 和 key value(KV) based memory network model(Miller 2016) 组成。
数据集创建
论文花了很大的篇幅描写了数据集是如何创建的。使用 14-Nov-2016 的 wiki data 创建,其中包含了 5.2k 的 relation(谓语),12.8M entity(主语),52.3M facts(宾语)。但是省略了像“ISO 3166-1 alpha-2 code”、“NDL Auth ID”等 relation,因为不期望用户会问这些模糊的问题。接着论文分别描述了 Simple Questions、Complex Questions 和 Linked Sequential QA 是如何创建的。
Simple Questions
为了发现问题,我们要求 annotators 自己提出问题并用 KG 中的单个三元组进行回答。后来 annotators 认为对于个三元组,主要有三种类型的问题: 1. 基于宾语(object)的问题,问题中包含三元组中的主语和关系,答案包含三元组中的宾语; 2. 基于主语(subject)的问题,问题中包含三元组中的宾语和关系,答案包含三元组中的主语; 3. 基于关系(relation)(理解成谓语也可以)的问题。后来在创建的数据集中发现,此类问题没有多大的意义。比如,数据集中有人问了一个很不自然的问题“Q:How is Himalayas related to India? A:located in”。所以论文只关注前两个问题。
Complex Questions
接下来要求 annotators 建立一些逻辑推理(Logical Reasoning)、定量推理(Quantitative Reasoning)、比较推理(Comparative Reasoning)类型的问题。 1. 逻辑推理:考虑问题“哪些河流流经中国和印度?”,为了回答这个问题首先需要创建两组集合i){flowthrough, India, river},ii){flowthrough, China, river}。最后求交集。此类问题可由 Simple Questions 修改得到,如 AND 操作:“哪些河流流经印度”修改为“哪些河流流经印度”+“和中国”;OR操作:“哪些河流流经印度”修改为“哪些河流流经印度”+“或中国”。全部的操作包括以下三种: - AND - OR - NOT 2. 定量推理:如遇到max、min、count、at least/almost/approxmately/equal to N 等问题需要做定量推理。中文类似。 3. 比较推理:基于某一个关系的问题需要做推理。如:“哪个国家拥有的河流比印度多?”
Linked Sequential QA
现在开始通过上述的 QA 对创建连续的对话,简单来说,如果两个问题共享一个 relation 或者 entity,那么就将两个问题放在一起。
模型
CSQA 由对话和 QA 组成,我们提出的模型由 HRED 模型和 key value memory network 模型组合而成。其中 HRED 模型是对话系统中的一流模型,key value memory network 模型是 QA 系统中的一流模型。我们的模型由以下组件构成: 1. Hierarchical Encoder: 2. Handling Large Vocabulary 3. Candidate generation 4. Key Value Memory Network 5. Decoder
其中 1234 是 encoder,5是 decoder。
结果
使用 Adam 算法作为优化算法。 然后调整以下超参数:learning rate \(\in\) {1e-3, 4e-4}, RNN hidden unit size、 word embeddingsize、 KG embedding size \(\in\) {256, 512},batch size \(\in\) {32, 64},dialog context size as 2。 使用 Precision 和 Recall 作为评估指标。对于验证和计数的问题我们使用 accuracy 作为评估指标,此类问题会产生 YES/NO 或者 counts 的结果。最后对于需要阐明(clarification)的问题,系统产生自然语言回应,这通常是 KG 实体和非 KG 单词的序列,因此使用 Precision/Recall 作为 KG 实体的预测,使用 BLEU 作为语义相似度的衡量指标。
讨论
根据表 4 中的结果,我们讨论了现有方法的一些缺点,并提出了未来研究的领域。 1. Simple v/s Complex Questions:很明显在我们的模型上,与简单问题相比,复杂问题的性能非常差。改进点有很多,i)不确定现在逻辑函数是否可以处理定量、比较和逻辑推理问题;ii)不清楚现有的 encoder(HRED + key value memory network)是否能够有效地解析复杂问题并为 encoder 提供良好的表示。 2. Direct v/s Indirect Questions:用表 4 中的第 3、4 行跟第 2 行比较,发现在处理不完整的问题时,模型性能有所下降,这些问题都需要依赖上下文才能解决共指、省略等难点。即使现在的对话系统(HRED)确实捕捉到了上下文,也没有什么作用。因为其中的一个关键点是对于我们创建的数据集有一个巨大的挑战:数据集里的 named entities 和 relations 比上下文中其他单词更重要,所以我们需要一个更好的模型,可以在训练时标出 relations 和 entities 的重要性(例如:注意力机制)。 3. Candidate Generation: 4. Better organization of the memory:对于某些问题,特别是设计多个实体和逻辑操作的复杂问题,不可避免地需要使用大量的内存存储元组。大约有 15% 的问题需要超过 100k 个候选元组。这会使 GPU 超负荷,并且也会使 softmax 的计算开销巨大,所以需要i)更好的内存组织方式,ii)SoftMax 函数的近似方法。