聊天机器人又被称为会话系统,已经成为一个热门话题,许多公司都在这上面的投入巨大,包括微软,Facebook,苹果(Siri),Google,微信,Slack。许多创业公司尝试通过多种方式来改变与消费者服务方式。许多公司希望开发对话机器人能够自然地和人进行交流,并且为了实现这个目标,很多公司声称使用了自然语言处理(NLP)和深度学习技术。但是很多时候对AI的夸大宣传,让人民很难分清事实和美好的想象。
接下来的是回顾在会话系统中使用的深度学习技术,了解现在的进展情况,哪些在近期是可能的,哪些是不可能的。这篇文章相当于一个回话系统的入门。

模型

基于检索模型的和生成模型

基于检索的模型相对容易,这类方法是针对输入语句通过一些启发式算法,在预先构建的知识库或预先收集的预料库中找出最好的回答语句。 启发式算法可以是简单的基于规则的表达式匹配,也可以是复杂的机器学习分类器的集成。这些系统并不生成新的文本,仅仅是已知的文本集合中选择一个最为合适的文本作为回答。
生成模型相对复杂,它能够通过已有的语料生成新文本作为回答。生成模型通常基于机器翻译技术,但是它不是把一种语言翻译成另一种语言,而是把输入文本“翻译”成输出文本(回答)。

这两种方法都有一些明显的优点和缺点。基于检索的方法的回答不会出现语法错误,但是不能处理语料库中没有的或者没有预定义的模式。同样,基于检索的方法不能识别上下文关系,例如上文出现的名字。生成模型就更加的“聪明”,它能识别上下文的信息,就好像你在和一个人在对话。但是生成模型非常难以训练,而且可能会出现一些语法错误(尤其是长一些的句子),更重要的是生成模型需要大量的训练数据。
无论是基于检索的模型还是生成模型,都能够把深度学习技术用在其中,但是好像研究人员更加倾向于生成模型。深度学习的结构(例如:seq2seq非常适合用在生成文本方面,因此研究者希望在这个领域能够取得飞速的进展。然而,我们对于建立能够工作的很好的生成模型来说,我们还处在早期的阶段,目前在实际应用中更可能使用的还是基于检索的模型。

长对话和短对话

越长的对话越难处理。短对话的目的是对单个输入文本返回单个回答。例如,你可能从用户收到一个明确的问题然后给其一个合适的回答。长对话中你需要对多个问题进行考虑,并且将已经说过的内容记录下来。客户支持对话就是典型的有多个问题的长对话场景。

开放性和封闭性

开放性领域中用户可能关于任何问题进行对话,此时设置定义明确的目标和目的是没必要的。Twitter和Reddit这种社交媒体网站上的对话就是开放性的,它们能够被延伸到各种方向。无限数量的话题,以及需要一定数量的世界知识来得到合理的回答让开放性问题变得困难。
封闭性领域中,为了实现一个明确的目标,输入空间和输出空间是有限制的。封闭领域的例子有客户技术支持和购物助理。这些系统不需要谈论有关政治的话题,他们只需要尽可能高效的专注在特定的任务中。

共同的挑战

在构建会话系统时,有一些明显的和不明显的挑战,其中大部分都是活跃的研究领域。

结合上下文

为了建立良好的会话系统,需要兼顾到语义和语境。在长对话中,随着语境的改变,一些词语的含义可能也会发生改变。通常使用embedding技术将对话映射到一个向量,但是如何在长对话中使用embedding还是一个挑战,论文Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Models和论文Attention with Intention for a Neural Network Conversation Model这在朝这个方向努力。当然其他的上下文信息例如时间,地点,用户的信息也是需要的。

连贯的人格

在生成回答的时候应该对语义一致的输入得到相同的回答。例如,对“你几岁了?”和“你的年龄是多少?”这两个问题的回答是简单的。但是如何在回答中加入个性却是一个研究的问题。许多系统学习生成语言的合理响应,但它们并没有经过训练来生成语义一致的响应。通常这是因为他们接受了来自多个不同用户的大量数据的培训。A Persona-Based Neural Conversation Model论文中的模型正在向明确建模一个人格的方向迈进。

模型的评估

评估一个会话系统的理想方法是衡量它是否完成了它的任务,例如,在会话中解决了用户支持方面的问题。但是,由于需要人工判断和评估,获得数据的标签的花费是昂贵的。在论文How NOT To Evaluate Your Dialogue System: An Empirical Study of Unsupervised Evaluation Metrics for Dialogue Response Generation中发现没有常用的指标和人类的判断是一致的。

意图和多样性

生成模型中的一个常见问题是对许多问题都倾向于返回“这很好”或者“我不知道”。Google Smart Reply的早期版本几乎对所有问题都回复“我爱你”。一些研究人员试图通过多种目标函数人为地促进多样性,然而,人们通常对特定的输入进行响应,并带有一个意图。由于生成模型(尤其是开放性领域)并没有被训练成有特定的意图,它们缺乏这种多样性。

会话系统表现到底怎样?

说了这么多,到底目前对话系统的表现怎样?基于检索的开放性领域对话系统显然是不可能的,因为不可能将所有情况交给人工来处理。基于生成模型的开放性领域的会话系统是一个强人工智能问题,我们距离实现这一目标还很远(但是很多研究都在朝这个方向努力)。
剩下的就是封闭性领域的问题,使用基于检索的和基于生成模型的都是能够处理的,只不过会话越长,上下文信息越重要,这个问题就变得越困难。

许多公司开始将他们的谈话外包给人力工作者,并承诺一旦他们收集了足够的数据,他们就可以“自动化”。这可能只会发生在一个非常狭窄的领域:比如在Uber的聊天界面。任何更开放的领域(比如销售电子邮件)都是我们目前无法做到的。然而,我们也可以利用这些系统来帮助人类的工作人员,这可能是更为可行的。

Reading List

  • Neural Responding Machine for Short-Text Conversation
  • A Neural Conversational Model
  • A Neural Network Approach to Context-Sensitive Generation of Conversational Responses
  • The Ubuntu Dialogue Corpus: A Large Dataset for Research in Unstructured Multi-Turn Dialogue Systems
  • Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Models
  • A Diversity-Promoting Objective Function for Neural Conversation Models
  • Attention with Intention for a Neural Network Conversation Model
  • Improved Deep Learning Baselines for Ubuntu Corpus Dialogs
  • A Survey of Available Corpora for Building Data-Driven Dialogue Systems
  • Incorporating Copying Mechanism in Sequence-to-Sequence Learning
  • A Persona-Based Neural Conversation Model
  • How NOT To Evaluate Your Dialogue System: An Empirical Study of Unsupervised Evaluation Metrics for Dialogue Response Generation

原文

Deep Learning for Chatbots(Introduction)的更多相关文章

  1. 深度学习笔记之关于总结、展望、参考文献和Deep Learning学习资源(五)

    不多说,直接上干货! 十.总结与展望 1)Deep learning总结 深度学习是关于自动学习要建模的数据的潜在(隐含)分布的多层(复杂)表达的算法.换句话来说,深度学习算法自动的提取分类需要的低层 ...

  2. deep learning新征程(二)

    deep learning新征程(二) zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan  2016-4-5   声明 1)该Dee ...

  3. 机器学习(Machine Learning)&深度学习(Deep Learning)资料汇总 (上)

    转载:http://dataunion.org/8463.html?utm_source=tuicool&utm_medium=referral <Brief History of Ma ...

  4. Deep Learning in NLP (一)词向量和语言模型

    原文转载:http://licstar.net/archives/328 Deep Learning 算法已经在图像和音频领域取得了惊人的成果,但是在 NLP 领域中尚未见到如此激动人心的结果.关于这 ...

  5. Word2Vec之Deep Learning in NLP (一)词向量和语言模型

    转自licstar,真心觉得不错,可惜自己有些东西没有看懂 这篇博客是我看了半年的论文后,自己对 Deep Learning 在 NLP 领域中应用的理解和总结,在此分享.其中必然有局限性,欢迎各种交 ...

  6. Deep Learning Tutorial 李宏毅(一)深度学习介绍

    大纲 深度学习介绍 深度学习训练的技巧 神经网络的变体 展望 深度学习介绍 深度学习介绍 深度学习属于机器学习的一种.介绍深度学习之前,我们先大致了解一下机器学习. 机器学习,拿监督学习为例,其本质上 ...

  7. Deep Learning 学习笔记(8):自编码器( Autoencoders )

    之前的笔记,算不上是 Deep Learning, 只是为理解Deep Learning 而需要学习的基础知识, 从下面开始,我会把我学习UFDL的笔记写出来 #主要是给自己用的,所以其他人不一定看得 ...

  8. New Machine Learning Server for Deep Learning in Nuke(翻译)

    最近一直在开发Orchestra Pipeline System,歇两天翻译点文章换换气.这篇文章是无意间看到的,自己从2015年就开始关注机器学习在视效领域的应用了,也曾利用碎片时间做过一些算法移植 ...

  9. paper 149:Deep Learning 学习笔记(一)

     1. 直接上手篇 台湾李宏毅教授写的,<1天搞懂深度学习> slideshare的链接: http://www.slideshare.net/tw_dsconf/ss-62245351? ...

随机推荐

  1. 1059 C语言竞赛 (20 分)C语言

    C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份"神秘大奖"(比如很巨大的一本学生研究论文集--). 1 ...

  2. golang编译之vendor机制

    Go 1.5引入了vendor 机制,但是需要手动设置环境变量 GO15VENDOREXPERIMENT= 1,Go编译器才能启用.从Go1.6起,,默认开启 vendor 目录查找,vendor 机 ...

  3. SpringBoot 2.1.6 启动原理解析(一)

    小白第一次写博客,如果有不足之处烦请各位大佬指正. 用了好久的SpringBoot了,一直不清楚它内部的一些启动原理,如何加载yml文件.如何初始化bean的,今天就记录一下,新建了一个springb ...

  4. Spring Boot2.X整合消息中间件RabbitMQ原理简浅探析

    目录 1.简单概述RabbitMQ重要作用 2.简单概述RabbitMQ重要概念 3.Spring Boot整合RabbitMQ 前言 RabbitMQ是一个消息队列,主要是用来实现应用程序的异步和解 ...

  5. BZOJ 2038: [2009国家集训队]小Z的袜子 (莫队)

    题目传送门:小Z的袜子 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… ...

  6. 【转】最简单的安装pip的方法

    网上有各种方法安装pip,针对不同的系统方法还不一样,最后发现还是下面这种方法最简单,直接了当干脆方便,适用于Windows和Linux. (1)下载pip 进入https://pypi.python ...

  7. CentOS7设置静态IP以及windows下ping不通虚拟机、虚拟机ping不通外网解决方案

    问题:CentOS7安装完成后默认使用的是动态IP,当你每次重新启动CentOS7后,它的IP地址都不一样.一般我们都是使用远程连接工具连接CentOS7进行操作,如果每次IP都不一样,系统启动后,每 ...

  8. Android学习进度一

    在解决了电脑产生的一系列问题之后成功安装了Android Studio,并在其自带的手机模拟器上成功运行了第一个App(Hello World!),通过这个最简单的App研究了App基本的工程结构,为 ...

  9. 如何应用threejs实现立方体每个面用图片替换

    var geometry = new THREE.BoxGeometry(200, 200, 200);var materialsbg = []; for (var i = 0; i < geo ...

  10. 小程序中的pick

    picker:从底部弹起的滚动选择器. 属性:model  string类型  说明:选择器类型 : selector  普通选择器 multiSelector   多列选择器 time   时间选择 ...