混合编码网络:有监督和强化学习的实用高效的端到端对话控制
端到端的递归神经网络(RNNs)是学习对话系统的一个美妙的解决方法;然而,现在的技术是数据密集型的,需要成千上万的对话框去学习简单的行为。
我们在此介绍混合编码网络(HCNs),这一网络将RNN与特定领域的被编码为软件的知识和系统行为的模板结合。
与现有的端到端方法相比,HCNs大大减少训练所需的数据量,同时保持从对话状态推断潜在表示的关键好处。
此外,HCNs可用有监督学习,强化学习,或两者的混合进行优化。
HCNs在bAbI对话框数据集上有最高水平的表现在(Bordes and Weston, 2016),并超越了两个商业化部署的面对面对话系统。
1.介绍
面向任务的对话系统使用自然语言交流帮助用户完成一些目标,如预订餐厅,获得技术支持,或打电话。从历史上看,这些对话系统已经被建设为管道,有语言理解模块,状态跟踪模块,行为选择模块,和语言属优化选择模块。然而,模块之间的依赖关系引出了极大的复杂性,例如,往往不清楚如何定义 对话框的状态 及 要保持的历史记录,而且行为选择单一针对输入的状态。此外,训练每个模块需要专门的标签。
最近,端到端的方法已经可以直接在对话文本记录上训练循环神经网络(RNNs)。
一个关键的好处是,RNN推断一句话的潜在表达,而不需要状态标签。
然而,端到端的方法缺乏注入领域知识和约束的一般机制。
例如,简单的操作,如排序数据库结果或更新字典实体可以在几行的软件中表达,还可能需要成千上万的对话学习。
此外,在一些实际的设置里,程序化的约束是必需的,例如,银行对话系统会要求用户登录后才能检索帐户信息。
本文提出了一种端到端的学习模型,称为混合编码网络(HCNs),来解决这些问题。
除了学习RNN,HCNs还允许开发人员通过软件和行为模板来表达领域知识。
实验表明,相比于现有流行的端到端的技术,HCNs实现了相同的性能,只用了较少的训练数据,同时保留了端对端可训练性的关键作用。
此外,通过改变所用的梯度更新的方法,神经网络可以通过监督学习和强化学习训练。
本文的结构如下。
第2节描述了模型,
第3节将模型与相关工作进行比较。
第4节运用到巴比对话框数据集(Bordes and Weston,2016)。
第5节会将该方法应用在我们公司的实际客户支持方面。
第6节解释HCNs如何可以用强化学习优化。
第7节总结。
图1:操作回路。梯形指软件开发商提供的编程代码,阴影框是可训练的组成成分。“6”下的竖线表示形成于网络的输入的连接向量。
2.模型描述
在一个较高的水平,一个混合代码网络(HCNs)的四个部分分别是递归神经网络;特定领域软件;特定领域的行为模板;和一个用于识别文本中的实体引用的传统实体提取模块。
RNN和开发代码一起维护状态。
每个行为模板可以是文本的交流行为或API调用。HCN模型综述图1。
循环开始时,用户提供一个表达,比如文本(步骤1)。
用几种方法特征化该表达。
首先,形成一个词语包向量(步骤2)。
第二,话语嵌入形成,使用了预先建立的话语嵌入模型(步骤3)。
第三,实体提取模块标识实体的引用(步骤4)—-例如,识别“珍妮弗·琼斯”作为实体。
第四,文本和实体引用然后传递到由开发人员提供的“实体跟踪”代码(步骤5),用来固定和维护实体—-例如,映射文本“珍妮弗·琼斯”到一个数据库中一特殊行。此代码可以选择性地返回一个“action mask”,说明这是在当前时间步允许的行为,它是一个位向量。
例如,如果目标电话号码尚未确定,拨打电话的API活动可能会被屏蔽。
它也可以选择性地返回“上下文特征”,这也是开发者认为将有助于行为的区分的功能,比如区别出一些表达的实体和一些缺少的东西。
从步骤1-5获得的特征分量连接形成特征向量(步骤6)。
该向量传递到一个RNN,如长短期记忆(LSTM)(Hochreiter and Schmidhu-ber, 1997)或门递归单元(GRU)(Chung et al.,2014)。RNN计算隐状态(向量),并保留给下一步(步骤8),并传递到一个softmax activation致密层,输出大小等于不同的系统行为模板的数量(步骤9)
1
。
因此,步骤9的输出是一个在动作模板上的分布。
接下来,action mask被应用为一个元素级的叠加,并且结果归一化回到概率分布(步骤10)-这迫使不允许的行动的概率为零。从所得分布(步骤11)选择一个动作(步骤12)。当RL活跃,应该探索,所以在这种情况下一个动作从分布中采样而来;当RL不活跃,应选择最好的行动,因此,最高概率的动作总是被选中的。
1 RNN的实现细节如size,loss等,在第4-6节给出,附有所有实验。
选择的作用下接下来传到可以替代主体的“实体输出“开发者代码,(步骤13),产生一个完整的动作
-例如,映射模板“,对吗?“到“西雅图,对吗?”。
在步骤14中,根据动作的类型控制分支:如果它是API调用,则在开发代码中调用相应的API调用(第15步)—例如,提供丰富的内容给用户。API可以作为传感器和返回与对话相关的特征,这些可以加在下一步的特征向量上(步骤16)。
如果该行动是文本,将它呈现给用户(步骤17),然后循环重复。
采取的行动是下一步的RNN特征(步骤18)。
3.跳过
4.监督学习评价
在这一节中我们将现有途径HCNs对比于公开的“bAbI对话“数据集(Bor-des and Weston, 2016)。
该数据集包括两个端到端的对话学习任务,地点在餐厅,称为任务5和任务6.
2
任务5包括合成,模拟对话数据,和高度正规的用户行为和约束词汇。
对话包括数据库访问行为,从数据库中检索相关餐馆,包括在对话框的记录结果。
我们测试任务5的“OOV”变种,其中包括在训练集中没有观察到的实体价值。
任务6用来自第二对话状态跟踪挑战的人机对话数据(DSTC2),这里,可用性工程(crowd-workers)与口语对话系统中的几个变种发生了反应(Henderson et al., 2014)。
因为没有提供DSTC2数据库,我们从数据中推断出数据库的调用并插入对话的记录。用例对话在章节末尾A.2和A.3。
2 任务 1-4是任务5的子任务。