声明
资源来源网络,参考文献在文末,侵删
总结
LSTM是特殊的RNNs,尤其适合顺序序列数据的处理,内部由遗忘门、输入门和输出门组成,外部与RNNs差不多。
LSTM的原理
什么是 LSTM RNN 循环神经网络 (深度学习)?
循环神经网络(RNNs):通过不断将信息循环操作,保证信息持续存在,从而解决不能结合经验来理解当前问题的问题。
从图中可看出A允许将信息不断的在内部循环,这可以使其保证每一步的计算都能保存以前的信息。
把RNNs自循环结构展开,可以看成是同一个网络复制多次并连成一条线,把自身信息传递给下一时刻的自己。
这种链式的结构揭示了RNNs与序列和列表类型的数据密切相关。好像他们生来就是为了处理序列类型数据的。
但是在处理长依赖问题时,RNNs虽然在理论上可行,但实践发现RNNs无法实现。
RNNs中有一个特殊的网络结构,叫LSTMs,全称为Long Short Term Memory networks,可翻译为长短时记忆神经网络,这个网络的设计初衷就是为了解决长依赖问题。
所有循环神经网络都具有神经网络的重复模块链的形式。
LSTMs的结构如下:
它内部有四个网络层,这不同于标准RNN网络里只有一个网络层的单元。
- Neural Network Layer:**函数操作
- Pointwise Operation:点操作
- Vector Transfer:数据流向
- Concatenate:表示向量的合并(concat)操作
- Copy:向量的拷贝
LSTMs核心是细胞状态,用贯穿细胞的水平线表示。细胞状态像传送带一样,它贯穿整个细胞却只有很少的分支,这样能保证信息不变的流过整个RNNs,细胞状态如下图所示:
LSTM网络能通过一种被称为门的结构对细胞状态进行删除或者添加信息。
门能够有选择性的决定让哪些信息通过。门的结构为一个sigmoid层和一个点乘操作的组合:sigmoid层输出0-1的向量,控制多少信息能流过sigmoid层,0表示不能通过,1表示可通过
LSTM由遗忘门、输入门和输出门这三个门来控制细胞状态。
- Step1:决定细胞状态需要丢弃哪些信息,通过遗忘门的
sigmoid单元处理,它通过查看和信息来输出一个0-1之间的向量,向量中的0-1值决定细胞状态中哪些信息保留或丢弃,结构如下: - Step2:决定给细胞状态添加哪些新信息。①利用和通过输入门的操作决定更新哪些信息;②利用和通过一个
tanh层得到新的候选细胞信息,这些信息可能会被更新到细胞信息中。 - Step3:将旧的细胞信息更新为新的细胞信息。更新规则为:通过遗忘门选择忘记旧细胞信息的一部分,然后通过输入门添加候选细胞信息的一部分得到新的细胞信息:
- Step4:更新完细胞状态后需要根据输入的和来判断输出细胞的哪些状态特征。①经过被称为输出门的
sigmoid层得到判断条件,然后将细胞状态经过tanh层得到一个间的向量,该向量与输入门得到的判断条件相乘即得到最终RNN单元的输出:
变种:
- peephole connections结构
它允许各个门结构能够看到细胞信息,由Gers & Schmidhuber (2000)提出 - 在忘记门与输入门之间引入一个耦合
不同于之前的LSTM结构,忘记门和输入门是独立的,这个变式是在忘记门删除历史信息的位置加入新的信息,在加入新信息的位置删除旧信息。
3. 门循环单元(GRU)
它将忘记门和输入门合并成一个新的门,称为更新门。GRU还有一个门称为重置门。
其中重置门为上图中前面那个门,决定了如何将新的输入信息与前面的记忆相结合。更新门为上图中后面那个门,定义了前面记忆保存到当前时间步的量。由于该模型比标准LSTM模型更简单,因此被广泛应用。
MATLAB的实现
- https://www.mathworks.com/discovery/lstm.html
- https://www.mathworks.com/help/deeplearning/ug/long-short-term-memory-networks.html
- https://www.mathworks.com/help/deeplearning/ref/nnet.cnn.layer.lstmlayer.html
参考文献:
- https://www.bilibili.com/video/BV1Vx411j7xF
- http://colah.github.io/posts/2015-08-Understanding-LSTMs/
- https://www.jianshu.com/p/95d5c461924c
- https://zhuanlan.zhihu.com/p/32085405
- https://www.zhihu.com/question/278825804
- https://blog.csdn.net/jiangpeng59/article/details/77646186