第1关:循环神经网络简介
任务描述
本关任务:通过学习循环神经网络的相关知识,完成单向循环网络的编写。
相关知识
为了完成本关任务,你需要掌握:
- 循环神经网络概述;
- 一般循环神经网络;
- 单向循环神经网络。
循环神经网络概述
对于我们已经学过的传统神经网络,它们能够实现分类以及标注任务,但一旦处理具有前后遗存关系的数据时,效果就不是十分理想了。这个问题主要由于传统神经网络的结构所导致。这时我们就需要一个不仅仅只依赖当前的输入,还需要结合前一时刻或后一时刻的输入作为参考。 循环神经网络就是根据这样的需求而设计的。循环神经网络的主要用途是处理和预测序列数据。循环神经网络最初就是为了刻画一个序列当前的输出与之前信息的关系。从网络结构上来看,循环神经网络会记忆之前的信息,并利用之前的信息影响后面节点的输出。也就是说,循环神经网络的隐藏层之间的节点是有连接的,隐藏层的输入不仅包含输入层的输出,还包括上一时刻隐藏层的输出。
一般循环神经网络
传统的神经网络结构一般分为三层:输入层、隐藏层、输出层。输入层的输入经过加权计算输出到隐藏层,作为隐藏层的输入。隐藏层再对从输入层得到的输入进行加权计算输入到输出层,最后通过激活函数,由输出层输出最终的结果。循环神经网络的结构与其十分的相似,都是由输入层、隐藏层和输出层构成,最大的区别在于循环神经网络的隐藏层多了一个自身到自身的环形连接,其结构如图 1 所示:
图1 循环神经网络结构示例
其中,x
表示输入层,s
表示隐藏层的输出,o
表示输出层的值。U
是输入x
特征与隐藏层神经元全连接的权重矩阵,V
则是隐藏层与输出层全连接的权值矩阵。o
的输出由权值矩阵V
和隐藏层输出s
决定。s
的输出不仅仅由权值矩阵U
以及输入x
来决定,还要依赖于新的权值矩阵W
以及上一次s
的输出。其中,W
表示上一次隐藏层的输出到这一次隐藏层输入的权值矩阵。该层被称为循环层。
单向循环神经网络
将一般循环神经如图2
所示展开便是单向循环神经网络:
图2 单向循环神经网络结构示例
对于单向循环神经网络的结构,你可以理解为网络的输入通过时间进行向后传播。当前隐藏层的输出st
除了取决于当前的输入层的输入向量xt
外,还受到上一时刻隐藏层的输出向量st+1
的影响,因此,当前时刻隐藏层的输出信息包含了 之前时刻的信息,表现出对之前信息记忆的能力 。 可以采用如下公式对单向循环神经网络进行表示 :
ot=g(Vst)st=f(Uxt+Wst−1)
其中ot
表示输出层的结果,g
为输出层的激活函数,V
为输出层的权值矩阵。st
表示隐藏层的结果,它由当前时刻的输入层输入xt
以及上一时刻隐藏层输出s