Nov 15, 2018 原创文章
理解 Long Short-term Memory 长短期记忆网络
- 递归(循环)神经网络 Recurrent Neural Networks
- 长期依赖(Long-Term Dependencies)问题
- 长短期记忆网络 Long Short-term Memory
- LSTM 的基本结构
- LSTM 公式推导
- LSTM 的变种
递归(循环)神经网络 Recurrent Neural Networks
设计递归神经网络的目的是使网络具有记忆性,如果在计算过程中需要保持对之前网络状态的记忆就使用到递归神经网络RNN。
如上图所示RNN具有循环结构,A表示网络结构,$x_t$为网络的输入,而$h_t$为当前时刻的网络输出。循环可以使得信息可以从当前步传递到下一步。RNN 可以被看做是同一神经网络的多次复制,每个神经网络模块会把消息传递给下一个。所以,如果我们将这个循环展开,可以得到下图:
长期依赖(Long-Term Dependencies)问题
长期依赖问题是指当前系统的状态,可能受很长时间之前系统状态的影响,是RNN中无法解决的一个问题。如果从“这块冰糖味道真?”来预测下一个词,是很容易得出“甜”结果的。但是如果有这么一句话,“他吃了一口菜,被辣的流出了眼泪,满脸通红。旁边的人赶紧给他倒了一杯凉水,他咕咚咕咚喝了两口,才逐渐恢复正常。他气愤地说道:这个菜味道真?”,让你从这句话来预测下一个词,确实很难预测的。因为出现了长期依赖,预测结果要依赖于很长时间之前的信息。
理论上,通过调整参数,RNN是可以学习到时间久远的信息的。但是,实践中的结论是,RNN很难学习到这种信息的,因为经过许多阶段传播后的梯度倾向于消失(大部分情况)或爆炸(很少,但对优化过程影响很大)。RNN 会丧失学习时间价格较大的信息的能力,导致长期记忆失效。
数学推导:
由RNN的网络结构可知,其连接关系可以表述为:
如果$abs(W)<1$,当$h^{0}$传递到t时刻时,其权重值为$W^{t}$,对此时的输$h^{t}$几乎不产生影响,也就是0时刻的信息几乎被遗忘,由此导致长期记忆失效。
解决长期依赖问题有很多方法的,其中长短期记忆网络(LSTM)是比较常用的一个。
长短期记忆网络 Long Short-term Memory
LSTM ——是一种 RNN 特殊的类型,可以学习长期依赖信息。LSTM 由Hochreiter & Schmidhuber (1997)提出,并在近期被Alex Graves进行了改良和推广。
在标准的RNN中,具有如上图所示的循环结构。LSTM的结构与之类似,但是每个循环结构中具有四层网络。如下图所示:
LSTM 的基本结构
LSTM $x_t$ 表示网络的输入,$x_t$
单元状态(cell state)类似于传送带是LSTM的关键。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。
在LSTM中使用门结构控制信息通过的数量。由SIgmoid函数和点乘计算组成,Sigmoid函数可以输入映射到0~~1之间,0 表示 let nothing through ,1 表示 let every thing through。
LSTM 公式推导
在 LSTM 网络中,第一步是决定我们会从单元状态中丢弃(忘记)什么信息。如上图,其中 Sigmoid 被称作 forget gate layer,通过读取$h_{t-1}$和$x_t$,输出一个在 0 到 1 之间的数值给单元状态$C_{t-1}$。1 表示 completely keep this ,0 表示 completely get rid of this 。
第二步是决定在单元状态中保存什么信息。这一步共分为两部分,第一部分 Sigmoid 被称为 input gate layer ,决定了哪些值将会在下一步更新;第二部分使用 tanh 创建一个新的候选值向量$\tilde{C}_t$,添加到单元状态中。
第三步是更新单元状态。将前两步的计算结果结合到一起,计算新的单元状态。
最后一步是计算网络的输出值。如上图所示,网络的输出值由当前时刻的单元状态决定。其中 Sigmoid 决定了当前的单元状态有多少可以作为网络的输出,tanh 将单元状态映射到 -1 到 1 之间。
LSTM 的变种
LSTM具有多种变种,常见的有以下三种:
1、增加 Peephole Connections
这种LSTM在经典LSTM的基础上增加了 peephole connections 。如上图所示,这种网络结构中的每个gate layer的输入都增加了上一时刻的单元状态作为输入。( Gers & Schmidhuber (2000))
2、耦合 input gate 和 forget gate
在这种LSTM网络中,将丢弃(忘记)信息和保存(输入)信息耦合计算,即:同时决定需要丢弃和保存的信息,而不是分开计算。
3、the Gated Recurrent Unit
如上图所示,将forget gate和input gate结合,成为update gate。同时把单元状态和隐藏状态合并,这种LSTM比标准LSTM更简单,也更受欢迎。
参考资料:
1、Understanding LSTM Networks:http://colah.github.io/posts/2015-08-Understanding-LSTMs/
1、[译] 理解 LSTM(Long Short-Term Memory, LSTM) 网络:https://www.cnblogs.com/wangduo/p/6773601.html
2、【神经网络】循环神经网络(RNN)的长期依赖问题:https://www.jianshu.com/p/6815da2d413d