来源:机器之心(ID:almosthuman2014)编译自GitHub
自然语言处理(NLP)是人工智能领域下的一个庞大分支,其中面临很多机遇与挑战。斯坦福大学李纪为博士在他的毕业论文《Teaching Machines to Converse》中对 NLP 领域近期的发展进行了解读。这篇博士论文从多个方面尝试解决如今对话系统面临的诸多问题:(1) 如何产生具体、贴切、有意思的答复;(2) 如何赋予机器人格情感,从而产生具有一致性的回复;(3) 最早提出使用对抗性学习方法来生成与人类水平相同的回复语句——让生成器与鉴别器不断进行类似「图灵测试」的训练;(4) 最后提出了赋予机器人通过与人的交流自我更新的自学习模型。
李纪为是第一位在斯坦福大学仅用三年毕业的计算机科学博士。在由剑桥大学研究员 Marek Rei 发布的一项统计中,李纪为博士在最近三年在世界所有人工智能研究者中,以第一作者发表的顶级会议文章数量高居第一位。李纪为博士期间实习于 facebook 人工智能实验室以及微软研究院。截止本报道,李纪为博士 google scholar 论文引用量超过 1,200. H-index 高达 20.(参见:《如何生物转 CS,并在斯坦福大学三年拿到 PhD:独家专访李纪为博士》)。
论文链接:https://github.com/jiweil/Jiwei-Thesis
李纪为博士个人主页:https://web.stanford.edu/~jiweil/
摘要
机器与人类沟通的能力长期以来一直与人工智能发展水平的标杆。这个想法可以追溯到上世纪 50 年代初,阿兰·图灵提出的图灵测试来检测人工智能的水平。图灵提到,如果一个机器可以让与他对话的人误以为它(机器)是人而不是机器,那就说明人工智能已经发展到了非常高的高度。
在过去几十年里,对话学习领域取得了长足的进展。不过常见的对话系统仍然面临着诸如鲁棒性、可扩展性和域适应性等挑战:很多系统是从很小的手写标记/范本数据集中学习规则,这样既昂贵又难以扩展到其他领域中。另一方面,对话系统正在变得越来越复杂:它们通常包括很多互相分开的复杂模块,这意味着它们无法适应我们收集到的越来越多的数据。
最近,随着神经网络模型的出现,早期系统无法处理的很多问题变得可以解决了:端到端神经网络提供了可扩展和语言独立的框架,在语义理解上为自动回复的产生提供了可能性。与此同时,神经网络模型也带来了很多新的挑战,比如它们倾向于无趣泛泛的回答,如:「我不知道你在说什么。」;再有,它们经常缺乏像人类一样的人格特性,导致产生的回复经常是不一致的;他们大多数情况仅仅是被动地回答问题,而没有能力去主导对话。
本论文试图解决这些挑战。这篇论文主要涉及两个方面,第一个方面是四在开放域对话生成系统中的几个问题::(a)使用互信息避免无趣泛化的回答;(b)赋予机器人格,解决用户一致性问题;(c)用强化学习手段,增加长期对话成功率;(d)使用对抗学习方法推动机器生成与人类水平相同的回复。
第二个方面,我们尝试开发交互问答系统:(a)让机器具有提出问题的能力。通过问问题,扩大自己的知识库而完善自己(b)提出交互式的模型,在线与人类进行交流,并通过与人类交流得到的反馈中,提高自己的水平。
第一章 介绍
利用语言进行对话一直是人类智慧的标签之一,也几乎是人类儿童学会的第一种技能——在生命中永远不会停止使用。沟通/对话的意义超过了个人:通过对话,人们可以互相传递大量信息——其中的内容不仅包括周围环境(提醒同伴小心森林里的老虎),也包括我们自己(发出指令,谈论个人需求等等)。这种能力是组织有效社会合作的必要条件。
在人工智能领域,企图模仿人类语言交流能力的构想可以追溯到阿兰·图灵在 20 世纪 50 年代的构想(图灵测试)。能够通过图灵测试的计算机被认为具有接近人类智慧水平。
自图灵测试被提出以来,一代代研究者提出了各种方法试图通过测试,但我们目前距离完成任务还有很长一段路要走。在本论文中,我们受限简要回顾一下过去几十年里人们提出的各种系统。具体来说,这其中包括三种对话系统:开放领域聊天系统、目标导向的框架系统以及问答交互(QA)对话系统。我们会讨论它们的成功应用、优缺点以及为什么它们仍然无法通过图灵测试。本论文将着重讨论如何改进聊天系统和交互式问答(QA)系统。
图 1.1 使用 IBM 模型消息与回复之间的字对齐。图片来自 Michel Galley。
第二章 背景
2.1 序列到序列生成
SEQ2SEQ 模型可以被视为一个用输入内容生成目标句的基础框架,适用于多种自然语言生成任务,例如利用给定的英文句子生成法语句子的机器翻译;通过生成响应功能在接收到源信息时生成响应;在问答任务中针对问题做出回答;或是对一段文档生成总结性短句等等。
本段将介绍语言模型基础,循环神经网络和长短期记忆网络(LSTM),它们被视为 SEQ2SEQ 模型的基础。随后,我们将详细解读 SEQ2SEQ 模型的基础。最后,我们将讨论不同 SEQ2SEQ 模型的算法,如注意力 (attention) 机制。
2.2 记忆网络
记忆网络(Weston et al., 2015;Sukhbaatar et al., 2015)是一类神经网络模型,可以通过操作内存中的内容(存储、取回、过滤和重用)来进行自然语言推理。记忆网络中的存储器部分可以嵌入长期记忆(例如,关于真实世界的常识)和短期上下文(例如,最近的几段对话)。记忆网络已被成功地应用于很多自然语言任务中了,例如问答系统(Bordes et al., 2014;Weston et al., 2016),语言建模(Sukhbaatar et al., 2015;Hill et al., 2016)以及对话(Doge et al., 2016;Bordes & Weston, 2017)。
2.3 策略梯度方法
策略梯度法(Aleksandrov et al., 1968;Williams, 1992)是一类强化学习模型,通过使用梯度下降预测奖励的参数化策略来学习参数。与其他强化学习模型(如 Q 学习模型)比较而言,策略梯度方法不会受到如缺乏价值函数等方面的问题(因为它不需要明确估算价值函数),或由于高维空间连续状态或动作导致难以控制。
第三章 用交互信息避免泛化回复
当我们将 SEQ2SEQ 模型应用与生成回复的时候,一个严重的问题脱颖而出:神经对话模型总是会倾向于生成无意义的回复,例如「I don't know」、「I don't know what you are talking about」(Serban et al., 2015;Vinyals & Le, 2015)。从表 3.1 中我们可以看出,很多排名靠前的回复是泛化的。那些看起来更加有意义、更有针对性的回复可以在非最佳列表中找到,但是排名非常靠后。这种现象是因为通用性回复如 I don't know 在对话数据集中相对较高的频率。MLE(最大似然估计)目标函数对源到目标的单向依赖性进行了建模,由于无意义回复没有意义,有意义回复多种多样,系统总会倾向于生成这些无意义的回复。直观上,似乎不仅要考虑回复与信息的相关性,也需要考虑传递的信息是否具有意义:如果回答是「I don't know」,我们就难以猜测对话者开始询问的是什么。
我们建议通过最大互信息(Maximum Mutual Information,MMI),作为测量输入和输出之间的相互依赖性的优化目标来捕获这种直觉,作为传统 MLE 目标函数中源到目标单向依赖性的反向。我们提出了使用 MMI 作为目标函数神经生成模型的实际训练和解码策略。我们证明了使用 MMI 可以显著减少泛化回复产生的几率,在 BLEU 和人类评测的结果中得出了显著提升性能的结果。
表 3.1 从 OpenSubtitles 数据集 2000 万对话配对中训练的 4 层 SEQ2SEQ 神经模型生成的回复。解码实现的 Beam size 被设为 200。最大概率的回复选项为 N-best 列表中平均可能性对数似然的最高概率。更低的概率回复是手动选择的。
表 3.4:在 Open-Subtitles 数据集上 SEQ2SEQ 基线和 MMI-antiLM 模型的对比。
第四章 解决说话者一致性问题
目前聊天系统的一个严重的问题是缺少说话者一致性。这是由于训练集中包含了不同的人的谈话,而且一个解码模型总是选择最大似然的应答,从而使输出变得非常的混乱且不一致。
在这一章中,我们讨论了应对不一致问题的方法以及如何为数据驱动的系统赋予合乎逻辑的「人格角色」(persona)以模仿类人的行为,无论是个人助理,个性化的「阿凡达」智能体,亦或是游戏角色。为了这个目的,我们将把 persona 定义为一个人工智能体在对话交流中所扮演或表现出来的一种特征。persona 可以看成身份要素(背景事实或用户外形)、语言行为和交互方式的混合物。persona 是有适应性的,由于智能体在面对不同的人类谈话者的时候需要按交互的需求表现不同的侧面。
表 4.1:由 4 层 SEQ2SEQ 模型经过 2500 万个推特对话片段训练而生成的不一致应答。m 表示输入的信息,r 表示生成的应答。
我们在 SEQ2SEQ 框架中探索了两个 persona 模型,一个是单一说话者的「说话者模型」(SPEAKER MODEL),另一个是两人对话的「说话者-受话者模型」(SPEAKER-ADDRESSEE MODEL)。SPEAKER MODEL 将说话者级别(speaker-level)的向量表示整合到 SEQ2SEQ 模型的目标部分中。类似地,SPEAKER-ADDRESSEE MODEL 通过谈话者各自的嵌入构建一个交流的表示编码两个谈话者的交流模式,再合并到 SEQ2SEQ 模型中。这些 persona 向量利用人和人对话数据训练,并在测试时用于生成个性化的应答。我们在由电视剧脚本组成的推特对话数据集的开域语料库上的实验结果表明使用 persona 向量可以提升相关性能,如 BLEU 分数提高最多 20%,困惑度 (perplexity)12%,而相应的,由人类标注员评判的一致性也有同样的提高。
第五章 让对话更持久
在前两节中,我们讨论了聊天系统如何避免一般性的应答并对不同的问题生成满足一致性的应答。目前为止,我们谈论的只是单轮(single-turn)应答的性质,但这只是对人类对话的过于简化的近似。人类对话通常包含了数十到数百轮的交互。这些多轮对话通常是有结构的,比如以开场白启动对话、设置语境、抓住对话重点等等,而且人类很擅长掌控一场对话中的信息流动,从而成功的进行长期的对话(包括总体一致性、意义性等等)。
目前的模型通过在给定的对话语境中使用最大似然度估计(maximum-likelihood estimation,MLE)目标函数预测下一个对话轮。由于无法成功的应对长期对话而经常陷入很多种困境:首先,SEQ2SEQ 模型倾向生成非常一般化的应答,正如第三章中所讨论的:诸如「我不知道」这样的应答;其次,如表 5.1 左侧的两个对话样本所示,系统陷入了重复应答的无限循环中。这是由于基于 MLE 的 SEQ2SEQ 模型无法测量重复次数。在左下方的例子中,经过三轮后对话进入了死循环,两个智能体都一直在生成枯燥、一般性的话语如「我不知道你在说什么」、「你不知道你在说什么」。
表 5.1:左列:使用 SEQ2SEQ 模型和 OpenSubtitles 数据集训练的两个智能体之间的对话模拟。第一轮(指标 1)是由作者输入的,然后两个智能体轮流应答,一个智能体的输入将作为另一个的在前生成轮。右列:使用我们提出的强化学习模型的对话模拟。新的模型拥有更具前瞻性的言辞(诸如「你为什么要问这个问题」、「我和你一起去」),在掉入对话黑洞之前能进行更持久的对话。
为了应对这些挑战,我们需要一个拥有以下能力的对话框架:
(1)更好的奖励函数;
(2)对生成的某一句话的长期影响进行建模。
为了达到这些目的,我们利用了强化学习,其在 MDP 和 POMDP 对话系统中早已被广泛应用。我们提出了神经网络强化学习生成方法,可以优化长期的奖励。我们的模型使用了编码器-解码器架构作为主干,让两个机器人模拟对话。这样的话,通过优化奖励函数,探索可能行为的空间。我们认为针对对话好的奖励函数应该有如下特点:好的谈话是具备前瞻性或交互性(一轮带动下一轮对话)、提供有用以及合乎逻辑的信息。我们可以通过这些方面定义奖励函数,从而通过奖励函数来优化编码器-解码器模型。
在训练过程中,我们使用随机梯度下降的更新策略,借用了 Yoshua Bengio 在 09 年提出的课程学习(Curriculum learning)的策略,逐渐增加对话模拟的轮数。这样训练的复杂度逐渐增加。
实验结果(表 5.1 中右侧的样本结果)表明我们的方法产生了更持久的对话,并且相比使用 MLE 目标训练的标准 SEQ2SEQ 模型,能生成更具交互性的应答。
两个对话机器人之间的对话模拟
模拟两个机器人轮流对话的过程是这样的,在一开始,从训练集中随意找到一句话作为输入给第一个机器人,这个代理通过编码器网络把这个输入编码成一个隐层向量,然后解码器来生成回答。之后,第二个机器人把之前那个机器人输出的响应和对话历史结合起来,重新通过编码器网络编码得到一个隐层向量(相当于更新了对话的状态),然后通过解码器网络生成一个新的回复,并传给第一个机器人。这个过程不断被重复下去:
图 5.1 描述了两个对话机器人之间的对话模拟。
更具体地,我们把之前利用互信息训练过的模型作为初始模型,然后利用策略梯度方法来更新参数,以达到一个比较大的期待奖励值的。对于一系列的响应,其奖励函数为:
之后用强化学习对梯度进行更新。
在最终模型的训练当中,课程学习的策略又一次被使用了。
模型起初只局限于两轮,后来慢慢增加到多轮。因为每一轮的候选集合数目固定,所以每增加一轮,整个路径空间就成倍变大,呈现一个指数级别的增长状态,所以最终模型最多限定为五轮对话。
第六章 通过对抗学习生成对话
在上一章(第五章)中,我们人工定义了一些理想对话的特性,即回复的舒适性、信息性和条理性,然后用这些作为强化学习回复的奖励。然而,众所周知,人为定义的奖励函数无法覆盖所有重要的方面,这个会导致最后得到的结果是次优的。解决这个涉及到两个重要的问题:什么是一个好的对话应该有的特征,以及如何定量地计算这些特征?
一个好的的对话模型应该能生成和人类对话没有区别的话语,所以我们可以找一个类似图灵测试的训练目标。我们借用了计算机视觉中的对抗学习的想法:我们同时训练两个模型,一个是生成器(以神经 SEQ2SEQ 模型的形式),其定义了生成一个对话序列的概率,另一个是判别器,生成模型产生的对话进行标注,来判断是人类生成还是机器生成。这个判别器和图灵测试中的评估器非常类似。我们将这个任务作为一个强化学习问题处理,其中机器生成的话语的品质由其是否能够欺骗判别器误以为是人类生成的来测量。判别器的输出作为对生成器的奖励,促进其生成更加拟人化的话语。
图灵测试的想法(利用一个判别器从人类生成的文本中辨别出机器生成的)不仅可以用于训练,还可以用于测试,因而可将其命名为对抗评估(Adversarial evaluation)。对抗评估由 Bowman 等人于 2016 年首次提出用于评估语句生成的品质,并在 Kannan 和 Vinyals(2016 年)的「对话生成的语境」的工作中被初步研究。
实验结果表明我们的方法,相比使用 MLE 目标函数训练的标准的 SEQ2SEQ 模型,能生成更加交互性、趣味性和非重复的应答。
表 6.5:不同模型输出的应答样本
第七章 给机器人提问的能力
在这一章中我们讨论了如何训练机器学会提问。考虑一下以下的场景:当一个学生被老师提问的时候,由于对自己的答案不够自信,学生可能会要求一些提示。一个好的对话智能体应该要具备这样的和对话对象交互的能力。然而,最近的研究几乎都集中于用训练集中的固定回答学习,而不是通过交互。在这种情况下,当遇到令人迷惑的的情况比如一个未知的表面句子形式(词组或结构)、一个语义复杂的句子或一个未知的词,智能体要么进行猜测(通常很糟糕),要么将用户重导向到其它的资源(例如,搜索引擎,正如我们在 Siri 上遇到的)。而人类相反,可以通过提问应对不同的情况。更重要的是,通过提问来获取更多的知识。
第八章 利用人机回圈(Human-in-the-Loop)的对话学习
在这一章中,我们将探索的方向是让机器人跟人进行对话,得到反馈,然后机器人可以通过人的反馈来增强自己。该任务在的强化学习框架下,让教师跟机器对话,从而让机器自学习。对话将在问答任务的语境中进行,而机器必须在给定一个短故事或一系列事实的前提下,回答教师提出的一系列问题。我们考虑了两种类型的反馈:传统强化学习中的明确的数值奖励,以及在人类对话中更为自然的文本反馈。我们考虑了两种在线训练方案:
(i)使用易于分析和重复实验的对话模拟器;
(ii)对话对象是真人,使用 Amazon Mechanical Turk 和机器对话。
我们探索了在线学习中的关键问题,比如机器如何使用最少的教师反馈进行最高效的训练,机器如何处理不同类型的反馈信号,如何通过平衡数据和探索避免隐藏的风险(比如在线学习中不同类型的反馈的数量经常差别非常大)。我们的发现表明可以建立这样一个系统,使模型从固定的数据开始训练,与人交互,随后更新自己的模型,新的模型再与人交互,继续得到反馈,然后再一次更新模型。这个过程反复持续下去。
图 8.1:我们的模拟器实现的 10 个任务,其中评估了不同类型的应答和互反的反馈。每一个案例中给定 WikiMovies 中的例子,其中左侧学生(机器)全部回答正确,而右侧学生全部回答错误。学生的应答用红色文本表示,学生用 S 表示,教师的反馈用蓝色文本表示,而教师用 T 表示。为了模仿学习过程,教师需要提供学生(以 S 表示)在任务 1 和 8 中做出的应答。(+)表示一次正面奖励。
第九章 结论和未来工作
我们以讨论聊天系统目前面临的挑战的形式结束这篇论文,并为未来研究提供一些有益的启发。
对于本论文中的较大语境 (context),我们使用带有 attention 机制的分级 LSTM 模型捕捉语境,其中字词级 LSTM 用于获取每一个语境语句的表征,并且另一级的 LSTM 把语句级表征纳入一个语境向量从而表征整个对话历史。(1) 但是该语境向量能捕捉到多少语境信息、以及该分级注意力模型能分离出多少有效信息并不好说。原因有两个:当前神经网络模型能力的欠缺,其中单一的语境信息没有足够能力编码所有语境信息。或者 (2) 模型无法弄明白那句之前说过话相比其他更重要。
解决这些问题对于实际应用极其重要,比如用于客服聊天机器人开发。考虑一下包裹邮寄跟踪的问题,其中聊天机器人需要在整个对话中记住一些重要信息,比如一个跟踪号码。信息提取方法(或者从对话历史中提取重要实体的时隙填充策略)与基于表征的神经模型的结合将有潜力解决这一问题。直观讲,对话历史中只有非常少的关键词在聊天机器人要讲什么上有非常大的指导意义。基于关键词的信息提取模型首先提取这些关键词,接着将其整合进语境神经模型之中,从而为较大历史语境中的信息利用提供更多灵活性。
逻辑学与语用学
考虑以下两个正在进行的对话语境:
A:你要去参加聚会吗?B:我明天有考试。从这一语境中,我们知道说话者 B 由于要准备即将到来的考试而无法参加聚会,由此后面的对话才顺理成章。这需要一系列的推理步骤,即,明天有一个考试 ->不得不准备这一考试->时间被占用->无法参加这次聚会。对人来讲这直截了当,但是对当前的机器学习来讲却异常困难,尤其是在开放域中:手动标注所有的推理链是不切实际的。因此我们需要一个逻辑演绎模型,从大量训练数据中自动学习这些隐含的推理链,并整合进对话生成之中。
背景与先验知识
人类对话通常发生在特定语境或背景之中。它可以小到对话发生的具体位置(比如一个咖啡厅或者一个剧院)或者大到发生在战争或和平时期。背景对会话的展开有巨大影响。语境同样也包括用户信息、个人特征,甚或说话人对对方的整体感觉。例如对方是否负责任或诚实。处理背景问题的挑战来自两个方面:(1) 在训练数据上,收集对话发生于其中的背景的综合信息比较困难。正如在先前章节所讨论的,最大规模的可用数据集来自社交媒体推特、在线论坛 reddit 或者电影剧本等,以上通常缺乏关于背景的详细描述,比如搜集推特中参与讨论的说话者的个人角色信息就是不可能的。
你也许会想到第 4 章节的个人角色模型,它基于先前生成的对话构建说话者信息/人物简介。但是只使用数百或数千的对话表明,仅仅通过用户发表在推特上的内容还不足以了解他们。(2) 一个特定语境对其中对话的暗示需要大量的先验常识。当人类对话时,这些常识很少被提及或描述,因为对话参与者认为这是理所当然。这意味着即使我们有了关于对话的具体语境信息,也无法清楚知道为什么该对话会发生在该语境中,因为说话者忽略掉了大量常识信息。这对基于模仿的机器学习系统(比如 SEQ2SEQ 模型)带来了巨大挑战,因为这样的模型只是通过训练集一味模仿而不知其原因并不是理解人类交流的最优路径。
我希望该论文在对话理解与生成的研究上有所贡献,推动解决上述问题的研究进展。
限时干货下载
Step 1:长按下方二维码,添加微信公众号“数据玩家「fbigdata」”
Step 2:回复【2】免费获取完整数据分析资料「包括SPSS\SAS\SQL\EXCEL\Project!」