注:非全部翻译,有部分为自我添加,有部分原文未全翻译。

全连接或卷积神经网络模型中,网络结构都是从输入层到隐藏层再到输出层,层与层之间都是全连接或部分连接,但每层之间的节点是没有连接的。这样就会存在无法捕捉时序特征的问题。不同时间序列的输入之间没有联系。

因此促进了携带时间序列信息的模型的发展,如隐马尔可夫模型HMM等。

HMM模型存在一个较严重的问题就是时间和空间复杂度都是O(N^2),当数据集非常大时,其开销大,效率低。

CNNLSTM是谁提出的 cnnlstm模型_全连接

RNN模型的出现一定程度上解决了以往模型上的一些缺陷。

一个最简单的RNN模型如下:

CNNLSTM是谁提出的 cnnlstm模型_全连接_02

由上图可看出,RNN模型已经带有循环结构了,RNN的隐藏层之间的结点是有连接的,隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的状态。

将该结构展开可看到如下的结构:

CNNLSTM是谁提出的 cnnlstm模型_全连接_03

从这里可以更明确的看出来,隐藏层之间是有相关联的,不过有一点需要明确,这些循环网络结构中的参数在不同时刻是共享的。

为了将当前时刻的状态转换为输出,同样还需要接一个全连接网络。

所以RNN模型的精髓就在于对循环结构A的设计。

传统的RNN结构如下,该结构非常简单,将上一个时刻的隐藏层状态和当前时刻的输入进行拼接,加一个tanh的激活即得到当前隐藏层的状态。

 

CNNLSTM是谁提出的 cnnlstm模型_时间序列_04

                                                                        传统RNN结构

RNN存在的一个较严重的缺陷就是,虽然RNN可以自发学会利用历史信息,但只有在相关信息和需要该信息的距离较近的时候,RNN才能成功的运作,当相关信息和需要该信息的地方的距离变得非常大的情况下,RNN无法有效地利用历史信息。

不过即使RNN的模型非常简单,但提供了一个非常好的循环结构模型,为其它模型的产生提供了非常大的引导作用。

比较成功的一个案例就是LSTM(Long Short-Term Memory,长短期记忆模型)。

LSTM是一种拥有三个门结构的特殊网络结构,输入门,遗忘门,输出门。

 

CNNLSTM是谁提出的 cnnlstm模型_时间序列_05

 

 LSTM通过一些门的结构让信息有选择性地影响RNN中每一个时刻的状态。它是由一个Sigmoid神经网络层和一个点乘运算组成。

 

CNNLSTM是谁提出的 cnnlstm模型_CNNLSTM是谁提出的_06

                                                                                         门

 

 Sigmoid作为激活函数的输出会使输出控制在一个0~1之间的数,描述有多少信息可以通过这个结构,0表示不通过任何信息,1表示全部通过。 

LSTM的整体结构如下图:

 

CNNLSTM是谁提出的 cnnlstm模型_CNNLSTM是谁提出的_07

 

                                                                               LSTM结构

 

其中一些操作意义如下:

 

CNNLSTM是谁提出的 cnnlstm模型_全连接_08

                                                                                    几种操作含义

 

LSTM的关键是细胞状态,表示细胞状态的这条线水平的穿过图的顶部。

细胞状态类似于传送带,细胞的状态再整个链上运行,只有一些小的线性操作作用其上,信息很容易保持不变的流过整个链。

 

CNNLSTM是谁提出的 cnnlstm模型_全连接_09

                                                                          细胞状态信息传递

 

解析LSTM的每一部分

(1)遗忘门

LSTM的第一步是决定我们需要丢弃哪些信息或保留哪些信息,通过一个sigmoid层实现,查看上一个隐藏层的状态和当前输入,通过sigmoid输出在0到1之间的特性,决定信息的弃留。越接近0意味着忘记,越接近1意味着要保持。

 

CNNLSTM是谁提出的 cnnlstm模型_循环结构_10

                                                                              遗忘门

 

(2)输入门

下一步是决定我们要在循环结构中存储什么信息。这一步分为两部分。首先,输入门层的sigmoid层,决定了我们要更新哪些值。接下来一个tanh层创建候选向量

CNNLSTM是谁提出的 cnnlstm模型_循环结构_11

,该向量将会被加到细胞的状态中。在下一步中,将结合这两个向量来创建更新值。

 

CNNLSTM是谁提出的 cnnlstm模型_循环结构_12

                                                                                  输入门

 

(3)将过去和现在的记忆合并

这时要将上一个状态值

CNNLSTM是谁提出的 cnnlstm模型_全连接_13

更新为

CNNLSTM是谁提出的 cnnlstm模型_循环结构_11

,将上一个状态值乘以

CNNLSTM是谁提出的 cnnlstm模型_全连接_15

,以此表达期待忘记的部分。之后将得到的值加上

CNNLSTM是谁提出的 cnnlstm模型_全连接_16

。这个得到的是新的候选值,按照我们决定更新每个状态值的多少来衡量。

 

CNNLSTM是谁提出的 cnnlstm模型_CNNLSTM是谁提出的_17

                                                                           更新细胞状态

 

 

(4)输出门

最后,我们要决定我们要输出什么。此输出将基于细胞状态,实际输出还需要接一个全连接层。首先,运行一个sigmoid层,它决定了我们要输出的细胞状态的哪些部分。然后,将单元格状态通过tanh(将值泛化到-1和1之间),并将其乘以sigmoid门的输出,即为循环结构的状态输出。

 

CNNLSTM是谁提出的 cnnlstm模型_CNNLSTM是谁提出的_18

                                                                                 输出门

 

 

LSTM的一个比较成功的变种:GRU(Gated recurrent units,门控循环单元)。它将遗忘门和输入门组合成一个单一的更新门。还将单元格状态和隐藏状态合并了,并进行了一些其它的更改,所得的模型比标准的LSTM模型更简单。

 

CNNLSTM是谁提出的 cnnlstm模型_时间序列_19

                                                                      GRU结构

 

 

LSTM还有其它类型的变体(原文有提):添加窥视、使用耦合的遗忘门和输入门。