Deep Learning for Chatbots(Introduction)
聊天机器人又被称为会话系统,已经成为一个热门话题,许多公司都在这上面的投入巨大,包括微软,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)的更多相关文章
- 深度学习笔记之关于总结、展望、参考文献和Deep Learning学习资源(五)
不多说,直接上干货! 十.总结与展望 1)Deep learning总结 深度学习是关于自动学习要建模的数据的潜在(隐含)分布的多层(复杂)表达的算法.换句话来说,深度学习算法自动的提取分类需要的低层 ...
- deep learning新征程(二)
deep learning新征程(二) zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2016-4-5 声明 1)该Dee ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料汇总 (上)
转载:http://dataunion.org/8463.html?utm_source=tuicool&utm_medium=referral <Brief History of Ma ...
- Deep Learning in NLP (一)词向量和语言模型
原文转载:http://licstar.net/archives/328 Deep Learning 算法已经在图像和音频领域取得了惊人的成果,但是在 NLP 领域中尚未见到如此激动人心的结果.关于这 ...
- Word2Vec之Deep Learning in NLP (一)词向量和语言模型
转自licstar,真心觉得不错,可惜自己有些东西没有看懂 这篇博客是我看了半年的论文后,自己对 Deep Learning 在 NLP 领域中应用的理解和总结,在此分享.其中必然有局限性,欢迎各种交 ...
- Deep Learning Tutorial 李宏毅(一)深度学习介绍
大纲 深度学习介绍 深度学习训练的技巧 神经网络的变体 展望 深度学习介绍 深度学习介绍 深度学习属于机器学习的一种.介绍深度学习之前,我们先大致了解一下机器学习. 机器学习,拿监督学习为例,其本质上 ...
- Deep Learning 学习笔记(8):自编码器( Autoencoders )
之前的笔记,算不上是 Deep Learning, 只是为理解Deep Learning 而需要学习的基础知识, 从下面开始,我会把我学习UFDL的笔记写出来 #主要是给自己用的,所以其他人不一定看得 ...
- New Machine Learning Server for Deep Learning in Nuke(翻译)
最近一直在开发Orchestra Pipeline System,歇两天翻译点文章换换气.这篇文章是无意间看到的,自己从2015年就开始关注机器学习在视效领域的应用了,也曾利用碎片时间做过一些算法移植 ...
- paper 149:Deep Learning 学习笔记(一)
1. 直接上手篇 台湾李宏毅教授写的,<1天搞懂深度学习> slideshare的链接: http://www.slideshare.net/tw_dsconf/ss-62245351? ...
随机推荐
- 小小知识点(四十一)-based和based on的正确理解
A-based B<等价于>B based on A<等价于>B on the basis of A,翻译为基于A的B For example: (1) Radar-based ...
- C# 数独求解算法。
前言 数独是一种有趣的智力游戏,但是部分高难度数独在求解过程中经常出现大量单元格有多个候选数字可以填入,不得不尝试填写某个数字然后继续推导的方法.不幸的是这种方法经常出现填到一半才发现有单元格无数可填 ...
- C# Post发送 接受Xml
//组合xml内容 StringBuilder strBuilder = new StringBuilder(); var par= @"<xml> <appid>w ...
- SqlServer数据库知识点笔记
1.主键约束: 要对一个列加主键约束的话,这列就必须要满足的条件就是非空 因为主键约束:就是对一个列进行了约束,约束为(非空.不重复) 以下是代码 要对一个列加主键,列名为id,表名为emp 格式 ...
- 小白学Java:包装类
目录 小白学Java:包装类 包装类的继承关系 创建包装类实例 自动装箱与拆箱 自动装箱 自动拆箱 包装类型的比较 "=="比较 equals比较 自动装箱与拆箱引发的弊端 自动装 ...
- 小白学 Python 爬虫(40):爬虫框架 Scrapy 入门基础(七)对接 Selenium 实战
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 如何获取scrimba内部(内联框架)中网页地址?
看图: 将其在新窗口打开 方法一:按下F12 键 (打开 开发者工具) ,再照图中箭头用鼠标点击所示, 图中粗红下划线为该页面的URL 地址, 复制在新窗口打开即可 方法二:利用JS代码手动获取 ...
- 解决el-tree lazy懒加载时,连续勾选前两个子节点后第二次进入默认选中时,将父节点也勾选的问题
在用到el-tree的懒加载和默认勾选功能时,若第一次勾选前几个连续节点,第二次进入默认勾选时,由于el-tree子节点尚未完全加载(只加载出来前几个),默认勾选已经开始(已加载出来的子节点被默认勾选 ...
- 基于mysql的单据号生成(前缀+日期+自增id+后缀)
介绍 本次采用mysql处理,性能不是很好,对于高并发有要求的建议不要采用公司一个小项目,需要生成一个单据号,格式为: 日期 + 每日重新自增号,自己考虑了一下每日自增需要考虑并发和持久问题,两种数据 ...
- Big Event
666DHG的大事记 2019.4.15 \(\text{ }\text{ }\text{ }\)注册洛谷 2019.8.10 \(\text{ }\text{ }\text{ }\)Luogu\(\ ...