理解LSTM网络(整合)Recurrent Neural Networks长期依赖(Long-Term Dependencies)问题LSTM 网络GRU - Gated Recurrent Unit

LSTM 已经在科技领域有了多种应用。基于 LSTM 的系统可以学习翻译语言、控制机器人、图像分析、文档摘要、语音识别图像识别、手写识别、控制聊天机器人、预测疾病、点击率和股票、合成音乐等等任务。下面是自己学习过程中收集的LSTM资料

Recurrent Neural Networks

RNN 是包含循环的网络,允许信息的持久化。

在上面的示例图中,神经网络的模块A,正在读取某个输入 Xt,并输出一个值 ht。循环可以使得信息可以从当前步传递到下一步。 RNN 可以被看做是同一神经网络的多次复制,每个神经网络模块会把消息传递给下一个。所以,如果我们将这个循环展开:

展开的RNN

链式的特征揭示了 RNN 本质上是与序列和列表相关的。他们是对于这类数据的最自然的神经网络架构。

LSTM 是一种特别的 RNN,比标准的 RNN 在很多的任务上都表现得更好。几乎所有的令人振奋的关于 RNN 的结果都是通过 LSTM 达到的。

长期依赖(Long-Term Dependencies)问题

RNN 的关键点之一就是他们可以用来连接先前的信息到当前的任务上,例如使用过去的视频段来推测对当前段的理解。如果 RNN 可以做到这个,他们就变得非常有用。但是真的可以么?答案是,还有很多依赖因素。

有时候,我们仅仅需要知道先前的信息来执行当前的任务。例如,我们有一个语言模型用来基于先前的词来预测下一个词。如果我们试着预测 “the clouds are in the sky” 最后的词,我们并不需要任何其他的上下文 —— 因此下一个词很显然就应该是 sky。在这样的场景中,相关的信息和预测的词位置之间的间隔是非常小的,RNN 可以学会使用先前的信息。

不太长的相关信息和位置间隔

但是同样会有一些更加复杂的场景。假设我们试着去预测“I grew up in France... I speak fluent French”最后的词。当前的信息建议下一个词可能是一种语言的名字,但是如果我们需要弄清楚是什么语言,我们是需要先前提到的离当前位置很远的 France 的上下文的。这说明相关信息和当前预测位置之间的间隔就肯定变得相当的大。

不幸的是,在这个间隔不断增大时,RNN 会丧失学习到连接如此远的信息的能力

相当长的相关信息和位置间隔

在理论上,RNN 绝对可以处理这样的 长期依赖 问题。人们可以仔细挑选参数来解决这类问题中的最初级形式,但在实践中,RNN 肯定不能够成功学习到这些知识。Bengio, et al. (1994)等人对该问题进行了深入的研究,他们发现一些使训练 RNN 变得非常困难的相当根本的原因。

然而,幸运的是,LSTM 并没有这个问题!

LSTM 网络

  • LSTM结构
  • 各种元素的图标
  • 遗忘门:决定让那些信息继续通过这个 cell 这是通过一个叫做“forget gate layer ”的sigmoid 神经层来实现的。它的输入是ht−1和xt,输出是一个数值都在 0,1 之间的向量(向量长度和 cell 的状态 Ct−1 一样),表示让 Ct−1 的各部分信息通过的比重。 0 表示“不让任何信息通过”, 1 表示“让所有信息通过”。

遗忘门 (forget gates)

  • 输入门:决定让多少新的信息加入到 cell 状态 中来 步骤1:一个叫做“input gate layer ”的 sigmoid 层决定哪些信息需要更新;一个 tanh 层生成一个向量,也就是备选的用来更新的内容,Ct~

输入门 (input gates)

有了上述的结构,我们就能够更新 cell 状态了, 即把Ct−1更新为 Ct。 从结构图中应该能一目了然, 首先我们把旧的状态 Ct−1和ft相乘, 把一些不想保留的信息忘掉。然后加上it∗Ct~ 。这部分信息就是我们要添加的新内容。

更新 cell 状态

  • 输出门:决定输出什么值 这个输出主要是依赖于 cell 的状态Ct,但是又不仅仅依赖于 Ct,而是需要经过一个过滤的处理。首先,我们还是使用一个 sigmoid 层来(计算出)决定Ct中的哪部分信息会被输出。接着,我们把Ct通过一个 tanh 层(把数值都归到 -1 和 1 之间),然后把 tanh 层的输出和 sigmoid 层计算出来的权重相乘,这样就得到了最后输出的结果。

输出门 (output gates)

综合感受下:

总览

内容来自:

GRU - Gated Recurrent Unit - 中文直译:门控循环单元

GRU作为LSTM的一种变体,将忘记门和输入门合成了一个单一的更新门。同样还混合了细胞状态和隐藏状态,加诸其他一些改动。最终的模型比标准的 LSTM 模型要简单,也是非常流行的变体。

GRU结构

内容来自:

BiLSTM(Bi-directional LSTM)- 双向LSTM

Bi-LSTM大致的思路是这样的,看图中最下方的输入层,假设一个样本(句子)有10个 timestep (字)的输入 x1,x2,...,x10。 现在有两个相互分离的 LSTMCell:

  1. 对于前向 fw_cell ,样本按照 x1,x2,...,x10 的顺序输入 cell 中,得到第一组状态输出 {h1,h2,...,h10} ;
  2. 对于反向 bw_cell ,样本按照 x10,x9,...,x1 的反序输入 cell 中,得到第二组状态输出 {h10,h9,...,[h1 };
  3. 得到的两组状态输出的每个元素是一个长度为 hidden_size 的向量(一般情况下,h1和h1长度相等)。现在按照下面的形式把两组状态变量拼起来{[h1,h1], [h2,h2], … , [h10,h10]}。
  4. 最后对于每个 timestep 的输入 xt, 都得到一个长度为 2*hidden_size 的状态输出 Ht= [ht,ht]。然后呢,后面处理方式和单向 LSTM 一样。 内容来自:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

VAIN:Attentional Multi-agent Predictive Modeling

Hoshen Y. VAIN: Attentional Multi-agent Predictive Modeling[J]. arXiv preprint a...

39370
来自专栏AI科技大本营的专栏

如何在Python中用LSTM网络进行时间序列预测

Matt MacGillivray 拍摄,保留部分权利 翻译 | AI科技大本营(rgznai100) 长短记忆型递归神经网络拥有学习长观察值序列的潜力。它似...

1.2K40
来自专栏AI科技评论

大会 | CVPR 2018论文解读:真实监控场景中的异常事件检测

AI 科技评论按:本文为上海交通大学林天威为 AI 科技评论撰写的独家稿件,未经许可不得转载。 安防作为近年最热门的计算机视觉研究落地方向,与视频分析研究有着很...

94860
来自专栏AI研习社

通过从零开始实现一个感知机模型,我学到了这些

编者按:本文源自作者 Jean-Nicholas Hould 的个人博客,他是一位来自加拿大蒙特利尔的数据科学家,具有丰富的研发和实践经验。本文节选自作者个人的...

34970
来自专栏机器学习算法与Python学习

长文 | LSTM和循环神经网络基础教程(PDF下载)

目录: 前言 前馈网络回顾 循环网络 时间反向传播BPTT 梯度消失与梯度爆炸 长短期记忆单元(LSTM) 多时间尺度和远距离依赖 门控循环单元GRU LSTM...

554100
来自专栏专知

Tensorflow实战系列:手把手教你使用LSTM进行文本分类(附完整代码)

【导读】专知小组计划近期推出Tensorflow实战系列,计划教大家手把手实战各项子任务。本教程旨在手把手教大家使用Tensorflow构建LSTM进行文本分类...

2.2K90
来自专栏AI科技大本营的专栏

AI 技术讲座精选:Python中使用LSTM网络进行时间序列预测

长短记忆型递归神经网络拥有学习长观察值序列的潜力。 它似乎是实现时间序列预测的完美方法,事实上,它可能就是。 在此教程中,你将学习如何构建解决单步单变量时间序...

48740
来自专栏专知

手把手教你用RNN做情感分析—初学者指南(附代码)

【导读】情感分析是NLP中最常见的应用之一,作者在博文中把情感分析建模成二分类问题,使用端到端的RNN网络建模,用Keras实现,简洁易懂,是学习RNN文本建模...

36650
来自专栏小詹同学

深度学习入门笔记系列 ( 二 )

本系列将分为 8 篇 。今天是第二篇 。主要讲讲 TensorFlow 框架的特点和此系列笔记中涉及到的入门概念 。

12530
来自专栏机器学习算法与Python学习

【源码分享】机器学习之Python支持向量机

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前言 在写代码前,先简单的过一下SV...

464100

扫码关注云+社区

领取腾讯云代金券