专栏首页算法channel深度学习|理解LSTM网络(前篇)

深度学习|理解LSTM网络(前篇)

01

回顾

近两天推送介绍了CNN网络,关于这部分的介绍,请参考:

深度学习|卷积神经网络(CNN)介绍(前篇)

深度学习|卷积神经网络(CNN)介绍(后篇)

CNN网络在图像处理被广泛应用,接下来,介绍另一种在自然语言处理(NLP)和语音识别领域应用广泛的网络:LSTM(Long Short Term Memory),它是RNN网络的一个更具有工程应用的版本。

关于这部分的内容介绍,基本参考:《Understanding LSTM Networks》(http://colah.github.io/posts/2015-08-Understanding-LSTMs/),它深入浅出地对RNN和LSTM,及近几年出现的几个LSTM版本做出一些分析,在这里感谢这篇文章的作者分享!

02

RNN(Recurrent Neural Networks)

我们每时每刻几乎都不会从零开始思考,就像你理解当前这篇文章的每一个词,一定是基于之前的所学。 你不可能抛弃一切,从头开始再想一遍。你的思想具有持续性。

传统的神经网络,在这方面,存在明显的缺陷。例如,在一部电影中,正在上演的画面属于哪一类别,普通的神经网络不能基于以前发生的事情推断之后即将发生什么。RNN解决了这个问题,它们是带有环的网络,使得信息可持续传播成为可能,如下图所示(未展开的图形):一连串的节点A,会接受输入 xt,输出 ht 。正是这个环使得信息从网络的一个时步传递到下一个时步。

这些时步使得RNN看起来有些高深莫测。但是,如果再细想一下,可以看出它们与普通的神经网络并没有那么大的不同。RNN可以看做同一个神经元节点的多个副本,每一个传播信息到后一个。如果我们展开上图的那个环,会得到如下的时序图:

从上图可以看出,RNN是一系列时序图,它们是天生的适合分析带有时序相关的神经网络,每个单元不仅输出 ht,还会输出当前单元的状态Ct到下一个单元中(正是借助这个链,实现了对之前信息的记忆)。在过去的几年中,成功运用RNNs到很多实际问题中,例如,语音识别,语言模型,翻译,图像标题识别... 对RNNs的成功应用实际上都使用了一种它的特殊版本:LSTMs,它在实践中表明比标准的RNN更成功!几乎所有的令人兴奋的结果都是基于LSTMs.

03

Long-Term 依赖问题

RNNs吸引人的地方之一便是它们或许能够对之前的信息和现在的任务联系起来,例如,应用之前的视频信息或许能推理出当前的视频帧。假如RNNs能做到,它们就会非常有用了。但是,它们会吗?这要视情况而定!

有时,我们仅仅需要理解最近的信息就能解决当前的任务。比如,考虑一个语言模型,基于之前的预测下一个词,比如,我们正在预测句子“ the clouds are in the ___”的最后一个词,我们无需进一步的上文信息,仅仅在这句话中就可以推理出这个词很可能为 sky。对于这类相关信息和需要填入的词的距离很近时,RNNs可以借助如此近的上文学到正确结果,如下图所示,输出 h3与h0 的距离很近。

但是,也有一些情况,我们需要更远距离的上下文信息。考虑,我们正在预测某个词,比如文章如下:

I grew up in China, and my family has five members: parents, sister and little brother. My father once worked in a news press and after that he went to an university to be a professor in computer engineering. And my mother looks at my little brother at home and my sister, working at a software company, and I both feel she is a great mother. Also, I am studying in a junior school and could speak fluent ____.

可以看出填入的词根据文章开头的词 China,推断出为Chinese,但是这个事实依据与要填入的距离还是比较远吧,对于这类推断,RNNs 不能根据已有信息学到正确的结果。理论上,RNNs是绝对能解决这种 Long-term依赖的问题,只要我们仔细认真地调参以此来解决这类问题。但是,实践表明,这是非常难的,几乎不能学到。此时,LSTMs 具有专门解决此类问题的能力。

04

LSTM网络简介

Long Short Term Memory 网络,通常称为 LSTMs,是一个特殊的RNN,能够学习 Long-term 依赖问题。由 Hochreiter 和 Schmidhuber 在 1997年首先提出,近几年被很多学者优化,并广泛应用。

在理解LSTM网络的工作原理前,我们先看下标准的RNN是如何工作的,如下图所示,它首先是结构重复的单元组成,每个单元仅有一层 tanh层组成,将xt和ht-1联合加权并经过tanh激活函数输出到下一个时序,并且每个单元的隐藏状态Ct 与 ht相等。

顺便温习下 tanh 函数,

它的取值范围为-1~1:

LSTMs也有相似的结构,但是单元与RNN的不同,结构相对复杂,它有4个层组成,如下所示,

要想明白这4个层的原理,先要搞清楚几个数据流动的表示图,如下所示:

05

LSTM网络的核心思想

对LSTM理解的关键是要关注 cell 状态,也就是示意图中的水平线,可以看到这个单元(cell)的上一个状态为 Ct-1,经过这个单元运算后,输出的状态为 Ct,LSTMs正是靠这个链条实现了Long-term 记忆。是不是对之前所有的上文信息简单的累积呢?如果是这样,或许就不用底部那些层次结构了。一般的,LSTM不仅需要具备向这个链条上添加之前信息的能力,还得具备移除信息的能力,借助“门”结构实现了这个功能。

门结构怎么具备了这种信息过滤的功能呢?它是由 sigmoid神经元层和按照点的乘法操作组成的,如下所示:

sigmoid函数的取值范围为0~1,当为0时,也就是不让当前单元的输入xt 的任何信息进入到这个单元的Ct中,如果等于1,意思是全部进入到 Ct 中。

那么,这个单元的除了输出 Ct到下一个单元外,还要输出 ht,输出ht时中间共经历了4个层,这些一步一步地需要怎么理解呢?请看明天的推送。

本文分享自微信公众号 - 算法channel(alg-channel),作者:alg-flody

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-23

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 机器学习|快速排序思想求topk

    01 — Topk by quicksort 问题是求出数据集中,按照某个规则定义的元素大小,取前k个元素。 为了简化起见,直接求数值型数组的前k个最大元素。...

    double
  • BAT面试题29:*args, **kwargs是什么东西? 为什么会用它?

    用 *args 当不知道要有多少个参数传给函数,或者想把一个列表或者tuple存起来以后传给函数。

    double
  • 强化学习(Reinforcement Learning)

    强化学习(Reinforcement Learning)是机器学习领域的三大分支之一,另外两种是我们熟知的监督学习,和非监督学习方法。

    double
  • 为什么选择使用 OKR 进行项目过程管理

    延续上次讨论的透过 OKR 进行项目过程管理的内容,有位朋友给了反馈,但是碍于回覆的字数有限,无法说明更多,索性整理成一篇文章,欢迎大家一起讨论。

    Fundebug
  • 我的2017OKR - 年中回顾

    自从订阅了吴军老师的《硅谷来信》之后,对其中一篇介绍Google的目标管理方法OKR的文章记忆犹新。想到自己喜欢在每年年初的时候给自己定制一些规划,于是乎了解了...

    Edison Zhou
  • 一种先分割后分类的两阶段同步端到端缺陷检测方法

    论文地址:https://arxiv.org/pdf/2007.07676.pdf

    AI算法修炼营
  • GCloud的设计目的

    提高游戏服务器端逻辑的开发效率 ? 游戏服务器端有三个常用的典型功能,几乎每个游戏都要反复实现的。而这几个功能,都会符合一些最佳建模和最佳实践: 客户端拉取服...

    韩伟
  • jMeter的Cookie Manager用法

    我们用jMeter测试一些需要登录的API时,需要将登录完成后服务器端颁发的证书作为API调用的输入参数。

    Jerry Wang
  • jMeter的Cookie Manager用法

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    Jerry Wang
  • R|生存分析-结果整理

    根据上面的生存分析的介绍可以大概的了解了生存分析的概念和原理以及KM曲线的绘制。但是生存分析中COX回归的结果不容易直接输出,本文简单的介绍一种...

    西游东行

扫码关注云+社区

领取腾讯云代金券