1.     循环神经网络(RNNs)

人们并不是每一秒都重新开始新的思考的,就像你读这篇论文,你基于以前对词句的认知来理解每一个词,而不是丢掉以前所有的知识,重新开始构思新的想法。人们的思维是持续的。

传统的神经网络是不会持续思考的,这是它的主要短板,例如,想象你要区分一部电影在每个时间段发生那种事件,传统的神经网络(以下称NN)怎样合理的将电影前面发生的事件传递给后面的事件呢?这是不明的。

RNN的网络内部有很多环,可以让信息持续下去。

上面的框图中,神经网络A,其输入是xt,输出是ht,环可以让信息从一步通向网络的下一步。

只看上面的框图,环容易让人迷惑,但是往深处想想,其实,RNN和一般的NN并没有多大的不同。一个RNN可以看做是多个相同NN单元的拷贝连接,每个拷贝都传递一个信息给下一个拷贝。看看把环展开会发生什么:

这个链式的自然展开让RNN很容易变成了NN的序列和链表。它就是NN对每个daa的处理。

将前一个节点的信息传递给下一个的做法是很有效的,最近几年,RNN在不同的领域上都取得了可喜的效果:语音识别、语言模型、机器翻译、图像字幕…。可以看看Andrej Karpathy讨论RNN令人惊喜的成果的博文《The Unresonable Effectiveness of Recurrent Neural Network》。

取得这些成果的重点是,他们都用了LSTM,一种特殊的RNN,在很多应用上,它的效果都比标准的RNN好很多。这篇文章的重点也是将LSTM的。

2.    长序依赖问题

RNN被选择的一个重要原因是它可以连接前面的信息为当前节点所用,就像视频前面的帧可以输入到当前环节来预测或者理解当前帧。如果RNN能真正做到这样,那人它的确非常有用了,但是它真的能吗?实际上,这要视情况而定。

有时,我们只需要就近的一些信息就可以完成当前任务。例如,一个语言模型想要根据前面的词预测最后一个词,如要预测“the clouds are in the sky.”的最后一个词,我们不需要更多的上下文语境就能知道最后一个词是sky。在这个例子中,要用到的语境很简单,RNN可以很好的里面句子前面的词信息得到正确的答案。

但是,也有很多句子需要更多语境,如“I grew up in France. … I speak fluent French.”从临近的语境中可以知道,最后一个词应该是一种语言,但是要知道是哪种语言,必须要前面的“France”,要再往前推。需要的信息和当前点可能隔很远。

不幸的是,随着距离的增加,RNN并不能学习到有用的信息。

理论上,RNNs完全可以掌控“长句依赖”,我们可以人为的选择好的参数嘛。但实践证明,RNN基本不可能学习很长的句子。Hochreiter和Begnio对此有很深的研究,并且找到了根本原因。

而幸运的是,这个问题LSTM不会有。

3.    LSTM 网络

LSTM是一种特殊的RNN,可以解决长句依赖问题。它是由Hochreiter和Schnidhuber最先提出的,后来很多人用它解决了很多问题,现在被广泛的应用。

LSTM被明确的设计出来解决长句依赖问题的。记住长周期有用信息是它的基本功能。

标准的RNNs如下:

LSTM也是这种链式的结构,只是重复单元的内部结构不一样,它不是单独的NN层,而是4个NN,这4个相互影响。

其中,

上面框图中,每一行将一个节点的整个向量输出传递到下一个结点做输入。

4.    LSTM的核心

LSTM的重点是cell state,下面水平这条线从架构的最上面走,cell state就是传送带,整个系统就像一条长直链,只有一些线性关系,信息往下传而不会改变。

LSTM能删去或者增加信息,依靠的而是门结构。门是信息选择性通过的一种手段,门由sigmoid神经层和一个点乘单元组成。

Sigmoid层的输出介于0和1之间,输出为0表示信息完全不通过,输出为1表示信息全部通过。一个LSTM有3个这样的二门来控制和保护cell state。

5.    一步一步看LSTM的工作原理

LSTM的第一步是决定哪些信息丢掉,这个动作是由包含sigmoid层的“forget gate layer”来做的。和输入门中,输出一个介于0和1的值,作用于(前一个cell state),1表示完全保留,0表示完全丢掉。

回到基于前面的词预测最后一个词的语言模型中,如果这个cell state包含有前一个话题的特征,那么正确的代词会被用到(?),如果从一个新的话题开始,那么旧话题的特征将被遗忘掉。

下一步决定哪些新的信息将被加入cell state。这由两部分构成,一是由sigmoid层构成的输入门,它用来决定哪些值要更新。另一个是tanh层构成的新候选值的向量生成器,可能会被输入到cell state里面。

例如,语言模型中,想要把新话题加入到cell state中替换旧话题。

接下来,前一个cellstate(输入到当前cell state)中,前面已经决定了要做什么,这里只需要一次完成就好。

乘(前面讲到的forget gate的输出),然后加上,旧状态加新的候选信息,组成当前cellstate.

在语言模型中,旧话题的某些特征丢掉,加入新话题的一些特征就组成了当前的话题。

最后决定要输出什么。这个输出基于cell state,但会有一个滤波过程。首先,一个sigmoid层决定哪些cell state输出,同时将cell state输入到tanh层,乘sigmoid门的输出,得到最后的输出。

对于语言模型,通过输出信息去关联一个词,这个词就是句子的最后一个词。例如,这个输出指向单话题,还是复合话题,以此来决定下一个词是否成对出现(?)。

6.    LSTM的变体

上面描述的是最常见的标准LSTM,但是不是所有LSTM都是这样子的。事实上,每篇致力于LSTMs的paper所用的版本都有微小的差别,这些差别真的很小,但是其中一些是值得一提的。

其中一种流行的变体由Gers和Schmidhuber提出,加入了“peepholeconnections”。这意味着,cell state也输入到门中来判别哪些丢,哪些加。

上面的框图把所有的门中都加入cell state,但有很多paper只部分加入。

另一种变体用一对互斥的forget和input门,而不是独立决定丢和加。丢和加倍同时决定,也就是丢弃的值用新的输入信息替代。

还有一种更有趣的变体是GRU(GatedRecurrent Unit),由cho提出,它结合forget和input门为一个“update”门。并将cell state和hidden state合并,整个模型比LSTM简单,它也正慢慢流行起来。

以上只是一小部分的LSTM变体,还有很多其他可用的,如Depth Gated RNNs,还有一些完全不同的消除长句依赖的,如koutaik提出的cl

LSTM论文翻译-《Understanding LSTM Networks》相关推荐

  1. 理解LSTM神经网络 ---- 翻译 Understanding LSTM Networks

    理解LSTM神经网络 -- 翻译 Understanding LSTM Networks 这篇文章是Understanding LSTM Networks博客的翻译,仅用于学习和理解.因为个人水平有限 ...

  2. LSTM:《Understanding LSTM Networks》的翻译并解读

    LSTM:<Understanding LSTM Networks>的翻译并解读 目录 Understanding LSTM Networks Recurrent Neural Netwo ...

  3. (译)理解 LSTM 网络 (Understanding LSTM Networks by colah)

    前言:其实之前就已经用过 LSTM 了,是在深度学习框架 keras 上直接用的,但是到现在对LSTM详细的网络结构还是不了解,心里牵挂着难受呀!今天看了 tensorflow 文档上面推荐的这篇博文 ...

  4. 【论文翻译】Squeeze-and-Attention Networks for Semantic Segmentation

    – SAnet 摘要 一.引言 二.相关工作 多尺度上下文 通道注意力 像素组注意力 三.框架 1.SE module 2.SA module 3.SA network 四.实验结果 1.实施 2. ...

  5. 【论文翻译】SlowFast Networks for Video Recognition

    目录 其它参考资料 Abstract 1,Introduction 2,Related Work 3. SlowFast Networks 3.1. Slow pathway 3.2. Fast pa ...

  6. 论文翻译——Feature Pyramid Networks for Object Detection

    摘要: 特征金字塔是识别系统中检测不同尺度目标的基本组成部分.但最近的深度学习对象检测器已经避免了金字塔表示,部分原因是它们需要大量的计算和内存.本文利用深度卷积网络固有的多尺度金字塔层次结构,以额外 ...

  7. 论文翻译:Neural Networks With Few Multiplications

    目录 Abstract 1. Introduction 2.Related Work 3.Binary And Ternary Connect 3.1 BINARY CONNECT REVISITED ...

  8. 【论文笔记】SlowFast Networks for Video Recognition

    目录 1,摘要 2,介绍 3. SlowFast 网络 3.1 Slow路径 3.2 Fast 路径 3.3 横向连接 3.4 网络实现 参考文献 参考 1,摘要 本论文提出了用于视频识别的SlowF ...

  9. 【深度学习论文翻译】基于LSTM深度神经网络的时间序列预测(Time Series Prediction Using LSTM Deep Neural Networks)

    目录 一.前言 二.摘要 三.什么是LSTM神经元? 四.简单正弦波示例 五. 不那么简单的股票市场 六.多维LSTM预测 七.结论 一.前言 最近需要用到时间序列,在网上也找到了一篇相关的文章及源代 ...

最新文章

  1. c#chart背景透明_C# 二
  2. zcmu1550(字符串最小表示法)
  3. 七步从AngularJS菜鸟到专家(7):Routing
  4. 一些实用但不为人知的Unix命令
  5. 贵州全国计算机二级报名官网入口,2019年3月贵州全国计算机二级考试报名入口已开通...
  6. webstorm界面主题
  7. WS2812B全彩LED驱动
  8. class 文件比较
  9. java根据excel中的手机号查询归属地并添加到excel
  10. Activiti结合Modeler 可视化操作界面
  11. 没想到你们是这样的女生……
  12. [NOIP2011] 观光公交解题报告
  13. matlab画微分方程的矢量场图_一维波动方程数值解 Matlab 教程(从入门到出图)——3数值计算的Matlab实现...
  14. 异步电机三相电流滞环矢量控制
  15. pumping lemma 泵引理
  16. 了解软件工程与计算机科学的联系与区别
  17. 斯坦福CS231n李飞飞计算机视觉之线性分类上
  18. 磨金石教育摄影技能干货分享:学会这些视频构图法手机也能拍大片
  19. 根据url导出pdf文件
  20. pytest文档57-计算单元测试代码覆盖率(pytest-cov)

热门文章

  1. impala理论篇之三:impala介绍
  2. impala 基础知识及使用
  3. SQLServer数据库出现“无法访问数据库XXX(object问题修复
  4. java简单搭建分布式架构
  5. Javamail使用IMAP同步QQ自定义文件夹问题
  6. 【结构体】C语言结构体使用教程
  7. Spring-Messaging远程代码执行漏洞复现(CVE-2018-1270)
  8. 鸡啄米VS2010/MFC编程入门教程——学习1初次接触
  9. 中国程序化购买广告解析:RTB/DSP/Ad Exchange/SSP/DMP,思维导图
  10. POJ 3696 神TM数论