读书笔记--神经网络与深度学习(五)循环神经网络

6 循环神经网络

前馈网络难以处理时序数据,比如视频、语音、文本等。
因此,当处理这一类和时序相关的问题时,就需要一种能力更强的模型。
循环神经网络是一类具有短期记忆能力的神经网络。在循环神经网络中,神经元不但可以接受其它神经元的信息,也可以接受自身的信息。
循环神经网络已经被广泛应用在语音识别、语言模型以及自然语言生成等任务上。
循环神经网络的参数学习可以通过随时间反向传播算法来学习。
随时间反向传播算法即按照时间的逆序将错误信息一步步地往前传递。当输入序列比较长时,会存在梯度爆炸和消失问题,也称为长程依赖问题。为了解决这个问题,人们对循环神经网络进行了很多的改进,其中最有效的改进方式引入门控机制。

6.1 给网络增加记忆能力

6.1.1 延时神经网络

建立一个额外的延时单元,存储历史信息。
延时神经网络在前馈网络中非输出层都增加了一个延时器,记录最近几次神经元的输出。
这样就具有了短期记忆能力。

6.1.2 有外部输入的非线性自回归模型

自回归模型是统计学上常用的一类时间序列模型,用一个变量的历史信息来预测自己。
有外部输入的非线性自回归模型是一个扩展,每个时刻都有一个外部输入x,产生一个输出y。

6.1.3 循环神经网络

循环神经网络通过使用带自反馈的神经元,能够处理任意长度的时序数据。
循环神经网络可以近似任意的非线性动力系统

6.2 简单循环网络

只有一个隐藏层的神经网络。
在一个两层的前馈神经网络中,连接存在相邻的层与层之间,隐藏层的节点之间是无连接的。而简单循环网络增加了从隐藏层到隐藏层的反馈连接。
假设在时刻t时,网络的输入为xt,隐藏层状态(即隐藏层神经元活性值)为ht 不仅和当前时刻的输入xt 相关,也和上一个时刻的隐藏层状态ht−1 相关。
如果我们把每个时刻的状态都看作是前馈神经网络的一层的话,循环神经网络可以看作是在时间维度上权值共享的神经网络。

6.2.1 循环神经网络的计算能力

由于循环神经网络具有短期记忆能力,相当于存储装置,因此其计算能力十分强大。前馈神经网络可以模拟任何连续函数,而循环神经网络可以模拟任何程序。

6.2.2 通用近似定理

一个完全连接的循环网络是任何非线性动力系统的近似器。
图灵完备(Turing Completeness)是指一种数据操作规则,比如一种计算机编程语言,可以实现图灵机(Turing Machine)的所有功能,解决所有的可计算问题. 目前主流的编程语言(比如C++,JPthon等)都是图灵完备的。

6.3 应用到机器学习

循环神经网络可以应用到很多不同类型的机器学习任务。根据这些任务的特点可以分为以下几种模式:序列到类别模式、同步的序列到序列模式、异步的序列到序列模式。

6.3.1 序列到类别模式

序列到类别模式主要用于序列数据的分类问题:输入为序列,输出为类别。比如在文本分类中,输入数据为单词的序列,输出为该文本的类别。

6.3.2 同步的序列到序列模式

同步的序列到序列模式主要用于序列标注(Sequence Labeling)任务,即每一时刻都有输入和输出,输入序列和输出序列的长度相同。比如词性标注(Partof-Speech Tagging)中,每一个单词都需要标注其对应的词性标签。

6.3.3 异步的序列到序列模式

异步的序列到序列模式也称为编码器-解码器模型,即输入序列和输出序列不需要有严格的对应关系,也不需要保持相同的长度。比如在机器翻译中,输入为源语言的单词序列,输出为目标语言的单词序列。

6.4 参数学习

循环神经网络的参数可以通过梯度下降方法来进行学习。
循环神经网络中存在一个递归调用的函数 f(·),因此其计算参数梯度的方式和前馈神经网络不太相同。在循环神经网络中主要有两种计算梯度的方式:随时间反向传播(BPTT)和实时循环学习(RTRL)算法。

6.4.1 随时间反向传播算法

随时间反向传播(Backpropagation Through Time,BPTT)算法的主要思想是通过类似前馈神经网络的错误反向传播算法来进行计算梯度。
BPTT 算法将循环神经网络看作是一个展开的多层前馈网络,其中“每一层”对应循环网络中的“每个时刻”。这样,循环神经网络就可以按按照前馈网络中的反向传播算法进行计算参数梯度。在“展开”的前馈网络中,所有层的参数是共享的,因此参数的真实梯度是所有“展开层”的参数梯度之和。

6.4.2 实时循环学习算法

与反向传播的 BPTT 算法不同的是,实时循环学习(Real-Time Recurrent
Learning,RTRL)是通过前向传播的方式来计算梯度 。

两种算法比较 RTRL算法和BPTT算法都是基于梯度下降的算法,分别通过前向模式和反向模式应用链式法则来计算梯度。在循环神经网络中,一般网络输出维度远低于输入维度,因此BPTT算法的计算量会更小,但是BPTT算法需要保存所有时刻的中间梯度,空间复杂度较高。RTRL算法不需要梯度回传,因此非常适合用于需要在线学习或无限序列的任务中。

6.5 长程依赖问题

循环神经网络在学习过程中的主要问题是由于梯度消失或爆炸问题,很难建模长时间间隔(Long Range)的状态之间的依赖关系。

6.6 基于门控的循环神经网络

为了改善循环神经网络的长程依赖问题,一种非常好的解决方案是引入门控机制来控制信息的累积速度,包括有选择地加入新的信息,并有选择地遗忘之前累积的信息。这一类网络可以称为基于门控的循环神经网络(Gated RNN)。

6.6.1 长短期记忆网络

长短期记忆网络LSTM是循环神经网络的一个变体,可以有效地解决简单循环神经网络的梯度爆炸或消失问题。
LSTM网络主要改进在一下两个方面:
新的内部状态:引入新的内部状态ct专门进行线性的循环信息传递,同时输出信息给隐藏层的外部状态ht。
门控机制:LSTM网络引入门控机制来控制信息传递的路径。(输入门,遗忘门,输出门)遗忘门ft 控制上一个时刻的内部状态ct−1 需要遗忘多少信息。输入门it 控制当前时刻的候选状态c˜t 有多少信息需要保存。输出门ot控制当前时刻的内部状态ct有多少信息需要输出给外部状态ht。

6.6.2 LSTM网络的变体

目前主流的LSTM网络用的三个门来动态地控制内部状态的应该遗忘多少历史信息,输入多少新信息,以及输出多少信息。我们可以对门控机制进行改进并获得LSTM网络的不同变体。如无遗忘门的LSTM网络 、peephole 连接、耦合输入门和遗忘门。

6.6.3 门控循环单元网络

门控循环单元(Gated Recurrent Unit,GRU)网络是一种比LSTM网络更加简单的循环神经网络。
引入门控机制来控制信息更新的方式。和LSTM 不同,GRU不引入额外的记忆单元,GRU网络也是在原基础上引入一个更新门(Update Gate)来控制当前状态需要从历史状态中保留多少信息(不经过非线性变换),以及需要从候选状态中接受多少新信息。
在LSTM网络中,输入门和遗忘门是互补关系,具有一定的冗余性。GRU网络直接使用一个门来控制输入和遗忘之间的平衡。

6.7 深层循环神经网络

如果将深度定义为网络中信息传递路径长度的话,循环神经网络可以看作是既“深”又“浅”的网络。一方面来说,如果我们把循环网络按时间展开,长时间间隔的状态之间的路径很长,循环网络可以看作是一个非常深的网络了。从另一方面来说,如果同一时刻网络输入到输出之间的路径xt → yt,这个网络是非常浅的。因此,我们可以增加循环神经网络的深度从而增强循环神经网络的能力。

6.7.1 堆叠循环神经网络

1种常见的做法是将多个循环网络堆叠起来,称为堆叠循环神经网络(StackedRecurrent Neural Network,SRNN)。一个堆叠的简单循环网络(stacked SRN)也称为循环网络循环多层感知器(Recurrent Multi-Layer Perceptron,RMLP)。

6.7.2 双向循环神经网络

在有些任务中,一个时刻的输出不但和过去时刻的信息有关,也和后续时刻的信息有关。比如给定一个句子,其中一个词的词性由它的上下文决定,即包含左右两边的信息。因此,在这些任务中,我们可以增加一个按照时间的逆序来传递信息的网络层,来增强网络的能力。
双向循环神经网络(Bidirectional Recurrent Neural Network,Bi-RNN)由两层循环神经网络组成,它们的输入相同,只是信息传递的方向不同。

6.8 扩展到图结构

递归神经网络(Recursive Neural Network,RecNN)是循环神经网络在有向无循环图上的扩展 [Pollack, 1990]。递归神经网络的一般结构为树状的层次结构。
图网络(Graph Network,GN)是将消息传递的思想扩展到图结构数据上的神经网络。

6.9 小结

循环神经网络可以建模时间序列数据之间的相关性。
常用的循环神经网络的参数学习算法是BPTT算法[Werbos, 1990],其计算时间和空间要求会随时间线性增长。为了提高效率,当输入序列的长度比较大时,可以使用带截断(truncated)的BPTT算法,只计算固定时间间隔内的梯度回传。
一个完全连接的循环神经网络有着强大的计算和表示能力,可以近似任何非线性动力系统以及图灵机,解决所有的可计算问题。然而由于梯度爆炸和梯度消失问题,简单循环网络存在长期依赖问题。为了解决这个问题,人们对循环神经网络进行了很多的改进,其中最有效的改进方式为引入门控机制,比如LSTM网络 [Gers et al., 2000, Hochreiter and Schmidhuber, 1997]和GRU网络[Chung et al., 2014]。
LSTM网络是目前为止最成功的循环神经网络模型,成功应用在很多领域,比如语音识别、机器翻译[Sutskever et al., 2014]、语音模型以及文本生成。LSTM网络通过引入线性连接来缓解长距离依赖问题。虽然 LSTM 网络取得了很大的成功,其结构的合理性一直受到广泛关注。
此外,循环神经网络可以很容易地扩展到更广义的图结构数据上,称为图网络[Scarselli et al., 2009]。

猜你喜欢

转载自blog.csdn.net/tianyouououou/article/details/95199942