理解LSTM和GRU

LSTM,全称(Long Short Term Memory ,LSTM)长短期记忆网络。

由于传统RNN有梯度消失和爆炸的问题,在反向传播时,梯度最终的结果会趋势0或无穷,引发严重的数值问题,从而参数得不到更新,学习能力有限,在实际任务中的效果往往不到人们所想的效果和需求。所以LSTM出现了。

LSTM可以对有价值的信息进行长期记忆,从而减小循环神经网络的学习难度,从而应用在语音识别,命名主体识别,文本分类,机器翻译等任务中。

那么LSTM的工作原理是什么?它是如何实现长短期记忆功能的呢?

先看下传统Rnn的结果图:

理解LSTM和GRU

神经元里就一个**函数tanh的操作。

再看下LSTM的结构图:

理解LSTM和GRU

与上图对比可知,与传统RNN相比,LSTM的内部结构经过了更为复杂和精心的设计,加入了门控的概念,从做到右依次为:1)遗忘门;2)输入门;3)输出门。

每个门都是包含一个Sigmoid函数**层和pointwise(或叫elment-wise)乘法操作,pointwise在上图中用理解LSTM和GRU表示,指的是两个同维度的向量按逐位元素相乘。比如,向量a=(1,2,3),b=(1,0,1),那么a理解LSTM和GRUb=(1,0,3)。至于门里的**函数为什么选择Sigmoid函数,而不选用其他的函数,是因为Sigmoid能生成0到1之间的概率值,从而达到控制有多少信息量可以通过,0的话就是信息量不允许通过,1的话就代表可以通过。

下面结合图和公式进行说明:

理解LSTM和GRU

理解LSTM和GRU

理解LSTM和GRU

理解LSTM和GRU

理解LSTM和GRU

理解LSTM和GRU

理解LSTM和GRU

可以都组都有自己的参数W、U、b。每个时刻的xt输入为one-hot向量

理解LSTM和GRU是遗忘门,即是一个元素值(暂且叫为遗忘值)都是0到1之间的数的向量,当遗忘值越接近于1时,和它相乘后的原先的细胞的信息会被更多的保留下来;相反,当遗忘值越接近于0时,和它相乘后的原先细胞的信息也会越接近于0,不被保留。

所以理解LSTM和GRU代表上一时刻(t-1)的细胞经过遗忘门后,被保留下来的信息量。

再看输入门理解LSTM和GRU同理,也是一个元素值都是0到1之间的数的向量。

理解LSTM和GRU代表当前时刻(t)需要更新到当前细胞状态的候选信息,之所以选择用tanh作为**函数,是为了生成[-1,1]的值,迎合大多数场景下分布是0中心的需求。所以理解LSTM和GRU代表当前时刻(t),真实加入到细胞状态里的当前细胞状态的候选信息量。

所以经过遗忘门的遗忘和输入门的输入后,最后当前细胞状态为:

理解LSTM和GRU

最后的输出门理解LSTM和GRU控制输出当前细胞状态的信息量的多少,即最后的输出信息量为理解LSTM和GRU

总结,当输入的序列中,没有重要信息时,LSTM的遗忘门的值就接近于1,输入门的值接近于0,即过去的细胞记忆会被保存,从而实现长期记忆。

当输入的序列中出现重要的信息时,LSTM就会把它们存入到细胞记忆中,此时过去的信息已不再重要,遗忘门会接近于0,输入门会接近于1,这样旧的重要信息被遗忘,新的重要信息被写入,实现长期记忆的功能。

GRU(Gated Recurrent Unit)门控循环单元:

理解了LSTM,GRU就容易上手了。见下图

理解LSTM和GRU

较之与LSTM,GRU把遗忘门和输入门结合为了一个更新门理解LSTM和GRU,且细胞状态和隐藏单元都为理解LSTM和GRU,理解LSTM和GRU代表当前时候输入细胞状态的候选信息量,理解LSTM和GRU代表上一时刻被保留下来的信息量;

若没有重要信息出现时,理解LSTM和GRU会接近于0,即细胞状态不会更新,理解LSTM和GRU会约等于理解LSTM和GRU,还是上一时刻的细胞状态。