多层RNN

多层双向GRU

参考:博客

RNN在使用过程中会出现梯度爆炸 (exploding gradients) 和梯度消失 (vanishing gradients) 两种问题:

  • 梯度爆炸 这个问题通常出现在深度神经网络中 (多层网络),当使用梯度回传时,梯度可能会爆炸。这个问题可以使用 gradient clipping 方法解决,即设定一个阈值,当超过这个阈值之后,就把梯度设为一个固定值;
  • 梯度消失 这个问题通常是因为步骤过长,RNN不能很好的捕捉之前的信息;

为了解决这两种问题,可以引入两种RNN的变形,GRU和LSTM。

双向网络

双向网络的结构如下图所示:

computational graph

每个时间步,前向和后向的表示都用来计算当前的 \(\widehat{y}\):

\[\hat{y}_t = g(W_y[\overrightarrow{a}_t,\overleftarrow{a}_t]+b_y) \]

多层网络

我们可以将这些单层的RNN堆叠成多层的网络,网络的结构如下:

computational graph

可以看出第 2 层,第 3 步的结果计算如下:

\[a^{l2}_{t3}=g(W_a[a^{l2}_{t2},a^{l1}_{t3}]+b_a) \]

posted @ 2019-05-08 10:34  静_渊  阅读(2646)  评论(0编辑  收藏  举报