首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深入理解RNN与LSTM神经网络

开头语:友情这棵树上只结一个果子,叫做信任。红苹果只留给灌溉果树的人品尝。别的人摘下来尝一口,很可能酸倒了牙。

Recurrent Neural Networks

人类不会每时每刻都开始思考。当你阅读这篇文章时,你会根据你对之前单词的理解来理解每个单词。你不会立刻忘记之前读的所有东西,然后再从头开始思考。你的想法有持久性。

传统的神经网络无法做到这一点,这似乎是其一个主要的缺点。例如,假设您想要对电影中每个时间点发生的事件进行分类。目前尚不清楚传统神经网络如何利用其对电影中先前事件的记录来影响之后发生的事情。

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

深入理解RNN与LSTM神经网络,Recurrent Neural Networks的循环结构

在上图中,一块神经网络A查看一些输入xt并输出一个值ht。循环允许信息从网络的一个步骤传递到下一个步骤。

这个循环使得循环神经网络看起来有点神秘。但是,如果你再想一下,事实证明它们与普通的神经网络并没有什么不同。可以将循环神经网络视为同一网络的多个副本,每个副本都将消息传递给后继者。如果把RNN神经网络展开:

展开的RNNs网络

这种类似链的性质表明,递归神经网络与序列和列表密切相关。它们是用于此类数据的神经网络的自然架构。

他们肯定会被使用!在过去几年中,将RNN应用于各种问题取得了令人难以置信的成功:语音识别,语言建模,翻译,图像字幕……这个列表还在继续。我将讨论使用RNNs可以实现的惊人壮举,以及Andrej Karpathy的博客文章,但他们真的很棒。

这些成功的关键在于使用“LSTM”,这是一种非常特殊的递归神经网络,对于许多任务而言,它比标准版本好得多。几乎所有基于递归神经网络的令人兴奋的结果都是用它们实现的。这篇文章将探讨这些LSTM。

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

RNN的一个吸引力是他们可能能够将先前信息连接到当前任务,例如使用先前的视频帧可能推动对当前帧的理解。如果RNN可以做到这一点,它们将非常有用。但他们可以吗?这取决于很多依赖因素。

有时,我们只需要查看最近的信息来执行当前任务。例如,考虑一种语言模型,试图根据之前的单词预测下一个单词。如果我们试图预测“the clouds are in the [sky]”的最后一个词,我们并不需要任何其他的上下文 - 很明显下一个词将是天空。在这种情况下,如果相关信息与所需信息之间的差距很小,则RNN可以学习使用过去的信息。

但也有一些情况需要更多的背景。考虑尝试预测文本中的最后一个词“我I grew up in France… I speak fluent French.” 最近的信息表明,下一个词可能是一种语言的名称,但如果我们想缩小具体是哪种语言的范围,我们需要从更进一步的背景来看,法国的背景。相关信息与需要变得非常大的点之间的差距是完全可能的。

不幸的是,随着差距的扩大,RNNs无法学习连接信息。

理论上,RNNs绝对能够处理这种“长期依赖性”。人类可以仔细挑选参数来解决这种形式的玩具问题。遗憾的是,在实践中,RNN似乎无法学习它们。 Hochreiter(1991)[德国]和Bengio 等人(1994)对该问题进行了深入探讨。他找到了一些为什么它可能很困难的根本原因。

值得庆幸的是,LSTM没有这个问题!

LSTM Networks

长短期内存网络 - 通常只称为“LSTM” - 是一种特殊的RNN,能够学习长期依赖性。 它们是由Hochreiter&Schmidhuber(1997)介绍的,并且在下面的工作中被许多人精炼和推广。他们在各种各样的问题上工作得非常好,现在被广泛使用。

LSTM明确旨在避免长期依赖性问题。长时间记住信息实际上是他们的默认行为,而不是他们难以学习的东西!

所有递归神经网络都具有神经网络重复模块链的形式。在标准RNN中,该重复模块将具有非常简单的结构,例如单个tanh层。

The repeating module in a standard RNN contains a single layer

LSTM也具有这种类似链的结构,但重复模块具有不同的结构。RNNs只有一个神经网络层,而LSTM只有四个。以一种非常特殊的方式进行交互。

The repeating module in an LSTM contains four interacting layers

不要担心发生了什么的细节。我们将逐步介绍LSTM图。现在,让我们试着对我们将要使用的符号感到满意。

在上图中,每一行都携带一个整个向量,从一个节点的出到其他节点的输入。粉色圆圈表示逐点运算,如矢量加法,而黄色框表示神经网络层。行合并表示连接,而行分叉表示其内容被复制,副本将转移到不同的位置。

The Core Idea Behind LSTMs

LSTM的关键是单元状态,水平线贯穿图的顶部。

电池状态有点像传送带。 它直接沿着整个链运行,只有一些次要的线性交互。 信息很容易沿着它不变地流动。

LSTM具有删除或添加信息到细胞状态的功能,由门(gates)这种结构对这两种操作进行精确的调节。

门是一种控制信息能否通过的方式。 它们由sigmoid形神经网络层和逐点乘法运算组成。

sigmoid层输出0到1之间的数字,描述每个组件应该通过多少信息。 值为零意味着“不让任何东西通过”,而值为1则意味着“让一切都通过!”

LSTM具有三个这样的门,用于保护和控制细胞的状态。

小编写完一篇文章真的很不容易,好歹也是费劲了心思,就算不是最好的,但是肯定是最用心的,各位哥哥姐姐弟弟妹妹们,现编知道你们一定是最善良,最可爱的美男美女,一定会对小编的文章感动的,小编也别无所求,就是给小编点一个小小的关注和赞就行了,一边一定会在这里祝福大家的

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190208A0DT2F00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com