前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >keras教程:手把手教你做聊天机器人(下)—— 快速搭建seq2seq模型

keras教程:手把手教你做聊天机器人(下)—— 快速搭建seq2seq模型

作者头像
AI传送门
发布于 2018-06-21 08:00:24
发布于 2018-06-21 08:00:24
2.3K1
举报
文章被收录于专栏:AI传送门AI传送门

上一期,我们介绍了让一台机器人开口讲话,需要下面3个步骤:

1. 准备对话数据

2. 搭建seq2seq模型

3. 训练模型,并预测聊天效果

并且,使用“字典”和“语料”,我们已经完成了第1步准备的工作。

感兴趣的同学,可以戳这里:《 keras教程:手把手教你做聊天机器人(上) 》

这一期,我们来构建机器人最核心的部分:seq2seq模型

下面,我们就开始啦~~


如果我问你:“今天的心情如何?”

你会如何回答我?

“好”? “不好”? “还不错”? ……

不管哪种答案,在回应之前,你的脑海里,都会不经意间闪现这样几个片段:

听到问题 - 理解问题 - 组织语言 - 回答问题

让我们来具体看一看:

首先,你的听觉系统会捕捉到我的问题。

接下来,你的大脑开始快速运算,试图理解问题。

然后,开始组织语言,寻找合适的措辞,以便能准确表达自己的感受。

最后,你选择了一个最为满意的答案,回答了我刚刚的提问。

大脑就是这样,一步一步引导我们说出答案。

同样的,让一台计算机“学会聊天”,也需要经历4步。

只不过,我们使用更为专业的词汇来描述:

输入问句 - 编码 - 解码 - 输出答句

如下图:

此处,“输入问题 - 编码 - 解码 - 输出答句”就构成了一套完整的seq2seq模型

如果抛开晦涩的专业术语,可以简单地理解为:

“编码”—— 计算机在尝试“读懂”你;

“解码”—— 计算机在努力“表达”它自己。

下面,我们将逐一剖析各个环节。

假设仍以该对话为例:

第1环节 —— 输入问句

仿照我们人类的对话过程:

如果,我想让你回答我的问题,首先,我得先让你听到我的讲话。

那么,如何让计算机也“听到”我们的提问呢?

如果以“ 绿色圆圈

”代表汉字,在seq2seq中,问句可以被直观地描绘为:

是不是很简单?

进一步地,如果我们用3个数字来代表一个汉字,

例如:

那么,输入问句的形态将为:

需要注意的是,如果你对“由数字构成的汉字”并不了解,建议回顾上节课的内容:《 keras教程:手把手教你做聊天机器人(上) 》,里面有一个非常重要的概念——词向量,需要你掌握。

此处,只需要记住上图的形态,就可以了。

第2环节 —— 编码

在我们回答同伴的问题之前,一定会先搞明白对方说了什么。

同样的,计算机在输出答句之前,也会先“搞清楚”人类到底问了什么。

编码”过程,实际上就是算法探求问句含义的过程

图中:

绿色圆圈

代表输入的文字;

橘色圆圈

代表输出的问句含义;

灰色方块

代表一套RNN或LSTM算法。

这里又涉及到另外一个概念——RNN。

之前,我们用了3篇文章,详细阐述了RNN的适用范围、运行原理,以及它的变体-LSTM的运行机制。

未学习的同学,可以翻阅RNN系列教程:

《股票预测,自动翻译,你想要的它都能做——RNN算法探索之旅(1)》

《股票预测,自动翻译,你想要的它都能做——RNN算法探索之旅(2)》

《股票预测,自动翻译,你想要的它都能做——RNN算法探索之旅(3)》

在这里,你仅需要记住编码的结构,见下图。这个结构,在后面编写代码时,会用得上。

第3环节 —— 解码

当我们理解了同伴提出的问题后,大脑就开始高速运转……

我们可能会不断地组织语言,寻找着最佳措辞,以便能更准确地表达自己内心的感受。

模型的“解码”过程,也是计算机学习“表达”自己的过程。

在这个过程中,算法会根据问句的含义,来推测较为妥帖的回答:

将“编码”和“解码”衔接到一起:

可以看到,算法在努力寻找答句中的最佳措辞:

“哪个汉字,能作为答句中的第1个汉字?

哪个汉字,能作为答句中的第2个汉字?

……”

一旦该工作完成,我们就能得到来自计算机的回应:

读到这里,希望你对模型的结构,已经有了大体的了解。

在keras中,使用4行代码就可以搞定上图:

● 第1行:model = Sequential()

相当于搭建一个空容器

我们会向容器添加“网络层”。

如果暂不考虑“输入问句”和“输出答句”,之前我们构建的模型,一共含有3层(如蓝色箭头所示):

第1层和第3层,均采用的是 RNN(或LSTM)算法:

第2层的“橘色圆圈

”,含有问句的含义,因为要传递给下一层使用,所以,在此处我们将其进行复制(如图中橘色箭头所示):

将3层网络写成代码,即为:

补充完整每一层代码:

第1层

这里涉及一个概念——“词向量维数”。

在开篇我们提到,每个汉字由若干个数字组成:

以第1个汉字“心”为例,它由数字[ 0.063, 0.028, -0.121 ]构成。

因而,它的形态可以被精确地表述为:

这里的小圆圈个数,即为“词向量维数”。

代码中有这样一句: input_shape=(句子中的汉字个数, 词向量维数

在我们的例子中:

汉字的个数 = 4

词向量维数 = 3

因而, input_shape = (4, 3)

实际上,除了汉字外,模型第1、2、3层的内部,均由若干个圆圈(即“神经元”)构成,如下图:

(假设灰色方框中的神经元个数,与词向量维数相等,也为3)

将第1层代码补充完整,即为:

温馨提示:

在代码中,return_sequences 表示“输出的结果是否为序列”。

举个例子:

如果你正在讲话,刚说一半,我就猜出你后面要讲的每一个字:

此时,“对/面/甲/方/的/狂/野”就是一个“序列”。

因为,此时我更关心“你要讲出的每一个字,以及字与字之间的顺序关系”。

相反,如果你正在讲话,等你把话说完,我从中捕捉出大致的意思:

那么,此时的句义--“鸡汤”,类似于一个“标签”,它是作为一个整体而非序列来存在的。

回到我们的例子中,

如果return_sequences = True,那么,模型的形态是这样的:

而如果return_sequences = False,那么,模型的形态就是这样的:

针对编码层,我们更关心问句的含义,而不是输出的具体文字,故 return_sequences的取值为False。

● 第2层网络

RepeatVector表示“对问句的含义,进行复制”:

要复制多少份?

通常情况下,我们会限制一句话的最大长度。比如,一句话不超过15个汉字。这里的15,就是句子的最大长度。

我们需要复制的“份数”,刚好等于这个“句子的最大长度”。

在我们的例子中,假定答句长度为3,那么,在第2层就需要复制3份,即 RepeatVector(3)

温馨提示:

句子的长度,由个人来设定。

● 第3层网络:

第3层与第1层的主要区别在于:return_sequences的取值。

因为,我们要获取答句中的每一个文字,故此处return_sequences的取值为True:

将全部过程整合起来,即为:

至此,seq2seq模型的核心部分,我们就搭建完成了。

剩下的工作仅仅是常规的编译和训练模型,完整代码可以在后台(微信公众号:AI传送门)回复“聊天机器人代码”来获得。

最后,有一点需要特别说明:

本文的模型及案例,已经做了简化处理。

标准的seq2seq模型,形态如下:

可以看到,比文中所描绘的模型结构要更为复杂。作为入门,了解到文中所呈现的结构就可以了。但后期要做深入学习,就需要了解到该模型了。感兴趣的同学,可以在后台(微信公众号:AI传送门)留言给我们,我会根据大家的需求,酌情展开此部分内容。

最后,祝愿每一个人,都能拥有一台属于自己的聊天机器人,分享你的喜悦,解你的忧愁。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI传送门 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
你好作者,AI传送门公众号搜不到了,能分享一下完整代码吗?
你好作者,AI传送门公众号搜不到了,能分享一下完整代码吗?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
keras教程:手把手教你做聊天机器人(上)
本篇教程的目标: 使用keras,快速搭建属于自己的聊天机器人。 好啦,话不多说,第一代机器人,走起~~ ---- 让机器人开口讲话,总共需要三步: 1. 准备对话数据 2. 搭建seq2seq模
AI传送门
2018/06/21
2.1K0
使用深度学习训练聊天机器人与人对话
聊天机器人是“通过听觉或文本方法进行对话的计算机程序”,苹果的Siri, 微软的Cortana, 谷歌助手和亚马逊的Alexa是当下最流行的四种会话代理,它们能帮助你获得出行路线,检查运动项目的得分,给你通讯录里的人打电话并且可能会意外地让你订购一个$170的玩偶屋。 这些产品都有听觉接口,会话代理通过语音信息与你对话。在这篇文章中,我们将更多地关注只采用文本操作的聊天机器人。Facebook一直在大力投资FB Messenger机器人,它允许小型企业和组织创建机器人来提供用户支持和提出问题。聊天机器人已经
AiTechYun
2018/03/02
2.9K0
使用深度学习训练聊天机器人与人对话
构建聊天机器人:检索、seq2seq、RL、SeqGAN
本文将简要介绍聊天机器人的四种构建方法:检索、seq2seq、Reinforcement Learning、seqGAN。 聊天机器人的现状 聊天机器人从应用领域分为: 专业型 通用型 从技术上分为:
用户1147754
2018/01/15
1.3K0
构建聊天机器人:检索、seq2seq、RL、SeqGAN
【NLP-ChatBot】能闲聊的端到端生成型聊天机器人背后都有哪些技术?
我们之前介绍过,按照应用场景的不同,聊天机器人可以分为问答系统,对话系统以及闲聊机器人三类。今天我们就来详细讲一讲其中的生成型闲聊机器人。
用户1508658
2019/11/01
1.9K0
【NLP-ChatBot】能闲聊的端到端生成型聊天机器人背后都有哪些技术?
实战 | 让机器人替你聊天,还不被人看出破绽?来,手把手教你训练一个克隆版的你
编译 | AI科技大本营(rgznai100) 参与 | 史天 聊天机器人到底是什么呢?说白了,就是计算机程序通过听觉或文本方法进行对话。 当今最流行的四个对话机器人是:苹果的Siri、微软Cortana、谷歌助理、亚马逊的Alexa。他们能够帮你查比分、打电话,当然,偶尔他们也会出错。 本文,我们主要会详细介绍聊天机器人在文本方面的运作。 在这篇文章中,我们将看到如何使用深度学习模型训练聊天机器人用我们所希望的方式在社交媒体上进行对话。 意图&深度学习 如何训练一个高水平的聊天机器人呢? 高水平的工作
AI科技大本营
2018/04/27
1.8K0
实战 | 让机器人替你聊天,还不被人看出破绽?来,手把手教你训练一个克隆版的你
TensorFlow 聊天机器人
该文章介绍了如何利用基于Seq2Seq模型进行机器翻译,包括编码器、解码器和注意力机制等方面的实现。同时,文章还提供了训练、预测和评估的代码示例。
MachineLP
2018/01/09
1.1K0
TensorFlow 聊天机器人
【NLP实战】如何基于Tensorflow搭建一个聊天机器人
实战是学习一门技术最好的方式,也是深入了解一门技术唯一的方式。因此,NLP专栏计划推出一个实战专栏,让有兴趣的同学在看文章之余也可以自动动手试一试。
用户1508658
2019/11/06
8220
【NLP实战】如何基于Tensorflow搭建一个聊天机器人
Seq2Seq模型的构建
Seq2Seq是指一般的序列到序列的转换任务,特点是输入序列和输出序列是不对齐的,比如机器翻译、自动文摘等等。
故事尾音
2019/12/16
1.3K0
Seq2Seq模型的构建
聊天机器人实战教程 | PyTorch专栏
在本教程中,我们探索一个好玩有趣的循环的序列到序列(sequence-to-sequence)的模型用例。我们将用Cornell Movie-Dialogs Corpus处的电影剧本来训练一个简单的聊天机器人。
磐创AI
2019/10/09
2.8K1
聊天机器人实战教程 | PyTorch专栏
学习笔记 TF059 :自然语言处理、智能聊天机器人
本文介绍了自然语言处理技术在金融智能客服系统中的应用和实践。通过引入对话智能引擎,将自然语言处理技术应用于客服场景,实现快速、准确地回答客户问题,提升客户体验。同时,利用深度学习技术对大量语料进行训练,使得系统能够更好地理解用户意图和上下文信息,从而提供更准确的服务。
利炳根
2017/11/06
1.8K0
从模型到算法,详解一套AI聊天机器人是如何诞生的
您是否曾经利用 Siri、Alexa 或者 Cortana 以对话方式设置闹钟、呼叫朋友甚至是安排会议日程?相信大多数朋友和我一样,感觉虽然这些方案在日常生活与工作中能够起到一定作用,但仍然很难与之谈论一般性、特别是哲学层面的话题。 通过自然语言与机器交互属于通用型人工智能方案的基本要求之一。这一 AI 研究领域被称为对话系统、口语对话系统或者是聊天机器人。在这类场景下,机器需要能够结合对话背景为用户提供翔实的答案,而且在理想情况下应实现与人类无异的沟通效果。 但在实践当中,最后一项要求往往很难达成。不过
BestSDK
2018/03/01
4.6K0
从模型到算法,详解一套AI聊天机器人是如何诞生的
盘点 | 聊天机器人的发展状况与分类
AI科技评论按:本文作者王海良,呤呤英语开发总监,北京JavaScript/Node.js开发者社区的运营者,曾就职IBM创新中心。本文为系列文章第一篇,由AI科技评论独家首发,转载请联系授权。 目前
AI科技评论
2018/03/09
2.5K0
盘点 | 聊天机器人的发展状况与分类
使聊天机器人具有个性
本文结构: 模型效果 模型的三个模块 模块细节 ---- 今天的论文是 《Assigning Personality/Identity to a Chatting Machine for Coherent Conversation Generation》 https://arxiv.org/pdf/1706.02861.pdf 当我们在和聊天机器人互动时,最开始往往很好奇的就是对方到底是人还是机器人呢,所以会问到一些关于对方身份的问题,这对于机器人能否通过图灵测试还是很重要的问题之一。 这篇论文提前预设好机
杨熹
2018/04/03
7620
使聊天机器人具有个性
用机器学习打造聊天机器人(三) 设计篇
本项目基于chatterbot0.8.7来开发,但不仅于此。让我们先对chatterbot做一个简单的了解。
程序员一一涤生
2019/12/09
1.4K0
用机器学习打造聊天机器人(三) 设计篇
十分钟掌握Keras实现RNN的seq2seq学习
作者 | Francois Chollet 编译 | 雁惊寒 seq2seq是一种把序列从一个域(例如英语中的句子)转换为另一个域中的序列(例如把相同的句子翻译成法语)的模型训练方法。目前有多种方法可以用来处理这个任务,可以使用RNN,也可以使用一维卷积网络。 很多人问这个问题:如何在Keras中实现RNN序列到序列(seq2seq)学习?本文将对此做一个简单的介绍。 什么是seq2seq学习 序列到序列学习(seq2seq)是一种把序列从一个域(例如英语中的句子)转换为另一个域中的序列(例如把相同的句子
用户1737318
2018/06/05
9610
ChatGirl 一个基于 TensorFlow Seq2Seq 模型的聊天机器人
简介 还在开发中,它工作的效果还不好。但是你可以直接训练,并且运行。 包含预处理过的 twitter 英文数据集,训练,运行,工具代码,可以运行但是效果有待提高。 数据集 Twitter 数据集:
磐创AI
2018/04/24
1.5K0
ChatGirl 一个基于 TensorFlow Seq2Seq 模型的聊天机器人
业界 | 竹间智能简仁贤:打破千篇一律的聊天机器人
AI科技评论按:从问答系统开始,聊天机器人已经存在了几十年。但只有在过去三四年内,如何让机器与人流畅自然地对话才成为商业公司尤其是国内互联网公司重金投入的热点。从微软小冰、百度度秘到各个垂直行业成熟的客服机器人,这些聊天机器人形态各异,又不乏共性。 AI科技评论试图在一个系列采访里找到国内典型Chatbot公司形成的原因,以及他们所看见的商业机会。本文是AI科技评论对竹间智能科技CEO简仁贤的采访整理。在创业前,简仁贤是微软亚洲工程院最高级别的负责人之一,其参与和向其汇报的项目包括了Bing亚洲地区的战略与
AI科技评论
2018/03/12
9650
【干货】seq2seq模型实例:用Keras实现机器翻译
【导读】近日,人工智能学者Ravindra Kompella发表一篇博客,介绍了作者实现的基于keras的机器翻译例子。作者通过一个seq2seq编码器-解码器网络实现英语到法语的自动翻译。作者在博文中详细介绍了自己的模型架构和训练数据,并使用代码片段分步骤对训练过程进行讲解。总之,这是一篇比较详尽的机器翻译应用示例教程,如果你有从事机器翻译或seq2seq模型相关的研究,可以详细阅读一下,相信一定对您的工程和理论都有所帮助。专知内容组编辑整理。 Neural Machine Translation——Us
WZEARW
2018/04/12
2.4K0
【干货】seq2seq模型实例:用Keras实现机器翻译
聊天机器人落地及进阶实战 | 公开课速记
近年来,聊天机器人技术及产品得到了快速的发展。聊天机器人作为人工智能技术的杀手级应用,发展得如火如荼,各种智能硬件层出不穷。
AI科技大本营
2019/05/14
1.3K0
聊天机器人落地及进阶实战 | 公开课速记
AI中台——智能聊天机器人平台的架构与应用(分享实录)
导读:随着“中台”战略的提出,目前宜信中台建设在思想理念及架构设计上都已经取得了很多成果。宜信是如何借助中台化的思想打造“AI中台”及相关的智能产品呢?本次直播,宜信科技中心AI中台团队负责人王东老师分享了宜信AI中台的具体实施路径,并重点介绍了AI中台的智能产品——智能聊天机器人平台,包括智能聊天机器人平台的背景理念、设计思想、技术架构和应用场景,该平台能提供什么样的能力,以及它如何快速地支持业务方,提供一种以中台化的思想来建设智能产品的实践思路。
宜信技术学院
2019/08/05
3.9K0
AI中台——智能聊天机器人平台的架构与应用(分享实录)
推荐阅读
相关推荐
keras教程:手把手教你做聊天机器人(上)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文