任务型对话模型包括两种方法:Pipeline和End2End,前面介绍了问题定义和建模(任务型对话系统公式建模&&实例说明)、Pipeline方法中的SLU(总结|对话系统中的口语理解技术(SLU)(一)、总结|对话系统中的口语理解技术(SLU)(二)、总结|对话系统中的口语理解技术(SLU)(三))、DST(一文看懂任务型对话系统中的状态追踪(DST))、DPL(一文看懂任务型对话中的对话策略学习(DPL))、NLG(总结|对话系统中的自然语言生成技术(NLG))。今天简单介绍下部分End2End的方法(End2End的方法也有多种,比如:有的方法虽然是End2End的方法,但是还是单独设计模型的部件,不同部件解决Pipeline方法中的某个或多个模块;有的方法则是完全忽略Pipeline方法划分的多个模块,完全的End2End),后续抽时间会继续介绍。
本文简单介绍10个质量很高的方法(因为篇幅太长,不再这篇中详细介绍了,建议大家都看看,有不懂的可以找我讨论,后面应该也会逐篇详细介绍),然后介绍下End2End方法的评估方法。
一. 10种End2End方法
用部分高质量数据进行有监督训练,用强化学习来优化模型(模型是用来训练action selection,然后用强化学习中的policy gradient来提升选择action的效果)。
2.E2E training of modular dialogue system via gradient descent
这篇文章极力推荐,算是“虽然是End2End的方法,但是还是单独设计模型的部件,不同部件解决Pipeline方法中的某个或多个模块”的集大成者。作者都在对话领域很有建树,同时所在的剑桥大学Dialogue System Group(目前已经毕业,在自主创业)也是全世界研究对话系统最顶级的研究组之一。
3.E2E Memory Network based dialogue system
基于Memory Network做端到端的任务型对话,在餐厅预订场景下,把对话划分为5个任务,并提出著名的bAbI数据集,是基于Memory Network的E2E方法的开山之作。
4. Hierarchical Seq2Seq
基于层次Seq2Seq,比较简单。基本上已经烂大街,不再赘述。
5. Hierarchical RL for Composite Tasks
基于层次RL做DPL,是DPL方面质量很高的一篇论文(本论文作者也基本都是专门做对话系统相关的研究的)。
6.Knowledge Grounded Neural Conversation Model
本文发表在AAAI 2018,跟前面最大的不同是:完全数据驱动,引入了知识。本文提出了一种基于知识的完全数据驱动的神经会话模型,旨在在不填充槽的情况下产生更为满意的响应。
7. E2E Joint NLU and DM
本文把NLU 和 DM 联合起来。传统方法中DM是基于NLU的,NLU准确率不可能100%,所以会有误差累积。本文提出了一种端到端的深度递归神经网络,在DSTC4多领域对话中使用有限的上下文对话记忆来联合训练NLU和system action prediction(SAP)。
8.E2E RL-Based KB-InfoBot
这一篇发表在ACL2017,也是极力推荐的(不仅仅是几乎所有作者都是对话领域很有建树的,更在于本文的质量),个人感觉很有价值。除此之外,本文还开源了代码,我后续看到的很多论文都是在这个代码的基础上所做的其他工作。
9. E2E RL-Based System
本文发表在SIGDIAL 2016,本文Joint NLU, DST and DPL, 使用Deep Q-network和RNN来训练模型。本文如果没记错的话,在github也能找到代码,基于这个工作也有一些不同的工作。
10. E2E Task-Completion Bot (TC-Bot)
本文是这次10个方法中最推荐的(要不放到压轴啊。。。不要问为什么,读过就知道了),发表在IJCNLP 2017(我能说血亏吗)。就是大名鼎鼎的TC-Bot,之前总结的任务型对话中的开源系统就有它。本文使用SL(监督学习)来监督每个模型部件的学习,同时RL(强化学习)做end-to-end的训练。虽然是End2End的方法,但是还是单独设计模型的部件,不同部件解决Pipeline方法中的某个或多个模块
二. End2End方法的评估
之前文章多次强调了评估的重要性,不再赘述。