原文链接:http://www.wildml.com/2016/04/deep-learning-for-chatbots-part-1-introduction/
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)
下一步
接下来我们会利用深度学习的知识,来了解基于搜索的模型和基于生成的对话模型内部技术细节。如果你对一些研究内容感兴趣,不妨从下面的一些论文开始。
  • Neural Responding Machine for Short-Text Conversation (2015-03)
  • A Neural Conversational Model (2015-06)
  • A Neural Network Approach to Context-Sensitive Generation of Conversational Responses (2015-06)
  • The Ubuntu Dialogue Corpus: A Large Dataset for Research in Unstructured Multi-Turn Dialogue Systems (2015-06)
  • Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Models (2015-07)
  • Incorporating Copying Mechanism in Sequence-to-Sequence Learning (2016-03)
  • How NOT To Evaluate Your Dialogue System: An Empirical Study of Unsupervised Evaluation Metrics for Dialogue Response Generation (2016-03)

聊天机器人中的深度学习相关推荐

  1. 聊天机器人中的深度学习技术(引言)

    原文链接:DEEP LEARNING FOR CHATBOTS, PART 1 – INTRODUCTION 译者:刘翔宇  审核:赵屹华 责编:周建丁(zhoujd@csdn.net) 聊天机器人, ...

  2. 【每周NLP论文推荐】 聊天机器人中FAQ相关的论文推荐

    欢迎来到<每周NLP论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 今天推荐FAQ相关的论文,FAQ是聊天机器 ...

  3. 聊天机器人中对话模板的高效匹配方法

    /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林,黄通文,薛会萍 尽管深度学习目前在研发聊天机器人方面进行的如火如荼,但是这些技术距离真正实用还有不短的 ...

  4. 基于Python+百度语音的智能语音ChatGPT聊天机器人(机器学习+深度学习+语义识别)含全部工程源码 适合个人二次开发

    目录 前言 总体设计 系统整体结构图 系统流程图 运行环境 Python 环境 Pycharm 环境 ChatterBot 环境 模块实现 1. 模型构建 2. 服务器端 3. 客户端 4. 语音录入 ...

  5. 聊天机器人中的 A/B 测试

    原文作者:Oksana Oboishchyk 原文链接:A/B 测试在 Chatbots 编译:一熊翻译组 Mason 目前,没有太多的工具和平台为聊天机器人提供 A/B 测试.但是,A/B 测试是在 ...

  6. 推荐给没有机器的小伙伴------深度学习云平台Floydhub

    #第一篇博客文档# 公司的机器还没有来 Floydhub是一个简单易用的深度学习云平台,支持jupyter notebook, 非常的简单好用.而且有免费的20小时,之后每小时GPU大约0.6美元,C ...

  7. 个人中端深度学习工作站配置(硬件系统篇)

    0.前言 由于人工智能专业的特殊需要,导致了拥有一台好的服务器就可以更顺畅的完成学业任务,加之半年的封校时间导致我半年没有进学校,访问学校的服务器也需要和一众人员去抢资源,非常的不方便.所以,在家里配 ...

  8. fastText、TextCNN、TextRNN……这里有一套NLP文本分类深度学习方法库供你选择 作者:机器人圈 / 微信号:ROBO_AI发表时间 :2017-07-28 图:pixabay

    fastText.TextCNN.TextRNN--这里有一套NLP文本分类深度学习方法库供你选择 「机器人圈」编译:嗯~阿童木呀.多啦A亮 这个库的目的是探索用深度学习进行NLP文本分类的方法. 它 ...

  9. 11步,教你创建深度学习聊天机器人

    全文共4687字,预计学习时长9分钟 创建一款聊天机器人时,目标应该是令其仅需最少的人类干预甚至无需人类干预.这一目标可通过两种方法实现. 第一种方法是,客服团队接收来自人工智能的建议,以改进客户服务 ...

最新文章

  1. PacBio But Not Illumina Technology Can Achieve Fast, Accurate and Complete Closure of the High GC, C
  2. 《认知突围》做复杂时代的明白人,读书分享
  3. Tablecontrol动态序号实现
  4. MySQL利用UDF执行命令
  5. mybatis入门(三)之Mapper XML 文件
  6. 【英语学习】【WOTD】despot 释义/词源/示例
  7. linux redis 安装部署,Linux Redis安装部署
  8. json最大长度限制_MongoDB参数限制和阀值
  9. 七牛云存储基于时间戳防盗链算法参考实现
  10. 装上WPS后导入Excel 的代码出错
  11. 继电保护原理4-自动重合闸
  12. linux root邮箱地址,Linux中自动送给root的mail可以发给互联网上的emai? 爱问知识人...
  13. 【Android -- 写作工具】Markdown 脚注尾注
  14. 运动斗士终南山的不老之道
  15. Best practices for a new Go developer
  16. 浅谈人脸识别在公共安全领域的应用
  17. gitee搭建个人博客教程
  18. 笔记本电脑F1~F12区不能用问题,输入模式问题
  19. 证明:如果向量组A可由向量组B线性表示,那么A的秩小于等于B的秩
  20. kafka-topics.sh java.rmi.server.ExportException: Port already in use: 5555

热门文章

  1. JavaScript百炼成仙 后续章节
  2. 构建开发环境 构建demo_构建自己的wotsapp第6部分
  3. java腾讯地图根据经纬度获取具体位置
  4. 一行代码得到全学科的北大核心期刊投稿方式
  5. 游戏开发中的全栈开发者
  6. 由七芒星引出来的——关于142857
  7. Linux FFmpeg依赖库编译
  8. BADI OVERVIEW
  9. 如何办理股票开户手续
  10. 思岚科技机器人避障方案解读