1、概述

上一节说到,简单的循环神经网络不能解决长期依赖问题,那么,这节就来看看可以解决这个问题的长短时记忆神经网络LSTM。

2、网络结构

LSTM通过刻意的设计来避免长期依赖问题,先来看看标准的RNN,如下图所示,这里的激活函数使用tanh函数,

matlab 长短期神经网络预测混沌序列 长短时神经网络_网络层

而LSTM网络也是使用这样的结构,只是循环体用了不同的结构,如下图所示,

matlab 长短期神经网络预测混沌序列 长短时神经网络_神经网络_02

上图中使用的各个元素的图标的含义如下图所示,

matlab 长短期神经网络预测混沌序列 长短时神经网络_循环神经网络_03

其中,方框表示神经网络层;圆圈表示运算操作,如向量和;黑线传输着一整个向量,从一个节点的输出到其他节点的输入;合在一起的线表示向量的连接,分开的线表示内容被复制并分发到不同的位置。

3、核心思想

LSTM的核心思想是引入了细胞状态的连接,细胞状态用来存放想存放想要记忆的东西。如下图所示,

matlab 长短期神经网络预测混沌序列 长短时神经网络_循环神经网络_04

细胞状态类似于传送带,直接在整个链上运行,只有少量的线性交互,信息在上面流传保持不变很容易。

LSTM有通过精心设计的“门”结构来去除或者增加信息到细胞状态的能力。门是一种让信息选择通过的方法,它们包含一个sigmoid神经网络层和一个乘法操作。Sigmoid层输出0到1之间的数,描述每个部分有多少量可以通过,0代表不允许任何量通过,1表示允许任何量通过,结构如下图所示,

matlab 长短期神经网络预测混沌序列 长短时神经网络_神经网络_05

LSTM拥有3个门,分别是忘记门,输入门,输出门,用来保护和控制细胞状态。下面分别来介绍。

4、忘记门
忘记门决定从细胞状态中丢弃什么信息。该门读取ht-1和xt,输出一个0到1之间的数给每个在细胞状态Ct-1中的数字。0表示完全丢弃,1表示完全保留。结构如下图所示,

matlab 长短期神经网络预测混沌序列 长短时神经网络_循环神经网络_06

5、输入门
输入门决定什么样的新信息被存放在细胞状态中,包含两个部分,第一部分为sigmoid层,该层决定要更新什么值,第二部分为tanh层,该层把需要更新的信息更新到细胞状态里。tanh层创建一个新的细胞状态值向量Ĉt,Ĉt会被加入到状态中。结构如下图,

matlab 长短期神经网络预测混沌序列 长短时神经网络_网络层_07

然后就到了更新旧细胞状态的时间了,将Ct-1更新为Ct,把旧状态与ft相乘,丢弃确定需要丢弃的信息,再加上it*Ĉt ,这样就完成了细胞状态的更新,结构如下图所示,

matlab 长短期神经网络预测混沌序列 长短时神经网络_神经网络_08

6、输出门
输出门就是通过一个sigmoid层来确定细胞状态的哪个部分将输出出去。把细胞状态通过tanh进行处理,得到一个-1到1之间的值,并将它和sigmoid门的输出相乘,最终仅仅输出确定输出的部分。结构如下图所示,

matlab 长短期神经网络预测混沌序列 长短时神经网络_神经网络_09

7、LSTM变体
7.1、Peephole

该结构如下图所示,

matlab 长短期神经网络预测混沌序列 长短时神经网络_循环神经网络_10

 

 

这个模型增加了peepgole到每个门上,让门也接受细胞状态的输入。

 

7.2、GRU

改结构如下图所示,

matlab 长短期神经网络预测混沌序列 长短时神经网络_网络层_11

这个模型将忘记门和输入门合并成一个单一的更新门,还混合了细胞状态和隐藏状态以及其他一些改动,最终使得该模型比标准LSTM模型要简单,但效果一样。


总结:

以上内容了解大概结构就可以了,TensorFlow等框架都将其封装好了,直接用就好了