您的位置:首页 > 产品设计 > UI/UE

Learning Through Dialogue Interactions——基于对话交互的学习

2016-12-26 23:51 344 查看
原文:Learning Through Dialogue Interactions

作者:

JiweiLi,AlexanderH.Miller,SumitChopra,Marc’AurelioRanzato,JasonWeston

Abstract

一个好的对话agent是可以和用户进行交互的。在本工作中,我们探索着设计了一个模拟器并合成一个电影领域的任务集合,让learner和teacher进行问答交互。我们研究了一个learner是怎样在线下和线上的增强学习集中通过提问来受益的。我们论证了该learner在提问时可以得到改善。我们的工作展示了在开发end-to-end学习交互对话代理的第一步。

1.Introduction

当一个学生被老师提问,但他对答案并不确定时,他可以向老师请求详细点的说名或者给些提示。一个好的agent(learn/bot/student)也应当有这种能力可以和一个对话参与者(teacher/user)进行交互。但是目前大部分的研究是在训练集中通过提供的固定answers进行学习,而不是通过交互来学习。这样的话,当一个learner遇到一个混乱的场景:例如遇到一个未见过的表面形式(句子短语或结构),一个有复杂语义的句子或者一个未见过的词。这时agent将会做一个猜测(但经常会很差)或者直接将user重定向到其他资源(例如Siri中遇到这种情况会将user的query重定向到搜索引擎)。但是人类恰恰相反,人们可以在提问中应对许多场景。

我们确定了一个learner在对话期间会出现三类错误:(1)learner在理解对话者的文本表面形式时会出现问题,例如一个问题的描述;(2)learner在推理上会出现问题,例如在即将回应的问题上,learner不能检索并联系相关的知识;(3)learner在起初就缺乏回答问题的必要知识源,也就说learner已经学习的知识源不包含需要的信息。

上面说到的那三种情况都有可能通过与对话参与者交互来解决。一些交互可以被用来学习,以便在未来的对话中有更好的表现形式。如果一个人类学生在理解老师的提问时有问题,他也许会请求老师把问题说的更详细明确一些。如果该学生不知道从哪里开始,他可能会请求老师给指出哪些知识和问题最相关。如果该学生对相关信息一点都不了解,他可能会请求老师告诉他答案,并将答案记下,以便将来使用。

在本工作中,我们尝试着在人和end2end机器学习agent之间处理上述遇到的问题,消除human和agent之间的隔阂:我们的learner必须要学会学习。我们因此设计了一个模拟器,并提供了一个电影领域的问答语料集。让bot和teacher进行交互来解决上面提到的问题。使用这个框架,我们探索着一个bot怎样在交互中,通过在线下监督的设置中和在线上增强学习的设置中提问进行学习,以及在后面的设置中如何选择何时提问。在这两种情况下,我们发现学习系统可以改善bot和用户之间的交互。

2.Related Work

通过交互和反馈来学习语言可以追溯到1950s,

在对话的背景下,基于最近很流行的深度学习模型,许多神经对话系统被提出。这些包括chit-chat类型的end2end对话系统(Vinyals & Le, 2015; Li et al., 2015; Sordoni et al., 2015),该系统会根据用户之前的表述来直接生成一个恢复。另外还有基于任务的对话系统方向(Wen et al., 2016; Su et al., 2016; Bordes & Weston, 2016), ,这类系统是完成一个确定的任务,例如预定一张门票,或者预定一间房间。神经对话系统的另外一个研究分支是通过一个知识库(Bordes et al., 2015; Miller et al., 2016)或短篇小说(Westonetal.,2015),利用监督学习做对话中问答 (Dodge et al., 2015; Weston, 2016)。据我们所知,目前的对话系统大部分是集中在通过固定的监督信息来学习,而不是通过与用户的交互来学习。

我们的工作和 Weston (Dialog-based language learning. arXiv preprint arXiv:1604.06045, 2016)目前的工作有很紧密的关系;该工作探讨了在对话进行中学习的问题,Weston在对话的回复中添加了监督机制。他们的作品在对话表达方式上引入多重学习方案。特别是作者讨论了“模仿学习(Imitation Learning)”:agent通过模仿teacher和一个expert student间得对话交互来学习。“基于回报的模仿学习(Reward-Based Imitation Learning)”只会通过有正确答案的模仿对话交互来学习。“前向预测(Forward Prediction)”是通过预测teacher对student回答的反馈来学习。尽管前向预测在实际中没有使用人标记的回报(human-labeled reward),但从作者展示的效果来看还是很有前景的。总结以上研究,他们的工作都没有完全的探索出agent通过提问和交互来学习的能力。我们的工作可以视为是他们工作的自然延伸。

3.The Task

在这一部分中,我们将会描述下我们设计的对话任务。该任务根据section 1中描述的三个不同问题而制定,以刺激bot可以主动提问:(1)问题澄清:当bot无法理解user的文本语意时。(2)知识操作:bot需要借助一个现有的基本知识库做推理。(3)知识获取:bot的知识库时不完整的,需要补充。

在我们的实验中,我们使用了WikiMovies数据集(Weston et al., 2015),该语料库基于开放电影数据集中的问答句,共有十万条,其中关于实体的问答句超过七万五千条。Training/dev/test数据集分别包含 181638 / 9702 / 9698 条。准确率反应的是student能够给出teacher问题的正确答案的次数所占的百分比。

每次的对话是在teacher和bot之间发生,并使用模拟器生成。Bot首先通过电影数据语料库来呈现事实。这样就可以让我们控制bot所访问的精确知识库。在对话期间,我们包含了几个teacher-bot对,question-answer对,它们可以视作跟bot需要回答的问题不相关的对话记录。为了探索在交流中bot请求澄清问题所带来的益处,在这三个场景中,我们的模拟器都会通过两种不同的方式来生成数据,分别命名为:Question-Answering(用QA表示)和Asking-Question(用AQ表示)。Bot对teacher的每条原始提问分别根据这两种方式进行回答。模拟器的细节可以在附录中看到。

3.1 Question Clarification(问题澄清)

在这个环境下,bot无法理解teacher所提问的问题。这里我们专注于bot因teacher的打字错误或拼写错误而无法理解question,像图1中那样。我们会故意的在question中拼错一些单词,例如将“movie”拼错为“movvie”或者将“star”拼错为“sttar”。以保证bot在理解问句时出现理解上的问题。我们展示了两种AQ任务:(i)问题的释义:student会请求(例如:what do you mean)请求teacher使用没有拼写错误的解释语句来澄清该问题。(ii)问题的确认:student会通过类似“Do you mean which film Tom appear in”的方式来确认带有拼写错误的问题是否对应一条没有拼写错误的问题。在(i)中,Teacher会给出一条没有拼写错误的原问句的解释,例如“I mean which film did Tom appear in”;在(ii)中,teacher会给出是/否的回应。在这些任务中,bot可以查询数据语料库中的所有实体。



Figure 1

3.2 Knowledge Operation(知识操作)

Bot访问了所有相关知识库(事实),但通过这些知识库还是缺乏必要推理的能力。如图2.我们专注于一个特殊的案例:bot会尝试着理解这些相关的事实。我们实验了两种设置:请求相关的知识(Task 3):bot会直接请求teacher指出相关的KB事实;知识的验证(Task 4):bot会请教teacher的问题是否和KB 中一个具体的fact相关。在请求相关知识中,Teacher会指出相关的KB fact,在知识验证中,teacher会给出是/否的回应;然后bot会对teacher的原始问题给出答案,teacher在对答案进行反馈。



Figure 2

3.3 Knowledge Acquisition(知识获取)

在该任务中,bot会有一个不完整的KB,并且在KB中会有一些对对话非常重要的实体缺失,细看图3。例如给定一个问题:“Which movie did Tom star in ?”,缺少的部分可以是teacher正在询问的实体(简称为question entity,该例子中的问题实体是Tom),相关实体(starred actors),问题的答案(Forrest Gump),或者者三者都有。在所有的例子中,由于相关知识库的缺乏,bot很难给出正确答案。它就需要teacher给出正确的答案来学到缺失的这部分知识。Teacher给出答案后会继续问其他的问题。Teacher然后再返回重问该问题,这时候bot就需要给出一个答案了,因为这个实体不再是未见过的了。

虽然作为bot提问的正确答案已经包含在了早期的对话部分中,像我们再后面将会展示的那样,但在当teacher重新提问该问题时,许多任务并没有像它们看上去的那样琐碎。这时因为bot的model需要记住这些缺失的实体,还要在这些缺失的实体和已知的知识库之间构造链接。这就类似现实世界中,一个学生可能会一次次的犯同样的错,即使在每次犯错时,老师总会给他纠正。我们下面将详细讨论每个任务:

Missing Question Entity:teacher正在提问中的实体在基本知识库中缺失。所有包含该question entity的KB facts将对bot隐藏。例如Task 5中的图3,因为teacher的问题中含有Tom实体,那么包含Tom实体的KB facts将对bot不可见。

Missing Answer Entity:对于bot来说,问题的answer entity是不可知的。那么所有含有answer entity的KB facts将会被隐藏。因此在图3的Task 6中,所有包含“Forrest Gump”的KB facts将对bot不可见。

Missing Relation Entity:相关类型对于bot来说是未知的。在图3的Task 7中,所有和starred actors相关的KB facts对bot是不可见的。

Missing Triples:对于同时出现question entity,answer entity 和relation entity的所有KB facts对bot不可见。如图3的Task 8.

Missing Everything:对包含question entity,answer entity 和relation entity中任意一种的所有KB facts都将对bot不可见。如图3的Task 9.



Figure 3

4. Train/Test Regime(训练/测试规则)

我们现在讨论下我们用来训练/测试我们模型的规则。假设去访问一个模拟器,我们的对象是双重的。第一,我们想要测试下提问问题的有效性。第二,我们想要训练我们的student bot在什么时候提问,并且问什么问题。为了能够完成这两个目标,我们使用了两种方法来探索着训练我们的模型:Offline Supervised Learning 和 Online Reinforcement Learning。

4.1 Offline Supervised Learning

使用线下监督环境训练我们student模型的目的主要是测试提出问题能力的有效性。像前面章节中描述的那样去生成对话,使用一个固定的策略来生成bot的角色。我们选择了一个正确回答teacher问题概率为50%的策略,以更加符合现实。类似的,student被问到不相干问题的概率也为50%。

线下环境探索了training和testing不同场景下的组合,这也是为了模仿现实世界中的不同场景。目标是为了能够理解何时并怎样观察通过两个agents的交流来提升bot在不同任务中的性能。最后,我们在整个任务中,将training和setting分别构造成三种不同的方式,并最终在每个任务中组成9种不同的场景,每种都对应着一个真实世界的场景。

我们生成的三个training sets为:TrainQA,TrainAQ和TrainMix。TrainQA遵循前面章节的QA场景:bot不会提问,只会尝试着直接给出答案。TrainAQ遵循AQ场景:bot在回答之前总会问一个问题来回应teacher的原始问题。TrainMix是前两者各50%的结合。

生成的三个testing sets为:TestQA,TestAQ和TestModelAQ。TestQA和TestAQ类似于TrainQA和TrainAQ,但是为了进行评估,而使用了一个完全固定的策略(而不是50%的正确概率)。并且TestModelAQ和TestQA也是不同的。当student决定对问题提问时,这里不是使用一个固定的策略,而是通过一个学习model来生成question,因为固定的策略总会出现一个(和老师问题)相关的question。学习model通过TrainAQ或TrainMix集合依赖于训练场景来训练。Teacher将会回复student提出的问题,如果student的提问是正确的,则会给予肯定,否则会给予否定。Student然后再给出最终的答案。TestModelAQ和TestAQ之间的不同只存在于Question Verification和Knowledge Verification任务种;在其他任务种,只有一种方式来提问,并且TestModelAQ和TestAQ是一致的。

总之,针对于第3章节中的任务表,我们针对每个训练集(TrainQA,TrainAQ和TrainMix)训练一个模型,并且对每个模型使用三个测试集(TestQA,TestAQ和TestModelAQ)进行测试。这样就有9中组合。每种组合对应了现实中的一种场景:例如TrainAQ+TestQA描述了一个学生在学习期间可以提问,但是在考试期间不能提问的场景;TrainQA+TestQA描述了一位严肃的老师在教学和考试期间都不允许学生提问;TrainQA+TestAQ描述了一个懒散的学生在学习期间不提问,在考试期间就变得非常紧张,并一直提问。

4.2 Online Reinforcement Learning(RL)

我们也探索了student学习在何时提问和提问什么内容的能力,换句话说就是student怎样学习。

student在每次交流时都会提出问题,这样感觉还不错,因为对student问题的回答中会包含一些额外的信息,但我们并不想让我们的模型学习这种行为。因为当现实中的student提问时,总会有一个这种行为的成本。这种成本可以视为teacher耐心的反应。或者更一般的人机交互间的影响:如果bot总是请求解释问题,那么用户就不会发现bot的优点。Student对何时提问和提问什么应该有一定的判断力。例如:如果student对答案很自信,那么就没有必要在提问了;或者如果老师的问题太难,即使解释了也不助于你得到正确答案,那么就也没必要提问。

我们现在讨论下我们在增强学习框架下如何使这样的问题模型化的。Bot通过KB facts(可能没有包含一些依赖任务的facts)和一个问题来展示。它需要判断在这时候是否需要提问。这个是否要提问的决定通过一个二元策略来确定。如果student选择了要提出一个问题,那么它将会受到的惩罚。我们尝试的值是[0,2]的随机数,可以认为是在塑造teacher耐性的模型。这种设置环境的目的是在提问与否中找到一个最佳的策略,以达到最高的reward。当学生提问时,老师会适当的做出回应,student也会最终根据策略,不管是否提出过问题,对老师的最初问题给出答案。如果最终的答案时正确的,那么student将会获得+1的reward,否则会获得-1的reward。需要注意的是student最多只能提问一次,并且提问的问题类型通常是根据任务指定的。我们提出的reward详细结构如下:



根据第3章描述的每个任务,我们考虑了三个不同的RL场景。

1.Good-Student:这类的student拥有所有相关的KB facts。在teacher的提问中也没有拼错或未知的词语。这样的知识库代表了现实世界中student知道他所需要的所有的知识(例如一个大的知识库(knowledge base)和一个很大的词典(vocabulary))

2.Poor-Student: 呈现给这类student的KB facts和questions对每个Task任务来说都是有缺陷的。例如,在Question Clarification任务中,student因为问题中有拼写错误而不不能理解;在Missing Question Entity任务中,student不认识teacher提问中的问题实体,而且所有包含这些实体的facts对学生都是不可见的。这样的设置类似于现实中一个student对Task准备不充分。

3.Medium-Student:这类场景是前两种场景各50%的结合,即student对50%的问题能完全的掌握,另50%的问题和知识库来自于Poor-Student的设置。



5.Models

我们使用End-to-End Memory Network模型(简称MemN2N)(Sukhbaatar et al., 2015)作为线下监督和线上RL两种设置模型的骨架。该模型将聊天记录中的最后一句话和一组包含短时记忆和长时记忆的记忆上下文作为输入,其中短时记忆是bot和teacher之间的对话记录,长时记忆是bot可访问的知识库,并输出一个标签。我们建议读者参考附录以获得更多关于MemN2N的细节内容。

5.1线下监督场景:

我们采纳的第一个学习策略是基于Reward的模拟策略(简称vanilla-MemN2N) (Weston, 2016)。在训练时,该模型将student提供的答案做最大化对数似然估计(丢弃那些错误答案的示例)。候选的答案是在记忆中出现的词,这也就意味着bot只能从它之前看过的知识库中预测实体。

我们也使用了MemN2N的一个变体,称为“context MemN2N”(Cont-MemN2N for short),即我们将每个词向量用该词向量和该词周围出现的其他词向量的平均值来替换。我们使用前面和后面的单词作为上下文,上下文单词的数量是在dev集合上选择的超参数。

模型 vanilla-MemN2N 和 Cont-MemN2N 的共同问题是它们只能利用bot的答案作为信息,而忽略了teacher的反馈。因此,我们提出了一个可以联合预测bot答案和teacher反馈的模型(可以简称为TrainQA(+FP))。Bot的答案可以使用vanilla-MemN2N来预测,teacher的反馈可以使用ForwardPrediction(FP)模型(Jason Weston. Dialog-based language learning. arXiv preprint arXiv:1604.06045, 2016)来反馈。我们建议读者可以细读下FP模型的细节。在训练时,模型可以同时从teacher的反馈预测和具有正向reward的答案中学习。在测试时,模型将只能预测bot的答案。

在第四章节的TestModelAQ设定中,模型需要决定要问什么问题,我们这里同样使用vanilla-MemN2N,输入question和上下文,然后输出bot要问的问题。

5.2 Online RL Settings:

一个二元的vanilla-MemN2N(可以视为)模型用来决定bot是否需要提问,即为了给teacher答复,bot是否需要问一些东西。第二个MemN2N模型用来决定bot的回答,可以视为。对应QA和AQ两种不同的模型,这也就意味这bot会根据它是否选择提问而使用两种不同的模型作为最后答案的预测。

我们使用增强算法((Williams, 1992)来更新和。在每次对话中,bot会做出两个连续的动作:是否需要提问的动作视为,猜测最后的答案视为。使用表示对话情节中reward的累积,计算方式和梯度优化如下表:



其中b是baseline值,由另外一个 MemN2N 模型估计,该模型将query x和记忆C作为输入,并输出标量b作为后面reward的baseline。通过reward b和实际累积reward r的最小化平方差来估计baseline模型,即。我们建议读者阅读Marc’Aurelio Ranzato, Sumit Chopra, Michael Auli, and Wojciech Zaremba. Sequence level training with recurrent neural networks. arXiv preprint arXiv:1511.06732, 2015和Wojciech Zaremba and Ilya Sutskever. Reinforcement learning neural turing machines. arXiv preprint arXiv:1505.00521, 362, 2015. 以获得更多详细内容。Baseline的估计模型是独立于策略模型的,其平方差值也不会反向传播到它们(策略模型)。

在实践中,我们发现遵循如下的训练策略会获得更好的结果:首先,只训练,即只为预测最后答案的策略更新梯度。当bot的最后答案策略被充分学习后,并行的训练这两种策略(这里我们总共运行了16个时间段来实现,前八个时间段仅更新了模型最后回答的策略,后八个时间段用来同时更新两个策略)。这里有一个现实世界的类比,bot首先学习任务的基础,然后根据用户耐性(使用costAQ表示)做的问答策略和bot自身的回答问题的能力来学习着改善自己的性能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐