Few-Shot Generalization Across Dialogue Tasks《少数据交互对话生成》

摘要

基于机器学习的对话管理器能够学习复杂的行为以完成任务,但是将其功能扩展到新领域并不容易。 我们研究了不同政策处理不合作用户行为的能力,以及在学习新的任务(例如预订酒店)时如何重新运用完成一项任务(例如餐厅预订)的专业知识。 我们介绍了循环嵌入对话策略(REDP),该策略将系统动作和对话状态嵌入同一向量空间。 REDP包含基于改进的神经图灵机的内存组件和注意力机制,并且在此任务上明显优于基准LSTM分类器。 我们还表明,我们的体系结构和基准都可以解决bAbI对话任务,达到100%的测试准确性。

1 Introduction

会话软件随着消息服务内部内置的语音控制设备和应用程序的增长而变得越来越重要。在该领域中的一个巨大挑战是创建一种软件,该软件能够进行扩展的对话,执行任务,跟踪对话历史记录并一致地响应新信息。没有希望明确地将人类用户可能与对话系统进行的所有可能的交互编码,因此,在统计对话系统上存在大量工作,在统计对话系统中,使用机器学习来理解口语或书面语言,并且引导对话。
文献中有关面向任务的对话系统的一个反复出现的主题是应用程序开发人员提供领域特定代码或知识的必要性(或缺乏这种必要性)。一方面,是完全手工制作的系统,例如使用AIML构建的系统,开发人员必须在其中手动编写每个可能的对话。另一个极端是所谓的“端到端”系统,该系统在无注释的对话记录上进行训练,不包含任何特定于域的逻辑或代码。在这些极端之间,存在着将领域特定代码与使用对话数据训练的概率组件相结合的方法。这种系统的一个众所周知的缺陷是,一旦经过培训,将这些系统适应新领域并不容易[1,2,3]。如果对话系统需要较少的特定于任务的代码,则可以轻松地增加其可以完成的任务数量,前提是每个任务都有训练数据。对于许多开发人员而言,收集大量的对话作为培训数据是一个巨大的障碍,因此我们特别希望从小型数据集中学习。

1.1 Cross-task Generalization in Dialogue

广告位填充涉及确定用户的目标,然后收集完成该任务所需的信息。 例如,在进行推荐之前,搜索餐厅可能需要美食,位置和价格范围。 这些字段通常称为插槽。 我们将协作对话定义为用户使用所请求的信息响应系统提示的情况。 开发人员可以轻松地实现这些协作性对话,例如,使用由单个while循环组成的骨架对话管理器,该循环会要求缺少信息,直到所有必需的位置

充满。我们将不合作的对话定义为与此不符。显式地处理所有可能的偏差是不可行的,因此我们主要感兴趣的是使开发人员能够构建可通过归纳帮助处理不合作对话的复杂性的软件。
图1举例说明了一些用户偏离合作对话的常见方式,这些方式是根据我们建立对话系统的经验得出的。每种类型的偏差都必须以不同的方式处理,并且正确的反应取决于上下文。在每种情况下,系统都应响应用户的感叹,然后尝试返回到任务。当用户对有关即时对话上下文的问题有疑问时,例如为什么您需要知道?,系统必须选择适当的响应来说明为什么需要此信息。在感叹词指的是广泛的上下文中,例如您能告诉我一些餐厅吗?,系统必须根据是否填写了所有必需的位置来选择适当的响应。当用户提供更正时,例如实际上,有些幻想,系统应该确认此更新。我们的聊天(非面向任务的谈话)模型是最简单的情况:对话策略应以适当的小谈话语回应,然后重新陈述之前的问题。特定的颤音响应由辅助系统选择,对于我们的实验而言并不重要。
我们遵循Williams等人的方法。 [4],其中开发人员使用他们的领域知识来编写用于监督学习的初始对话集。在第4节的实验中,我们测试了在一个领域中暴露于不合作对话的对话系统将这种知识转移到新领域的能力。

2 Related Work

模块化与端到端方法有关构建模块化对话系统的大量文献,包括语言理解,状态跟踪,动作选择和语言生成[5、6、7、8、9、10、11、12] 。 一种成功的方法是将对话建模为部分可观察的马尔可夫决策过程(POMDP)[6,13]。 POMDP在可能的状态上保持分布,其中状态编码用户的目标,对话历史记录以及用户最新消息的意图。 通常,通过与模拟用户互动,在强化学习(RL)设置中训练POMDP。 实施高保真模拟用户并对于非专业应用程序开发人员而言,奖励功能是一项艰巨的任务,因此尽管我们可以根据需要使用RL完善我们的政策,但我们还是强调对RL的监督学习(SL)。
混合代码网络(HCN)[4]是最近提出的一种机制,用于将基于机器学习的对话管理器与开发人员编写的功能接口。在我们的工作中,我们类似地将对话管理视为从封闭列表中选择要执行的正确操作的问题。操作可以像向用户发送消息一样简单,但通常是要执行的任意函数,例如调用API或查询数据库。注意,我们不使用统计自然语言生成,系统话语是简单的模板。 HCN无法直接应用于我们的任务,因为我们允许对话管理器连续执行多个操作,并且该策略必须预测何时应“监听”(即等待下一个用户输入)。尽管不完全相同,但我们在第4节中讨论的LSTM分类器可作为HCN方法的代理。使用SL和RL的组合来训练HCN,其中初始SL数据由开发人员手动创建,并且在用户与系统交互时在线收集更多SL数据。这建立在Henderson等人的混合SL / RL工作基础之上。 [14]。通过采用手工制作的数据进行引导,我们采用了类似的方法,然后研究了对话策略从这些初始示例到与模拟用户进行交互的概括程度如何。
最近,多位作者提出了培训端到端面向任务的对话管理器的方法[15,16]。就我们的目的而言,如果不需要特定于域的代码,并且可以在未注释的示例对话中训练策略,则模型为“端到端”。尽管这为构建适应性跨域对话代理提供了一条有希望的途径,但[15]和[16]均指出,仍需要使用特定于域的插槽定义来完全解决其任务。我们的方法不是端到端的,而是接受了以系统动作和对话行为(即自然语言理解(NLU)系统的输出)注释的对话的培训。对话框示例如图6所示。

Domain Adaptation

对话中跨域转移学习的先前工作主要集中在对话状态跟踪上。状态跟踪涉及从用户话语和系统话语序列中推断出用户目标的信念状态,例如,通过使用在ngram特征上训练的RNN [17]。 Gašic等。 [2]创建了一个基于高斯过程的POMDP系统,该系统可以学习在现有域中集成新的时隙。 Mrkšic和合作者[1]使用递归神经网络(RNN)方法创建了多域对话状态跟踪器。他们表明,在组合域上训练的模型比在单个域上训练的模型表现更好。 Williams [3]使用最大熵方法发现了相似的结果。对话状态跟踪的主要挑战是处理口语理解中的不确定性,这与本工作中研究的任务不同。尽管NLU是一个活跃的研究领域,但这项工作的重点是对话政策,因此我们不考虑NLU错误。

Classification versus Ranking

与[4]和[16]不同,我们不使用分类器来选择系统动作。相反,我们联合训练对话状态和每个系统动作的嵌入,并在状态和动作之间使用相似性函数对每个候选者进行排名。其他作者已将排名算法应用于对话管理。威廉姆斯使用基于决策树的排名方法进行状态跟踪[18]。 Bordes等人在[15]中将基于嵌入的排名用作“有监督的嵌入”基准,但是以端到端的方式将用户和系统的话语嵌入到单词袋中。 Banchs [19]在开放域,非任务导向的对话中应用了嵌入和排序方法,使用阻尼试探法将当前话语的嵌入向量与对话历史结合起来。与[19,15]不同,我们将对话状态和动作都嵌入了更高的抽象层次。用户输入表示为对话动作,系统动作表示为功能包(请参见第3节)。与以前使用嵌入的工作不同,我们的体系结构包含一个循环组件以建立对话状态的表示。

Tasks

我们的目标是将学习到的行为从一个插槽填充任务(域)转移到另一个任务。 我们考虑的某些子任务已在单个域中考虑。 例如,多位作者研究了对话系统中任务和非任务对话的交织[20,21],这类似于我们从用户无提示的“聊天”中正常恢复的任务。 此外,我们的“处理更正”任务类似于[15]中为餐厅领域定义的任务2(更新API调用)。

3 Recurrent Embedding Dialogue Policy

我们提出了周期性嵌入对话政策(REDP)。目的是学习在监督环境下对话状态和系统动作的向量嵌入。在推断时,将对话的当前状态与所有可能的系统动作进行比较,并选择具有最高余弦相似度的那个。该方案受StarSpace算法的启发[22],但是与信息检索系统不同的是,创建对话状态的表示作为简单的功能包是无效的。取而代之的是,我们提出一种架构,该架构涉及对话的历史,了解先前的用户话语和系统操作对于确定下一步应采取的操作很重要。
这种方法的一个优势是,目标标签可以表示为具有多个特征的包,从而使我们可以将系统动作表示为特征的组合。通常,描述特定动作的功能可能来自多种来源,包括类层次结构,动作名称,甚至是从代码本身派生的功能(例如调用了哪些函数)。无论特征的来源如何,相似的动作应该比不相似的动作具有更多的共同特征,并且理想地反映域的结构。在我们的实验中,我们仅从动作名称中得出特征,要么将整个名称视为一个特征,要么将名称拆分为标记并将其表示为一袋单词。例如,操作utter_explain_details_hotel和utter_explain_details_restaurant告诉用户必须提供哪些信息才能获得推荐。在词袋特征化中,这些动作具有3个共同的特征,并且区别在于指示域的单个特征。尽管基于令牌的特征足以说明我们的体系结构的泛化性能,但我们一般建议以编程方式生成这些功能,因为它不易出错。
我们的REDP的一个时间步骤如图2所示。它由几个关键步骤组成。

Featurization 该策略的第一步是使用户输入,系统操作和广告位具有特色。

用户输入的标签是自然语言理解系统[23]提取的意图和实体。 系统操作的标签是操作名称。 为了我们的目的,我们将标签中的标记用作功能(例如action_search_restaurant = {action,search,restaurant}),但通常这些功能可以从任何来源派生。 然后,使用每个标签内的令牌计数来创建用户和系统标签的词袋表示。 系统操作将分别实现。 这些槽位以二进制矢量为特征,表示在对话的每个步骤中它们的存在与否。 我们使用一种简单的插槽跟踪方法,用最近指定的值覆盖每个插槽。

Embedding layers 在第二步中,将嵌入层应用于特征向量,以创建用于用户输入(意图和实体),系统动作和插槽的嵌入。 嵌入层是密集层,具有分别用于用户输入,插槽,系统操作和RNN输出的权重。
用户输入和先前的RNN输出(先前的预测系统动作嵌入)用于计算对内存的关注

Attention

标准注意机制的问题是它们会使用固定大小的内存,在我们的情况下,这对应于将来和过去的时间步长。虽然我们可以在培训期间关注过去和将来的动作,但是在测试时间这是不可能的,因为在当前时间步未知未来的输入。因此,我们必须使用仅关注过去的投入和行动的注意力机制。为此,直到当前对话步骤为止,在截断的内存上计算注意力分布。
我们的注意力架构包括神经图灵机的修改版本[24]。主要区别在于,由于内存在当前时间步被截断,因此插值门无法应用于关注概率。因此,将插值应用于巴赫丹瑙分数[25]而不是概率,并且仅适用于先前的时间步长。使用当前时间步长的分数而不进行插值。通过使用Bahdanau注意和张量流[27]中实现的归一化[26]来计算分数。为了按位置处理内存,我们用注意力转移的权重因子执行一维卷积,而不是注意力概率的圆形卷积,这是根据Graves等人的方法计算的。 al [24]。我们对用户和系统内存使用两种单独的注意机制。

RNN 

作为RNN体系结构的单元,我们使用LSTM单元,该单元具有[28]中引入的忘记和输入偏差的时间初始化以及隐藏状态[29]上的反复丢失。
为了创建对循环单元的输入,将嵌入式用户输入和用户注意力向量相加,然后与嵌入式插槽连接。 该单元的输出被馈送到另一个嵌入层,以为当前时间步创建单元输出的嵌入。 该嵌入式单元输出和系统注意力向量的总和用作对话状态嵌入。
在每个时间步长上,所有先前的LSTM状态都按元素方式乘以二进制化的系统注意力概率。 这样,体系结构可以学会返回其先前的LSTM状态之一,而跳过它们之间的任意数量的步骤。

Similarity 对于每个时间步,在对话级别嵌入a和目标系统动作b +嵌入之间构建相似性。 我们通过对错误的系统动作b−的嵌入进行负采样来计算损失,确保与目标标签的相似度很高,并且与任何错误动作的最大相似度都很低。
损失函数定义为:

这意味着对于一个正系统动作,相似度将被最大化,直到μ+的值;而对于一个负系统动作,相似度的最大相似度将被最小化为-μ-。 全局损失是所有时间步长中所有损失函数Lt的平均值。

4 Experiments

我们测试了LSTM和我们的REDP架构将图1所示的每个模式从一个插槽填充任务扩展到另一个任务的能力。 出于说明目的,我们考虑餐厅和酒店推荐的领域。 对于这两项任务,系统都需要一个价格范围,位置和人数。 为了进行酒店推荐,系统还需要知道开始和结束日期,对于餐厅推荐,还需要一种美食类型。

4.1 Data Generation

正如开发人员会做的那样,我们手工进行了许多对话,用于监督学习创建他们的对话系统的初始版本。我们创建了两种对话:合作对话DC(共有11个),用户可以在其中提供部分或全部偏好设置立即进行,但否则将对系统的问题做出正确回应,并且不配合-相对对话表明,在其中恰好发生一种偏离(图1所示的四种类型之一)。 ü我们在dinit上制定了关于对话的自举对话政策。 cu
然后,我们创建了一个简单的随机模拟用户,以与自举策略进行交互。的用户可以合作并提供所需的信息,也可以插入其中一种偏差类型。在每个回合中,从这5种响应类型的均匀分布中采样用户操作。我们在酒店领域进行了120次对话,删除重复项后,我们获得了108个独特的对话对话。由于引导策略不完善,因此我们手动修复了这些生成的错误对话。我们将它们分为一个测试集dh,测试30个对话,一个训练集dh,训练78 uu对话。对于餐饮领域,我们生成了50个不合作对话dru和8个合作对话drc,我们将它们包括在训练数据中或从训练数据中排除,以衡量对话政策的转移学习能力。生成的对话至少有12个,最多48个,平均29.4个动作可以预测。

 

4.2 Evaluation

我们在实验中比较了两种不同的策略:用作HCN代理的LSTM分类器,以及第3节中描述的REDP策略。LSTM分类器的输入向量是对用户意图和实体(时隙)进行编码的二进制向量。 ,以及之前的系统操作。在LSTM(bin)基线中,先前的动作被编码为单热向量。我们还评估了LSTM(lt)策略,其中先前的操作被编码为令牌袋。这是为了确保LSTM基线可以访问与REDP策略相同的信息,即不同域中的操作之间的共享功能。我们在两个不同的数据集上进行了实验,将初始合作对话与模拟用户的不合作对话。第一个数据集仅涵盖酒店领域,d = dh train dh,train,第二个还包括餐馆领域的对话d = d∪dr∪dr。 1立方21立方我们逐步增加dh,train的分数,并对dh,test进行评估。我们以uu来衡量准确性正确预测每个动作的对话次数,平均经过5次独立运行。

All dialogue policies were implemented using the Rasa Core [23] library https://github.com/ RasaHQ/rasa_core. The code and data for our experiments are open source and available on the web https://github.com/RasaHQ/conversational-ai-workshop-18. All hyperparameters are documented together with the code.

4.3 Results and Discussion

图3a和3b显示了酒店领域中每个测试策略在坚持的测试对话中的执行情况。在图3a中,策略在d1上进行了培训,仅包括酒店对话,而在图3b中,策略在d2上进行了培训,其中d2包括了餐厅领域的对话。在这两种情况下,REDP均明显优于LSTM基准。
图4a-4c显示了与3a和3b相同的数据,但分组以说明转移学习对每个策略的影响。尽管有一些证据表明REDP和LSTM(lt)可以从餐馆对话中受益,但该证据并非结论性的。但是,图3a中REDP的学习曲线已经非常陡峭,与LSTM基线相比,转移学习的改进空间较小。测试集中最常见的错误是对狭义上下文问题的错误回答(见图1),其中的主要困难是识别用户所指的是哪个插槽。需要进行实际用户测试才能确定跨任务学习的好处。
对REDP的消融研究(如图5所示)表明,对本文提出的任务进行更好的概括的关键机制是对先前系统动作的关注。将结果平均3次。为了证明这一点,我们在图6中说明了注意机制对从不合作的对话中恢复的影响:通过有选择地关注对话历史,该策略能够从一系列不合作的用户话语中恢复并返回要完成的任务。请注意,即使没有引起任何注意,REDP的最终测试精度也达到了100%,这是LSTM基准均无法实现的。
我们还从[15]中测试了有关bAbI任务5(进行全面对话)的两种政策。通过自动标记生成的用户和系统话语,我们将对话转换为Rasa Core格式。两种策略在测试集上均达到100%的准确性。这是可以预期的,因为bAbI对话任务旨在挑战端到端系统,并且我们的对话策略使用显式的时隙跟踪。

 

 

 

图6:说明注意机制在处理不合作对话中的作用。 左侧是预测最终操作时系统(实线)和用户(阴影线)内存对齐的直方图。 中间是来自Rasa Core格式的测试集的对话框。 右侧有语音帮助读者跟进对话。 chitchat响应必须单独选择,并且未显示。 一致表明,该政策可以学会忽略早期的不合作对话并完成任务。

5 Conclusions and Future Work

在本文中,我们介绍了循环嵌入对话策略,该方法学会将对话状态和对话系统动作嵌入相同的向量空间,并在任务中使用共享信息,从而受益于跨域的转移学习。 我们证明了REDP可以学习可重用的对话模式,并可以利用其注意力机制从不合作的用户行为中正常恢复。 我们计划更深入地研究REDP框架,将其应用于更多领域并与真实用户进行测试,并研究学习的嵌入的属性。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值