首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习|理解LSTM网络(前篇)

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

作者头像
double
发布2018-04-02 16:12:22
7140
发布2018-04-02 16:12:22
举报
文章被收录于专栏:算法channel算法channel

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个层,这些一步一步地需要怎么理解呢?请看明天的推送。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
语音识别
腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档