【无标题】

LSTM结构介绍

LSTM的单元结构图

LSTM是通过刻意设计来避免长期依赖问题,是一种特殊的RNN结构,长时间记录信息实际上是LSTM的默认行为,而不是需要努力学习的东西!
所谓递归神经网络都具有神经网络链式的重复模块,在标准地RNN中,这个重复模块具有非常简单的结构。
LSTM具有同样的结构,但是重复的模块拥有不同的结构,如下图所示。与RNN的单一神经网络层不同,这里有四个网络层,并且以一种非常特殊的方式进行交互

LSTM核心理念

其核心理念在于细胞状态以及“门”的结构,细胞状态相当于信息传输的路径,让信息能在序列连中传递下去,你可以将其看作网络的记忆,记忆门一个控制信号控制门是否应该保留该值信息,在实现上通常是乘1或乘0来选择保留或忘记,理论上讲,细胞状态能够将序列处理过程的相关信息一直传递下去。因此,即使较早时间步长的信息也能够携带较后时间步长的细胞中来。这克服了短时记忆的影响,信息的添加和移除,我们通过门结构来实现,门结构在训练过程中会去学习该保存或遗忘那些信息

激活函数sigmoid

门结构中包含着sigmoid激活函数,sigmoid激活函数与tanh函数类似,不同之处在于sigmoid函数把值压缩到0-1之间,而不是-1—1之间,这样的设置有助于更新或忘记信息,因为任何数乘以0都得0,这部分信息就会被剔除掉,同样地,任何数乘以1都得到其本身,这部分就会完美地保存下来,这样地网络就会了解那些数据需要遗忘,那些数据需要保存

LSTM

LSTM中引入了三个门,即输入门(input gate)、遗忘门(forget gate)、和输出门(output gate)。以及与隐藏状态形状相同的记忆细胞,*某些文献把记忆细胞当成一种特殊的隐藏状态),从而记录额外信息

输入们、遗忘门、输出门。

与门控循环单元的重置门和更新门一样,长短期记忆网络的门输入均为当前时间步输入 X t X_t Xt,与上一时间步隐藏状态 h t − 1 h_{t-1} ht1输出由激活函数sigmoid函数的全连接层计算得到,如此以来,这三个门元素的值均为【0,1】,如下图所示:

具体各个门的表达方式如下:

遗忘门(Forget Gate)

遗忘门的功能决定应保留或丢弃那些信息,来自前一个隐藏状态的信息和当前输入的信息同时传递到sigmoid中去,输出值介于0到1之间,越接近0,意味着越应该被丢弃,越接近1意味着越应该保留

遗忘门的计算公式:

LSTM第一步要决定从细胞状态中舍弃那些信息,这一决定由所谓遗忘门层的S型网络做出。其接收 h t − 1 h_{t-1} ht1 X t X_t Xt,并对细胞状态 C t − 1 C_{t-1} Ct1中的每一个数来说输出值都介于0和1之间。**1表示完全接受这个,0表示完全忽略这个

遗忘门计算公式第二个表示为:
遗忘门:
F t = s i g m o i d ( X t W x f + H t − 1 W h f + b f ) F_t = sigmoid(X_tW_{xf} + H_{t-1}W_{hf} + b_f) Ft=sigmoid(XtWxf+Ht1Whf+bf)

输入门 input Gate

输入门用于更新细胞状态,首先将前一层隐藏状态的信息和当前输入的信息传递到Sigmoid函数中去,将值调整到0-1之间来决定更新那些信息,0表示不重要,1表示重要。其次还要将前一层隐藏状态的信息与当前输入的信息传递到tanh函数中去,创造一个新的候选值向量。最后将sigmoid函数输出值与tanh值相乘. Sigmoid输出值将决定tanh的输出值中那些信息是重要而且需要保存下来的

输入门计算公式:

下一步就是要确定需要在细胞状态中保留那些新信息,这里分成两部分:
第一部分一个所谓的输入门层的S型网络层确定那些信息需要更新
第二部分一个tanh网络层创建一个新的备选值向量, C t   C^{~}_t Ct  可以用来添加到细胞状态,在下一步中,我们将对上面两部分结合起来,产生对状态的更新

LSTM细胞状态更新

首先前一层的细胞状态与遗忘向量驻点相乘,如果其乘以接近0的值,意味着在新的细胞状态中,这些信息需要丢弃掉。然后将该值与输入门的输出值逐点相加,将神经网络发现的新信息更新到细胞状态中去,至此就得到了更新后的细胞状态。

LSTM细胞状态更新公式:

现在更新旧细胞状态 C t − 1 C_{t-1} Ct1更新到 C t C_t Ct。先前的步骤已经决定要做什么了,我们只需要照做就好,对旧的细胞状态乘以 f t f_t ft,用来忘记我们决定忘记的事,然后我们在加上 i ⊙ C t i \odot C_{t} iCt 这就是新的候选值,根据我们对每个状态决定的更新值按比例进行缩放

LSTM输出门

输出门用来确定下一个隐藏状态的值,隐藏状态包含了先前输入的信息,首先,我们将前一个隐藏状态和当前输入传递到 sigmoid 函数*中,然后将新得到的细胞状态传递给 tanh 函数。最后将 tanh 的输出与 sigmoid 的输出相乘,以确定隐藏状态应携带的信息。再将隐藏状态作为当前细胞的输出,把新的细胞状态和新的隐藏状态传递到下一个时间步长中去

输出门计算公式:

最后,我们需要确定输出值。输出依赖于我们的细胞状态,但会是一个“过滤的”版本。首先我们运行 S 形网络层,用来确定细胞状态中的哪些部分可以输出。然后,我们把细胞状态输入 tanh(把数值调整到 −1 和 1 之间)再和 S 形网络层的输出值相乘,部这样我们就可以输出想要输出的分

LSTM的变种

目前我所描述的还只是一个相当一般化的 LSTM 网络。但并非所有 LSTM 网络都和之前描述的一样。事实上,几乎所有文章都会改进 LSTM 网络得到一个特定版本。差别是次要的,但有必要认识一下这些变种

  • (1) 一个流行的 LSTM 变种由 Gers 和 Schmidhuber 提出,在 LSTM 的基础上添加了一个“窥视孔连接”,这意味着我们可以让门网络层输入细胞状态
  • ![
  • ](https://img-blog.csdnimg.cn/6d7de904870e4de291dfbea771a4fd2c.png)

(2)另一个变种把遗忘和输入门结合起来。同时确定要遗忘的信息和要添加的新信息,而不再是分开确定。当输入的时候才会遗忘,当遗忘旧信息的时候才会输入新数据

(3)一个更有意思的 LSTM 变种称为 Gated Recurrent Unit(GRU),由 Cho 等人提出。GRU 把遗忘门和输入门合并成为一个“更新门”,把细胞状态和隐含状态合并,还有其他变化。这样做使得 GRU 比标准的 LSTM 模型更简单,因此正在变得流行起来。

总结

先将LSTM的整体架构给其总结以下,然后开始继续读论文,有时间在继续将LSTM的前向和反向传播都给其搞清楚

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

big_matster

您的鼓励,是给予我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值