RNN循环神经网络学习笔记

本文图片截取自《Tensorflow 实战Google深度学习框架》
参考了Understanding LSTM Networks

注意阅读本文需要先学习了最基本的神经网络知识

以下是正文


在传统的神经网络中模型中,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题是无能为力的。比如,预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。循环神经网络(RNN)指的是一个序列当前的输出与之前的输出也有关。具体的表现形式为网络会对前面的信息进行记忆,保存在网络的内部状态中,并应用于当前输出的计算中,即隐含层之间的节点不再无连接而是有链接的,并且隐含层的输入不仅包含输入层的输出还包含上一时刻隐含层的输出。


RNN其基本结构如图:
RNN循环神经网络学习笔记

先解释一下该图为一个最简单的三层神经网络,即(输入-隐含-输出)结构,其中RNN循环神经网络学习笔记该神经网络的隐含层。

图中RNN循环神经网络学习笔记为隐含层在第t个时间接受到的输入,RNN循环神经网络学习笔记为隐含层在第t个时间得出的输出。可以明显看到RNN循环神经网络学习笔记除了得出输出RNN循环神经网络学习笔记以外,还有一个箭头循环 ,即 在时刻t的计算结果都不仅仅会进行输出,还会将其得到的结果再一次作为其在时刻t+1的输入的一部分
为什么说是一部分呢,因为在时刻t+1除了接受循环传递的上一个时刻的计算结果以外,其还要接受它在第t+1时刻本应该接受的输入Xt+1,上述等式右边将这个循环的过程给展开了,便于理解。即:
RNN循环神经网络学习笔记
很明显
t=0时刻,RNN循环神经网络学习笔记只接受了RNN循环神经网络学习笔记输入,得到了输出RNN循环神经网络学习笔记,并将RNN循环神经网络学习笔记复制了一份作为下一时刻的输入的一部分。

t=1时,RNN循环神经网络学习笔记除了接受 RNN循环神经网络学习笔记作为输入以外,还接受了RNN循环神经网络学习笔记作为输入,将RNN循环神经网络学习笔记RNN循环神经网络学习笔记结合起来作为这一时刻的总输入,得到了输出 RNN循环神经网络学习笔记,同时又将RNN循环神经网络学习笔记复制了一遍,再次将其作为下一时刻输入的一部分。
以此类推。。。。。。。
直到达到了预设的迭代次数为止。


下面用一个计算的例子说明:


RNN循环神经网络学习笔记

t=0时,输入为1,即图中的RNN循环神经网络学习笔记,而此时t=0,显然没有上一时刻的输入,所以设置其为0,即图中的RNN循环神经网络学习笔记,将这两个结合作为总输入,生成了一个1*3的行向量,即图中的RNN循环神经网络学习笔记,而该层的权重为一个3*2的矩阵,即图中的RNN循环神经网络学习笔记,偏置为1*2的行向量,即图中的RNN循环神经网络学习笔记,该层的**函数为tanh,故该时刻该层进行了如下计算:
RNN循环神经网络学习笔记

故该时刻的输出为RNN循环神经网络学习笔记,该输出再经过输出层的计算得到最终的结果,即图中的:RNN循环神经网络学习笔记,然后该层将这一时刻的输出RNN循环神经网络学习笔记传送个下一时刻,即图中的:RNN循环神经网络学习笔记,然后重复这个步骤。直到所有输入序列都遍历完毕。