RNN循环神经网络学习笔记

来源:互联网 发布:淘宝被骗报警有用吗 编辑:程序博客网 时间:2024/06/15 20:23

RNN循环神经网络学习笔记

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

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

以下是正文


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


RNN其基本结构如图:

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

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

t=1时,隐含层除了接受 X1作为输入以外,还接受了h0作为输入,将X1h0结合起来作为这一时刻的总输入,得到了输出 h1,同时又将h1复制了一遍,再次将其作为下一时刻输入的一部分。
以此类推。。。。。。。
直到达到了预设的迭代次数为止。


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


计算

t=0时,输入为1,即图中的这里写图片描述,而此时t=0,显然没有上一时刻的输入,所以设置其为0,即图中的这里写图片描述,将这两个结合作为总输入,生成了一个1*3的行向量,即图中的这里写图片描述,而该层的权重为一个3*2的矩阵,即图中的这里写图片描述,偏置为1*2的行向量,即图中的这里写图片描述,该层的激活函数为tanh,故该时刻该层进行了如下计算:
这里写图片描述

故该时刻的输出为这里写图片描述,该输出再经过输出层的计算得到最终的结果,即图中的:这里写图片描述,然后该层将这一时刻的输出这里写图片描述传送个下一时刻,即图中的:这里写图片描述,然后重复这个步骤。直到所有输入序列都遍历完毕。

原创粉丝点击