RNN之LSTM

注意:本文为学习笔记,大量直接复制于参考文章中的原文字及图片,本篇文章大部分为翻译于Understanding LSTM Networks,英文还可以的建议直接看原文,写的很通俗易懂。

有种比较常见的RNN的隐藏层信息计算方法LSTM(Long-Short-Term-Memories),这种隐藏层的计算方法通过引入门(Gate) 的机制来解决RNN的梯度消失问题,从而学习到长距离依赖。
这里说的隐藏层计算方法指的是如何计算下个时刻的隐藏层信息,标准RNN中计算方法是:

而LSTM可以理解为计算htht的另一种方法。

一、长依赖问题

RNNs最吸引人的地方在于它可能够处理那些需要上文信息的任务,比如说使用之前的视频帧来理解当前帧,就像看电影,你前面的没有看,从中间开始看的话肯定就很多没法理解了对吧。假如RNNs能过做这些,那当然是极好的,但是真的可以吗?这还得看情况。

有时候,我们只需要一些比较近的信息来解决当前的任务。比如说,有这么一个语言模型,想要基于前文信息来预测下一个单词是什么。假如我们想要预测“the clouds are in the sky”中的sky,我们不需要任何下文信息,很显然就应该是sky。在这样的例子里,所需要的上文信息比较少,RNNs可以做到。

但是有时候我们需要更多的上下文信息。比如说我们想要预测这么一个文本“I grew up in France… I speak fluent French.”中的French,这就需要很靠前的一些信息。很不幸的是,对于这种情况,RNNs没办法很好的解决。

理论上,RNNs可以解决长依赖问题。人们可以通过调整参数来解决这类问题。但是实际上,RNNs对于这种距离非常长的,似乎并没有办法解决,这个问题在之前已经被深度探索过了。
庆幸的是,LSTM可以解决这种问题。

二、LSTM Networks

Long Short Term Memory networks,通常被称作LSTMs,是一种特殊的RNN,致力于解决长距离的依赖问题。它可以很好的解决各种问题,现在被广泛使用。LSTMs是明确设计用来解决长依赖问题的。
所有的RNNs都有一些重复的模块。在标准的RNNs中,重复模块只是一个很简单的结构,比如说一个tanh层(一种激活函数,关于tanh层,可以看之前介绍的文章)。


LSTMs也有这种链状结构,但是其中的重复模块更加复杂。相比于标准RNNs中的tanh层,LSTMs模块中可以分为四个部分。


不要担心太复杂没法理解,我们一步一步来看。首先来了解一些我们将会用到的基本概念。


在上面的图示中,每条线都表示着一个向量,从一个节点的output传递到另一个节点的input。粉色圆圈表示点运算,比如说向量之间的加法。黄色的矩形表示已经训练好的神经网络层。合并的线表示合并操作,分开的线表示复制,比如说一个向量被送往两个节点的输入。

三、LSTMs最核心的思想

LSTMs中最重要的是cell state,在下面的图解中最上面的那条水平线传递着。
cell state有点像传送带,它在这个链中传递,只有一些小的线性操作。信息可以很容易的保持不变。

LSTM呢,可以根据gates的结构及设定往cell state里移除或者添加信息。Gates是过滤信息的一种方式。他们由一个sigmoid网络层和一个点乘操作组成。

Sigmoid层输出介于0和1之间的数字,表示让多少信息通过。0表示一点都不让过,1表示全部通过。
一个LSTM有三个那种gate,用来控制cell state。

四、Step-by-Step LSTM Walk Through

第一步是决定我们要从cell state里扔掉哪些信息。这是由一个sigmoid层被称作“forget gate layer”来实现的。它根据h(t-1)和x(t),给C(t-1)中的每个数字输出一个基于0和1之间的数字。1表示保持原样,0表示完全清除掉。
回到我们之前说的预测下一个单词的问题。在这类问题中,cell state里面可能包含一个对象的性别信息,以此来使用正确的代词,是用he还是she。然后当我们遇到了一个新对象,我们就必须忘掉之前的老对象。(有点喜新厌旧的感觉==)

第二步是决定我们要把哪些新信息存储在cell state中。这个过程包括两个部分。首先,一个sigmoid层“input gate layer”决定我们要更新哪些值。其次,一个tanh层产生一个新的候选集的向量C̃(t) ,用来被添加到cell state中。最后,把这两者结合起来对state进行更新。
在语言模型的例子中,我们想要把新对象的性别添加到state中,用来替换老对象的性别。

现在是时候把C(t-1)更新为C(t)了。上文已经说好要怎么做了,我们照做就是。
我们将老状态点乘上f(t)来忘掉一些东西。然后我们加上i(t)*C̃(t),来更新一些状态值。

最后,我们决定要输出什么。这基于我们的cell state,但是也得经过一些过滤。首先,我们用一个sigmoid层来决定我们打算输出cell state的哪些部分。然后,我们将cell state经过一个tanh层(将输出值限定在-1到1之间),最后将其与sigmoid gate的输出相乘。
在刚才所说的语言模型例子,如果它只是看到一个新对象而不知道性别,然后它可能会输出一些和这个和动词相关的信息,以防之后要用到。比如说,可能会输出这个对象是单身还是成对的。所以我们可以依据这个来判断后面出现的一些信息。

五、一些变种

上文所说的是最标准的LSTM。但是并不是所有的LSTM都像上文所有那样。实际上,几乎所有的paper里面的LSTMs都做了一些细微的改动。改动很小,但是这也是值得关注的。
一个流行的变种,添加了“peephole connections”。这意味着gate层可以观测cell state的信息。

另一个流行的变种是使用耦合的“forget gate”和“input gate”。该变种将移除和添加这两种操作联合起来。我们只有在想要输入一些信息的时候才去移除一些信息。我们只有想要移除一些信息的时候才去输入一些信息。

还有一种变化比较大的变种是the Gated Recurrent Unit(GRU)。将“forget gate”和“input gate”合并成一个“update gate”。同时也合并了hidden state和cell state以及其他的一些变动。这个模型比标准LSTM更简单,并且越来越流行。

哪个变种最好呢?这个没有确切的答案,主要看你想要解决哪种问题。

总结

RNNs完成了很多了不起的任务。并且很多是使用LSTMs的。所以说LSTM是很重要的很值得学习的,但是有那么多公式,看起来很吓人。所以作者才想要做这么一个教程,一步一步的来解释教授知识。
LSTMs是RNNs发展的重要一步,那么下一大的进步是什么呢?一个大家普遍认同的看法是attention机制。这个idea是说让每一个step的RNN都观测更大集合的信息。具体的就不详细说了,之后再学习总结一下attention机制

参考文章:
CS224d笔记4续——RNN隐藏层计算之GRU和LSTM
Understanding LSTM Networks

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容