A Survey on Dialogue Systems: Recent Advances and New Frontiers翻译

A Survey on Dialogue Systems: Recent Advances and New Frontiers
摘要
业界对对话系统的关注越来越多,近年来,对话系统的改进主要来自于深度学习,深度学习被用于大数据的多个领域,如计算视觉、自然语言处理和推荐系统等。在对话系统领域,深度学习可以使用海量数据来学习特征表示和回复生成策略,而只需要很少的人力。在这篇文章中,我们将从不同的角度概述对话系统的最新进展,并讨论可能的研究方向。一般将对话系统分为任务导向型和非任务导向型,本文分别介绍深度学习在这两种系统中的代表性算法,最后讨论几个可以使对话系统更上一层楼的研究方向。
引言
拥有一个虚拟助理或一个拥有足够智能的聊天伙伴系统似乎是虚幻的,可能只在科幻电影中存在。然而,近年来,人机对话因其潜力和诱人的商业价值而受到越来越多研究者的关注。随着大数据和深度学习技术的发展,创建一个自动的人机对话系统作为我们的私人助理或聊天伙伴,将不再是一个幻想。当前,对话系统在各个领域越来越引起人们的重视,深度学习技术的不断进步极大地推动了对话系统的发展。对于对话系统,深度学习技术可以利用大量的数据来学习特征表示和回复生成策略,这其中仅需要少量的手工操作。现如今,我们可以很容易地访问网络上对话的“大数据”,我们也许能够学习如何回复,以及如何回复几乎任何的输入,这将极大地允许我们在人类和计算机之间建立数据驱动的、开放的对话系统。另一方面,深度学习技术已经被证明是有效的,可以在大数据中捕获复杂的模式,并拥有大量的研究领域,如计算机视觉、自然语言处理和推荐系统等。在本文中,作者从不同的角度对这些最近的关于对话系统的进展进行概述,并讨论了一些可能的研究方向。
具体来说,对话系统大致可分为两种:
(1)任务导向型(task-oriented)对话系统
(2)非任务导向型(non-task-oriented)对话系统(也称为聊天机器人)。
任务导向的系统旨在帮助用户完成实际具体的任务,例如帮助用户找寻商品,预订酒店餐厅等。任务导向系统最常见的实现方法是将对话响应视为一条管道(pipeline),如图1所示:
 
图1 任务导向对话系统的传统管道方法


首先系统需要理解人类所传达的信息,将其转化为一种内部状态,然后根据对话状态的策略采取一系列相应的行为,最后将动作转化为自然语言的表现形式。虽然语言理解是通过统计模型来处理的,但是大多数已经部署的对话系统仍然使用人工设定的特征或人工制定的规则,来进行状态和动作空间表示、意图检测和插槽填充。利用这种方法部署的对话系统不仅耗费大量的人力和时间资源,而且只能应用在特定领域,无法移植。目前有许多深度学习的算法来缓解这一问题,如学习高维分布模式下的特征表示,使用这一方法可得到显著改善。此外,也有人使用端到端的方法建立任务导向的对话系统,可以扩展状态表示空间,生成任务领域之外的对话内容。
非任务导向的对话系统与人类交互,提供合理的回复和娱乐消遣功能。通常情况下主要集中在开放的领域与人交谈。虽然非任务导向的系统似乎在进行聊天,但是它在许多实际应用程序中都发挥了作用。研究[98]显示,在网上购物场景中,近80%的话语是聊天信息,处理这些问题的方式与用户体验密切相关。一般来说,对于非任务导向型对话系统,目前用的主要有两种方法:
(1)生成方法,例如序列到序列模型(seq2seq),在对话过程中产生合适的回复,生成型聊天机器人目前是研究界的一个热点,和检索型聊天机器人不同的是,它可以生成一种全新的回复,因此相对更为灵活,但它也有自身的缺点,比如有时候会出现语法错误,或者生成一些没有意义的回复;
(2)基于检索的方法,从事先定义好的对话语料库中搜索,选择回复。检索型方法的缺点在于它过于依赖数据质量,如果选用的数据质量欠佳,那就很有可能前功尽弃。
近年来,大数据和深度学习技术的迅猛发展,极大地促进了面向任务和面向非导向的对话系统的发展。在本篇论文中,作者的目标是(1)对对话系统进行概述,特别是最近的深度学习的进展;(2)讨论可能的研究方向。本文安排如下:第二部分中介绍任务导向对话系统的管道方法和端到端方法;第三部分介绍基于神经网络的对话生成方法,包括目前主流的方法和比较热门的研究方向,然后介绍基于搜索的方法;第四部分讨论几个研究方向。
任务导向型系统
面向任务的对话系统是对话系统的一个重要分支。在这部分中,作者总结了面向任务的对话系统的管道方法和端到端方法。
2.1管道(Pipeline)方法
任务导向型对话系统的典型结构在图1中已经展示,它包括四个关键组成部分:
2.1.1自然语言理解(Natural Language Understanding,NLU)
NLU将用户输入解析为预定义的语义槽。如果有一个话语,自然语言理解将其映射为语义槽。插槽是根据不同的场景预先定义的。表1列举了一个自然语言表示的例子,
 
表1 自然语言表示示例
其中“New York”是指定为slot值的位置,并且分别指定了域和意图。典型的,有两种类型的表示。一个是话语层次类别,如用户的意图和话语类别(或领域,如示例中的Domain为order)。另一个是字级信息提取,如命名实体识别和槽填充。对话意图检测是为了检测用户的意图。它将话语划分为一个预先定义的意图。论文[10, 73, 99]中使用深度学习技术来检测用户意图。[19]使用卷积神经网络来提取查询向量表示特征,进行查询分类。[22]和[64]也使用卷积神经网络进行分类。类似的方法也用在类别或领域分类。
槽填充是口语理解的另一大挑战,与意图检测不同,可以将槽填充看作为序列打标签任务:为句子中的每个单词打上语义标签。输入是由一系列单词组成的句子,输出是一系列槽或者类别编号。[11]和[10]用深度信念网络,与CRF(条件随机场)基线相比取得了很好的效果。[41,102,56,100]使用RNN进行槽填充。自然语言理解生成的语义表示,由对话管理成分进一步处理,典型的对话管理成分包括两步:对话状态跟踪和策略学习。
2.1.2对话状态跟踪(Dialogue State Tracker,DST)
对话状态跟踪是确保对话系统健壮性的核心组件。它在对话的每一轮次对用户的目标进行预估,管理每个回合的输入和对话历史,输出当前对话状态。对话状态H_t表示对话在t时刻的状态。这种典型的状态结构通常称为槽填充或语义框架。传统的方法已经在大多数商业实现中得到了广泛的应用,通常用人工指定的规则来选择最有可能的输出结果[17]。然而,这些基于规则的系统容易出现频繁的错误,因为最可能的结果并不总是最理想的结果[88]。
在处理有噪声的条件和歧义时,可以用多种统计方法来解决[104]。在对话状态跟踪挑战大赛(Dialog State Tracking Challenge DSTC)[87,86]中,要求的输出结果是每一轮对话中每个槽的概率分布。在DSTC中研究者们用了许多统计方法,包括人工制定规则的[80]、条件随机场[28,27,53]、最大熵模型[85]和web-style排序[88]。
最近,论文[20]引入了深度学习方法来解决信念跟踪(belief tracking),方法是采用一个滑动窗口输出任意数量的可能值的概率分布序列。虽然它只在一个领域受过训练,但它可以很容易地转移到新的领域。论文[48]使用多领域循环神经网络对话状态跟踪模型。先用所有的数据来训练一个通用的信念跟踪模型,然后为每个领域具体化一个通用模型。[49]提出一个深度信念跟踪器(NBT)来检测槽值对。对话系统需处理用户输入、用户话语本身和单一候选槽值对(需要做决策),然后迭代所有候选槽值对来决定哪一对是用户所表达的。
2.1.3对话策略学习(Dialogue policy learning)
根据状态跟踪器的状态表示,策略学习生成下一个可用的系统操作。无论是监督学习还是强化学习都可以用来优化策略学习[9]。通常,基于规则的agent使用热启动系统[98]。监督学习是针对规则产生的行为进行的,在在线购物场景中,如果对话状态是“推荐”,那么触发“推荐”操作,系统将从产品数据库中检索产品。如果状态是“比较”那么系统比较目标产品或品牌[98]。强化学习方法的引入可以对对话策略进行进一步的训练,以引导系统制定最终的策略。[9]在对话策略中使用深度强化学习,可以同时学习特征表示和对话策略,结果表示强化学习方法的效果超过了基于规则和监督的方法。
2.1.4自然语言生成(Natural Language Generation,NLG)
自然语言生成将抽象的对话行为转变成自然语言。一个好的生成器通常依赖于几个因素:适当性adequacy、流畅性、可读性和可变性[68]。传统的NLG方法通常是执行句子规划。它将输入语义符号映射到代表话语的中介形式,如树状或模板结构,然后通过表层实现将中间结构转换为最终响应[77,69]。
[81]和[82]在自然语言生成中引入了基于LSTM结构的RNNLM[42]。对话行为类型和槽值对转变成1-hot控制向量,作为附加输入,确保生成的话语表示要表达的意思。[81]使用前向RNN生成器、CNN排序器和后向RNN排序器。所有的子模块都被联合优化,以生成需要的对话内容。为了解决表层生成过程中,槽信息缺失和重复问题,[82]使用一个附加控制单元来控制对话行为。[72]用对话行为控制LSTM的输入向量,来扩展这一方法。[83]通过多适应步骤扩展到多领域设置。[110]使用基于LSTM的encoder-decoder结构来包含问题信息,语义槽值,和对话行为类型,以生成正确的回复。使用注意力机制来处理解码器当前解码状态的关键信息。在编码过程中将对话行为类型嵌入,基于神经网络模型可以生成各种回复,以响应不同行为类型。[14]提出基于序列的自然语言生成方法,可以训练生成自然语言串,以及深度语法依存树从对话系统的输入行为。[13]通过预处理用户话语和响应来扩充。这使得模型可以适应用户说话方式,因为提供了上下文响应。
深度学习比较成熟的方法是基于LSTM的encoder-decoder形式,将问题信息、语义槽值和对话行为类型结合起来生成正确的答案。同时利用了注意力机制来处理对解码器当前解码状态的关键信息,根据不同的行为类型生成不同的回复。
2.2 端到端(end-to-end)方法
尽管传统的面向任务的对话系统中有许多特定领域的手工制作,但它们很难适应新的领域[4][107]。传统的任务定向对话系统的管道方法有两个缺点,一个是信用分配问题,终端用户的反馈很难传到每个上行模块中。第二个是模块间相互依赖,一个组建的输入依赖于另一组建的输出。如果想要调整某一个组件到新的环境或者用新数据重新训练的话,其他所有的组建也都要调整,甚至槽位和特征也需要调整。这一过程需要大量的人力。近年来,随着端到端神经生成模型的发展,为面向任务的对话系统构建了端到端的可训练框架。值得注意的是,当我们引入非任务导向的对话系统时,将讨论关于神经生成模型的更多细节。与传统的管道模型不同,端到端模型使用一个模块,并与结构化的外部数据库交互。[84][4]引入一种基于网络的端到端可训练任务导向对话系统,将对话系统的学习当作是:从对话历史到系统回复的映射学习,并使用encoder-decoder模型来训练。然而,该系统是在有监督的方式下训练的,这不仅需要大量训练数据,而且可能无法找到好的策略,因为训练数据中缺少对话控制的进一步探索。[107]首次提出一个端到端强化学习方法,在对话管理中联合训练对话状态跟踪和对话策略学习,从而更有力地对系统的动作进行优化。在对话中,agent询问用户一些是/否的问题,来找到正确的答复。[36]训练了一个端到端系统,最终目标是完成一个任务,如预定电影票。
 
图2 一种基于网络的端到端可训练任务导向型对话系统(来自论文[84])
 
图3 一种端到端强化学习的方法模型(来自论文[107])
任务导向系统通常需要查询外部知识库。之前的系统向外部知识库发出一个符号查询,基于其属性搜索条目,对输入进行语义分割,以构建表示用户目标的符号查询[84,90,36]。这种方法有两个缺点:(1)搜索结果并不包含语义分割中的不确定信息,(2)搜索操作不可微,因此分割和对话策略要分开训练。这样一来,如果系统已建好,那么用户反馈的在线端到端学习就很困难。[15]用一个可微的基于attention的键值检索机制,来增强现有的递归网络结构。[12]用一个诱导知识库的“软”后验分布来代替符号查询,用强化学习器整合软索引过程。[89]将特定领域的知识编码合并到RNN中,作为软件和系统行为模板。
非任务导向型系统
任务导向型系统的目标是为用户完成特定的任务,而非任务导向的对话系统(也称为聊天机器人)则专注于在开放的领域与人交谈[54]。一般来说,聊天机器人是通过生成方法或基于检索的方法实现的。生成模型能够生成更合适的回复,而这些回复可能从来没有出现在语料库中;而基于检索的模型则具有信息充裕和响应流畅的优势[23],因为基于检索的模型可以从存储库中选择适合当前对话的响应。在下面的章节中,首先讨论神经生成模型,这是近年来最热门的研究课题之一,并讨论它们的缺点和改进点。然后,介绍基于检索模型的深度学习的最新进展。
3.1 神经生成模型(Neural Generative Models)
现如今,可以从社交媒体网站(如Twitter和Reddit)上获取大量对话数据,这就为建立数据驱动模型提供了数据基础。[54]提出一个生成概率模型,基于短语的统计机器翻译[105],基于微博建立对话模型。将对话生成模型看作是翻译问题,也就是将提问翻译成回答。后来发现生成响应比在两种语言之间进行翻译更难。这可能是由于○1响应之间的弹性范围过大;○2提问和回复之间缺乏短语对齐。深度学习在机器翻译中的成功应用,即神经机器翻译,激发了人们对神经生成对话研究的热情。
下面,首先介绍神经生成模型的基础:Seq2Seq序列到序列,然后讨论热门话题:对话背景融合、提高响应多样性、建立话题和人格模型、检索外部知识库、交互学习和评估。
Sequence-to-Sequence Models
给定输入序列(message)X=(x_1,x_2,…,x_T )包含T个词语,以及长度为T’的目标序列(response)Y=(y_1,y_2,…,y_(T^' ) )模型最大化Y在X下的条件概率:
 
具体来说,Seq2Seq模型是在encoder-decoder结构中,图4是这种结构的示意:
 
图4 Encoder-Decoder模型结构示意图
编码器将X逐字读入,并通过递归神经网络(RNN)将其表示为上下文向量c, 然后解码器将c 作为输入估计Y 的生成概率。
(1) Encoder
Encoder过程很简单,直接使用RNN(一般用LSTM)进行语义向量生成:
 
其中,h_t是t时刻隐藏状态,f 是非线性函数,例如LSTM[18],GRU[7],c是最后一个词h_T对应的隐藏状态,或者是多个隐节点的加权和。
(2) Decoder
模型的decoder过程是使用另一个带有附加条件背景向量C的RNN,通过当前隐状态来预测当前的输出符号。T时刻候选词的概率分布p_t为
 
其中s_t是RNN解码器在时间点t的隐藏状态,y_t是响应序列中时间点t的词。Seq2Seq的目标函数定义为:
 
为了改进,引入注意力机制,Y中的每个单词都基于不同背景向量c,即Y中的每个单词和x的不同部分相关。特别是,y_i与背景向量c_i相对应,c_i是编码器隐藏状态h_1,…,h_T的加权平均和:
 
其中α_(i,j)的计算为:
 
其中,g是多层感知机。
[61]使用循环神经网络的encoder-decoder框架[7],来生成Twitter-style微博网站的响应,[74]使用了论文[40]中描述的类似的模型。一般来说,这些模型使用神经网络来表示对话历史,并生成适当响应。这种模型可以充分利用大量的数据,来学习有意义的自然语言表示和生成策略,但却只需要很少的专业领域知识,减少人力资源。
3.1.2 对话上下文(Dialogue Context)
考虑到对话的上下文信息的是构建对话系统的关键所在,它可以使对话保持连贯和增进用户体验。论文 [67]用连续的表示或嵌入词/短语来表示全部对话历史(包括当前信息),以解决上下文敏感回复生成。[42]中RNN语言模型生成的响应,和[7]中的解码器一样。[58]用了分层模型,首先捕获单个句子的含义,然后将其整合成一个完整的对话。[96]用注意力机制[2]扩展层次化结构,分别在词级水平和句子水平引入注意力机制,让模型能够自动的学到词级与句子级别的重要度信息,从而更好的生成新一轮的对话。作者在句子级别的信息中,是反向学习的,即认为下一句的信息中更能够包含上一句的信息,所以从总体上来看,其对于对话的学习是逆向使用每一轮对话的内容的。[71]对现有的方法(包括非分层模型和分层模型)做了系统的比较,并提出了一个变体——可以在上下文查询的相关性中为上下文加权。研究发现(1)层次化RNN网络通常优于非层次化的模型,(2)考虑到上下文相关信息后,神经网络趋向于生成更长,更有意义,且更具多样性的回复。
 
图5 论文[67]用连续的表示或嵌入单词和短语来表示整个对话历史(包括当前信息)
 
图6 分别在词级水平和句子水平引入Attention机制
3.1.3 回复多样性(Response Diversity)
在当前Seq2Seq对话系统中,存在一个不足:系统倾向于生成无关紧要的或不明确的、普通的、几乎没有意义的回复,而这些回复常常涉及到一些诸如“I don't know”,“I am OK”这样的无意义回复[67,74,58]。
这种情况是因为在语料库中,像“I don’t know”这种无意义的话在语料库中出现的频率高,而有意义的答复在语料库中出现的频率较低。解决这类问题的一个很有效的方法是找到并设置一个更好的目标函数。[30]指出在神经网络模型中,目标函数是极大似然估计时,安全的回答会得到更高的概率,他们使用最大互信息作为优化目标(最先应用于语音识别领域),互信息衡量输入和输出之间相互依赖程度,考虑到消息响应中的反向依赖。论文[101]在训练过程中使用逆向文件频率(inverse document frequencyIDF)[55],来度量回复多样性。
有研究提出解码过程是冗余候选响应的另一个来源。[62]和[34]提出beam search在生成beam中的候选时缺乏多样性,[62]引入随机beam-search过程,[34]在beam search分数中加入了惩罚操作,在搜索过程中惩罚相同父节点的多个生成。[30,67,62]用全局特征再排序,来避免生成无意义的答复。[47]认为问题不仅在于解码目标和响应频率,还在于信息本身缺乏足够的信息。提出使用点互信息(pointwise mutual information PMI)来预测一个名词作为关键字,即回复的主旨,然后生成包含关键字的回复。
另一种方法是引入随机隐变量,自然对话具有不确定性,面对同样的信息可能每个人的回复都不一样。然而,当前的研究中,编码器生成的回复是具有确定性的。引入一个隐变量,模型在生成过程中,首先根据隐变量的值,从一个分布中采样,然后再进行确定性的解码。[6]在单词对话响应模型中引入隐变量,模型在解码器中包含一个随机成分z,P(Y|z,X),其中z是计算变分自动编码框架之后计算的[26,25,65],[59]在层次化对话建模框架[58]中引入了隐变量。隐变量用来生成高级决策如话题或情感。[57]通过学习一系列隐变量,来扩展这些模型,其中下一条语句的隐变量仅依赖于之前的隐变量序列。[63]用明确的属性值来约束隐变量,使隐变量更加可解释。这些属性可以使手动分配的,也可以自动检测的(如话题和人格)
 
图7 论文[58]引入随机隐变量
3.1.4 主题和个性化(Topic and Personality)
明确对话的内在属性是提高对话多样性和保证一致性的另一种方法。在不同的属性中,主题和人格被广泛地进行研究探讨。
论文[95](如下图),作者注意到人们经常把他们的对话与主题相关的概念联系起来,并根据这些概念做出他们的回复。他们使用Twitter LDA模型来获取输入的主题,将主题信息和输入表示输入到一个联合注意模块中,并生成与主题相关的响应。论文[94]在解码器中稍作改进就得到了更好的结果。[8]对这个问题做了更全面的概括,将对话中的每个语句都划分到一个领域中,然后生成下一个语句的领域和内容。
[109]在生成模型中嵌入了情感,表现良好。[51]为对话系统设置了一个身份,这样系统在回答个人问题时就可以保证一致性。[31]在生成回复时考虑到收件人信息,以增加其实用性。
由于训练数据来自不同的说话者,因此,[106]提出一种两阶段的训练方法,使用大规模数据对模型进行初始化,然后对模型进行微调,生成个性化响应。[45]使用迁移强化学习来消除不一致性。
 
图8 论文[95] 引入相关话题模型
 
图9 论文[106] 使用两阶段的训练方法
3.1.5 外部知识库(Outside Knowledge Base)
人类对话与对话系统之间的一个重要区别是它是否与现实相结合。结合外部知识库(KB)是一种很有前途的方法,可以弥补背景知识之间的差距,即对话系统和人之间的差距。
记忆网络(Memory Network)是一种以知识库处理问题的经典方法。因此,它非常直接的应用于在对话生成中。[16]使用了记忆网络,并在开放领域达到了很好的效果。[75]在开放领域的对话中引入背景知识,方法是:将CNN和RNN嵌入到多模块中,并取得了很好的效果。类似的任务还有:根据外部知识生成回复。与依赖知识库的检索方法不同,[103]在生成过程中同时使用通用词和知识库中的专用名词,实际研究表明,所提出的模型能够通过参考知识库中的事实来生成对问题的自然和正确答案。作者提出的完全数据驱动的带有知识的对话模型。其中的 World Facts是一个集合,收集一些经过权威认证过的句子或者不准确的句子,作为知识库。当给定一个输入S和历史,需要在 Fact 集合里面检索相关的facts,这里采用的IR引擎进行检索,然后经过 Fact Encoder 进行 fact injection。上图的模型提出了一种全新的、完全由数据驱动的、基于知识的神经对话模型,目的是在没有槽位的情况下产生更多的内容。作者归纳了广泛使用的SEQ2SEQ方法,通过对会话历史和外部“事实”的响应 。
 
图10 论文[103]完全数据驱动、带有知识的对话模型
3.1.6 交互对话学习
在交互过程中学习新的知识,是对话系统的终极目标之一[35]模拟两个虚拟代理之间的对话,他们定义简单的近似式启发来奖励良好的对话:良好的对话是具有前瞻性的[1]、多轮的、信息丰富且连贯。Encoder-decoderRNN的参数定义了一个策略,在由所有可能的话语组成的无限动作空间上。代理通过优化长期开发者定义的奖励学习到一个策略,策略学习的方法是:在对话模拟过程中使用策略梯度方法[91],所用的目标函数并不是标准Seq2Seq中的极大似然估计。[33]进一步尝试在交互过程中提高聊天系统的能力。通过在文本和数字反馈中使用策略学习和前向预测,该模型可以通过半在线方式,在与人交互过程中提高自身性能。
由于大多数人类回答者在对答案不自信时可能会要求澄清或暗示,所以让机器人拥有这种能力是很自然的。[32]定义了三种机器人对自己的回答不自信的情况。与不使用asking-question方法的实验结果进行比较,发现这种方法在某些情况下,可以取得很大的进步。[29]探讨谈判对话的任务。由于传统的序列到序列模型能模拟人类对话,但不能优化特定的目标,这项工作采取了任务导向的训练和解码方法,并展示了一个有价值的观点。
3.1.7 评估
评价生成回复的质量是对话系统的一个重要方面[37]。任务导向型的对话系统可以基于人工生成的监督信号进行评估,例如任务完成测试或用户满意度评分等[76,46,24]。然而,由于回复的高多样性,自动评估非任务导向的对话系统所产生的响应的质量仍然是一个悬而未决的问题。目前的方法有以下几种:
1)计算 BLEU 值,也就是直接计算 word overlap、ground truth和你生成的回复。由于一句话可能存在多种回复,因此从某些方面来看,BLEU 可能不太适用于对话评测。
2)计算 embedding的距离,这类方法分三种情况:直接相加求平均、先取绝对值再求平均和贪婪匹配。
3)衡量多样性,主要取决于 distinct-ngram 的数量和 entropy 值的大小。
4)进行图灵测试,用 retrieval 的 discriminator 来评价回复生成。
3.2基于检索的方法
基于检索的方法从候选回复中选择回复。检索方法的关键是消息-回复匹配,匹配算法必须克服消息和回复之间的语义鸿沟[21]。
3.2.1 单轮回复匹配
检索聊天机器人的早期研究主要集中在单轮谈话的响应选择上[78],只有消息用于选择一个合适的回复。典型的方法是,上下文和候选答复分别编码成一个向量,同计算这两个向量来获取匹配分数。假设x是message的表示向量,y是回复的表示向量,x和y之间可以简单地通过双向匹配来计算,公式如下:
match(x,y)=x^T Ay
其中,A是预定义的矩阵,或者更复杂的。[39]针对短文本的响应选择及合并局部化信息,提出一个基于DNN的匹配模型。[21] 利用深度卷积神经网络体系结构改进模型,学习消息和响应的表示,或直接学习两个句子的相互作用表示,然后用多层感知器来计算匹配的分数。 [79]提取了依赖树匹配模式,并将它们作为深度前馈神经网络的稀疏one-hot输入用于上下文响应匹配。[ 92 ]将Twitter LDA模型[ 108 ]生成的主题向量并入基于CNN的结构中,以丰富内容促进响应。
 
图11 论文[21]使用深度卷积神经网络改进模型
3.2.2 多轮回复匹配
近年来,基于检索的多轮会话越来越受到人们的关注,在多轮回答选择中,将当前的消息和先前的话语作为输入。模型选择一个自然的、与整个上下文相关的响应。重要的是要在之前的话语中找出重要的信息,并恰当地模仿话语的关系,以确保谈话的连贯性。[38] 通过RNN/LSTM的结构将上下文(所有之前的话语和当前消息的连接)和候选响应分别编码到上下文向量和回复向量中,然后根据这两个向量计算出匹配度分数。[97]在不同的策略中选择之前的语句,并与当前消息合并,形成一个在阐述的上下文。[111]同时在通用词语级上下文向量和语句级上下文向量上执行上下文响应匹配。目前关于检索模型的闲聊还停留在单轮对话中,论文[93]提出了基于检索的多轮对话闲聊。论文提出了一个基于检索的多轮闲聊架构,进一步改进了话语关系和上下文信息的利用,用卷积神经网络在多个粒度水平匹配响应和上下文中的每个语句,然后通过一个递归的神经网络在时间序列中堆积这些向量,以建立对话之间的关系。
多轮对话的难点在于不仅要考虑当前的问题,也要考虑前几轮的对话情景。多轮对话的难点主要有两点:
1.如何明确上下文的关键信息(关键词,关键短语或关键句);
2.在上下文中如何模拟多轮对话间的关系。
现有检索模型的缺陷:在上下文中容易丢失重要信息,因为它们首先将整个上下文表示为向量,然后将该上下文向量与响应sentence向量进行匹配。
 
图12 论文[38]将上下文和候选响应分别编码到上下文向量和回复向量
 
图13 论文[93]基于检索的多轮对话
3.3混合的方法
将生成和检索方法结合起来能对系统性能起到显著的提升作用。[66]和[52]尝试使用混合方法。基于检索的系统通常给出精确但是较为生硬的答案,而基于生成的系统则倾向于给出流畅但却是毫无意义的回答。在集成模型中,被抽取的候选对象和原始消息一起被输入到基于RNN的回复生成器中。这种方法结合了检索和生成模型的优点,这在性能上具备很大的优势。[60]建立了自然语言生成和检索模型,包括基于模板的模型,词袋模型,序列到序列神经网络和隐变量神经网络模型,还应用了强化学习,其数据主要来自众包数据、真实生活用户交互。
4.讨论和结论
深度学习已成为对话系统的一项基本技术。研究人员将神经网络应用于传统任务导向型对话系统的不同组成部分,包括自然语言理解、自然语言生成、对话状态跟踪。近年来,端到端的框架不仅在非面向任务的聊天对话系统中流行,而且在面向任务的对话系统中逐步流行起来。深度学习能够利用大量的数据,建立统一的智能对话系统,从而模糊了任务导向型对话系统和非任务导向型对话系统之间的界限。任务完成模型朝着引入强化学习的端到端方向前进,这是目前主流的方法,将来也会合并传统的管道方法。
值得注意的是,目前的端到端模型仍然远非完美。尽管取得了上述成就,但这些问题仍然具有挑战性。接下来,我们将讨论一些可能的研究方向。
快速适应。虽然端到端模型越来越引起研究者的重视,我们仍然需要在实际工程中依靠传统的管道(pipeline)方法,特别是在一些新的领域,特定领域对话数据的收集和对话系统的构建是比较困难的。未来的趋势是对话模型有能力从与人的交互中主动去学习。
深度理解。现阶段基于神经网络的对话系统极大地依赖于大量标注好的数据,结构化的知识库以及对话语料数据。在某种意义上产生的回复仍然缺乏多样性,有时并没有太多的意义,因此对话系统必须能够更加有效地深度理解语言和真实世界。
隐私保护。目前广泛应用的对话系统服务于越来越多的人。很有必要注意到的事实是我们使用的是同一个对话助手。通过互动、理解和推理的学习能力,对话助手可能无意中隐蔽地存储一些较为敏感的信息[50]。因此,在构建更好的对话机制时,保护用户的隐私是非常重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值