循环神经网络 RNN

1 背景

传统的全连接网络、卷积神经网络他们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。比如,当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列;当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。这时,就需要用到深度学习领域中另一类非常重要神经网络:循环神经网络(Recurrent Neural Network)。

2 循环神经网络的原理

循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。
在这里插入图片描述这个网络在t时刻接收到输入xt之后,隐藏层的值是xt,输出值是ot。关键一点是,st的值不仅仅取决于xt,还取决于st−1
在这里插入图片描述式1是输出层的计算公式,输出层是一个全连接层,也就是它的每个节点都和隐藏层的每个节点相连。V是输出层的权重矩阵,g是激活函数。式2是隐藏层的计算公式,它是循环层。U是输入x的权重矩阵,W是上一次的值st−1作为这一次的输入的权重矩阵,f是激活函数。

从上面的公式我们可以看出,循环层和全连接层的区别就是循环层多了一个权重矩阵 W。

如果反复把式2带入到式1,我们将得到:
在这里插入图片描述从上面可以看出,循环神经网络的输出值ot,是受前面历次输入值xt、xt−1、xt−2、xt−3…影响的,这就是为什么循环神经网络可以往前看任意多个输入值的原因。

3 双向循环神经网络

双向循环神经网络主要用于解决当前的输出(第t步的输出)不仅仅与前面的序列有关,并且还与后面的序列有关。例如:预测一个语句中缺失的词语那么就需要根据上下文来进行预测。
正向计算时,隐藏层的值st与st−1有关;反向计算时,隐藏层的值s′t与s′t+1有关;最终的输出取决于正向和反向计算的加和
在这里插入图片描述从上面三个公式我们可以看到,正向计算和反向计算不共享权重,也就是说U和U’、W和W’、V和V’都是不同的权重矩阵。

深度循环神经网络

前面我们介绍的循环神经网络只有一个隐藏层,我们当然也可以堆叠两个以上的隐藏层,这样就得到了深度循环神经网络。如下图所示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42454048/article/details/114385448