循环神经网络

LSTM

Posted by john on March 18, 2018

循环神经网络

  人类不会每一秒都开始思考。当你阅读这篇文章的时候,你理解每一个单词基于你对之前单词的理解。你不会扔掉之前的一切并从头开始思考。你的思考具有持续性。

  传统的神经网络不能做到这点,这看起来是一个主要缺点。举个例子,想象一下你想对电影中的正在发生的事件进行分类。对于传统的神经网络来说,如何利用电影中之前事件的推理去通知下一个是不清楚的。

  循环神经网络解决了这个问题。在它们中有循环的网络,允许信息保存。

RNN-rolled

Recurrent Neural Networks have loops

  在上图中,一组神经网络,A,输入,输出A循环信息从网络的一步传输到下一步。

  这些循环让循环神经网络看起来有点神秘。然而,你多想一点,就会发现它不是完全不同于普通的神经网络。一个循环神经网络可以被认为是同样网路的一些复制,每一个传递消息到下一个。如果我们展开循环看一下会发生什么。

RNN-rolled

An unrolled recurrent neural network

  链状的结构揭示了循环神经网络同序列和列表是密切联系的。它们是神经网络使用在这种结构上面的自然结构。

  它们当然被使用了!在过去的几年里,应用RNNs在各种问题上面取得了惊人的成功:语音识别、语言建模、翻译、图像描述等等。这些成功的关键是使用LSTMs,这是一种非常特殊的递归神经网络,它适用于许多人物,比标准版本要好的多。几乎所有基于递归神经网络的令人兴奋的结果都是通过它们实现的。这篇主要将探讨这些LSTMs。

  RNN的缺点是它不太容易解决长期依赖的问题。LSTM不存在这个问题。

LSTM网络

  LSTM是长短期记忆网络的简称,是一种特殊的RNN,用于学习长期依赖。LSTM的重复结构如下图所示:

LSTM结构

The repeating module is an LSTM contains four interacting layers

LSTMs的核心关键是细胞状态,图片上方移动的横线。细胞状态有点像传送带。它沿着整个链向下移动,带有一些小的相互作用。LSTM通过一种叫做门的结构去控制信息从细胞状态中加入或者移除。门是一种选择性地让信息通过的方式,它们是由sigmoid神经网络层和逐点乘法运算组成。sigmoid层输出的值在0到1之间,描述了多少成分将被通过。值为0意味着不让任何东西通过,值为1意味着让任何东西通过。在LSTM中有三种这样的门去控制和保护细胞状态。

LSTM的具体计算步骤

  LSTM的第一步是决定从细胞状态中扔掉多少信息。这个决定是由一个叫做遗忘门的sigmoid层决定的。在细胞状态中,输入,然后输出一个0到1之间的值。其中1表示完全保留它,0表示完全扔掉。如下图所示:

遗忘门结构

  LSTM的第二步是决定在细胞状态中将储存什么新的信息。包含两个部分。首先,一个叫做输入门的sigmoid层决定什么值将被更新。然后,一个tanh层创建一个新的候选值的向量,加到新的细胞状态中。在下一步中,我们将两者结合去更新状态。如下图所示:

输入门结构

  LSTM的第三步是将旧状态更新到。如下图所示:

更新状态

  LSTM的第四步是决定我们将输出什么,也分为两小步。第一步,一个sigmoid层决定细胞状态的那些部分将被输出。然后,通过一个tanh将细胞状态输出到-1到1之间,再乘以第一步的输出。如下图所示:

输出部分