文章目录

前言

LSTM(Long Short Term Memory,长短期记忆)网络的提出主要是为了弥补RNN中固有的无法处理长期依赖(Long-Term Dependency)的缺陷的。

长期依赖缺陷

长期依赖指在时序数据中,时间相隔较远的两个位置的元素可能也有很强的依赖关系。例如,要用RNN实现一个阅读理解(或者称为文章补全)任务,即根据上下文,把缺实的单词预测出来。在某一篇文章中,开头有这么一段文字:“福尔摩斯是阿瑟·柯南·道尔笔下的一位英国名侦探……”,然后在很长一段文字后,出现了要补全的句子:“福尔摩斯用___与华生交谈”,这里可以填入的选项有“汉语”“英语”“日语”。为了确定空白处的内容,必须要回溯到开头时提到的“英国这个信息”。“英国”和“英语”虽然相隔很远,但仍然具有很强的逻辑上的相关性。这就是时序数据中的长期依赖,即上下文信息在距离上可能会很远。

LSTM的结构

普通的RNN模型对长期依赖问题的表现并不好,回想RNN的参数反向传播和更新过程,距离长就意味着具有较多的导数连乘,从而产生梯度消失等问题,使距离较远的元素之间的信息无法较好地传递。

LSTM网络的提出就是为了改善这一问题,它采用的方法是引入门控机制。门控机制就是用可以学习的参数来约束信息流动的程度,从而将有用的关联信息保留下来。下面结合LSTM网络结构来说明这一机制具体实现的功能。

 

上图展示了一个LSTM单元(Cell)的基本结构,其中,三个燕尾形所在的位置表示三个门(Gate),门的作用是控制信息的流入程度。和普通RNN模型相比,直观的感觉就是LSTM网络更复杂一些。其复杂性体现在两个方面:首先就是多了这些门,使输入、时序连接、输出三个过程都有了控制。另外,还可以看到,在LSTM网络中,某个时刻单元中的信息与该时刻输出的信息是不同的;而在普通的RNN中,这两个变量是相同的。复杂就意味着参数更多,因此LSTM网络的表达能力和学习能力也就更强。

从整体上看整个过程中信息的流动,LSTM网络的每个单元都维护着一个单元状态(Cell State),即上图的$c_{t-1}$和$c_t$。该变量贯穿时序方向,将上一个时刻单元的信息传递给下一个单元。在传递过程中,$c_{t-1}$需要先经过遗忘门(Forget Gate),即上图的$f_t$,然后向后传播到$t$时刻。这时需要注意,在$t$时刻的单元里,LSTM单元的真正输入实际上是本时刻的输入$x_t$与上一个单元的输出$y_{t-1}$的组合。该组合的输入首先经过tanh函数激活,然后经过输入门(Input Gate),再与上一时刻传播过来的信息进行汇合,形成$t$时刻的单元状态$c_t$。但是,该值是维护在单元中的,而不是$t$时刻的输出。$c_t$需要经过tanh函数激活后再经过一个输出门(Output Fate),才能得到$t$时刻的输出。之后,$c_t$继续传给下一个时刻,重新传递以上信息传递流程。

将该过程用数学形式来表示,可以写为:$$c_t=f_t\circ c_{t-1}+i_t\circ\text{tanh}(W_xx_t+V_yy_{t-1}+b_x)$$$$y_t=o_t\circ \text{tanh}(c_t)$$

其中,$\circ$表示逐元素对应相乘,又称阿达马乘(Hadamard Product);$W_x$、$V_y$及$b_x$为待学习的参数。

在LSTM网络中,假设输入维度是$d$,隐层维度是$h$,那么各个变量的维度为:$$o_t,i_t,f_t,c_t,y_t,b_x\in \Bbb R^h$$$$x_t\in \Bbb R_d$$$$W_x\in\Bbb R^{d×h},V_y\in\Bbb R^{h×h}$$

LSTM网络最重要的特征就是门控机制,那么这些”门“又是如何得到的呢?代表门的向量的计算形式为:

\begin{array}{c}
&o_t=Sigmoid(W_ox_t+V_oy_{t-1}+b_o) \\
&i_t=Sigmoid(W_ix_t+V_iy_{t-1}+b_i) \\
&f_t=Sigmoid(W_fx_t+V_fy_{t-1}+b_f)
\end{array}

\begin{array}{c}
&W_o,W_i,W_f\in \Bbb R^{d×h} \\
&V_o,V_i,V_f\in \Bbb R^{h×h} \\
&b_o,b_i,b_f\in \Bbb R^{h}
\end{array}

可以看到,门是通过将本时刻的输入和上一时刻的输出共同作为输入,并与可以学习的变量$W_o,W_i,W_f$和$V_o,V_i,V_f$相结合,共同形成的与隐层变量维度相同的向量。另外,还可以发现,由于经过了Sigmoid函数的激活,门向量的每个元素都为0~1,可以将其看作一个百分比。于是这些门向量与经过这些门的输入向量进行阿达马乘的过程,就可以理解为根据一定的比例让输入信息通过,从而实现了”门“的功能,这也是这些中间变量被称为门的原因。

LSTM网络也有很多改进和变体,如将上面的参数与输入的矩阵乘积改为卷积,可以得到卷积LSTM网络等。