DL杂记:再议长短时记忆网络(Long Short Term Memory Network, LSTM)

对rnn的一些模型结构可以查看这篇文章:RNN:几张图搞懂RNN模型构建

下面来 着重看一些lstm:

LSTM:是一种改进之后的循环网络,可以解决rnn无法处理长距离依赖的问题。

首先看一下原始rnn: 其实rnn可以看成是一个很深的network。 如下图所示的形式。

DL杂记:再议长短时记忆网络(Long Short Term Memory Network, LSTM)

但是原始rnn存在梯度消失 或者 梯度爆炸的情况, 梯度消失可以通过累积来体现(**函数等)、梯度爆炸可以通过累加再体现(累加值太大),那么有什么解决方法呢?

(1)clipped gradient: 将梯度约束到一点的范围内: [min, max],即梯度小于min时取min、当梯度大于max时取max。 (这点有没有想起GAN的....)

(2)优化算法使用:momentum、NAG、RMSProp。

(3)改变rnn的结构: LSTM(主要解决梯度消失的问题)。

LSTM的结构如下图所示:

DL杂记:再议长短时记忆网络(Long Short Term Memory Network, LSTM)

主要包含三个门:

(1)遗忘门(如下图所示): 它决定了上一时刻的单元状态 c_t-1 有多少保留到当前时刻 c_t。 (有没有发现有点attention的意思,有没有看出点残差的额意思)

DL杂记:再议长短时记忆网络(Long Short Term Memory Network, LSTM)

(2)输入门(如下图所示): 它决定了当前时刻网络的输入 x_t 有多少保存到单元状态 c_t。

DL杂记:再议长短时记忆网络(Long Short Term Memory Network, LSTM)

(3)输出门: 控制单元状态 c_t 有多少输出到 LSTM 的当前输出值 h_t。

DL杂记:再议长短时记忆网络(Long Short Term Memory Network, LSTM)

最终lstm后向传播是为了学习8组参数,如下图:

DL杂记:再议长短时记忆网络(Long Short Term Memory Network, LSTM)

 

不错的文章:

(1)一文了解LSTM和GRU背后的秘密:https://baijiahao.baidu.com/s?id=1613717006522786574&wfr=spider&for=pc