论文标题:《Recent advances and challenges in task-oriented dialog systems》
一、摘要部分
本文综述了面向任务(task-oriented)的对话系统的最新进展和面临的挑战。还讨论了面向任务的对话系统的三个关键主题:①提高数据效率 ②建模多轮次对话策略学习 ③将领域本体知识集成到对话模型中。此外,还回顾了对话评价的最新进展和一些广泛使用的语料库。
二、引言部分
面向任务的对话系统旨在帮助用户完成特定领域中的某些任务。与开放域对话系统相比,面向任务的对话系统更侧重于完成一个或多个特定任务。通常,面向任务的对话系统构建在定义了任务的领域知识的结构化本体之上。
现有的面向任务的对话系统研究大致可分为两类:管道(pipeline)方法和端到端(end-to-end)方法:
1)管道方法(pipeline):整个系统分为几个模块,包括自然语言理解(NLU)、对话状态跟踪(DST)、对话策略(Policy)和自然语言生成(NLG)。还有一些其他的组合模式,如下图:
构建管道系统往往需要大规模标注对话数据来训练各个组件。模块化结构使系统比端到端的同类系统更具可解释性和稳定性。因此,大多数现实世界的商业系统都是以这种方式构建的。
在管道方法中,最近的研究主要集中在对话状态跟踪(DST)和对话策略(Policy)组件,也称为对话管理。这是因为NLU(自然语言理解)和NLG(自然语言生成)组件都是独立的语言处理任务,它们与对话系统中的其他任务交织较少。
DST(对话状态跟踪)任务可以看作是一个通过预测每个槽的值进行的分类任务。然而,当训练数据不足时,这种基于分类的方法会受到词汇外(OOV)问题的困扰,并且不能直接推广到新的领域。
对话策略学习任务通常被认为是一种强化学习任务。然而,与其他众所周知的强化学习任务(如玩电子游戏和围棋)不同,对话策略的训练需要真人作为环境,这是非常昂贵的。此外,大多数现有方法使用手动定义的奖励,如任务完成率和会话回合数,这自然不能可靠地评估系统的性能。
2)端到端方法(end-to-end):使用单个模型构建系统,该模型直接将自然语言上下文作为输入,并输出自然语言响应。端到端系统需要更少的注释,使其更容易构建。然而,端到端结构使其成为一个黑盒子,更不可控
对于端到端方法,基础的序列到序列(sequence-to-sequence)模型数据饥渴(需要大量标注数据)的特性使得在具有有特定领域、特定数据量的面向任务的对话系统中学习复杂的槽填充机制变得困难。知识库查询问题要求模型在编码器和解码器之外生成中间查询,这并不简单。另一个缺点是编码器-解码器框架利用了字级策略,这可能会导致次优性能,因为策略和语言功能纠缠在一起。
3)基于上述分析,以下阐述了面向任务的对话系统中的三个关键问题:
①数据效率:大多数神经方法都是数据饥渴型的,需要大量的数据来完全训练模型。然而,在面向任务的对话系统中,特定于领域的数据通常很难收集,而且注释成本很高。因此,低资源学习(使用较少的数据训练出高效的模型)问题是主要挑战之一
②多轮对话:与开放域对话相比,任务导向对话的核心特点是强调多轮次策略中的目标驱动。在每个回合中,系统动作应该与对话历史保持一致,并引导后续对话获得更大的任务奖励。然而,无模型强化学习方法虽然在许多任务上表现优异,但由于训练环境昂贵和奖励定义不完善,无法直接应用于面向任务的对话。因此,为了更好地进行策略学习,在多轮次交互式训练中提出了许多解决方案,包括基于模型的规划、奖励估计和端到端策略学习。
③本体集成:面向任务的对话系统必须查询知识库(KB)来检索一些实体以生成响应。在管道方法中,KB查询主要是根据DST(对话状态跟踪)结果构造的。与管道模型相比,端到端方法绕过了需要细粒度注释和领域专业知识的模块化模型。然而,这种简化使得很难构造查询,因为没有显式的状态表示。
三、模型和方法部分
面向任务的对话系统的体系结构可以大致分为两类:管道 和 端到端方法
1、管道方法
在管道方法中,NLU(自然语言理解)、DST(对话状态跟踪)和NLG(自然语言生成)组件在聚合在一起之前通常是单独训练的,而Policy(对话策略)组件是在组合系统中训练的。值得注意的是,虽然NLU—>DST—>Policy—>NLG框架是管道系统的一种典型配置,但是还存在其他类型的配置。
对比端到端方法中,对话系统以端到端的方式进行训练,而不指定每个单独的组件。通常,训练过程被表述为在给定对话上下文和后端知识库的情况下生成响应的话语。
1.1、自然语言理解(NLU)
给定用户话语,自然语言理解(NLU)组件将话语映射到结构化语义表示。一种流行的语义表示模式是对话行为,它由意图和槽值组成,意图类型是对话语的高级分类,表明了话语的功能。槽值对是在话语中提到的特定于任务的语义元素。如下是一个具体例子:
用户:我想要预订一个房间。
系统:您想要预订哪一天的房间?
用户:下周一。
系统:好的,您需要单人房还是双人房?
用户:单人房。
意图:预订房间
槽值:(日期:下周一)(房间类型:单人房)
注意,意图类型和槽值对都是特定于任务的,它们与本体相关,可用于查询知识库。
由于强大的序列建模能力,RNN及其变体被广泛应用于意图检测和槽值提取。这些模型使用每个标记的隐藏状态来预测相应的槽值,并使用最终的隐藏状态来识别句子意图。其他神经网络结构如递归神经网络和CNN也被探索过。将传统序列标注模型经常使用的条件随机场与RNN和CNN相结合,提高性能。最近,预训练模型BERT是另一种流行的选择。也有一些模型加强了意图分类和槽标注之间的联系。如使用意图门来指导槽标注过程,以及使用注意机制来允许词和句子表征之间的交互。
1.2、对话状态跟踪(DST)
对话状态跟踪器通过将整个对话上下文作为输入来估计用户在每个时间步中的目标。时间t的对话状态可以看作是之前轮次的抽象表示。早期的工作假设了一些固定的对话状态集,并将交互过程中的状态转换建模为马尔可夫决策过程(MDP)(MDP的目的是找到一个最优策略,使得智能体在遵循该策略时,从任何初始状态开始,都能获得最大的期望累积奖励)。
POMDP(马尔可夫决策过程的拓展)进一步假设观测值是部分可观测的,这使得它在复杂情况下更具鲁棒性。最近的工作大多采用置信状态(一个系统或模型在执行任务时对自己决策或预测的确定性)来表示对话状态,其中状态由代表用户目标的槽值对组成。因此,这个问题可以表述为一个多任务分类任务其中,但是,当在运行时面对以前未见过的值时,这种方法就不够用了。此外,也有一些作品将DST(对话状态跟踪)任务表述为阅读理解任务。
在最近的方法中,槽可以分为两种类型:自由形式和固定词汇。前一种类型没有为槽假定固定的词汇表,这意味着模型不能通过分类预测值。对于自由格式槽,可以直接生成值,也可以预测值在话语中的跨度。在生成方法中,它们通常使用解码器从一个大词汇表中逐字生成槽的值。然而,对于罕见的单词,由于词汇量有限,这种方法也可能失败。而对于基于跨度的方法,模型假设值显示在上下文中,并预测该跨度的开始和结束位置。
1.3、对话策略(Policy)
根据对话状态,对话策略生成下一个系统操作。由于会话中的对话行为是顺序生成的,因此通常将其表述为马尔可夫决策过程(MDP),这可以通过强化学习(RL)来解决。在特定的时间步,用户采取行动,接收奖励,状态更新。
一种典型的方法是首先通过基于对话语料库的监督学习或模仿学习离线训练对话策略,然后通过与真实用户的强化学习对模型进行微调。由于真实的用户对话是昂贵的,因此引入了用户模拟技术来提供负担得起的培训对话。
无模型强化学习方法通过与真实用户的交互进行学习,在神经对话策略的早期研究中占主导地位。对于复杂的多域对话,引入分层强化学习模型,首先确定哪个是当前转向的域,然后选择该域的动作。
训练RL策略模型需要大量的交互。一个常见的解决方案是使用用户模拟器,这是另一个像人类用户一样的对话系统,提供培训和评估环境。然而,用户模拟器不能完全模拟真实的人类对话行为,其归纳偏差可能导致次优模型在真实人类对话中表现不佳。
为了缓解这些问题,提出了基于模型的强化学习方法来对环境进行建模,从而实现对话策略学习的规划。在基于模型的强化学习方法中,对环境进行建模以模拟对话的动态。然后在RL训练阶段,通过向真实用户学习和使用环境模型进行规划来交替训练对话策略。其他一些作品同时联合训练系统策略和用户策略
1.4、自然语言生成(NLG)
给定由对话策略生成的对话行为,自然语言生成组件将该行为映射到自然语言话语,这通常被建模为条件语言生成任务。该任务将对话行为作为输入,并生成自然语言响应。为了提高用户体验,生成的话语应该
1)充分传达完成任务的对话行为的语义
2)自然、具体,类似于人类语言
另一个问题是如何用有限的训练数据构建一个鲁棒的NLG。Peng等提出了SC-GPT,首先使用从现有公开可用的对话数据集中收集的大规模NLG语料库对GPT进行预训练,然后使用较少的训练实例在目标NLG任务上对模型进行微调。
2、端到端的方法
一般来说,管道系统中的各部件是单独优化的。这种模块化的结构导致了复杂的模型设计,并且每个单独组件的性能并不一定转化为整个系统的进步。面向任务的对话系统的端到端方法受到开放域对话系统研究的启发,开放域对话系统使用神经模型以端到端方式构建系统,无需模块化设计,这些方法大多利用序列到序列模型作为基础结构框架,该模型端到端可微,可以通过基于梯度的方法进行优化。
在大多数现有的端到端方法中,训练模型以最大限度地提高收集数据响应的预测概率。Wen等提出了一种模块化的端到端模型,其中每个组件都使用神经网络建模,这使得模型端到端可微。Bordes等人将面向任务的对话作为阅读理解任务,将对话历史作为上下文,将用户话语作为问题,将系统响应作为答案。在这项工作中,他们利用端到端记忆网络进行多轮次推理。Madotto等采用了类似的方法,进一步将知识库信息输入到记忆网络中。此外,还有工作引入了一种新的存储网络结构,称为键值对(key-value)存储网络,通过键值对(key-value)检索从知识库中提取相关信息。Lei等人提出了一种两步seq2seq生成模型,该模型绕过结构化的对话行为表示,只保留对话状态表示。在他们的方法中,模型首先对对话历史进行编码,然后使用LSTM和CopyNet生成对话状态。给定状态,模型然后生成最终的自然语言响应。
上述方法的一个主要缺点是它们通常需要大量的训练数据,而这些数据的获取成本很高。此外,由于模型只观察数据中的样例,因此它们不能充分探索状态—动作空间。因此,引入强化学习方法来缓解这些问题。在一项工作中,构建了一个端到端模型,将自然语言话语作为输入,生成系统对话行为作为响应。在这种方法中,没有显式的状态表示。相反,他们使用LSTM将对话历史编码为状态向量,然后使用DQN(在强化学习中,Q函数用于评估在给定状态下采取特定动作的预期回报。DQN通过深度神经网络来近似这个Q函数,使得算法能够处理复杂环境中的状态表示)来选择一个动作。Williams等提出了基于LSTM的混合代码网络(hybrid code networks, HCN),支持自定义软件。
四、评估
对话代理的评估对面向任务的对话系统的发展至关重要。大多数评价研究遵循PARADISE框架。它从两个方面来评估用户满意度:一种是对话成本,衡量对话中产生的成本,如轮次。另一个是任务成功,评估系统是否成功解决了用户的问题。评估面向任务的对话系统的方法可以大致分为以下三种:
1、自动评估
自动评估因其快速、廉价和客观而受到广泛推崇。为系统中的不同组件设计了一系列定义良好的自动度量。
1)对于语言理解,使用了slot F1和意图准确性
2)对于对话状态跟踪,评估指标一般包括槽精度和关键状态精度
3)对于策略优化,使用通知率、匹配率和任务成功率
4)对于语言生成,BLEU和perplexity等度量是适用的
所有的模型都可以通过监督学习来针对这些指标进行优化。但是,每个组以这种方式训练或评估是彼此分离的。此外,它假设模型将被输入来自上游模块或训练过程中最后一个对话回合的基本事实,但这种假设在真实对话中是无效的。
2、模拟评估
除了训练基于强化学习的智能体之外,用户模拟器模拟面向任务的对话框中的用户行为,也使我们能够评估训练过的对话系统。这是因为,与开放域对话系统不同,面向任务的对话系统中的用户目标在某种程度上是“可枚举的”,因此可以充分利用领域专业知识来构建用户模拟器,该模拟器可以为模拟评估提供类似人类的会话交互。模拟评估中使用的指标包括任务成功率、对话长度、平均奖励等。
模拟评估在最近提出的对话系统平台中得到了广泛的应用。模拟评估的主要优点是:
1)系统可以以端到端方式进行评估
2)推理时可进行多轮次交互
3)合成对话数据可以有效地生成用于评估,而无需任何成本
与对话策略优化类似,采用模拟评估的主要挑战是构建一个能够尽可能模拟真实用户行为的良好用户模拟器。同时,如何对用户模拟器进行评估也是一个正在进行的研究方向。
3、人类评估
模拟评估是通过自动、模拟交互对系统性能进行评估的有效方法。即使有一个完美的用户模拟器,我们仍然需要人类的判断来进行更完整的评估。人力评价指标包括任务成功率、无关回合率、冗余回合率、用户满意度评分等。
研究人员一般在众包平台上雇佣人工用户,人工评估可以通过以下两种方式进行。
1)间接评估,要求注释者阅读对话系统和用户模拟器之间的模拟对话,然后根据每个指标对分数进行评分或在不同系统中给出他们的偏好
2)直接评价,即要求参与者与系统交互完成某一特定任务,给出他们对交互体验的打分。
五、语料库(可至原文查看已整理的相关表格)
为了便于面向任务的对话系统的研究,该文收集大量不同领域和标注粒度的语料库。一些数据集包含单域对话。随着现实应用中处理各种任务的需求日益增加,近年来收集了一些大规模的多领域语料库。这些数据集具有较高的语言变化和任务复杂性。虽然大多数数据集都是英文的,但Zhu等人提出了第一个具有丰富注释的面向中文任务的大规模数据集,以促进中文和跨语言对话建模的研究。
关于数据注释,DSTC语料库(一系列用于对话状态跟踪任务的公开数据集)为对话状态跟踪提供了第一个通用的测试平台和评估套件。DSTC2包含了本体的额外细节,包括NLU任务的可告知槽和可请求槽的属性列表。在一些语料库中还提供了会话过程中的用户目标和匹配实体数据库,可用于多轮次交互建模。值得注意的是,对话状态注释的模式在这些数据集之间通常是不同的。
数据收集主要有三种模式。
1)人对机器(H2M):其中通过与部署的基于机器的系统对话的人类用户收集数据。
2)机器对机器(M2M):其中两个系统分别扮演用户和系统角色,并相互交互以生成对话。
Shah等人引导数据收集过程,首先使用M2M模式在对话行为级别生成对话模板,然后使用众包将这些模板转换为自然语言。该方法的优点在于可以自动获得语义注释,对于众包工作者来说,将模板翻译成句子相对简单,因此具有成本效益和抗错误性。然而,由于对话模拟是使用启发式规则(一种基于经验或直觉的解决问题的方法或策略)进行的,因此往往限制了任务的复杂性和语言的多样性。
3)人-人(H2H):它收集两个分别扮演代理(系统)和客户(用户)角色的众包工作者之间的真实对话。在对话开始之前,每个工作人员都有一个关于他们的目标和他们应该如何行动的任务描述。虽然这样的框架产生自然而多样的对话框,但它增加了数据注释的难度,特别是当注释方案是细粒度的时候。
六、挑战
1、数据效率
与开放领域对话系统的研究不同,面向任务的对话系统的数据驱动方法通常需要细粒度的注释来学习特定领域的对话模型,例如对话行为和状态标签。然而,在特定领域中获得大规模标注语料库往往是困难的,因为:
1)由于特定领域的任务性质,收集特定领域的语料库比在开放领域设置中更难
2)标注细粒度标签需要大量的人力资源,这是非常昂贵和耗时的
因此,必须面对如何提高构建面向任务的对话系统的数据效率的问题,特别是在低资源环境下。以下为可采取的三种方法:
1)从大规模数据中获取先验知识或从其他任务中调整训练模型的迁移学习方法
2)引入一些通过启发式规则直接在资源少、注释少的情况下进行学习的无监督方法
3)构建数据驱动用户模拟器
1.1 迁移学习
机器学习的一个主要假设是训练数据和测试数据具有相同的分布。然而,在许多现实场景中,当我们在目标任务中只有有限的数据,而在另一个任务中有足够的数据,并且具有不同的数据分布时,这种情况就不成立了。因此,迁移学习通过将知识从源任务转移到目标任务来缓解这一问题。
同样的问题也经常出现在面向任务的对话系统中。(例如,当酒店域中只有有限的数据时,如何将用于餐厅预订的对话系统应用于酒店预订 ? 由于这两个领域的本体是相似的,共享许多对话动作和插槽。)在这种情况下,迁移学习可以大大减少这种适应所需的目标数据量。
除了领域层面的迁移,知识还可以在许多其他维度上迁移,包括人与人之间的迁移和跨语言的迁移。对于领域迁移,Mrksic等提出通过在多个领域数据集上的多任务学习来学习对话状态跟踪模型,实现跨领域的知识迁移,可以提高在所有任务上的性能。Ilievski等人提出直接从源域模型中传递共享槽的参数来初始化目标模型。Chen等人提出使用几个插槽依赖的代理和一个插槽独立的代理对对话代理建模,以跟踪不同域的私有和公共插槽。还有文献提到,DST模型的参数是跨域共享的,并且独立于预定义的值集。因此,该模型能够转移到以前未见过的领域。Wu等通过将域和槽名作为DST模型的输入,进一步从模型参数中解耦了域和槽对于跨任务的转移,Mo等提出通过学习没有共享槽的行为和状态转移函数在域之间进行对话策略模型的转移,直接从源特征空间映射到目标空间。对于个性化知识转移,提出了一种混合DQN策略(DQN利用深度神经网络来近似Q函数(Q-learning中的关键概念),从而解决了传统Q-learning在处理高维状态空间时遇到的问题),用于跨不同客户的知识转移,其中对于所有客户有一个通用的Q函数,对于每个特定客户有一个个性化的Q函数。当转移给一个新任务时,只需要少量的数据就可以学习个性化的Q函数。Mo等人通过在RNN解码器框架内设计一种新颖的个人控制门,进一步在不同的任务之间传递更细粒度的短语级知识,同时保持每个用户的个人偏好不变。
跨语迁移的研究是近年来提出的。最近文献中研究了三种跨语言方法:
1)将训练数据翻译成目标语言
2)预训练跨语言嵌入
3)使用多语言机器翻译编码器共享上下文单词表示的知识。
对话系统中的迁移学习也提出了模型不可知论(通过在多个任务上训练,找到一种模型参数的初始化,使得模型在新任务上只需要少量的梯度更新就能达到良好的性能)方法,这些方法主要受到模型不可知论元学习(MAML)框架的启发。MAML框架在学习过程中通过模拟训练测试过程,学习到良好的初始化模型。通过将这些方法应用于NLG,模型可以在低资源设置下获得更好的结果,并表现出更好的领域泛化。Madotto等人通过仅利用从目标用户收集的少量对话样本而不使用特定于人物角色的描述,进一步将该方法扩展到个性化对话系统。
除了上述从源模型转移知识的方法外,还有一些工作通过直接赋予模型或算法先验知识来提高数据效率,以减少数据的使用。例如,提出了改进的RL方法,包括ACER和BBQNetworks,以提高样本效率。以及将动作选择过程分解为主动作和原语动作选择,并根据领域本体对这两个动作进行设计。
1.2 无监督方法
对话策略学习的一个关键问题是对奖励信号的估计,这在实际应用中是很难得到的。因此,建立一个奖励估计模型对于对话策略学习是必要的,特别是在强化学习训练中。通过将对话策略作为生成器,奖励函数作为判别器,生成式对抗网络(GAN)可以以无监督的方式学习奖励函数。Liu等人首先使用GAN通过区分模拟用户对话和真实用户对话来学习二元奖励函数。Xu等人通过使用预测奖励作为失败的指标,扩展了这一想法,以检测对话失败。Su等使用另一种方法使用高斯过程进行奖励估计。通过对预测奖励的不确定性进行建模,该模型可以在潜在失败情况下主动要求人工干预。在他们的实验中,随着奖励估计不确定性的降低,人工干预的需求显著降低,这显著减轻了人工标注的工作量。
在大多数研究中,对话系统的本体是由人类专家通过精细的领域工程来构建的。另一项工作是通过自动从未标记的语料库中学习对话结构来帮助人类专家完成这一过程。Shi等提出通过基于变分自编码器(VAE)的方法来学习对话过程的有限状态机。他们首先使用原始对话数据预训练了一个基于VAE的对话模型,没有中间注释。然后根据潜在变量发现不同的对话状态。然后,通过估计状态间的转移概率,构建状态转移图。也有一些作品分析了任务导向的结构,以促进语言理解。Takanobu等提出了面向任务的对话系统中主题分割和标记的强化学习方法,该方法旨在检测对话轮之间的主题边界,并为其分配主题标签。
近年来,预训练方法在许多NLP任务中表现出优异的性能。在这种方法中,可以使用无监督的预训练任务,如掩模语言建模(MLM)和下一句预测(NSP),从大规模未标记的语料库中转移广泛的语言特征。Wolf等人采用了这种方法,首先在大规模对话数据上预训练Transfoemer模型,然后在个性化对话任务上使用多任务学习对模型进行微调。Budzianowski等人进一步将这一想法探索到面向任务的对话,而不需要明确的独立对话策略和生成模块。在这项工作中,首先将置信状态和数据库状态转换为自然语言文本,然后将其作为上下文之外的转换解码器的输入
1.3 用户模拟
用户模拟技术通过提供理论上无限数量的训练交互,缓解了基于强化学习的对话策略模型的数据饥渴问题。早期研究重点关注基于规则的用户模拟器(ABUS),它通常用于构建面向任务的对话系统。它维护一个类似堆栈的结构,用一些启发式方法表示用户的目标。建立一个基于规则的模拟器需要人类专家明确地定义启发式规则(重点,要人类专家定义规则)。然而,对于更复杂的任务,定义明确的规则结构是不可行的。来自ABUS的话语也缺乏人类对话的语言变化,这可能导致在实际应用中的性能不理想。
最近,提出以数据驱动的方式构建用户模拟器以缓解上述问题。Asri等提出了一种考虑对话上下文的对话行为级seq2seq用户仿真模型。Crook等人提出了另一种seq2seq模型,该模型以自然语言上下文作为输入,输出自然语言响应。Kreyssig等引入了一种神经用户模拟器(NUS),它模拟语料库的用户行为并生成单词级用户响应。Gur等人提出了一种分层seq2seq用户模拟器(HUS),它首先对用户目标和系统转弯进行编码,然后生成用户对话行为。为了产生更多样化的用户行为,他们将HUS扩展为变分版本(VHUS),其中用户转向是由不可观察的潜在变量产生的。另一种数据驱动的用户模拟器与目标对话系统一起训练,可以看作是一种多智能体的方式。Liu等提出先基于对话语料库通过监督学习对对话系统和模拟器进行训练,然后通过强化学习对两个模型进行微调。在这项工作中,系统和模拟器是合作训练的,其中两个代理共享相同的奖励函数。基于Deep Dyna-Q (DDQ)的对话规划框架中的世界模型在训练过程中不断更新,也可以看作是模拟器。然而,与基于强化学习的协同训练不同,DDQ中的世界模型是通过使用真实经验的监督学习来更新的。
上述方法中的用户模拟器是基于人机对话数据进行训练的。除此之外,人类还可以通过提供人类演示来辅助对话策略学习。由于人工指导是昂贵的,Chang等比较了各种教学方案,回答了如何以及何时教学的问题,以更经济地使用教学预算。Chen等进一步提出了同伴学习(CL)框架,该框架整合了基于规则的策略和基于学习的策略。由于规则教师不如人类教师,因此引入不确定性估计来控制咨询和学习的时间
2、多轮对话
与开放域对话系统相比,面向任务的对话系统的一个主要特点是强调多轮次—动作行为,这主要与对话管理(DST和Policy)有关。在开放域对话系统中,研究更侧重于生成合理、一致和人际间的响应,以最大限度地提高用户参与度。而对于面向任务的对话系统,尽管上述问题仍然很重要,但完成特定任务已被视为更为关键。因此,负责跟踪对话状态和对话流程的对话管理研究是对话系统的支柱。人类对话可以广义地表述为一个马尔可夫决策过程(MDP)。因此,强化学习(RL)经常被用于解决对话系统中的马尔可夫决策问题。面向任务的对话系统对话管理的最新研究主要集中在以下几个方面:
1)针对自由格式槽的带有值解码器的生成式DST
2)针对策略学习中更好的样本效率的对话规划
3)用于预测任务成功和用户满意度的用户目标评估
2.1 生成式DST
对话状态跟踪器通过跟踪每个回合的结构化对话状态表示,在面向任务的对话系统中起着核心作用。最近的DST研究大多采用词级结构,将自然语言作为输入,而不使用非语言推理,这样可以避免由非语言推理成分传播的错误。在早期的神经DST方法中,广泛采用置信状态来表示对话状态,它保持了每个槽的所有可能值的分布。
因此,早期的方法通常将DST作为分类任务。Henderson等首先提出将递归神经网络用于单词级对话状态跟踪,将自然语言话语和ASR分数作为输入特征。Mrksi等人提出了神经置信跟踪器(NBT),这是一种直接从自然语言话语中读取的词级对话状态跟踪器。NBT通过门控机制显式地对系统请求和系统确认操作建模。然而,这些方法只能处理领域本体词汇表中预定义的槽值,在推理过程中通常无法跟踪未知的槽值。
Zhong等提出了通过全局局部自关注机制实现槽间参数共享,学习槽特有的特征,可以推广到训练数据较少的稀有值。Lei等使用了带有两阶段CopyNet(解码器不仅能够生成词汇表内的词汇,还能够“复制”输入序列中的词汇,即使这些词汇在训练数据的词汇表中不存在)的seq2seq模型同时生成置信跨度和响应,在OOV(词汇表外)情况下获得了满意的结果。第一阶段,置信状态CopyNet以用户话语为输入,生成置信状态跨度。然后在第二阶段,基于话语和置信跨度,另一个CopyNet生成回应话语。Xu等提出了使用指针网络提取未知槽值的方法,其性能优于判别式DST方法。一种更实用的方法是同时使用提取和判别方法来处理不同类型的槽。对于自由形式的槽,如酒店名称和出发日期,它们的值应该从话语中提取出来。而对于那些固定词汇槽,如酒店星级和房间类别,最好使用分类器来预测它们的值。
近年来,一些多域数据集的提出推动了这一方向的研究。与单域任务相比,多域场景下的DST需要预测槽位值的域。Wu等提出了TRADE,一种可转移的多域DST,使用seq2seq模型和CopyNet进行预测值。这些参数可以跨域共享,对未见过的域启用零样本DST。COMER通过先确定域和槽,再解码值,进一步降低了值解码的计算复杂度。在上述方法的解码中,它们首先向解码器输入域和槽名,然后解码值。如果将域名和槽名作为“问题”的一种形式,则可以将前面的回合作为上下文,将域名和槽名作为问题,将值作为答案,将模型视为问答模型。DSTQA在“问题”中除了名称之外增加了更多的元素。他们还使用GNN对中间对话状态图进行编码,以减轻值解码。Chen等人提出使用图注意神经网络对槽间关系进行建模。
2.2 对话规划
无模型强化学习方法通过与真实用户交互进行学习,在神经对话策略的早期研究中占主导地位。它需要大量的数据,需要大量的交互才能有效地训练策略模型。一种常见的解决方案是使用用户模拟器。然而,用户模拟器无法完全模拟真实的人类对话行为,其归纳偏差可能导致次优模型在真实人类对话中表现不佳
为了缓解这些问题,提出了基于模型的强化学习方法来对环境进行建模,从而实现对话策略学习的规划。在基于模型的强化学习方法中,对环境进行建模以模拟对话的动态。然后在强化学习训练阶段,通过向真实用户学习和使用环境模型进行规划交替训练对话策略。Peng等提出了深度Dyna-Q (DDQ)框架,该框架首次将基于模型的规划集成到面向任务的对话系统中。在DDQ框架中,有一个世界模型,它是根据真实用户体验训练的,以捕捉环境的动态。通过与真实用户的直接强化学习和基于世界模型的模拟强化学习来训练对话策略。在训练过程中,世界模型也会根据不断增加的真实经验,通过监督学习进行更新。对于规划学习至关重要的世界模型的性能在训练过程中不断提高。然而,在原始的DDQ框架中,用于Q学习的真实经验与模拟经验的比例是固定的。因此,提出了控制规划,通过根据世界模型的性能动态调整真实经验与模拟经验的比例来缓解这一问题。
上述规划方法称为背景规划,通过模拟世界模型的经验训练来改进策略。另一种基于计划的研究是决策时间计划,它根据一些模拟经验直接决定在特定状态下采取何种行动。模拟的未来步骤可以提供额外的提示,以促进决策。
以这种方式使用的计划可以比在决策时提前一步看得更深入,这在人类活动中很常见。以国际象棋游戏为例,玩家通常通过提前几步来进行心理模拟,然后决定如何移动棋子。有研究在协商对话中引入了对话展开计划,agent在特定状态下模拟多个候选响应的完整对话,以获得预期回报,并选择回报最高的响应。Jiang等人提出,与其通过完成对话并获得明确的奖励,不如只考虑几个有限的步骤,并将这些步骤作为政策模型的附加特征,以减轻决策过程。
2.3 用户目标评估
在基于强化学习的对话模型中,用户的目标对于策略学习至关重要。奖励信号是用户目标的间接反映,因为它让用户对对话感到满意。奖励函数定义的一种典型方法是在一个成功的回合结束时分配一个大的正奖励,并在每个回合分配一个小的负惩罚,以鼓励短对话。然而,在用户目标不可用的实际应用程序中,这种奖励不能有效地估计。另一个问题是,当奖励信号由预定义规则客观计算或由真实用户主观判断时,它们是不一致的。为了缓解上述问题,有一些研究通过学习一个独立的奖励函数来提供可靠的监督信号。
奖励估计的一种方法是带注释数据的离线学习。通过将对话话语和中间注释作为输入特征,奖励学习可以被表述为监督回归或分类任务。标注奖励可以通过人工标注或用户模拟器获得。但是,由于输入特征空间比较复杂,需要进行大量的手工标注,成本太高。
为了解决上述问题,还有另一种使用在线学习进行奖励估计的方法。奖励评估通常被表述为高斯过程回归(将函数视为随机变量,并假设这些函数遵循高斯分布(正态分布))任务,它可以额外提供其估计的不确定性度量。在这种情况下,采用主动学习来减少估计真实奖励信号的需求,在这种情况下,只有当不确定性分数超过阈值时才要求用户提供反馈。在其他情况下,当估计的不确定性较小时,使用评估的奖励。
逆强化学习(IRL)的目的是通过观察专家演示来恢复奖励函数,而不是通过标注标签来估计奖励信号。通过区分模拟用户对话和真实用户对话,对抗性学习通常用于对话奖励估计
3、本体集成
面向任务的对话系统的一个主要问题是如何将对话本体集成到对话模型中,包括领域模式和知识库。在大多数以前的方法中,领域模式是预先定义的,并且高度依赖于它们使用的语料库,例如,餐馆领域的插槽包含地址区域,烹饪类型,价格范围等。由于查询数据库和检索结果对于面向任务的对话系统做出决策和产生适当的响应是必不可少的,因此最近也有许多集成外部数据库或API调用的工作。
然而,由于任务域的大规模,面向任务的对话模型的本体集成变得更加具有挑战性。虽然可以将预定义的本体考虑到模型设计中,但这些方法与领域模式相耦合,不容易转移到新任务中。虽然提出了增加端到端模型来缓解模式集成问题,但涉及上下文信息和知识库的问题并不简单,因为与管道方法不同,没有显式的对话状态表示来生成显式的知识库查询。以下将介绍
1)对话任务模式集成
2)面向任务的对话模型中的知识库集成
3.1 模式集成
将模式集成到对话模型中对于面向任务的对话至关重要,因为NLU和DST的值预测以及策略中的操作选择高度依赖于域模式。早期的NLU方法使用分类进行意图检测,使用序列标记进行槽值识别。因此,模式集成主要体现在模型输出层的设计上,例如每个意图一个类。早期的DST方法利用了类似的方法,为每个槽提供值词汇表的值概率分布(也称为置信状态)。对于NLG方法,输入通常是结构化的对话行为,编码器的输入结构高度依赖于表示结构。
上述模式集成方法基本上将模式和模型设计耦合在一起,可扩展性和领域泛化性差。近年来,有许多方法试图解开领域方案和模型设计。Convlab在MultiWOZ数据集中提供了额外的用户对话行为注释,使开发人员能够在多领域、多意图设置中应用NLU模型。虽然大多数DST假设处于置信状态的插槽只能在一个回合内映射到一个值,但COMER使用考虑用户对插槽值偏好的优先级运算符扩展了对话状态的表示。其他研究采用问答方法将域槽描述作为问题进行DST。这些值被视为答案,通过提取或基于生成的方法来预测答案。该方法将模型设计与领域模式解耦,将领域模式用自然语言文本表示,便于向新领域迁移。对于NLG任务,Peng等提出了SC-GPT,它将结构化对话行为视为令牌序列,并将该序列提供给生成模型。通过对大规模数据响应对的预训练,该模型能够捕获基于序列的对话行为表示的语义结构。当扩展到一个新的领域时,只需要少量的训练实例就可以获得令人满意的性能。ZSDG学习了一个跨域嵌入空间,对对话响应的语义进行建模,这样它就可以用最少的数据立即推广到新的情况。SGD中的每个服务(域)提供了一个模式,列出了支持的插槽以及它们的自然语言描述。这些描述用于获得这些模式元素的语义表示,使模型适用于零样本设置。
3.2 知识库集成
查询外部知识库以获取用户查询的信息是面向任务的对话系统的关键。早期的模型或管道系统通过在会话交互期间发出基于当前对话状态的查询,从知识库中检索条目,这需要一些手工工作。由于在面向任务的场景中任务的复杂性日益增加,在没有中间监督的情况下训练端到端对话系统将更具吸引力。然而,与管道方法不同的是,端到端方法中没有明确的结构化对话状态表示。因此,利用模型的中间潜在表示进行知识库交互,并通过端到端训练进行无缝训练。
CopyNet和端到端记忆网络被广泛用于通过注意力机制将知识整合到对话系统中。然而,复制机制也可以看作是一个存储网络,其中编码器隐藏状态由存储单元组成。Eric等人提出了一种基于复制的方法,该方法依赖于潜在的神经嵌入来关注对话历史并复制相关的先验上下文进行解码。但是,它们只能生成上下文中提到的实体。最近的研究使用记忆网络进行先前对话上下文和知识整合。在这种方法中,对话上下文和知识库被建模成两个记忆网络。然后在解码阶段,利用解码器的隐藏状态选择性地查询和复制这些记忆网络中的信息。该方法的一个关键问题是对话上下文和知识库是来自不同来源的异构信息。Lin等提出使用历史信息对异构信息建模,历史信息存储在上下文感知的内存中,知识库元组存储在上下文无关的内存中。有文献提出了一种两步KB检索方法,通过首先确定实体行,然后选择最相关的KB列来提高实体的一致性。
除了中间监督少的完全端到端方法外,还有一些端到端模型通过对话行为和置信状态注释将领域先验知识集成到模型中。Williams等人提出了混合代码网络(HCNs),它将RNN与编码为软件和模板的领域知识相结合,可以大大减少所需的训练数据。温等人通过将几个预训练的组件组合在一起,提出了一个模块化的端到端面向任务的对话模型,然后使用RL以端到端方式对模型进行微调。然而,与seq2seq模型相比,这些方法更像是管道模型的简化版本。
七、讨论以及未来趋势
以下为面向任务对话系统的未来趋势:
对话系统的预训练方法:数据稀缺性是构建面向任务的对话系统的关键挑战。最近,预训练模型在许多NLP任务上显示出优异的性能。在这种情况下,基础模型首先通过一些无监督的预训练任务在大规模语料库上进行预训练。在预训练阶段,基模型可以捕获隐式语言知识,从大规模语料库中学习。利用这种隐式知识,基本模型可以通过简单地对目标任务的数据进行微调来快速适应目标任务。这个想法也可以应用于面向任务的对话系统,将一般的自然语言知识从大规模语料库转移到特定的对话任务中。一些早期的研究已经显示了使用预训练模型来模拟面向任务的对话的可能性
1、领域适配
与开放域对话不同,面向任务的对话基于定义良好的领域本体,该本体对特定任务的代理行为、槽值和知识库进行了约束。因此,为了完成一项任务,对话系统的模型高度依赖于领域本体。然而,在现有的大多数研究中,这些本体知识都是硬编码到模型中。例如,对话行为类型、槽值词汇表甚至基于槽的信念状态都嵌入到模型中。这种硬编码本体嵌入提出了两个问题:
1)需要人类专家来分析任务,并将领域本体集成到模型设计中,这是一个耗时的过程
2)现有的模型不容易转移到另一个任务中
因此,将领域本体与对话模型解耦以获得更好的自适应性能是一个关键问题。一个最终目标是实现零样本域自适应,它可以像人类一样,在给定本体的情况下直接构建对话系统,而不需要任何训练数据。
2、鲁棒性
由于现有神经模型容易受到简单输入扰动的影响,深度神经模型的鲁棒性一直是一个具有挑战性的问题。对于面向任务的对话系统,鲁棒性也是一个关键问题,鲁棒性主要来自两个方面:
1)一方面,面向任务的对话框高度依赖于领域本体。因此,在许多研究中,训练数据被限制在只有少量噪声的合理实例中。然而,在实际应用中,以这种特别的方式训练的模型往往达不到要求,因为实际应用中有许多域外或分布外的输入,比如以前看不见的槽值。一个健壮的对话系统应该能够在部署后处理噪音和以前看不见的输入。
2)另一方面,通过离线模仿学习和在线强化学习训练的神经对话策略模型的决策不可控。决策的鲁棒性对决策的性能至关重要
因此,提高神经对话模型的鲁棒性是一个重要的问题。一种可能的方法是将鲁棒的基于规则的方法与神经模型相结合,例如神经符号机,这可能使模型不仅更鲁棒,而且更易于解释。
3、端到端模型
与管道方法相比,端到端对话系统建模近年来受到越来越多的关注。不需要对对话状态和策略进行显式建模,就可以更容易地训练端到端模型。然而,现有的端到端方法仍然需要一些中间监督来提高模型的性能。例如,一种基于模块化的端到端框架,通过将预训练的组件组合在一起,然后使用RL以端到端方式对所有组件进行微调,但在预训练阶段仍然需要中间监督,如对话行为和置信状态。另一项工作中,虽然提出了一个seq-to-seq框架来避免组件障碍,但仍然保留了称为置信跨度的中间输出来进行显式的置信状态建模。因此,以完全端到端方式对面向任务的对话框建模,不需要中间监督,并且可以与知识库无缝交互,仍然是一个开放的问题。