面向任务的对话系统

面向任务的对话系统一直是口语对话系统的重要分支。在本节中,我们将回顾面向任务的对话系统的流水线方法和端到端方法。

1.1 流水线方法

基于流水线的面向任务的对话系统的典型结构如图1所示。它包含了四个关键部分:

image-20220407134042304

  • 语言理解。它被称为自然语言理解(NLU),它把用户话语解析为预定义的语义槽
  • 对话状态跟踪器。它管理每一轮的输入与对话历史,输出当前对话状态
  • 对话策略学习。它根据当前对话状态学习下一步动作
  • 自然语言生成(NLG)。它将选择的动作映射到其表层,生成回复

在接下来的小节中,我们将详细介绍每个部分的SOTA算法。

1.1.1 语言理解

给定一句话,自然语言理解将其映射到语义槽中。这些槽都是根据不同场景预设而成。表1展示一个自然语言表示的例子,其中“New York”是一个语义槽的值的位置,并且还确定了其领域和意图。通常我们需要进行两种类型的表示。第一种是句子级别的分类,例如用户意图和句子种类。第二种是词级别的信息抽取,例如命名实体识别和槽填充。

意图检测是用来检测用户的意图的。它把一句话分类为预先设定的意图之一。深度学习技术已经陆续应用于意图检测[10;73;99]。特别地,[19]采用卷积神经网络(CNN)提取询问向量表示询问分类的特征。这种基于CNN的分类框架也类似于[22]和[64]。相似的方法同样被用于领域的分类中。

槽填充是口语语言理解的另一个具有挑战性的问题。与意图检测不同,槽填充通常被定义为序列标注问题,其中句子里的词语被标上语义标签。 输入是由一系列单词组成的句子,输出是一个槽/概念的索引序列,每个单词一个。[11]和[10]使用深度信念网络(DBN),与CRF方法相比取得了优异的结果。[41;102;56;100]使用RNN进行槽填充。由NLU生成的语义表示由对话管理模块进一步处理。典型的对话管理部分包括两个阶段——对话状态跟踪和策略学习

1.1.2 对话状态跟踪

跟踪对话状态是确保对话系统健壮性的核心组成部分。它会在每一次对话中估计用户的目标对话状态H_t表示到时间 t 为止的对话历史的表示。这种经典的状态结构通常被称为槽填充或语义框架。在大多数商业实现中被广泛使用的传统方法通常采用手工制定的规则来选择最可能的结果[17]。然而,这些基于规则的系统容易出现频繁的错误,因为最可能的结果并不总是理想的结果[88]。

统计对话系统在有噪声的条件和模糊性下[104],维护了对真实对话状态的多重假设的分布。在对话状态跟踪挑战(DSTC)[87;86]中,生成结果的形式是每轮对话每个语义槽的值的概率分布。各种统计方法,包括复杂的手工制定规则[80],条件随机场[28;27; 53],最大熵模型[85]和网络风格排名[88]都出现在了对话状态跟踪挑战(DSTC)的共享任务中。

最近,[20]引入了信念追踪的深度学习。 它使用一个滑动窗口输出任意数量的可能值的一系列概率分布。虽然它是在某一个领域的训练出来的,但它可以很容易地转移到新的领域。[48]开发了多领域RNN对话状态跟踪模型。它首先使用所有可用的数据来训练一个非常泛化的信念跟踪模型,然后对每一个特定领域利用这个泛化模型进行专门化,从而学习领域特定的行为。[49]提出了一个神经信念跟踪器(NBT)来检测槽值对。它将用户输入之前的系统对话动作,用户话语本身以及一个候选的需要判断是否出现的槽-值对作为输入,通过遍历所有的槽-值对来判断哪些已经被用户所表达出来。

1.1.3 策略学习

以从状态跟踪器获得的状态表示作为条件,策略学习将产生下个可用的系统动作。无论是监督学习还是强化学习都可以被用于优化策略学习。通常,基于规则的智能体将被用于热启动系统[86],然后利用规则生成的动作进行监督学习。在在线购物场景中,如果对话状态是“推荐”,那么“推荐”动作将被触发,系统将会从产品数据库中检索产品。如果状态是“比较”,系统则会比较目标产品/品牌[98]。对话策略可以通过进一步端到端的强化学习进行训练,以引导系统朝着最终性能做出决策。[9]在对话策略中利用深度强化学习,同时学习特征表示和对话策略。该系统超过了包括随机、基于规则和基于监督学习的基线方法

1.1.4 自然语言生成

自然语言生成将抽象的对话动作转化为自然语言的浅层表达。正如[68]中提到的,一个好的生成器通常依赖于几个因素:充分性、流畅性、可读性和变化性。NLG的传统方法通常采用句子规划。它将输入的语义符号映射为中间形式的表示,利用树状或者模板结构,然后把这些中间结构通过表层实现来转化为最终的回复[77;69]。

[81]和[82]引入了基于神经网络(NN)的NLG方法,其基于LSTM的结构类似于RNNLM [42]。对话动作类型和槽-值对被转化为一个1-hot控制向量,作为附加的输入,来确保生成的句子表达确定的意图。[81]使用一个正向RNN生成器,一个CNN重排器与一个后向RNN重排器。所有的子模块通过共同优化来产生以固定对话动作为条件的句子。为了解决在表层实现中槽信息缺失和重复的问题,[82]使用了额外的控制单元来门控对话动作。[72]通过利用对话动作来选择LSTM的输入向量,扩展了这一方法。这个问题后来通过多步调整扩展到多领域场景[83]。[110]采用基于编码器-解码器的基于LSTM的结构来结合问题信息,语义槽值和对话动作类型来生成正确答案。它使用注意力机制来关注解码器当前解码状态的关键信息。通过编码对话动作类型嵌入,基于神经网络的模型可以生成许多不同动作类型的回复答案。[14]还提出了一种基于seq2seq的自然语言生成器,可以被训练用于利用对话动作输入来产生自然语言和深度语法树。这种方法后来利用之间用户的话语和回复进行了扩展[13]。它使模型能够使用户适应(说话)的方式,从而提供适当的回复。

1.2 端到端方法

传统的面向任务的对话系统尽管有许多领域特定的手工操作,但这导致其很难适应新的领域[4];[107]进一步指出,面向任务的对话系统的传统流水线方法还有两个主要缺陷。一个是分数分配问题,最终用户的反馈很难会传到上游模块中。第二个问题是处理是相互依赖。每个模块的输入都依赖于另一个模块的输出,当调整一个模块到一个新环境或者用新数据进一步更新,所有其他模块都要进行相对应的调整以保证全局的优化。槽和特征可能也会相对应的改变。这种过程需要大量的人工操作。

随着近年来端到端生成模型的不断发展,进行了许多端到端可训练的用于面向任务的对话系统的框架的尝试。请注意,当我们介绍非面向任务的系统时,将会关注于神经生成模型的更多细节。端到端模型不再使用传统的流水线,而是使用一个模块,并使其与结构化的外部数据进行交互。[84]和[4]引入了一个基于神经网络的端到端可训练的面向任务的对话系统。这个系统将对话系统的学习当做学习一个从对话历史到系统回复的映射,利用编码器-解码器模型训练整个系统。然而,这个系统是以监督学习方式进行训练的——不仅需要大量的训练数据,而且由于缺乏对训练数据中对话控制的探索,也可能无法健壮地找到一个好的策略。[107]首先提出了一个端到端的强化学习方法,在对话管理中共同训练对话状态跟踪和政策学习,以便更好地优化系统动作。在对话中,智能体询问用户一系列是/否问题来找到正确的答案。这种方法在应用于关于猜测用户脑海中想着的名人的面向任务的对话问题时体现出良好效果。[36]将端到端系统作为完成任务神经对话系统,其最终目标是完成一项任务,如电影票预订。

面向任务的系统通常需要在外部知识库上进行查询。==之前的系统是通过向知识库产生符号化查询,利用其属性检索相关条目来实现。==这种方法通常利用在输入上做语义分析来得到表示智能体对用户目标的信念[84;90;36]。这种方法有两个主要缺点:(1)检索结果不包含任何有关于语义分析不确定性的信息,(2)检索操作是不可导的,因此分析器与对话策略需要分别训练。一旦部署系统,这会使得从用户反馈中进行在线端到端学习变得十分困难。[15]受启发于键-值记忆网络[44],通过一个在知识库条目上可导的基于注意力的键-值检索机制来增强现有循环神经网络结构。[12]将符号化询问替换为在知识库上一个导出的表达哪些条目用户较感兴趣的“软”后验概率。将软检索过程与强化学习相结合,[89]将RNN与特定领域知识相结合与系统回复模板相结合。

文章节选于:A Survey on Dialogue Systems: Recent Advances and New Frontiers

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

与 或

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值