摘要:人类通过语言将大脑里的知识表达出来,通过对话相互传递知识。机器通过学习大量的语料可以一定程度学会流畅的语句表达,但如果没有知识,则生成的只会是漂亮而无内涵的回复。传统的模块化的对话模型可以通过数据库查询等方式将关键信息填入回答的模版中,但是端到端的对话生成模型则要更复杂一些。为了解决这个问题,记忆网络(Memory Networks)通常是一个不错的技术方法。但是现有的记忆网络结合对话系统只是提供了如何引入知识的一个方法,并不能很好的处理多种来源和结构的知识。因此在这篇文章中,我们提出了一个异构记忆网络(Heterogeneous Memory Networks, HMNs)来同步处理用户语句,对话历史以及背景知识库。HMNs由上下文无关(context-free memory)记忆网络和我们提出的上下文敏感(context-aware memory)记忆网络组成,分别用于编码、储存结构化的知识元组(knolwdge tuples)和序列化的用户语句、历史对话,并生成两个小词表分布(知识词表和历史对话词表)以及一个大词表(所有训练的词汇分布)供回复语句生成的选词。在三个数据集上的实验结果表明,HMNs超过了现有的SOTA模型,能够较显著的提高端到端任务型对话模型的表现。
问题背景
人类客服在回答客户问题时首先理解用户的语言,然后到相关数据库、知识库中查询所需要的知识,最终整理并回答问题。在这个过程中如果缺乏相对应的知识数据,即使是人类也几乎不可能准确回答用户所需要的问题,因为客户可能需要的关键点就是那条数据库中的知识,而再漂亮的回复偏离了重点也是不合格的。机器也是如此。生成模型如果仅通过历史对话语料学习,最终学习到的可能只是最安全、最通用的回复,但在实际对话中缺乏关键知识,也将导致无法解决具体事务。因此在对话模型中恰当的引入知识显得至关重要。
如图所示一个典型的任务型对话,用户问题What is the address for keen需要根据上文的hotel_keen以及Knowledge Base中检索到的2_miles、578_arbol_dr等作为关键信息来生成系统回复的语句。在这种情况下,传统的pipeline类型的对话系统通常采用填槽(slot filling)以及检索的方式来查找所需的关键信息,这种方式需要大量的人工标注。深度学习的发展促使我们更进一步探索:许多[7, 8]工作证明了完全数据驱动的任务型对话也是可行具有一定前景的。现有的完全数据驱动(fully data-driven)的任务型对话模型通常基于Sequence to Sequence模型,同时采用注意力(attention)机制来引入外部知识。Madotto在这些基础上进一步提出了Mem2Seq(Memory to Sequence)模型[1],将multihop attention和pointer network的思想引入了对话生成模型。
现有的模型将不同来源、不同结构的信息杂糅、拼接到一起,用同一个网络(RNN或Memory Network)表达。但是人类思考的时候并不是将所有的信息杂糅在一起的,而是有一个思路:例如该对话任务,真人客服首先考虑的是问题,然后结合上下文,依靠这些信息查阅数据库,最后生成最后的回复。在这样的思想指导下,我们考虑不同的知识在对话这个任务中起到的作用是不同的,例如历史对话实际上指导的是上下文信息和回答的模式,而知识/数据库信息则更像插入到回复中的“值”。同样的,历史对话是一种序列化的信息,而知识库往往是一种结构化的数据,所以我们还需要对不同信息采用更适合它们结构的表达模型。因此我们提出了异构记忆网络模型(Heterogeneous Memory Networks, HMNs)结合Encoder-Decoder框架来更好的完成对话任务。本文的主要贡献在于:
- 我们提出了HMNs模型结合Encoder-Decoder模型第一次探索将对话历史、知识库等用不同的Memory来表示。
- 我们提出了一种用门机制(gating mechanism)加强的上下文敏感记忆网络(context-aware memory networks)来更好的学习、表达对话历史等上下文依赖信息。
- 我们在三个流行的公开数据集上进行了测试,实验结果表明对话模型总体水平显著超过现有的SOTA模型,且不同部分的改进都是有效的。
模型
我们的模型主体结构上采用端到端生成模型常用的Encoder-Decoder框架。本章将详细介绍模型结构。
1. 编码器(Encoder)
Encoder的作用是将对话历史编码和用户Query表达成一个内容向量(context vector)。Encoder部分采用了一个上下文敏感记忆网络(如下图decoder的左半部分)将历史对话和用户的Query作为输入。每一个输入的词汇由(1)token本身(2)该句话的轮次以及(3)对话的身份。例如:用户在第一轮说“hello”然后系统回复“may i help you”则输入为:[(hello, t1, user),(may, t1, sys),(I, t1, sys),(help,t1, sys), (you, t1, sys)],t1即表明为对话的第一轮,user和sys则代表是用户和系统所说的话。将hello,t1,user三个转换为vector相加则是这个词的embedding。最后将embedding的序列输入到上下闻敏感记忆网络中最终得到context vector。
2. 上下文敏感记忆网络
由于传统的记忆在储存对话历史的时候会丢弃上下文序列信息,因此我们在端到端记忆网络(end to end memory networks)[5]基础上进行修改。记忆网络由多个hop组成,hop 由每个hop自身随机初始化的嵌入矩阵的每个word embedding相加拼接而成。在此我们采用相邻权重共享方案,这意味着不仅是第k个hop中的输入嵌入矩阵,而且是第(k-1)个hop中的输出嵌入矩阵。为了让记忆网络更好地学习和表达上下文信息,我们在存储单元之间添加了一个门控机制,采用的门参考了双向GRU[6]的方法。在加载序列话信息时候,便会通过门机制得到上下文相关的词汇表达以存储至记忆网络。
将查询向量输入,计算注意力权重并得到输出向量。将查询和输出向量相加,我们就得到了第k个hop的输出。在这里也是(k+1)个hop的查询向量。
3. 异构记忆网络
HMNs如前图展示的那样,包含了一个上下文敏感记忆网络和一个上下文无关记忆网络。上下文敏感记忆网络前文已经详述,而上下文无关记忆网络则与端到端记忆网络完全相同。上下文敏感记忆网络用于储存和表达历史对话信息,而上下文无关记忆网络则用来表达知识库信息。两者连接的方式则是通过上下文敏感记忆网络输出一个查询向量作为上下文无关记忆网络的输入。这样即为RNN控制器输入到历史对话中,来结合上下文信息以及一定程度上获得回答的模式,再通过这些信息来查询关键数据,和人类的思考过程相似:根据问题首先确定回答的方式,再通过回答的方式来查找缺失的数据信息。
4. Decoder(解码器)
解码器部分包含了HMNs和一个RNN的控制器如图所示。
RNN控制器将在每个step将查询向量输入到HMNs中。在每一步中,输入的查询向量通过上下文敏感记忆网络生成对话历史词表(最后一层hop的输出)和大词表(第一层的hop输出作为预测)。而后上下文敏感网络的输出向量将作为查询向量输入上下文无关记忆网络以查询知识库信息并生成一个知识库词表。最后通过选词策略从三个词表中选择一个词作为该轮生成的单词。
5. 拷贝机制和选词策略
我们采用拷贝机制来复制来自记忆网络中的单词。记忆网络中目标词的概率就是两个记忆网络中的注意力权重_x001D_。如果没有出现目标词,则会选中预处理阶段添加的标记存储器跳转位置标记。在选词过程中,如果两个记忆网络的输出都不是跳转标记,我们就比较两个网络中选中的词概率更大的那个。如果只有一个跳转标记,则选择另一个网络中概率最大的词汇。如果两者都为跳转标记,则选择大词表中概率最大的词。
实验和结果
为了验证我们模型,我们设计了相关实验以证实我们模型的设计是否能够达到更好的效果以及模型的新设计(堆叠多个记忆网络以及上下文敏感记忆网络)是否都是有效的。
1. 数据集
如表格示,我们的采用了流行的三个数据集:Key-Value Retrieval Datasets[2]、DSTC2[3]以及(6) dialog bAbI tasks[4]。三个数据集均只采用对话以及知识库(元组形式,由于DSTC 2并没有知识库,所以使用的是本体ontology文件生成),去除了slot fillings等等所有标签。三个数据集的数据质量较高且同时包括多领域、单领域等多种形式。
2. 实验指标
为了达到验证的目的,我们采用了多种指标以验证我们的设想。
- BLEU:我们采用BLEU来验证模型能否生成流畅的回复语句。
- F1:我们使用F1来验证模型能否准确地在知识库中抽取到回答所需的关键信息并回复。
- Per-response accuracy and Per-dialog accuracy:主要用在bAbI数据集中,来验证模型是否有能力生成、复现学习到的表达。
3. 对比模型
我们对比了以下几个模型:
- SEQ2SEQ: seq2seq(LSTM)模型目前来看还是各项生成模型研究对比的可靠稳定的模型。
- SEQ2SEQ+Attn.: 增加了attention机制的seq2seq能够更好的生成待知识、稀有词语的信息。
- Mem2Seq:memory to sequence将multihop attention引入了任务型对话生成中。
- HMNs-CFO:HMNs with context-free memory only。同样是HMNs的模型,但是该模型用上下文无关网络替换了上下文敏感网络,用来验证上下文敏感网络是否真的起到了效果。
4. 实验结果
可以看出我们的模型在绝大部分主要评价指标上都得到了最好的表现效果。
在下表随机抽取的一个生成实例中也可以看到,能够生成最流畅的语句并抽取最准确的知识。
5. 实验分析
- 模型的效果
在所有的实验中,我们发现HMNs基本都取得了最好的实验效果。因此总体的模型一定程度上是可靠有效的。特别是在F1指标上,HMNs的表现更加显著,结合实际的生成语句效果(甚至能够抽取到比ground truth更多且仍然准确的实体),我们认为HMNs在某种程度上能够学会如何利用query和历史对话信息从知识库中抽取相关关键信息。 - 上下文敏感网络是否真的有效?
在bAbI实验结果(Table 3)中我们对比HMNs-CFO和HMNs模型的实验结果:HMNs在全部指标中均显著胜过HMNs-CFO,而HMNs和HMNs-CFO都采用了两个记忆网络堆叠的方式,唯一的区别便是HMNs-CFO用了两个同样的上下文无关记忆网络分别存储历史对话以及知识库的信息。此外结合训练的loss图像(Figure 4),我们可以得出结论,上下文敏感网络能够更好更快地学习对话生成任务。 - 用多个网络分别学习对话历史和知识库信息是否有效?
同样地在该实验中,我们对比Mem2Seq和HMNs-CFO的实验结果:HMNs-CFO在绝大部分指标上(特别是perdialogue accuracy)都取得了更好地成绩。Mem2Seq和HMNs-CFO的两个关键区别在于HMNs-CFO相对于Mem2Seq采用专用的记忆网络存储不同信息,同时通过对话历史信息输出查询向量到知识库的方式连接两个网络。因此采用专用的记忆网络并用合适的方式连接不同的记忆模块这个想法在这里也得到了有效的证明。
未来工作
在前面的实验结果中我们可以注意到Key-Value Retrieval Datasets实验中天气预测这项指标HMNs、Mem2Seq等利用了记忆网络的模型表现不佳。对此我们展开调研发现天气预测任务中,平均的知识库元组条目数量是其他任务的三倍之多,然后我们在这个任务中通过匹配的方式缩减元组数量到和其他任务大致相同之后,F1指标上升到了48。因此我们认为目前的训练方式记忆网络在显著增加信息存储量的情况下可能存在问题。在实际使用的时候需要先利于匹配等方式减少候选数量。因此我们需要进一步研究HMNs在不同数据量尺度之下的表现以及改进方法。
参考资料
[1] Madotto, Andrea, Chien-Sheng Wu, and Pascale Fung. "Mem2seq: Effectively incorporating knowledge bases into end-to-end task-oriented dialog systems." arXiv preprint arXiv:1804.08217 (2018).
[2] Eric, Mihail, and Christopher D. Manning. "Key-value retrieval networks for task-oriented dialogue." arXiv preprint arXiv:1705.05414 (2017).
[3] http://camdial.org/~mh521/dstc/downloads/handbook.pdf
[4] Bordes, Antoine, Y-Lan Boureau, and Jason Weston. "Learning end-to-end goal-oriented dialog." arXiv preprint arXiv:1605.07683 (2016).
[5] Sukhbaatar, Sainbayar, Jason Weston, and Rob Fergus. "End-to-end memory networks." Advances in neural information processing systems. 2015.
[6] Cho, Kyunghyun, et al. "On the properties of neural machine translation: Encoder-decoder approaches." arXiv preprint arXiv:1409.1259 (2014).
[7] Vinyals, Oriol, and Quoc Le. "A neural conversational model." arXiv preprint arXiv:1506.05869 (2015).
[8] Shang, Lifeng, Zhengdong Lu, and Hang Li. "Neural responding machine for short-text conversation." arXiv preprint arXiv:1503.02364 (2015).