深度学习计算机视觉实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 循环神经网络

CNN的每个输入都是独立的,如输入一张图片,图片的像素之间是没有联系的。但是现实中很多场景的输入数据之间是有联系的,如需要结合上下文翻译一句话,这种场景在CNN中无法处理,因此引入了RNN。

1.3.1 RNN

RNN和CNN一样,属于神经网络的一种,在语音识别、自然语言处理(NLP)等领域有着重要的作用。RNN主要用于处理序列数据,也就是数据的前后有关系。RNN同样具有神经网络的层(输入层、隐藏层和输出层)及中间的激活函数等。普通的神经网络只建立层之间的连接,而RNN在层之间的神经元之间也建立了权重的连接。RNN的结构如图1.9所示。

图1.9

图1.9所示为一个典型的RNN结构,其中,x表示输入,a表示激活,y表示输出。对任一时刻t,激活a与输出y可以通过如下公式计算。

at =g1 (Waa at-1>+Wax xt+ba)

yt =g2(Wyaat+by)

其中,W为权重参数;g为激活函数;t时刻的输出不仅与t时刻的输入有关,还与t-1时刻的输出有关。

传统的 RNN 接受任意长度的输入,而模型大小不会随着输入长度变长而变大,在计算时考虑历史信息,在时间上局部权重共享。但是,传统的 RNN 有其自身的缺点,如计算较慢,在较长时间序列上难以进行信息传递,只考虑历史信息,没有考虑未来的输入信息,而且传统的 RNN 容易出现梯度消失或者梯度爆炸。解决这种问题可以使用LSTM/GRU。

1.3.2 LSTM与GRU

RNN在处理序列信息时有其自身的局限性,因此提出了长短时记忆网络(Long Short-Term Memory,LSTM)和门控循环单元(Gated Recurrent Unit,GRU),两者内部都通过门(Gate)调节信息流。LSTM和GRU只保留相关信息来进行预测,舍弃不相关的数据。LSTM的结构如图1.10(a)所示。GRU的结构如图1.10(b)所示。

图1.10

LSTM的关键在于三种门:输入门、输出门和遗忘门,这三种门也就是LSTM的单元状态(Cell State)。门是不同的神经网络,用来决定哪些信息被允许进入单元状态,在模型的训练中由门选择信息的保留或舍弃。

LSTM 的输入门负责更新单元状态,输出门输出下一个隐藏状态,遗忘门决定信息的保留或舍弃。之前的隐藏状态和当前的输入信息经过Sigmoid函数,输出范围为0~1,接近于0表示舍弃,接近于1表示保留。

GRU的结构和LSTM类似,GRU中只有重置门(Reset Gate)和更新门(Update Gate),结构更加简单,比LSTM的计算量小。GRU的重置门用于将新的输入信息与历史信息结合,更新门决定有多少历史信息用于当前时刻。若将重置门设置为1,更新门设置为0,则GRU就回退为一个传统的RNN结构。