您的位置:首页 > 理论基础 > 计算机网络

基于循环神经网络(RNN)的端到端(end-to-end)对话系统

2016-04-06 19:48 281 查看
注:本篇博客主要内容来自: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: