Vanishing Gradients and Fancy RNNs(LSTMs and GRUs)

所有课件及Assignments可见我的Github:hunto/CS224n

Lecture9 - Vanishing Gradients and Fancy RNNs(LSTMs and GRUs)

课件前半部分讲了梯度消失问题,我已在机器学习梯度消失与梯度爆炸问题详解中说明,不再赘述。


Gated Recurrent Units

为了改善梯度消失问题,引入了更复杂的隐藏单元,例如GRU。主要思想是

在标准的RNN中,隐藏层的计算直接基于前一层的输出以及输入

而GRU首先会基于当前输入和隐藏状态计算一个更新门(另一层):

再利用相同的方法不同的权值计算一个reset gate:

然后就可以得到与一般RNN之前不同的记忆内容:

如果reset gate的元素为0,则会遗忘之前的记忆,只会存储新输入的信息。

最后得到的隐藏层h_t为:

从这里我们可以看出,update gate决定的是当前输入是否改变隐藏层状态。如果为1,则仅会复制前一层的状态,与当前输入无关。而reset gate则是控制记忆是否被遗忘或遗忘的多少,如果为0,则之前层的记忆会被遗忘。

用图示的方法更为直观: 0_1531897658037_ca5b979d-bda7-480e-a4a8-39aa0512f0db-image.png


GRU是如何改善梯度消失问题的?

0_1531898121096_57aa0564-906b-448c-a5db-61b3e0999871-image.png

GRU可以让网络剪掉不必要的连接,减少反向传播的深度。

0_1531898257043_4e443e42-496d-460d-beab-0ca6caa64a27-image.png

0_1531898303936_7729d00a-962d-4580-9dd8-3b4f9f81e1a2-image.png


Long-short-term-memories (LSTMs)

LSTM是一个比GRU更复杂的RNN模型,它允许修改每一个时间节点。

由此得到的最终memory cell为:

最终的隐藏层状态为:

LSTM模型的可视化如下

0_1531899702873_fcadea37-8490-4960-a8c2-52e4b6363ee9-image.png 0_1531899727583_8a5596bb-3d69-4a4e-9e5f-e7a83d023117-image.png

图片来自Understanding LSTMs,推荐阅读。


LSTM可以作为所有序列问题的优秀模型


Bidirectional RNNs (双向RNN)

文本分类时,我们同时需要前后文,因此使用双向RNN可以同时存储前后文信息。 0_1531900511334_b5777b87-f6d1-40f0-b832-21f6b8cee247-image.png

更深层的双向RNN如下:

0_1531900574873_1b1a2736-2ca0-410c-8f72-c481ae530eb4-image.png


0_1531900643367_196f9718-db1e-4c4a-8edc-18f69f4e93e8-image.png