理解 LSTM 结构与原理

一、从 RNN 到 LSTM

RNN 的结构我们已经非常熟悉了,如下图所示:
请添加图片描述
RNN 是在时间上的一个循环,每次循环都会用到上一次计算的结果,虽然 RNN 每个时刻 t 都会有输出,但是最后时刻的输出实际上已经包含了之前所有时刻的信息,所以一般我们只保留最后一个时刻的输出就够了。

RNN 的优缺点:

  1. 优点:处理a sequence或者a timeseries of data points效果比普通的DNN要好。中间状态理论上维护了从开头到现在的所有信息;
  2. 缺点:不能处理 long sequence/timeseries 问题。原因是梯度消失,网络几乎不可训练。所以也只是理论上可以记忆任意长的序列。

LSTM 就是用来缓解(实际上也没有解决) RNN 中梯度消失问题的,从而可以处理 long-term sequences。

至于为什么能缓解梯度消失问题,我们先了解 LSTM 的结构,就可以发现原因了。

二、LSTM 结构

LSTM 结构如下:
请添加图片描述
LSTM 主要包括三个门公式

2.1 遗忘门(forget gate)

遗忘门决定上一时刻细胞状态中的多少信息可以传递到当前时刻中。
请添加图片描述

2.2 输入门(input gate)

用来控制当前输入新生成的信息中有多少信息可以加入到细胞状态中。
请添加图片描述

2.3 更新细胞状态

细胞状态由两部分构成:

  1. 来自一时刻旧的细胞状态信息;
  2. 当前输入新生成的信息。
    请添加图片描述
2.4 输出门(output gate)

最后,基于更新的细胞状态,输出隐藏状态。
请添加图片描述

2.5 记忆细胞(memory cell)

记忆细胞处于整个单元的水平线上,起到了信息传送带的作用,只几个含有简单的线性操作,能够保证数据流动时保持不变。
请添加图片描述

2.6 LSTM 如何缓解梯度消失?

我们注意到, 首先三个门的激活函数是 sigmoid, 这也就意味着这三个门的输出要么接近于0 , 要么接近于1。这就使得 δ c t δ c t − 1 = f t \frac{\delta c_t}{\delta c_{t-1}} = f_t δct1δct=ft δ h t δ h t − 1 = o t \frac{\delta h_t}{\delta h_{t-1}} = o_t δht1δht=ot 是非0即1的,当门为1时, 梯度能够很好的在LSTM中传递,很大程度上减轻了梯度消失发生的概率, 当门为0时,说明上一时刻的信息对当前时刻没有影响, 我们也就没有必要传递梯度回去来更新参数了。所以, 这就是为什么通过门机制就能够解决梯度的原因: 使得单元间的传递 δ S j δ S j − 1 \frac{\delta S_j}{\delta S_{j-1}} δSj1δSj 为 0 或 1。

三、GRU(Gate Recurrent Unit,门控循环单元)

LSTM 的计算比较慢,所有有了GRU,你可以认为他是经过特殊优化提速的LSTM,但是他的表达能力也是受到限制的。

GRU 的结构如下:
请添加图片描述
这里和lstm不同的是:

  1. 将遗忘门和输入门合成了一个单一的重置门(reset gate),也就是说多大程度上擦除以前的状态 state,另外细胞更新操作变为更新门(update gete),它的作用是多大程度上要用 candidate 来更新当前的 hidden layer;
  2. 同样还混合了细胞状态和隐藏状态;
  3. 比标准LSTM简单。

如果r[t] = 1,z[t] = 1,那么gru和普通rnn的cell就是一样的。

四、参考链接

参考链接1:LSTM如何解决梯度消失或爆炸的?
参考链接2:LSTM原理与实践,原来如此简单
参考链接3:LSTM结构理解与python实现
参考链接4:LSTM原理及实践(一):理论
参考链接5:(五)通俗易懂理解——BiLSTM
参考链接6:lstm和gru结构的再理解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值