RNN是一种序列模型,所谓的序列模型就是序列中包含信息。

序列模型的严格定义是:输入或输出中包含序列数据的模型叫做序列模型。

其有两大特点:

  1. 输入(输出)元素之间是具有顺序关系,不同的顺序,得到的结果应该是不同的,比如‘不睡觉’和‘睡觉不’这两个短语的意思是不同的。
  2. 输入输出不定长。比如两聊天机器人,聊天的对话长度是不定的。

普通神经网络模型

       在说RNN的模型结果前,我们先看看简单的普通神经网络的结构(该图就是个向量机模型,其是神经网络的积木,神经网络就是由多个向量机搭建的):

使用RNNLM模型实现文本续写代码自然语言 rnn模型结构_github

然后再来看看RNN结构和普通神经网络的区别:

使用RNNLM模型实现文本续写代码自然语言 rnn模型结构_数据_02

        RNN和普通神经网络的区别就是:上一个数据的输出会作为这一个的输入,其和普通神经网络的区别就是在输入层会多N(中间层有几个神经单元,就多几个,比如本图中中间层只有1个神经元,那么它就比普通神经网络在输入层多1个)个。

        还需要注意的是:RNN的输入是一组数据,一般在一组数据中,只有最后一个才有实际数据给到下一层或者作为结果给出。但是如果RNN层的下一层还是RNN结构,那么就需要每一个数据都要输出结果到下一层(在tensorflow中用参数return_sequence控制)。

现在再来看看我们怎样使用Tensorflow搭建一个简单的RNN模型:

首先创建模型(即说明你的神经网络有几层,每一层有几个神经元,神经元见怎样连接):

使用RNNLM模型实现文本续写代码自然语言 rnn模型结构_数据_03

然后我们可以输出模型结构:

使用RNNLM模型实现文本续写代码自然语言 rnn模型结构_深度学习_04

 

 然后编译模型(即说明你以什么作为损失函数,用那种方式来进行优化参数):

使用RNNLM模型实现文本续写代码自然语言 rnn模型结构_数据_05

 然后就是训练模型:

使用RNNLM模型实现文本续写代码自然语言 rnn模型结构_深度学习_06

 

最后就是使用模型进行预测了。