1.为什么需要RNN
神经网络的模型训练好之后,给定输入的x,通过网络就能得到特定的输出y。既然神网如此强大,为何还需要RNN?
因为它只能处理单个的输入,即前一个输入与后一个输入是独立的,毫无关联的。但某些任务需要处理序列信息,如
在理解一句话的意思时,孤立去理解每个词的意思是不够的,需要处理这些词拼接出的整个序列的意思;在处理一个视频时,也不能单独去分析每一帧,要分析这些帧连接起来的整个序列
为了解决一些词性标注、机器翻译等问题,更好地处理序列信息,RNN就诞生了。
2.RNN结构
一个简单的循环神经网络如图,由输入层,隐藏层和输出层组成。
如果去掉右边带有w的部分,就变成了最简单的全连接神经网络。
x是一个向量,代表输入层的值。
s是一个向量,代表隐藏层的值(可以想象该层有多个节点,节点的数量与s的维度相同)
u是输入层到隐藏层的权重矩阵,v是隐藏层到输出层的权重矩阵。
o是一个向量,代表输出层的值
循环神经网络的隐藏层值s不仅仅取决于当前这次输入x,还取决于上一次的隐藏层值s。权重矩阵w就是隐藏层上一次的值作为这一次输入的权重。
可以清楚的看到上一时刻的隐藏层是如何影响当前时刻的隐藏层的
如果按照时间线展开的话,如下图,可以看到,t时刻的隐藏值s(t)不仅仅取决于该时刻的输入,还取决于上一时刻的隐藏值