基于循环神经网络(RNN)的端到端(end-to-end)对话系统
来源:互联网 发布:知乎炒作 编辑:程序博客网 时间:2024/06/05 04:31
注:本篇博客主要内容来自:A Neural Conversational Model,这篇论文。
http://blog.csdn.net/linmingan/article/details/51077837
与传统的基于数据库匹配的对话\翻译系统不一样的是。基于RNN的end-to-end方法的对话\翻译系统,不仅不需要拥有庞大的数据库支持。而且该方法的对话\翻译结果有时候往往更具有创造性,不会那么死板。
本文主要介绍一下基于RNN的对话系统的基本过程,关于RNN的知识这里不做介绍。因为翻译系统与对话系统都是序列到序列,只是翻译系统的输出语音不一样,所以基于RNN的翻译系统原理上与对话系统相差无几。
基于RNN的对话系统由两个部分构成,分别为编码和解码器。编码器的作用是对一句输入语句进行编码,使得对话系统能够理解这句话的意思。而解码器是利用编码器输出的编码输出对话句子。编码器和解码器由两个RNN模型构成,编码器没有输出层,只有输入和隐藏层。而解码器有输出层。基于RNN的对话系统结构图如下:
系统结构图解读:图中用户的输入为ABC(A,B,C可以看做三个不同词),对话系统的输出为WXYZ。编码器:左边没有输出的RNN是一个编码器,该编码器按照句子中单词出现的顺序进行编码,前一个词的隐藏层信息反馈给当前词的隐藏信息。当遇到输入句子的结束符eos时,整个句子的编码就完成了,也就是RNN的隐藏层信息作为该句子的编码。解码器:右边带有输出层的为解码器,解码器每次只产生一个词;而产生的这个词会作为解码器的输入,同时上一时刻的隐藏层信息会反馈给当前时刻的隐藏,然后继续输出一个词,直到输出句子结束符eos为止。解码器的输入层的初始输入为eos,隐藏层的初始输入为编码器对输入句子的编码结果(也就是隐藏层信息)。
编码器和解码器的具体设置:
输入节点数:词典中的单词个数v
隐藏层:自己设置,但是编码器和解码器的隐藏层个数必须一样。
解码器输出层节点数:词典中的单词个数v
输入和输出特征:该篇论文只是采用简单的one-hot形式,即一个v大小的向量中只有一个点为1,其他的都为0。(也可以用词向量作为输入)
训练问题:属于有监督训练。
对于对话系统的参数更新过程中,首先更新解码器的权值,然后直接将解码器中隐藏层和输入层的权值复制到编码器。能这样做的主要原因是,对话系统的语言系统是相同的。而翻译系统语言系统不一样,所以不能这么做。
这是利用RNN实现对话系统中,最简单的例子。华为诺亚方舟实验室用了一个比较复杂的RNN对话设置,详见论文:Neural Responding Machine for Short-Text Conversation
- 基于循环神经网络(RNN)的端到端(end-to-end)对话系统
- 神经网络end to end的意思
- 什么是end-to-end神经网络?
- 什么是end-to-end神经网络?
- 神经网络中end-to-end training和end-to-end models的区别
- 循环神经网络(RNN)
- 循环神经网络(RNN)
- 循环神经网络(RNN)
- RNN(循环神经网络)
- 循环神经网络(RNN)介绍
- 从机器学习算法的发展 理解 端到端(end to end)学习
- 深度神经网络(DNN)、卷积神经网络(CNN)、循环神经网络(RNN)(神经网络的基础知识)
- 基于循环神经网络实现基于字符的语言模型(char-level RNN Language Model)-tensorflow实现
- 循环神经网络(一般RNN)推导
- 递归(循环)神经网络(RNN)简介
- 【深度学习】RNN(循环神经网络)
- Keras RNN循环神经网络(四)
- 4 什么是循环神经网络(RNN)?
- Ubuntu Install ATOM
- (第13讲)快速排序
- Caffe学习系列(19): 绘制loss和accuracy曲线
- mysql max_allowed_packet 查询和修改
- Caffe学习系列(20):用训练好的caffemodel来进行分类
- 基于循环神经网络(RNN)的端到端(end-to-end)对话系统
- Android基础之Json简单解析
- task_struct与进程关系
- Python学习笔记(三)
- IPB帧编码顺序(解码顺序)与显示顺序
- 搭建e(fx)clipse-JavaFX E4 RCP平台
- 如何正确的关闭Android Dialog的标题栏
- 设计模式之单例模式
- POJ 2524-Ubiquitous Religions(入门并查集)