浅谈LSTM(学习笔记)

一.循环神经网络(Recurrent Neural Networks)

长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所以在介绍LSTM前我们先来说说RNN。

很多时候,人对一个问题的思考不会完全从头开始。比如我们看电影时,我们会根据之前看到的电影情节来理解或推理后面的电影情节,在我们理解后面的电影情节时,是与之前看过的电影情节相联系的,而不是完全忘记前面的情节而重新思考的。

传统的神经网络并不能做到这一点,这是在对这种序列信息(如语音)进行预测时的一个缺点。比如你想对电影中的每个片段去做事件分类,传统的神经网络是很难通过利用前面的事件信息来对后面事件进行分类。

而循环神经网络(RNNs)可以通过不停的将信息循环操作,保证信息持续存在,从而解决上述问题。RNNs如下图所示

在这里插入图片描述
A是一组神经网络,它的工作是不停的接收Xt并且输出ht。从图中可看出A允许将信息不停的再内部循环,这样使得它可以保证每一步的计算都保存以前的信息。

或许这样还是不好理解,我们将RNNs的自循环结构展开,如下图所示:

在这里插入图片描述

这种链式的结构揭示了RNNs与序列和列表类型的数据密切相关。好像他们生来就是为了处理序列类型数据的。

在过去的几年里,RNNs在语音识别、文字建模、翻译、字幕等领域有很成功的应用,很多成功的案例都有一个共性,就是都用了一种叫LSTMs的特殊的RNNs网络结构。下面就来看看什么是LSTMs。

二.LSTM

长依赖存在的问题

从前面我们的介绍中可看出:RNNs理论上是可以将以前的信息与当前的任务进行连接,但是它们并非一定能做到这一点。

有时候我们需要利用近期的信息来执行来处理当前的任务。例如,用一个语言模型通过利用以前的文字信息来预测下一个文字。如果我们需要预测“the clouds are in the sky”这句话的最后一个字。此时我们不需要其他信息,通过前面的信息就能预测出来,此时相关信息与需要该信息的位置距离较近,RNNs能够学习利用以前的信息来对当前任务进行相应的操作。如下图所示通过输入的x0、x1来预测h3
在这里插入图片描述
若现在有个更复杂的任务:让语言模型通过先前的信息预测下面这句话的最后一个字。
I grew up in France… I speak fluent French.”

通过以前文字语境可以预测出最后一个字是某种语言,但是要猜测出French,要根据之前的France语境。因为这次的有用信息与需要进行处理信息的地方之间的距离较远,这样容易导致RNNs不能学习到有用的信息,最终推导的任务可能失败。如下图所示。

在这里插入图片描述
LSMT网络
LSTM网络是一种特殊的RNN网络,是用来解决长依赖问题的,目前仍被广泛应用。

所有循环神经网络都具有神经网络的重复模块链的形式。 在标准的RNN中,该重复模块将具有非常简单的结构,例如单个tanh层。标准的RNN网络如下图所示
在这里插入图片描述
LSTMs也具有这种链式结构,但是它的重复单元不同于标准RNN网络里的单元只有一个网络层,它的内部有四个网络层。LSTMs的结构如下图所示。
在这里插入图片描述
我们来来理解一下图中符号的意义:
在这里插入图片描述图中黄色类似于CNN里的激活函数操作,粉色圆圈表示点操作,单箭头表示数据流向,箭头合并表示向量的合并(concat)操作,箭头分叉表示向量的拷贝操作

LSTMs的核心思想
LSTMs的核心是细胞状态,用贯穿细胞的水平线表示。

细胞状态像传送带一样。它贯穿整个细胞却只有很少的分支,这样能保证信息不变的流过整个RNNs。细胞状态如下图所示
在这里插入图片描述
LSTM网络能通过一种被称为门的结构对细胞状态进行删除或者添加信息。

门能够有选择性的决定让哪些信息通过。其实门的结构很简单,就是一个sigmoid层和一个点乘操作的组合。如下图所示:

在这里插入图片描述
sigmoid层的输出是0-1的值,这决定了有多少信息能通过sigmoid层

ps:0表示不能通过,1表示能通过

前面提到LSTM由三个门来控制细胞状态,这三个门分别称为忘记门、输入门和输出门。

忘记门:LSTM的第一步就是决定细胞状态需要丢弃哪些信息。这部分操作是通过一个称为忘记门的sigmoid单元来处理的。它通过查看ht-1和xt的信息来输出一个0-1间的向量,该向量的值决定了细胞状态Ct-1的哪些信息保留或丢弃多少。

ps:0表示不保留,1表示保留(结构如下图)

在这里插入图片描述

输入门:下一步是决定给细胞状态添加哪些新的信息。这一步又分为两个步骤,首先,利用ht−1和Xt通过一个称为输入门的操作来决定更新哪些信息。然后利用ht−1和Xt通过一个tanh层得到新的候选细胞信息C˜t,这些信息可能会被更新到细胞信息中。这两步描述如下图所示。
在这里插入图片描述
下面将更新旧的细胞信息Ct−1,变为新的细胞信息Ct。

更新规则:通过忘记门选择忘记旧细胞信息的一部分,通过输入门选择添加候选细胞信息C˜t的一部分得到新的细胞信息Ct。更新操作如下图所示
在这里插入图片描述
输出门:更新完细胞状态后需要根据输入的ht-1和Xt​来判断输出细胞的哪些状态特征,这里需要将输入经过一个称为输出门的sigmoid层得到判断条件,然后将细胞状态经过tanh层得到一个-1~1之间值的向量,该向量与输出门得到的判断条件相乘就得到了最终该RNN单元的输出。该步骤如下图所示
在这里插入图片描述
还是拿语言模型来举例说明,在预测动词形式的时候,我们需要通过输入的主语是单数还是复数来推断输出门输出的预测动词是单数形式还是复数形式。

当然LSTM还有很多变种,这里我们就不一一讨论了,感兴趣的小伙伴可以去看看原文大佬的文章

参考链接:https://blog.csdn.net/liuxiaoheng1992/article/details/90478588

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值