《卷积神经网络与计算机视觉》 —3.3循环神经网络
3.3循环神经网络
反馈网络在其网络架构中包含循环,允许它们处理时序数据。在许多应用(例如图像的字幕生成)中我们希望进行预测,使得它与先前生成的输出(例如,标题中已生成的字)一致。为实现此目的,网络以类似的方式处理输入序列中的每个元素(同时考虑先前的计算状态)。 因此,它也称为RNN。
由于RNN以依赖于先前计算状态的方式处理信息,因此它们提供了“记住”先前状态的机制。 存储机制通常有效地仅记住先前由网络处理的短时信息。下面,我们概述RNN的架构细节。
3.3.1基础架构
简单的RNN架构如图3.3所示。如上所述,它包含一个反馈回路,其工作可以通过随时间展开循环网络来显示(如图3.3b所示)。展开版本的RNN非常类似于3.2节中描述的前馈神经网络。 因此,我们可以将RNN理解为一个简单的多层神经网络,其中信息流随时间发生,不同的层代表不同时刻的计算输出。RNN对序列进行操作,因此输入以及每个时刻的输出也会变化。
图3.3RNN架构。a)具有反馈回路的简单循环网络。b)在不同时间步展开的循环架构
下面将重点介绍RNN架构的主要功能。
可变长度输入:RNN可以对可变长度的输入(例如,具有可变帧长度的视频、具有不同数量的单词的句子、具有可变数量的点的3D点云)进行操作。展开的RNN结构的长度取决于输入序列的长度,例如,对于由12个单词组成的句子,在展开的RNN架构中将总共有12层。在图3.3中,在每个时刻t,对网络的输入由变量xt表示。
隐藏状态:RNN在内部保存先前计算的存储,该隐藏状态由ht表示。可以将该状态理解为展开的RNN结构中的前一层的输入。在序列处理开始时,用0或随机向量初始化它。 在每个时间步,通过考虑其先前值和当前输入来更新该状态:
其中,f(·)是非线性激活函数。权重矩阵B称为转移矩阵,因为它影响隐藏状态随时间的变化。
可变长度输出:每个时间步的RNN输出用yt表示。RNN能够产生可变长度输出,例如,将一种语言的句子翻译成另一种语言,其中输出序列长度可以与输入序列长度不同。这是可能的,因为RNN在进行预测时会考虑隐藏状态。隐藏状态模拟先前处理的序列的联合概率,其可用于预测新输出。例如,在句子中给出一些起始单词,RNN可以预测句子中的下一个可能的单词,其中句子的特殊结尾符号用于表示每个句子的结尾。在这种情况下,所有可能的单词(包括句子结尾符号)都包含在进行预测的字典中。
其中,f(·)是激活函数,例如柔性最大传递函数(softmax,见4.2.4节)。
共享参数:在展开RNN结构中,链接输入、隐藏状态和输出的参数(分别由A、B和C表示)在所有层之间共享。 这就是整个架构可以使用循环来表示它的递归架构的原因。由于RNN中的参数是共享的,因此可调参数的总数远小于MLP,MLP网络中的每个层需要学习一组单独的参数。这样可以有效地训练和测试反馈网络。
基于上述的RNN架构的描述,可以注意到网络的隐藏状态确实提供了存储机制,但是当我们想要记住序列中的长时关系时它是没有效果的。因此,RNN仅提供短时记忆并且难以“记住”(几步之外)通过它处理的旧信息。为了克服这一限制,文献中引入了改进版本的循环网络,其中包括长短时记忆网络(LSTM) [Hochreiter and Schmidhuber,1997]、门控递归单元(GRU)[Cho et al.,2014]、双向RNN(BRNN)[Graves and Schmidhuber,2005]和神经图灵机(NTM)[Graves et al.,2014]。但是,所有这些网络架构及其功能的详细信息都超出了本书的范围,本书主要关注前馈架构(特别是CNN)。
- 点赞
- 收藏
- 关注作者
评论(0)