题目: Mem2Seq:Effectively Incorporating Knowledge Bases into End-to-End Task-Oriented Dialog Systems
作者: Andrea Madotto, Chien-Sheng Wu, Pascale Fung
单位:Human Language Technology Center, CAiRe, et al.
出版: ACL2018
-------------
问题:文章重点解决什么问题
RNN 编码-解码模型:直接将纯文本对话历史映射到输出响应,并且对话状态是潜在的,因此不需要手工标注状态标签。
RNN编码-解码模型+基于attention的复制机制:直接从输入源复制到输出响应端,能够解决在对话历史中没有出现的token,生成正确和相关的实体。
但是这些方法仍然存在两个问题:1)他们努力的想将外部的KB知识整合进入RNN网络的隐藏层,但是RNN处理长序列并不稳定。2)处理长序列非常耗费时间,尤其是加入了attention机制。
为了解决以上问题,发现MemNNs(end-to-end memory networks:将外部存储器嵌入几个embedding 矩阵,并使用查询向量反复的读取存储器)可以很好的解决上述两个问题。即,能够记忆外部KB信息并且快速编码长对话历史记录。但是,MemNN只是从预定义的候选池中选择输出响应,而不是逐字生成,并且Memory query需要显示设计而不是被学习,也缺乏复制机制。
针对MemNNs的问题,提出了Mem2Seq模型,在MemNNs的框架上使用序列生成框架进行扩充,使用全局multi-hop attention机制直接从历史对话或KB进行复制。
方案:侧重整体性的系统架构或评价体系等。
Mem2Seq是第一个结合了multi-hop attention机制和指针网络(pointer network)的生成网络模型。简单来说Mem2Seq由两部分组成:MemNN+pointer network
Mem2Seq的主要优点:1)第一个结合multi-hop attention 机制和 指针网络的模型,并且可以有效融入KB信息。2)Mem2Seq学习了如何动态生成查询去控制Memory的访问,可以可视化memory控制器和attention的跳跃之间的模型动态。3)训练时间短,得到的答案精确。
定义历史对话消息作为token 序列 :,(“hello t1 $u” means “hello” at time step 1 spoken by a user),其中,$是sentinel(哨兵),如果选择了$,则从中生成token,否则从中生成token
定义KB元组: (subject, relation, object),计算subject,relation,object的词向量求和,得到每个KB内存表示。解码阶段,object部分作为的生成。只有于特定对话相关的KB的特定部分才能加载到内存中。
Memory 编码的输入为U,
Memory解码的输入:,也是Memory编码的输出
Y作为预期系统输出响应,Y =
指针网络的指针索引集,
是输入序列,sentinel位置索引=n+l+1(是X和B中元素的个数再加1)
(a)Memory 编码
输入:U
输出:(Memory vector)
embedding矩阵C,每一个代表把一个token映射为向量,查询向量作为一个reading head。
在K hop时每个memory i的attention 权重:
attention权重的含义是:memory i于查询向量的相关性。attention权重值越高,则越相关。
下一个hop的查询向量要进行更新:
(b)Memory 解码(RNN+MemNN)
输入:(= )
输出:通过指向Memory中的输入生成tokens,于指针网络使用attention相似。
MemNN的动态查询生成:GRU(Gated Recurrent Unit)
(t 解码时刻)GRU的输入:先前生成的单词和先前的查询
GRU的输出:新的查询向量
GRU的输出传递给生成token的MemNN
在每一个解码步骤,都会生成2个分布:vocabulary Distribution()和Memory Distribution()。
其中是通过连接第一hop attention的输出和当前查询向量生成的。
是用MemNN最后一hop的解码器的attenion 权重生成的:=
第一hop侧重于检索Memory信息,最后一hop侧重于利用指针监督选择精确的token。
实验:
三个数据集进行评估:bAbI(模拟对话)、DSTC2(真实人机对话)、In-Car(人-人对话和多域对话)
bAbI:Task1-4分别是关于API调用, 优化API调用,推荐选项以及提供其他信息。Task5是Task1-4的集合。
优化器:Adam.
学习效率:
K = 1, 3 ,6(hop数)
embedding大小=Memory大小=RNN隐藏层大小(包括基线):[64,512]
dropout:[0.1, 0.4]
使用grid-seach在验证集上调整参数
测评标准:bAbI、DSTC2 用Per-response, In-Car Assictant用BLEU分数。
Per-respomse:只有当它与黄金响应完全相同时,生成响应才是正确的。仅当对话的每个生成响应都正确时,对话才是正确的
BLEU:面向任务的对话中的相关度量,因为与开放域生成不同,所以生成的答案之间没有很大差异。
Entity F1:评估从KB生成相关实体并捕获对话框语义的能力。
实验评价:侧重性能、安全、正确等。
局限:侧重依赖的假设、未完的工作等。
实体F1得分可能是比每回应准确度或BLEU得分更全面的评估指标,因为人们通常可以选择正确的实体但具有非常多样化的响应。实际上,我们希望强调人类可能具有较低的BLEU分数,尽管它们的正确性,因为在给定的响应和预期的响应之间可能没有大的n-gram重叠。
展望:
在未来的工作中,可以应用几种方法(例如,强化学习等),Beam Search,以改善响应相关性和实体F1得分。但是,我们希望尽可能简化模型,以便即使没有高级方法也能很好地运行。