LSTM(Long Short-Term Memory)浅析
个人对于LSTM的原理解释
个人对LSTM的理解和浅析
LSTM(长短期记忆网络)
作用
为了解决RNN中梯度消失的问题,即RNN无法记住时间间隔很长的信息,因此出现了LSTM网络,它的基础框架也是建立在RNN框架上的,但设计上却避免了长期依赖的问题,因为LSTM具有独特的“门”结构以帮助记住长期的信息
结构
传统的RNN在每个神经元内仅通过激活函数来传递信息,实现重复学习,如下图所示
而LSTM的神经元内部却包含了诸多信息,如下图
其中粉红色圆圈代表运算操作,黄色矩阵代表学习得到的神经网络层,黑色箭头代表向量传输,所以整体看来,不仅仅是h在随时间流动,细胞状态c也在随着时间流动,实际上细胞状态c代表长期记忆
门结构
我们来细细分析每个神经元内部的过程(“门”结构),这是一种让信息选择通过的方法,包括一个$sigmoid$神经网络层和一个$pointwise$乘法操作
第一阶段:遗忘门
决定哪些信息需要从细胞状态中被遗忘
它以上一层的输出$h_{t-1}$和本层的输入$x_t$作为输入,通过一个$sigmoid$激活函数的到输出$f_t$,表示上一层细胞状态被遗忘的概率
第二阶段:输入门
决定哪些信息能够被存放到细胞状态中
包含两个部分:
- 使用$sigmoid$激活函数,输出为$i_t$
- 使用$tanh$激活函数,输出为$C_t$
其中$C_t$可表示原RNN网络中本层的输出,$i_t$表示$C_t$中的信息被保留的程度,因此$i_t*C_t$表示该层被保留的新信息
到目前为止,遗忘门决定$C_{t-1}$被遗忘的程度,输入门决定多少信息被保留,基于此就可以更新此刻的细胞状态了
第三阶段:输出门
- 控制盖层的细胞状态有多少被过滤
- 先使用$sigmoid$激活函数的到一个[0,1]区间的取值$o_t$,然后将前两步得出的细胞状态$C_t$通过$tanh$激活函数处理后与$o_t$相乘,即得本层输出$h_t$
变形:双向LSTM
- 如同双向RNN一样(同时利用过去和未来的信息),双向LSTM也能同时利用过去和未来的信息,而且通常情况会比单向LSTM预测得更加准确
变形:GRU(Gated Recurrent Unit)
门结构1:重置门$r_t$
- 使用$sigmoid$激活函数
- 候选隐含状态$\widehat{h}_t$使用重置门$r_t$来控制$t-1$时刻信息的输入,如果$r_t$结果为0,那么上一个隐含状态的输出信息将被丢弃
- 决定过去多少信息被遗忘
门结构2:更新门$z_t$
- 使用$sigmoid$函数
- 控制过去隐含状态在当前时刻的重要性,如果$z_t$趋于1,则$t$时刻之前的隐含状态将保存下来并传递到$t$时刻
- 有助于捕捉时序数据中中长期的依赖关系
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!