深度学习之LSTM原理研究

LSTM来源

因为论文里面用到了LSTM网络,又不想看代码,遂记录一下LSTM网络的原理吧。下一篇研究一下GRU(LSTM网络的变体)
LSTM起源于RNN,RNN(recurrent nenural network),RNN神经网络的结构如下图所示:
其中 x t x_t xt代表的是t时刻网络的输入, h t h_t ht代表的是隐藏层的状态,当前 h t h_t ht的输出不仅和当前时刻的输入 x t x_t xt有关,还和之前的输出 h t − 1 h_{t-1} ht1有关,因此简单的循环网络在t时刻的更新公式如下所示:
z t = U h t − 1 + W x t + b , h t = f ( z t ) z_t=Uh_{t-1}+Wx_t+b,h_t=f(z_t) zt=Uht1+Wxt+b,ht=f(zt)
其中 z t z_t zt为隐藏层的净输入,f是非线性激活函数。
在这里插入图片描述
由于RNN保留了时间序列的上下文信息,所以可以通过过去的信号数据来推测当前信号的数据,理论上RNN可以保留之前所有时刻的信息。然而实际的使用过程中,由于当前的时刻的t输出可能依赖于k时刻的输入,随着时间间隔的增大,梯度会出现爆炸和消失的情况,因此,RNN神经网络很难建立长距离的依赖关系,即(long-term-dependencies),为了改善这个问题,从而提出了基于门控的循环神经网络:长短期记忆网络(long short-term memery network)LSTM

LSTM网络公式解释

首先需要知道,在LSTM网络中增加了一个internal-state c t c_t ct,其实就是cell-state.如下图所示,其内部增加了3个门控开关,分别是遗忘门 f t f_t ft,输入门 i t i_t it,输出门 o t o_t ot
数字电路中,开关有0和1两种状态,而LSTM网络中引入了门控机制,它的取值为0~1之间,用来控制传输数据的多少。
在这里插入图片描述
f t f_t ft:遗忘门,用来控制上一个时刻的内部状态 c t − 1 c_{t-1} ct1需要遗忘多少信息。
i t i_t it:输入门,用来控制当前时刻的候选状态 c t ′ c'_t ct有多少信息需要保存。这里的候选状态 c t ′ c'_t ct是根据上一时刻的输出 h t − 1 h_{t-1} ht1和本次输入 x t x_t xt来计算出来的。
o t o_t ot:输出门,顾名思义,当前时刻的内部状态 c t c_t ct有多少信息可以输出给外部状态 h t h_t ht
需要注意一下这里的 h t h_t ht其实就是RNN中的 y t y_t yt。而LSTM中的 c t c_t ct就是RNN中的 h t h_t ht

下面我们看一下,以上三种门如何计算吧。

遗忘门的计算

在这里插入图片描述
遗忘门的结构中包含一个sigmod神经网络层(参数为 W f W_f Wf, b f b_f bf)。
将上一时刻的输出和当前时刻的输入拼接之后送入到sigmod网络层中,最终输出 f t f_t ft,注意 f t f_t ft是一个0~1的数值。

输入门的计算

和遗忘门是一样的,只不过给定的权重参数是不一样的。
在这里插入图片描述

输出门的计算

在这里插入图片描述

内部状态 c t c_t ct的计算

内部状态 C t C_t Ct存储了到当前时刻为止的历史信息, f t ∗ C t − 1 f_t*C_{t-1} ftCt1,因为它需要确定之前的信息有多少需要丢弃。而 i t ∗ C t ′ i_t*C'_t itCt,因为它需要确定新输入的信息有多少需要被保留下来。
得到了 c t c_t ct之后,就可以把它传递给t+1时刻的LSTM网络中啦!
在这里插入图片描述
候选状态 C t ′ C'_t Ct的计算公式如下:注意这里是通过一个tanh神经网络层
在这里插入图片描述

输出 h t h_t ht的计算

万事俱备,只欠输出啦!当前时刻的输出 h t h_t ht的计算公式如下:
在这里插入图片描述
需要注意的是这里的tanh是一个函数,不是一个神经网络层,上面候选状态的计算过程中tanh是一个神经网络层。
将当前时刻的内部状态 c t c_t ct通过一个tanh函数,之后和遗忘门的数值 o t o_t ot进行相乘,即可以得到当前时刻的输出,与此同时它也将作为下一时刻的输入信号。

总结

1.计算3个门控的值:取值为0-1之间。

2.遗忘门乘以上一时刻内部状态的 c t − 1 c_{t-1} ct1加上输入门乘以当前时刻的候选状态 c t ′ c'_t ct得到当前时刻的内部状态 c t c_{t} ct

3.当前的时刻输出 y t y_t yt:输出门和经过非线性变变化之后的c_t相乘。

LSTM中使用门控状态来控制传输状态,RNN网络中, h t − 1 h_{t-1} ht1 h t h_t ht之间的变化通常很大,而传递下来的 c t c_t ct却改变的比较慢,所以我们认为RNN是一种short-term_memory。因为每个时刻的 h t h_t ht都是不一样的。而LSTM中,通过记忆单元c可以捕捉某个关键信息,而且可以有能力将此关键信息保存一定的时间间隔。

展望

下一节将研究LSTM变体:GRU。
原理听起来比较简单,不过自己实现的时候还需要考虑LSTM的参数学习,如何训练上述公式中提到的参数,也是一大块知识要去啃呀。书中提到了BPTT:即随时间反向传播算法。有兴趣的同学可以看一看嗷。

参考书籍:

神经网络与深度学习-邱锡鹏

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值