【深度学习】RNN&LSTM&GRU

为了添加一个新信息,RNN需要通过一个函数完全地转换当前的信息。因此信息是以整体为单位进行修改的,模型并没有考虑重要的和不重要的信息。

LSTM 会通过乘法和加法等运算对信息进行局部的修改。因此通过 LSTM,信息流会选择性地通过单元状态,也就是说 LSTM 会选择性地记忆或遗忘某些特征。此外,特定单元状态下的信息共有三种不同的依赖性。

RNN

标准RNN中,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层。

LSTM

LSTM 同样是这样的结构,但是重复的模块拥有一个不同的结构。不同于单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互。

http://colah.github.io/posts/2015-08-Understanding-LSTMs/


gate的作用就是来控制信息的流通,它们的作用分别为:

  1. input gate,0-1之间,控制信息有多少输入。
  2. forget gate,0-1之间,控制信息要遗忘多少若单元状态==0,那么遗忘门就要求单元状态完全忘记该信息
  3. output gate,0-1之间:控制信息输出多少。

这些gate的激活函数f通常为sigmoid函数,它的值为0-1之间,0表示门关闭,信息不流通,1表示门完全打开,信息完全流通。g,h也是激活函数。

这个cell的工作流程

从这个流程可以看到,信息的输入,记忆的输入和信息的输入都是受到严格控制的。

不过,真正的LSTM并不是上面所讲的那样,而是增加了peephole。增加peephole之后实际上改变的只是输入,输入不再只是x,而是增加了隐层的输出h和当前记忆c。(有待于理解啊~)

若我们输入 Z,那么该输入向量通过激活函数得到的 g(Z) 和输入门 f(Z_i ) 的乘积 g(Z) f(Z_i ) 就表示输入数据经筛选后所保留的信息。Z_f 控制的遗忘门将控制以前记忆的信息到底需要保留多少,保留的记忆可以用方程 c*f(z_f)表示。以前保留的信息加上当前输入有意义的信息将会保留至下一个 LSTM 单元,即我们可以用 c' = g(Z)f(Z_i) + cf(z_f) 表示更新的记忆,更新的记忆 c' 也表示前面与当前所保留的全部有用信息。我们再取这一更新记忆的激活值 h(c') 作为可能的输出,一般可以选择 tanh 激活函数。最后剩下的就是由 Z_o 所控制的输出门,它决定当前记忆所激活的输出到底哪些是有用的。因此最终 LSTM 的输出就可以表示为 a = h(c')f(Z_o)。

关于LSTM的一些问题 


  • lstm为什么能解决梯度消失问题?(阿里)paperweekly

传统RNN因为在时间上参数共享,所以会出现梯度消失/爆炸问题。LSTM/GRU在解决层内梯度消失/爆炸问题时,梯度仍然会在层间衰减,所以LSTM/GRU难以做成多层网络。

解决方案:

RNN梯度消失和爆炸的原因 - 沉默中的思索的文章

LSTM如何解决梯度消失问题 - 沉默中的思索的文章

理解RNN梯度消失和弥散以及LSTM为什么能解决

  • lstm里面的状态更新是怎样的,各个门是怎样的?(阿里)
  • LSTM中input Gate、output Gate、forget Gate、ht、cell更新等的计算公式

更多细节 LSTM模型与前向反向传播算法

GRU

GRU是2014年提出的一种LSTM改进算法。它将忘记门和输入门合并成为一个单一的更新门,同时合并了数据单元状态和隐藏状态,使得模型结构比之于LSTM更为简单。

其各个部分满足关系式如下:


参考:

LSTM原理及实现

图解LSTM - stone的文章

零基础入门深度学习(6) - 长短时记忆网络(LSTM)

LSTM神经网络输入输出究竟是怎样的? - Scofield的回答 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值