多层RNN
多层双向GRU
参考:博客
RNN在使用过程中会出现梯度爆炸 (exploding gradients) 和梯度消失 (vanishing gradients) 两种问题:
- 梯度爆炸 这个问题通常出现在深度神经网络中 (多层网络),当使用梯度回传时,梯度可能会爆炸。这个问题可以使用 gradient clipping 方法解决,即设定一个阈值,当超过这个阈值之后,就把梯度设为一个固定值;
- 梯度消失 这个问题通常是因为步骤过长,RNN不能很好的捕捉之前的信息;
为了解决这两种问题,可以引入两种RNN的变形,GRU和LSTM。
双向网络
双向网络的结构如下图所示:
每个时间步,前向和后向的表示都用来计算当前的 \(\widehat{y}\):
\[\hat{y}_t = g(W_y[\overrightarrow{a}_t,\overleftarrow{a}_t]+b_y)
\]
多层网络
我们可以将这些单层的RNN堆叠成多层的网络,网络的结构如下:
可以看出第 2 层,第 3 步的结果计算如下:
\[a^{l2}_{t3}=g(W_a[a^{l2}_{t2},a^{l1}_{t3}]+b_a)
\]