学习LSTM模型

2 篇文章 0 订阅
2 篇文章 0 订阅

原文链接:Understanding LSTM Networks

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

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

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

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

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

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

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

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

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

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

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

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

 

                                                                        传统RNN结构(图片来源

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

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

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

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

 

 

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

 

                                                                                         门(图片来源

 

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

LSTM的整体结构如下图:

 

 

                                                                               LSTM结构(图片来源

 

其中一些操作意义如下:

 

                                                                                    几种操作含义(图片来源

 

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

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

 

                                                                          细胞状态信息传递(图片来源

 

解析LSTM的每一部分

(1)遗忘门

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

 

                                                                              遗忘门(图片来源

 

(2)输入门

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

 

                                                                                  输入门(图片来源

 

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

这时要将上一个状态值C_{t-1}更新为C_t,将上一个状态值乘以f_t,以此表达期待忘记的部分。之后将得到的值加上i_t*\tilde{C}_t。这个得到的是新的候选值,按照我们决定更新每个状态值的多少来衡量。

 

                                                                           更新细胞状态(图片来源

 

 

(4)输出门

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

 

                                                                                 输出门(图片来源

 

 

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

 

                                                                      GRU结构(图片来源

 

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值