面向任务的对话系统

article/2025/10/19 16:16:38

面向任务的对话系统

    • 1.1 流水线方法
      • 1.1.1 语言理解
      • 1.1.2 对话状态跟踪
      • 1.1.3 策略学习
      • 1.1.4 自然语言生成
    • 1.2 端到端方法

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

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


http://chatgpt.dhexx.cn/article/elVkclPN.shtml

相关文章

对话系统简单笔记

开放域对话系统:没有限定主题或明确目标,用户与系统之间自由对话。 特定域对话系统,面向具体任务。 如:任务型对话(siri),属于特定域,完成任务或动作,话轮数越少越好。…

自然语言处理与企业对话系统设计

原创:晏茜 资料来源:李俊 本文分享的主题分为两个部分,第一部分内容是关于企业级对话系统的简介,第二部分探讨对话系统和自然语言处理技术结合的领域。 1. 企业对话系统 我们首先来介绍一下企业级对话系统。谷歌的 CEO 桑达尔在 16 年曾发表言论,人工智能将通过各式各样…

定义对话系统

定义对话系统 一、定义对话系统的方法 以下方法论其实就是在定义对话系统,后面的 确定场景边界 梳理业务要素和知识库 撰写故事线 抽取对话流程 都是下面方法论的具体展开。 二、确定场景边界 1.创建机器人定位(机器人的性格定位) 2.明…

【对话系统】对话系统核心技术概要

概述 人机交互备受学术界的关注,人机对话是人机交互的核心。 对话系统是模拟人与人交流的计算机系统。 对话系统有很多分类方法。按照应用场景的不同,可分为开放域(闲聊式)和封闭域(检索式、知识问答式、任务式&…

UNITY 对话系统

1. 准备工作 创建一个画布(Canvas),画布中创建一个面板(Panel),面板中放个文本框(TEXT)和两个按钮(Button)(一个用于直接关闭,另一个…

最新对话系统综述

前言 首先介绍一篇对话系统领域综述最新的paper,写的非常好 2021年南洋理工大学发表的论文: https://arxiv.org/pdf/2105.04387.pdf 第一章:简要介绍对话系统和深度学习。 第二章:讨论现代对话系统中流行的神经模型及其相关工…

前沿重器[25] | 聊聊对话系统:多轮对话

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 近期,我再次总结了我的历史文章…

智能对话系统之多轮对话

序言 以一周前的一条微博作为开始。一周前我讲:相对的,自然语言解析技术已经逐渐不再成为各家广义智能助理产品的核心竞争力,识别用户意图之后所提供的服务开始成为对话机器人差异化的核心。 百度:对话系统的组成 对于一个对话系…

对话系统 | (1) 任务导向型对话系统 -- 对话管理模型研究最新进展

原文链接 作者丨戴音培、虞晖华、蒋溢轩、唐呈光、李永彬、孙健 单位丨阿里巴巴-达摩院-小蜜Conversational AI团队,康奈尔大学 1. 对话管理模型背景 从人工智能研究的初期开始,人们就致力于开发高度智能化的人机对话系统。艾伦图灵(Alan …

对话系统笔记

原文链接:https://www.jiqizhixin.com/articles/2020-01-31-7 对话系统一般分为两种:任务型对话系统和闲聊型对话系统。本文主要讨论前者。 任务型对话系统,也称目标导向型对话系统,多用于垂直领域业务助理系统,如微…

深入浅出对话系统——任务型对话系统技术框架

任务型对话系统架构 比如,这是一个任务型订票系统的对话例子。 如果要我们实现一个这样的对话系统,其中有三个最大的难点:理解用户输入、记住对话历史信息、知道要问什么。 首先是要能理解用户的输入,知道用户想什么&#xff1b…

一文读懂智能对话系统

来源:机器学习算法全栈工程师 作者:蒙康 编辑:王抒伟 本文共6050字,建议阅读10分钟。本文带大家理解智能对话系统的研究方法以及未来趋势。 笔者在最近的研究中发现了一篇非常好的有关对话系统的论文,《A Survey on Di…

对话系统 | (8) 任务型对话系统概述

本篇博客主要参考/节选中科院自动化所王唯康博士的博士论文《任务型对话系统中对话管理方法研究》。 文章目录 1. 概述2. 基于管道的任务型对话系统2.1 语言理解模块2.2 对话管理模块2.3 语言生成模块 3. 端到端的任务型对话系统3.1 基于检索的任务型对话系统3.2 基于生成的任务…

对话系统 | (4) 任务型对话系统基础

本篇博客内容主要来自第十四届中国中文信息学会暑期学校暨中国中文信息学会《前沿技术讲习班》— 张伟男、车万翔《任务型对话系统》 PPT下载链接 文章目录 1. 任务型对话系统概述2. 任务型对话系统关键技术自然语言理解对话管理对话状态追踪对话策略优化 自然语言生成端到端…

前沿重器[21] | 聊聊对话系统:概述

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 近期,我再次总结了我的历史文章…

Xenko C#开源游戏引擎

Xenko是一款用于渲染和 VR 的开源 C# 游戏引擎。该引擎具有高度模块化,旨在为游戏制作者提供更大的开发灵活性。Xenko 附带一个编辑器,允许您以直观和直观的方式创建和管理游戏或应用程序的内容。 官方网站:https://xenko.com/ g…

开源游戏引擎整合

2D: Allegro.cc - Main http://www.allegro.cc/ 老牌子了,和SDL同时是很经典两个EG开发组件,最近貌似在和PY进行联合? ClanLib - ClanLib Game SDK http://www.clanlib.org/ CLANLIB是以前听过最复杂最丰富的SDK,看看链接 http://…

开源游戏java引擎_基于Java的开源3D游戏引擎jMonkeyEngine

jMonkeyEngine简介 jMonkeyEngine是一款纯Java语言编写的游戏引擎,继承了Java应用跨平台的特性,而且是开放源代码的,遵循BSD开源协议,BSD开源协议用一句简单的话概括就是你可以用它做任何你想做的事情而不必担心版权问题。 这款游戏引擎在商业游戏中使用的不多,但是笔者觉…

<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvTools(七)—— 终篇总结

2021SCSDUSC 开源游戏引擎 Overload 代码模块分析 之 OvTools(七)—— 终篇总结 目录 前言回顾1、Eventing2、Filesystem3、Time4、Utils 总结下一个计划 前言 本篇是开源游戏引擎 Overload 模块 OvTools 的最后一篇了。本篇,笔者将对 OvToo…

<2021SC@SDUSC> 开源游戏引擎 Overload 代码模块分析 之 OvGame (一)—— 概况与 .rc 文件

2021SCSDUSC 开源游戏引擎 Overload 代码模块分析 之 OvGame(一)—— 概况与 .rc 文件 目录 前言OvGame 模块大纲.rc 文件 计划 前言 上一篇,笔者对 Overload 的 OvTools 分析总结完毕,想了解的可前往总结与链接集合自选查看。而…