长短期记忆网络(Long Short-Term Memory networks

目录
1 循环神经网络
2长依赖存在的问题
3LSTM
4LSTM背后的核心理念
5一步步的拆解LSTM
5. gate忘记门(遗忘门)
5. gate输入门
5.3更新上一个状态值Ct?1
5.4 输出门 gate
6 LSTM的变种
6.
6.2耦合的忘记和输入门
6.3门控循环单元GRU
中使用LSTM层时设置的units参数是什么
8 LSTM 反向传播
9LSTM为什么可以解决梯度消失的问题?
1 循环神经网络
人类针对每个问题的思考,一般不会是完全的从头开始思考 。正如当你阅读这篇译文的时候,你会根据已经阅读过的内容来对后面的内容进行理解,你不会把之前的东西都丢掉从头进行思考,你对内容的理解是贯穿的 。
传统的神经网络做不到这一点,而这似乎是一个主要的缺点 。例如,假设您想对电影中的每个事件进行分类 。我们无法想象传统神经网络如何能够利用前面的场景去干预后面的预测 。
幸好循环神经网络解决了这个问题,它们是具有循环的网络,允许信息持续存在,示意图如下 。
图1带循环的递归神经网络
在上图中,一组神经网络 A接收某些输入
,并输出一个值
。循环允许信息从网络的一个步骤传递到下一个 。
这些循环使得循环神经网络看起来很神秘 。然而,如果你再多考虑一下,你就会发现其实它和传统的神经网络并不是完全不同 。一个循环神经网络可以被认为是同一个网络的多个副本,每一个都传递一个消息给后继者 。我们考虑一下如果将循环展开会发生什么:(示意如下)
图2 循环神经网络的展开式
这种链状特征揭示了循环神经网络与序列和列表密切相关 。它们是用于此类数据的自然神经网络结构 。
在过去的几年里,RNN应在语音识别、语言建模、翻译,图像字幕等各种问题上取得了巨大成功 。在 的这篇博文——RNN的难以理解的有效性(Theof)中讨论了RNN取得的惊人成果,他们真的很神奇
这些成功的案例的共同点就是都是用了LSTM,这是一种非常特殊的循环神经网络,对于许多任务来说,它们比基准版本好的多 。几乎所有令人兴奋的结果都是基于循环神经网络实现的,这篇文章将探讨这些LSTM,带你解开LSTM的神秘面纱 。
2长依赖存在的问题
循环神经网络的设计初衷之一就是能够捕获长距离输入之间的依赖 。从结构上来看,循环神经网络也理应能够做到这一点 。然而实践发现,使用BPTT算法学习的循环神经网络并不能成功捕捉到长距离的依赖关系,这一现象主要源于深度神经网络中的梯度消失 。
有时,为了处理当前的任务,我们只需要查看最近的信息 。例如,考虑一种语言模型,该模型根据前面的词语来预测下一个单词 。如果我们试图预测“theare in the sky”的最后一个单词,我们不需要任何其他的语境信息——下一个单词显然是sky 。在相关信息和需要该信息的距离较近的时候,RNN能够学会去利用历史信息 。
图3
但也有需要更多上下文的情况 。考虑尝试预测文本中的最后一个单词“I grew up in … I speak.” 。最近的信息表明,下一个单词可能是一种语言的名称,但如果我们想缩范围确定那种语言,我们需要从前面获取法国的背景 。相关信息和需要该信息的地方的距离变得非常大的情况是很可能的 。
不幸的是,随着距离的增加,RNN无法有效的利用历史信息 。
图4
在理论上,RNN绝对有能力处理这样的“长依赖”问题 。人们可以仔细挑选参数来解决这种形式的问题 。可悲的是,在实践中,RNN似乎无法学习到这些特征 。和,曾经深入的研究过这个问题,他们发现一些根本性的原因,能够解释RNN为什么不work 。LSTM没有这个问题!