目录:
- RNN的长期依赖问题
- LSTM原理讲解
- 双向LSTM原理讲解
- keras实现LSTM和双向LSTM
RNN 的长期依赖问题
在上篇文章中介绍的循环神经网络RNN在训练的过程中会有长期依赖的问题,这是由于RNN模型在训练时会遇到梯度消失(大部分情况)或者梯度爆炸(很少,但对优化过程影响很大)的问题。对于梯度爆炸是很好解决的,可以使用梯度修剪(Gradient Clipping),即当梯度向量大于某个阈值,缩放梯度向量。但对于梯度消失是很难解决的。所谓的梯度消失或梯度爆炸是指训练时计算和反向传播,梯度倾向于在每一时刻递减或递增,经过一段时间后**,梯度就会收敛到零(消失)或发散到无穷大(爆炸)。简单来说,长期依赖的问题就是在每一个时间的间隔不断增大时**,RNN会丧失到连接到远处信息的能力。
如下图,随着时间点t的不断递增,当t时刻和0时刻的时间间隔较大的时候, t t t时刻的记忆 h t ht ht可能已经丧失了学习连接到远处0时刻的信息的能力了。
假定 x 0 x_0 x0,的输入为“我住在深圳”。后面插入了很多其他的句子,然后在 x t x_t xt输入了:我在市政府上班,由于 x 0 和 x t x_0和x_t x0和xt相差很远,当RNN输入到 x t x_t xt时, t t t时刻的记忆已经丧失了 x 0 x_0 x0