任务驱动的多轮对话的设计参考.docx

上传人:b****8 文档编号:10108200 上传时间:2023-02-08 格式:DOCX 页数:8 大小:20.60KB
下载 相关 举报
任务驱动的多轮对话的设计参考.docx_第1页
第1页 / 共8页
任务驱动的多轮对话的设计参考.docx_第2页
第2页 / 共8页
任务驱动的多轮对话的设计参考.docx_第3页
第3页 / 共8页
任务驱动的多轮对话的设计参考.docx_第4页
第4页 / 共8页
任务驱动的多轮对话的设计参考.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

任务驱动的多轮对话的设计参考.docx

《任务驱动的多轮对话的设计参考.docx》由会员分享,可在线阅读,更多相关《任务驱动的多轮对话的设计参考.docx(8页珍藏版)》请在冰豆网上搜索。

任务驱动的多轮对话的设计参考.docx

任务驱动的多轮对话的设计参考

集团公司文件内部编码:

(TTT-UUTT-MMYB-URTTY-ITTLTY-DBTTY-9886)

 

任务驱动的多轮对话的设计参考

1.1背景知识介绍

多轮对话之所以称之为多轮对话,而不是多轮问答,是因为除了问答内容外,还有闲聊模式下的情感交流,以及多数情况以陈述句形式表达的情景模式,因此多轮问答实际是多轮对话的子集。

由于事件的复杂性直接导致了多轮对话的复杂性,即上文所述的正常的知识问答和命令问答外,还有情感和场景表述,造成每一句与上下文语义高度相关或不相关交错出现,就导致了规则的高度复杂性。

如果用有限状态机来处理多轮对话,就必须对话语权方(即谁说出的话,必须被对方回答,则这方为对话话语权方)的每一个token语句进行意图识别,引入意图队列,对队列进行基于规则的推理机处理或基于深度学习的预测,例如:

(寒暄>查订单>确认退款>?

)正常情况?

==再见结束本轮对话。

当然也可以用seq2seq的方法,将整个对话过程,抽象成一个session。

输入若干个相关句子,解码成一个句子,即答案。

多轮交互的一个重点问题是:

如何根据上下文理解当前的意图,而不仅仅是针对单轮进行一个分析,从而能够使得对话在一个连续的语境下,是具备session粒度理解能力的。

以下方案,均假设有一个已经做得比较好的单轮理解以后的情况:

尝试方案1:

最简单粗暴地,把多轮query,融合成一个单轮的query,进行一次性的解析.

直接将多轮交互的意图理解问题,转换成一个单轮的意图理解问题,从而复用原有的单轮理解效果。

例如:

我想看电影--周星驰演的--喜剧片,三个query合并以后,解析到实际用户的需求,是周星驰主演的喜剧电影。

优点:

简单,粗暴,易于实现,几乎服用了单轮解析能力

缺点:

简单,粗暴,易于出错,几乎没有任何实质性的多轮解析能力,纯粹靠运气

优化方向:

可以加入一些query拼接的限制,提高拼接的准确率,从而在运用到单轮解析能力的同时,不至于在准召上偏离得太离谱(如:

只拼接两轮的、三轮及以上拼接,考虑拼接后的意图变化情况等)

尝试方案2:

不是简单拼接,而是结果和query的识别过程拼接:

单轮已经解析出了一个意图和某些槽位,将此意图及槽位存储起来。

遇到query的时候,判定该意图下,这个query能否纳入同样的意图中,抽取出对应的槽位。

如果可以,则更新意图的槽位内容。

如果不可以,则抛弃当前意图,以query作为单轮解析,得到新的意图。

例如:

我想看电影--要免费的,第一轮意图为电影,第二轮在电影这个意图下,发现“免费”这个槽位,是符合电影意图描述的,所以,为该意图的槽位新增一个“免费”

例如:

我想看爱情电影--能给我讲个笑话吗,第一轮意图为电影,而第二轮在电影这个意图下,发现query并没有任何跟电影相关的槽位信息,所以,抛弃第一轮的电影意图,直接将第二轮query当成单轮的,直接解析得到新的意图--笑话。

优点:

基于意图来进行判定,比拼接更准确,也更广泛地识别当前query是否仍在同一个意图中,递归地实现多轮意图解析,避免了拼接过长,拼接过于粗暴带来的误召回和欠召回

缺点:

存储下来的是意图和槽位,然后再基于此进行新的query解析,判定是否槽位能够纳入原有意图范围内,这种递归一旦有某一步除了问题,后面的每一步,基本上都挂掉了,解析错误的传播深度和广度,都会很大

优化方向:

前面几步,可以辅助以方案一的拼接,来提高意图的正确性,保证后续的方向,都是正确的

尝试方案3:

以对话管理过程中增加一些冗余性来对方案2进行扩充,提高召回率。

多轮交互一旦进入了某个意图,即开始该意图的满足,而当其第一次多轮解析未能命中该意图,也无法命中任何其他意图(纯属闲聊)的时候,可以跳过该轮的意图解析,而继续进入下一轮,检测该意图是否涵盖了当前query中的槽位,是则可以继续该意图的满足,不至于轻易断开多轮对话流(此处的冗余轮数可以根据实际情况自行调整,一轮、两轮均可)。

例如:

给我推荐个餐厅--有川菜口味的吗--咦,还蛮多嘛(冗余跳过)--找个最便宜的吧

优点:

可以一定程度上缓解方案二递归性带来的意外跳出意图的问题,提高每个意图的服务整体性,保证多轮的延续性。

缺点:

因为原理上跟方案二是一致的,所以还是会存在方案二的缺点,并且冗余跳过有可能是未能识别到具体的意图,从而令本该跳出对话的多轮,多停留了一两轮在了当前意图,才能跳出去,会降低交互的智能性。

优化方向:

尽可能提升多个意图的覆盖面,从而减少切换意图的误判为聊天,提升冗余的准确性

上述三个方案,都是可以直接通过比较简单的框架设计来实现的,而读者可以发现,可能最关键的还是这些方案的前提:

【假设有一个已经做得比较好的单轮理解】。

可以看到,单轮理解是所有意图识别的基础,只有做好单轮的理解,才可能做好多轮,当然,做好了单轮,不一定就能做好多轮。

对话系统的分类及方法:

按照对话答案的生成方式大致可以分为以下几种:

1.规则依存系统(Rule-basedsystem):

对话经过预定义的规则(关键词、if-else、机器学习方法等)处理,然后执行相应的操作,产生回复。

(ELIZA系统,如果输入语句中没有发现预定义规则,则生成generic的响应)。

缺点是规则的定义,系统越复杂规则也越多,而且其无法理解人类语言,也无法生成有意义的自然语言对话。

处在比较浅层的阶段;

2.检索依存系统(IR-basedSystems):

信息检索或者最近邻方法,要求生成的响应与对话存在语义相关性(VSM、TF-IDF、page-Rank、推荐等排序方法)。

有点是比生成模型简单,直接从训练集中选择答案,且可以添加自定义规则干预排序函数较为灵活;缺点是无法应对自然语言的多变性、语境解构、连贯性等,对语义的细微差别也无法识别;

3.自生成依存系统(Generation-basedSystems):

将对话视为input-outputmapping问题,提出了MT-based方法(SMT统计机器翻译、IBM-model、phrase-basedMT等),这种方法复杂且无法很好的解决输入输出的对应关系(尤其是当句子较复杂的时候,只适合单词级别)。

但是NN、seq-to-seq等方法很好地解决了这些问题,可以生成更加丰富、有意义、特别的对话响应。

但是还存在许多问题,比如沉闷的回应、agent没有一个固定的风格、多轮对话槽填充等等。

4.框架依存系统(Frame-basedDialogueSystems):

定义一个对话的框架,及其中所涉及的重要元素。

优点是目标明确框架对对话指导意义明显,适用于飞机票、餐馆等预定领域。

缺点是框架设计需要人工成本,且无法迁移到别的领域,并未涉及到人类语言的理解层面。

按照对话的应答方式大致可以分为以下几种:

1.有限状态机系统(Finite-StateMachineSystems):

(用户使用预定义的模板提问,系统之响应能力范围之内的问题),这种方法的缺点是完全依赖于对框架slot的填充,而无法决定对话的进程和状态(用户接受建议、拒绝等)

2.纯粹的多轮对话依存系统(State-basedSystems):

主要包含系统状态(上下文信息、用户意图、对话进程等)和系统行动两(基于state采取action)个部分。

MDP、POMDP等模型。

3.纯粹的单轮对话(Question-Answering-QA)系统(BasedDialogueSystems):

factoidQA-based,个人助手,需要回答各种各样的问题并且进行交互式对话。

目前的研究点主要包括,bot如何通过对话进行自学习、对于out-of-vocab的词汇应该学会问,即学会与人交流、如何通过在线反馈学习(犯错时调整、正确时加强)

----待处理部分----

1.2本文解决问题

本文主要关注于chit-chat和QA-baseddialogsystem。

1.2.1开放域对话生成chit-chat

首先探讨如何构建一个能够与人类进行有趣,有意义,连贯,一致和长期对话的引人入胜的闲聊式对话系统。

要求其拥有以下特性:

避免dull沉闷的回应,产生语义更加丰富的响应

解决一致性问题,避免前后相应不一致

可以进行长期多轮对话

使用对抗学习生成人类无法区分的对话响应

为了实现上述的功能和特点,主要会引入下面几种技术和算法来解决相应的问题。

互信息-避免无聊的相应

目前神经网络倾向于产生类似于“Idon'tknow”这种无聊的响应(dullresponse/genericresponse),不利于对话进行。

因为对于模型来讲,“Idon'tknow”这种答案往往都是正确的,但是我们可以反过来思考这个问题,也就是将"Idon'tknow"作为输入进行训练。

因此可以使用MaximumMutualInformation(MMI)取代MLE作为训练的优化指标,事实证明这种方法可以大幅度提升模型响应的丰富度,减少dullresponse产生的频率。

这部分方法将会在第三章进行详细的介绍。

解决Bot前后一致性问题

目前对话机器人无法产生前后一致性的对话,简单说就是没有一个固定的风格。

所以要给bot一个连续的“角色”,这种角色可以当做是身份元素(事实背景、用户简介)、语言行为、交互方式等的组合。

作者基于Seq-to-Seq模型提出了两种角色模型,一个是单bot的SpearkerModel,另一个是双bot的Spearker-AddresseeModel。

这部分内容可以参考第四章以及他在2016年发表在ACL的论文“Apersona-basedneuralconversationmodel”。

使用强化学习RL实现长期多轮对话

当前的Seq-to-Seq模型大都使用MLE作为目标函数并根据一轮对话来产生响应,很难产生更长久的多轮对话,一般在两轮之后就陷入重复。

所以作者提出使用强化学习来最大化长期奖励的期望来增加对话轮次。

并建设性地提出了三种Reward公式,**forward-looking、informative、coherent**,最后使用policygradient的方法进行训练,取得了很好的效果。

这部分内容会在第五章进行详细介绍,或者参考其在2016年发表在EMNLP的文章“DeepReinforcementLearningforDialogueGeneration”

使用对抗生成学习GAN产生对话

目前模型生成的对话大都来自于训练数据集,这就一定程度上限制了产生相应的多样性、丰富程度等。

所以引入GAN来生成更接近于人类语言的响应。

这里使用一个Seq-to-Seq作为生成器,在用一个鉴别器来标记生成的响应是人类语言还是机器生成语言,这样Seq-to-Seq最终生成的响应会越来越接近人类语言。

这部分内容会在第六章进行介绍,或者参考其在2017年发表在EMNLP上的文章“Adversariallearningforneuraldialoguegeneration”。

1.2.2交互式QA对话机器人

其次探讨bot如何通过online学习完善自己,使得交互性更强。

要求其可以:

学会向人类提问,何时何处问什么

从online学习,根据错误改进自己

通过提问进行交互学习

因为目前问答系统当遇到自己回答不了的问题时(没见过的表达形式,自己不知道的东西等情况),往往会做出很差的回应或者重定向到其他资源(展示搜索网页的结果)。

但我们更希望机器人在遇到这种问题时可以通过向对方提问的方式来进行交互式问答进而解决该问题。

可以通过离线学习或者在线强化学习的方式进行训练。

这部分内容将会在第七章进行介绍,也可以参考其在2017年发表在ICLR上的论文“Learningthroughdialogueinteractionsbyaskingquestions”。

Human-in-the-Loop的对话学习

目前的对话机器人大都使用固定的数据集提前训练好之后就开始使用,但很多情况下我们需要机器人上线之后不断地根据具体环境改善自己,也就是要进行在线学习,根据对方的反馈来不断地调整自己。

所以作者使用一个teacher-student的对话数据集并结合强化学习进行训练。

这部分工作将在第八章进行介绍,也可以参考其2017年发表在ICLR上的文章“Dialoguelearningwithhuman-in-the-loop”。

第二章背景知识

这一部分主要介绍了论文中使用到的Seq-to-Seq模型、MemoryNetwork模型、增强学习中的policygradient方法这三块内容。

如果不熟悉的同学可以抽时间看一看,这里因为之前已经对Seq-to-Seq和MemNN两部分有所掌握,所以主要看了一下policynetwork方面的知识,当做是背景知识补充。

强化学习中两个主流的方法就是Q_learning和PolicyNetwork,相比Q_learning,policynetwork不需要显示的求解估值函数,而且对于连续动作和状态空间的问题,也可以很好的解决,所以经常在NLP相关领域中得到广泛应用。

我们的样本是一个个action-reward对,即每采取一个action都会有相应的reward。

再给定一个state时,神经网络会输出一个action的概率分布,我们的目标是最终奖励的期望最大。

如下图所示,即取动作at的概率*其相应的奖励r,然后再求和:

为了实现期望最大,就要使用policygradient的方法来求解和更新网络参数Q。

我们使用最大似然比(likelihoodratio)来估算J对Q的梯度,故有下式:

引入b的目的是为了减少方差,原则上来讲b可以是一个任意的标量,但一般会选择所有观测reward的均值或者另外一个神经网络的输出值作为b的取值。

如果想要深入了解这部分内容可以参考下面几个资源:

1,AndrejKarpathy的博客:

2,莫烦教程:

3,知乎智能单元专栏的文章:

第三章之后

本文从第三章开始就是分别介绍上面提到的几个方向,也就是作者读博三年发表的文章,进行分别的介绍,之后应该会分别进行阅读,就不在这里进行介绍了

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1