LSTM(Long Short Term Memory)

Published: 19 Apr 2016 Category: Algorithms

LSTM(Long Short Term Memory)


LSTM(Long-Short Term Memory/LSTM)是一种时间递归神经网络,论文首次发表于1997年。由于独特的设计结构,LSTM适合于处理和预测时间序列中间隔和延迟非常长的重要事件。

LSTM是RNN(Recurrent Neural Network)的特例,RNN是一种节点定向连接成环的人工神经网络,其简化结构及展开形式如下。

此处输入图片的描述

RNN的优势在于能够通过先前的信息来指导当前的任务,而关键问题在于长期依赖(Long-Term Dependencies),所谓“长期依赖”是指当所需信息跨度过大时,如下图中h(t+1)需要依赖于x(0)和x(1),RNN在计算过程中,后面时间节点相对前面时间节点的感知力下降(或根据链式法则推导求取梯度时所导致的梯度消失或爆炸),因此会导致方法失效。为了解决这个问题,有研究提出了LSTM算法。

此处输入图片的描述

相比RNN,LSTM将隐含单元修改成为了如下所示的block单元。

此处输入图片的描述

如下图所示分别是典型的RNN和LSTM结构。

此处输入图片的描述

此处输入图片的描述

其中图中基本元素的含义如下。

此处输入图片的描述

由此可以推导出LSTM正向传播的公式如下。

此处输入图片的描述

此处输入图片的描述

此处输入图片的描述

此处输入图片的描述

其中,C(t)是隐含单元所传递的状态,f(t)是“forget gate layer”,控制上一阶段的隐含状态哪些需要保留,i(t)是“input gate layer”,控制本阶段的输入哪些需要对状态进行更新,是本阶段候选状态,基于此,可以出计算本阶段的状态C(t),系统的输出和隐含单元输出分别是o(t)和h(t)。

LSTM内部结构相对复杂,因此还有一种简化形式称为GRU(Gated Recurrent Unit),其将“forget gate”和“input gate”合并成为“update gate”,结构和正向传播公式如下所示。

此处输入图片的描述

为了理解LSTM的工作原理,需要对反向传播算法进行推导,可以参考这篇文章http://nicodjimenez.github.io/2014/08/08/lstm.html。

LSTM正向传播的公式重写如下。

此处输入图片的描述

为了简化形式,将x(t)和h(t-1)连接成向量xc(t)。

此处输入图片的描述

公式可简化为。

此处输入图片的描述

选取方差函数为损失函数。

此处输入图片的描述

下面推导LSTM反向传播公式。假设w是模型参数,则根据链式法则,梯度计算如下。为了简化,引入L(t)。

此处输入图片的描述

此处输入图片的描述

此处输入图片的描述

因此有:

此处输入图片的描述

下面结合源码进行分析,代码中变量的含义如下所示。

此处输入图片的描述

此处输入图片的描述

此处输入图片的描述

此处输入图片的描述

代码中ds的计算如下。

此处输入图片的描述

此处输入图片的描述

此处输入图片的描述

因此有,ds = self.state.o * topdiffh + topdiffs。

其他推导和RNN类似,完整代码如下。

此处输入图片的描述

相关连接

  • http://colah.github.io/posts/2015-08-Understanding-LSTMs/
  • http://nicodjimenez.github.io/2014/08/08/lstm.html
  • https://github.com/nicodjimenez/lstm
comments powered by Disqus