通俗理解LSTM的内部门操作(个人理解,可能不科学)

希望大家在阅读下面文字的时候,已经读完上面的文章了,因为下面的文字是根据上面文章来写的。


首先,深度学习模型已经在各种研究领域中取得了很大的发展,主要说一下自己就CNN和RNN,LSTM模型的一些理解。(适合理解不透彻或者掌握不到精髓的读者,初学者可以看上面的博客,大神可以忽略)

首先,CNN是为了获取图像或者文本的local information 的,局部信息特征的获取比较擅长。但是光靠这些局部信息也不算完美啊,而且现在很多处理的数据都是序列的,一个接着一个,并且前后有规律或者关系可寻的。比如像文本序列,一个句子,前后的词是有关系的。

那么为了获取这些序列的前后关系,RNN就提出了。

引入上面文章的一个图



x0,x1,x2,x3,x4这样一个序列,在处理x3的时候,可能会考虑x0,x1这些前面的信息,这就捕捉了与前部分序列之间的关系了。

(那么与后面序列的关系怎么捕捉呢?这就有人提出了双向的RNN模型,具体有biLSTM。)



那么当遇到下面这样的情况怎么办了?就是Xt+1其实是和X0,X1有很大的关系的,但是他们的具体非常远,这种现象较 Long Term Dependency(长期依赖)。遇到这样的情况,一般RNN就会丧失这种捕捉序列长远距离的信息特征。


有些科学家可以通过设置初始权重矩阵等等方法来缓和这种情况,但是难度 实在太大。


所以有人又提出了LSTM模型。

和一般RNN模型的区别在于,它可以记忆memory,也可以忘记forget。就是可以选择性的保留序列的特征,留一部分重要的,忘记一部分不重要的。距离很远地方的序列部分,虽然没有可能留下所有信息,也可以留下一部分,这和一个sigmoid值有关,如果为1就是留下全部信息,0就是都忘记,都不留。假如是0~1之间的值,就对表示信息的向量相乘,就表示留这么多的信息。可以理解为0.2时,相乘后就表示向量的20%留下,80%忘记。(这一点可能是LSTM的核心,只是通俗的表达,我的理解是这样,这样比较好理解,但可能不太科学)


下面讲一下一般RNN和LSTM有何不同。



看这幅图,可以看出RNN隐层的操作比较简单,LSTM的操作比较复杂,就是这样看上去比较复杂的操作,才实现了记忆重要的,忘记不重要的。



看过一些LSTM的都知道,里面有三个门层,分别是forget gate遗忘门;input gate输入门;output gate输出门。

这里是上图中图标的意思。


下面看每个门的作用,时刻记住保留重要的,忘记不重要的

上面三个门,基本对应了三个操作。

  1. 决定我们会从细胞状态中丢弃什么信息



焦点放在红色边框包住的内容。h(t-1)是上一个输出的信息,经过sigmoid函数后,h(t-1)就会保留一些,忘记一些。同时也保留了xt的一部分,忘记了一部分。



  1. 确定哪些新的信息留在细胞状态中,并更新细胞状态



注意图中的箭头指向,以及数据信息的流动情况,就很容易看懂。


  1. 确定输出





对照这些图,对于理解LSTM的三个gate 层,是比较好理解的。以上内容,仅仅是自己的理解,看之前一定要阅读文章开头附上的链接里面的博客。

http://www.jianshu.com/p/9dc9f41f0b29


说明:以上的截图都来自这个博客,这个对于初学者来说是个好的入门材料,认真看一遍,应该会对LSTM有很好的理解的。
















  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值