聊天机器人中的深度学习

Part1简介——聊天机器人中的深度学习
聊天机器人,也称作是会话代理,或者对话系统,是非常热门的话题。微软、Facebook、Apple公司、Google、微信以及Slack公司都对此付出了大量的人力物力。也有很多的创业公司尝试通过建立用户级应用, bot platforms bot libraries 来改变消费者和服务之间的相互作用。微软最近还开源了自己的bot开发者框架。
许多公司都希望开发的机器人可以和人类进行无差别的交流,他们都宣称使用NLP和Deep Learning技术来实现这一点。但是,围绕着AI有很多的炒作,有时候很难判断是否能梦想成真。
在这个系列文章中,我想先回顾一些用于创造聊天机器人的Deep learning技术,来解释我们现在处于什么水平、什么东西是可能的做到的、什么东西在短时间内是无法完成的。这篇是一个简要介绍,在后续的文章中我们将深入到实现的细节。
分类模型(基于搜索的模型vs生成模型)
基于搜索的模型相对容易一点,他基于输入文本,利用预定义的一个知识库和启发式的方法,来找到一个合适的回应。所谓启发式的方法,可以像基于规则的表达式匹配那样简单,也可以同时像机器学习分类器的集合一样复杂。这些系统都不会产生新的文本,只是从固定集合中挑出合适的结果。
生成模型难度要高一点,他不依赖于任何预先定义好的响应。而是从不断抓取、学习(scratch)中生成新的回答。生成模型通常基于机器翻译技术,但是不是从一种语言翻译到另一种语言,而是从输入转化为输出响应。
这两种方法都有明显的利弊。基于搜索的方法由于知识库是人工制作的,所以不会犯语法上的错误。但是它们可能无法处理没有适当的预定义响应存在的不可见的情况。出于同样的原因,这种方法不能找到上下文相关的信息,比如对话前半部分提到的人名。生成模型则更“聪明”一些。他能够在输入中找到之前的信息并且给你一种和人在对话的印象。但是,这种方法很难训练,很容易犯语法错误,尤其是在句子较长的时候。通常这种方法需要巨大量的训练数据。
深度学习技术可以用在以上两种方法中,但是研究似乎正在向生产模型的方向发展。如同 Sequence to Sequence 一样 ,深度学习架构特别适合用来生成文本,研究者们也希望在这方面取得快速的发展。但是,对于建立可以工作的很好的生成模型,我们还处在初级阶段。目前的实践系统更多的是基于搜索的。
长对话vs短对话
我们知道,句子越长越难使机器明白( automate it )。短对话的目的是对单输入产生一个单输出,相对简单。比如你会从用户那里得到一个特定的问题,然后回应一个合适的回答。长对话可能要多转几个弯,需要追溯到之前的对话内容,就要困难一点。用户需要的对话一般都是有多个问题的长对话。
开放领域vs固定领域
在开放领域中可以与用户进行任何对话,这也更难。不需要有定义好的目标和意图。在社交媒体上的对话一般都是开放领域的,他们能够聊任何话题。创建合理的响应需要无穷的对话主题和一定量的现有知识,这使得问题很困难。
在固定领域设定输入输入是有限的,因为系统可以尝试达到一个特定的目标。技术支持和购物助手就是这样的例子。这些系统不需要谈论政治,只需要尽可能高效的完成特定任务就好。当然,用户依然想聊任何想聊的话题,但是系统不需要处理所有问题,用户也不会期待这样。
共同的挑战
在建立积极研究领域的聊天机器人当中,有一些明显的,和不那么明显的挑战。
合并文本
要产生合理的响应系统,需要合并语言的前后语境和文本的前后关系。前后语境就是在长对话中,人们知道已经说过的和改变的信息。最常见的方法就是把对话嵌入到一个向量中,但是在长对话中这样做是很难的。在一些实验中,利用生成分层神经网络模型建立端对端的对话系统,以及关注意向的神经网络对话模型都进入了这个方向。除此还可能需要并入其他的上下文数据,比如日期,时间,位置或者关于用户的信息。
个性一致
当机器人产生回应的时候,理想情况下应该对语义一致的输入产生一致性的回应。比如,对于“你多大了?”和“你年龄是多少?”,我们希望得到的回答是一样的。这听起来见简单,但是要把这种固定的知识或“个性”加入到模型中是一个特别值得研究的问题。很多系统都能够产生似是而非的回应,但是没有被训练产生语义一致的回应。通常,这是因为训练是基于众多不同的用户提供的数据。像基于角色的神经对话模型的这类模型,正在朝着“明确地塑造个性”迈进。
模型评估
评估一个聊天机器人的最好方法,就是看他能否在一个给定的情景中完成自己的任务,比如解决用户的问题。但是,由于这需要人来判断和评估,所以这些指标的获得成本很大。有时候,比如在进行开发领域对话的时候,又没有特定的目标。用于机器翻译的常用指标 BLEU ,是基于文本匹配的,也不太合适。因为聪明的回答会包含完全不同的词句。事实上,在“如何不去评估你的对话系统:一项关于对话响应生成的无监督评估指标的实证研究”中,研究人员发现,没有一个常用的指标与人类的判断真正相关。(   How NOT To Evaluate Your Dialogue System: An Empirical Study of Unsupervised Evaluation Metrics for Dialogue Response Generation
意图和多样性
生成系统一个常见的问题就是,他们会产生通用的回应,比如“真棒!”、“我不知道。”这样的回答对很多输入情况都适用。Google的Smart Reply的早期版本几乎对任何情况都回应“I Love you”。这部分是系统在数据和实际训练目标(算法)方面的训练结果。一些研究者尝试通过多种目标函数人为的提高结果的多样性。但是,通常人类是对特定输入产生反应,并且还带有某种意图。因为生成系统没有被训练具有特定的意图,所以他们缺乏多样性,特别是对于开放领域的系统。
实际应用情况如何?
鉴于现有的尖端研究,我们到底处在什么程度,这些系统又运行的怎么样呢?让我们再次看一下分类系统。一个基于搜索的开放领域系统,很明显是不可能实现的。因为永远不能手动添加足够多的响应来覆盖所有的情况。一个生成模型的开放领域系统,几乎就是人工智能的总和了。因为他需要处理所有可能的场景。尽管在这些领域有很多的研究,我们现在离目标还很遥远。
这使得在限制领域中,基于搜索和基于生成的方法都有一些问题也属正常。对话越长,上下文关系越紧密,要解决就越困难。
前百度首席科学家Andrew Ng,在最近一次采访中说道:“目前,深度学习的大多数价值都存在于一些可以获取大量数据的狭窄的领域中。比如做一次有意义的对话,他就完成不了。如果你  cherry-pick the conversation, 看起来好像是一次有意义的对话。但是当你亲自进行对话时,就不是那么回事了”。
许多公司都是以外包他们的对话开始的。他们人为地收集对话,还宣称一旦他们收集到足够多的数据,就可以实现自动获取数据。实际上只有在一个相当狭小的领域才有可能实现,比如打车对话。但凡开放一点的领域都会超出我们现在的能力,比如 sales emails。 但是我们依然可以通过修正回答来利用这些系统为人类服务。
要修改生成系统中的语法错误是件高成本的事,同时语法错误还会赶跑用户。这就是为什么大多数系统都选择使用基于搜索的方法,因为这样没有语法错误,也没有进攻性的响应。如果企业能以某种方式获取大量的数据,那么生成模型会变得可行。但是还必须有其他的技术支持,来阻止系统像Microsoft的Tay那样偏离轨道。( http://www.businessinsider.com/microsoft-deletes-racist-genocidal-tweets-from-ai-chatbot-tay-2016-3

下一步
接下来我们会利用深度学习的知识,来了解基于搜索的模型和基于生成的对话模型内部技术细节。如果你对一些研究内容感兴趣,不妨从下面的一些论文开始。

猜你喜欢

转载自blog.csdn.net/sinat_30440627/article/details/72578048