使用 Encoder-Decoder 框架实现基于深度学习的聊天机器人

2018 年 6 月 19 日 开源中国


聊天机器人(chatbot)是目前非常热的一个人工智能研发与产品方向。很多大的互联网公司重金投入研发相关技术,并陆续推出了相关产品,比如苹果Siri、微软Cortana与小冰、Google Now等。 聊天机器人很可能成为未来移动端 APP 应用及可穿戴设备场景下提供各种服务的服务入口。


对于聊天机器人技术而言,常见的几种主流技术主要基于人工模板、检索、机器翻译技术、深度学习。其中,基于深度学习聊天机器人的绝大多数技术都是在 Encoder-Decoder 深度学习技术框架下进行改进的。


Encoder-Decoder 框架


Encoder-Decoder 框架可以看作是一种文本处理领域的研究模式,应用场景异常广泛,不仅仅可以用在对话机器人领域,还可以应用在机器翻译、文本摘要、句法分析等各种场合。下图是文本处理领域里常用的 Encoder-Decoder 框架最抽象的一种表示:


抽象的Encoder-Decoder框架


Encoder-Decoder 框架可以如此直观地去理解:可以把它看作适合处理由一个句子(或篇章)生成另外一个句子(或篇章)的通用处理模型。对于句子对 <X,Y>,我们的目标是给定输入句子 X,期待通过 Encoder-Decoder 框架来生成目标句子 Y。X 和 Y 可以是同一种语言,也可以是两种不同的语言。而 X 和 Y 分别由各自的单词序列构成:


   

Encoder 顾名思义就是对输入句子 X 进行编码,将输入句子通过非线性变换转化为中间语义表示 C:


 


对于解码器 Decoder 来说,其任务是根据句子 X 的中间语义表示 C 和之前已经生成的历史信息来生成i时刻要生成的单词 yi:


 


每个 yi 都依次这么产生,那么看起来就是整个系统根据输入句子 X 生成了目标句子 Y。


对于聊天机器人来说,完全可以使用上述的 Encoder-Decoder 框架来解决技术问题。具体而言,对应的<X,Y>中,X 指的是用户输入语句,一般称作 Message,而 Y 一般指的是聊天机器人的应答语句,一般称作 Response。其含义是当用户输入 Message 后,经过 Encoder-Decoder 框架计算,首先由 Encoder 对 Message 进行语义编码,形成中间语义表示 C,Decoder 根据中间语义表示 C 生成了聊天机器人的应答 Response。这样,用户反复输入不同的 Message,聊天机器人每次都形成新的应答 Response,形成了一个实际的对话系统。


在实际实现聊天系统的时候,一般 Encoder 和 Decoder 都采用 RNN 模型,RNN 模型对于文本这种线性序列来说是最常用的深度学习模型,RNN 的改进模型 LSTM 以及 GRU 模型也是经常使用的模型,对于句子比较长的情形,LSTM 和 GRU 模型效果要明显优于 RNN 模型。尽管如此,当句子长度超过 30 以后,LSTM 模型的效果会急剧下降,一般此时会引入 Attention 模型,这是一种体现输出 Y 和输入 X 句子单词之间对齐概率的神经网络模型,对于长句子来说能够明显提升系统效果。


使用 Encoder-Decoder 模型来建立对话机器人的一般做法是:采用收集 Twitter 或者微博中评论里的聊天信息来作为训练数据,用大量的此类聊天信息来训练 Encoder-Decoder 模型中 RNN对应的神经网络连接参数。下图展示了利用微博评论对话数据训练好的聊天机器人的聊天效果,其中 Post 列指的是用户输入 Message,其后三列是不同 Encoder-Decoder 方法产生的应答 Response,而最后一列是基于传统检索方法的输出应答。


聊天机器人聊天效果示例


以上只是对 Encoder-Decoder 框架技术原理进行简单描述,聊天机器人的开发还需要考虑各种实际问题及其对应的解决方案,采用深度学习来进行聊天机器人的技术研发仍处于非常初期的阶段。


本次南京源创会,我们特别邀请了容联易通技术专家——王凯,为我们分享任务型对话机器人的实现方案,并结合一个实际案例,介绍如何利用可视化编辑工具,简便的创建一个任务型对话机器人并集成到自己的业务系统或产品中。


除此之外,我们 2018 年 6 月 23 日(周六)的南京源创会 —— 人工智能专场还邀请了:从事视频 AI 服务、云剪辑等研发工作的阿里云视频服务技术专家——邹娟、专注 GPU 开发和人工智能技术的 NVIDIA 开发者社区经理——何琨、华为开源软件能力中心AI领域开源研究员——孟繁亮、thinkphp 框架核心开发者之一、珺馨机器人集团 CTO——罗飞,五位行业大牛齐聚,以人工智能为核心,与你一起分享 AI 应用、基础设施、及行业经验,进行一场关于面对面的技术对话。


扫码报名,与业内大咖和更多小伙伴当面交流。




注:以上内容有引用和参考 [张俊林 :使用深度学习打造智能聊天机器人]

https://blog.csdn.net/malefactor/article/details/51901115



推荐阅读

遭微软放弃,Windows 7 终究活成了 XP 的样子

用 Python 分析4W场球赛,2018 世界杯冠军竟是......

从 Java 到 Kotlin,再从 Kotlin 回归 Java

“王者对战”之 MySQL 8 vs PostgreSQL 10

C++ 协程的近况、设计与实现中的细节和决策

点击“阅读原文”查看更多精彩内容

登录查看更多
4

相关内容

【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
28+阅读 · 2020年3月5日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
一网打尽!100+深度学习模型TensorFlow与Pytorch代码实现集合
[综述]基于深度学习的开放领域对话系统研究综述
专知会员服务
78+阅读 · 2019年10月12日
深度学习的下一步:Transformer和注意力机制
云头条
56+阅读 · 2019年9月14日
“马踏飞”AI机器人实现方案介绍
PaperWeekly
5+阅读 · 2019年8月31日
赛尔笔记 | BiLSTM介绍及代码实现
哈工大SCIR
23+阅读 · 2018年10月24日
基于TensorFlow的深度学习实战
七月在线实验室
9+阅读 · 2018年4月25日
从 Encoder 到 Decoder 实现 Seq2Seq 模型
AI研习社
10+阅读 · 2018年2月10日
深度学习中的注意力机制
人工智能头条
16+阅读 · 2017年11月2日
在深度学习TensorFlow 框架上使用 LSTM 进行情感分析
北京思腾合力科技有限公司
4+阅读 · 2017年8月9日
从Encoder到Decoder实现Seq2Seq模型(算法+代码)
量化投资与机器学习
8+阅读 · 2017年7月9日
A Survey on Deep Learning for Named Entity Recognition
Arxiv
25+阅读 · 2020年3月13日
Arxiv
4+阅读 · 2019年9月26日
Arxiv
21+阅读 · 2018年5月23日
Arxiv
6+阅读 · 2018年4月3日
VIP会员
相关资讯
深度学习的下一步:Transformer和注意力机制
云头条
56+阅读 · 2019年9月14日
“马踏飞”AI机器人实现方案介绍
PaperWeekly
5+阅读 · 2019年8月31日
赛尔笔记 | BiLSTM介绍及代码实现
哈工大SCIR
23+阅读 · 2018年10月24日
基于TensorFlow的深度学习实战
七月在线实验室
9+阅读 · 2018年4月25日
从 Encoder 到 Decoder 实现 Seq2Seq 模型
AI研习社
10+阅读 · 2018年2月10日
深度学习中的注意力机制
人工智能头条
16+阅读 · 2017年11月2日
在深度学习TensorFlow 框架上使用 LSTM 进行情感分析
北京思腾合力科技有限公司
4+阅读 · 2017年8月9日
从Encoder到Decoder实现Seq2Seq模型(算法+代码)
量化投资与机器学习
8+阅读 · 2017年7月9日
Top
微信扫码咨询专知VIP会员