【译】理解LSTM网络,RNN入门材料

原文

?LSTM中C和h的作用,C:internal core state, h:exposed state
传统的RNN中,每个节点的输出和传入下个节点的状态信息是相同的,所以只有一个state,但是在LSTM中,从C(internal core state)到h(exposed state)还要经过一个output gate过滤,所以有两个state,只不过通常都使用h。

循环神经网络

人类的思考具有延续性,正如你在读这些文字的时候,并不是从零开始的,你在之前对这些文字就有了一些理解。
传统的神经网络,例如ANN, CNN等,并不能在处理当前问题时参考之前的经验,即没有记忆性。举例来说,当你想要对一部电影的每一个事件进行分类时,传统的神经网络无法利用之前的信息来推断当前事件。
循环神经网络(Recurrent neural networks)可以解决这个问题,即让模型具有记忆性,在处理当前问题时可以参考之前的信息,它们的网络结构中具有循环结构,可以保存信息。
图片描述
在上面这幅图中,神经网络A以 xt 为输入,以 ht 为输出,网络中的循环结构使得信息可以在网络中传递。
这些循环结构可能使神经网络很难理解,但实际上它们和普通的神经网络没什么区别,RNN可以认为是一个相同网络的的多次复制,每一个部分都向下一个部分传递信息。把循环展开之后如下图:

RNN的展开
这种链式结构说明RNN与序列和列表密切相关,序列形式的数据非常适合这种结构的神经网络。
在过去的几年中它们应用广泛:语音识别,语言建模,机器翻译和图像描述等,更多的应用可参考Andrej Karpathy的博文
RNN成功的关键在于使用了LSTM,一种特殊的RNN,它的表现要强于传统的RNN,也是这篇博客主要介绍的东西。

长期依赖的问题

RNN最大的优势就在于可以利用之前的信息处理当前问题,比如利用电影之前的画面处理当前画面,那么RNN真的可以做到这些吗?这得看看情况。
有时我们只需要近期的信息就可以处理当前问题,即不需要追溯太久,例如,考虑一个根据之前的单词预测下一个单词的语言模型,如果我们想要预测“the clouds are in the sky”这句话的最后一个单词,我们不需要其他额外的信息——很明显最后一个单词就是sky,在这种情况下,需要预测的东西和预测它所需要的信息之间的间隔很小,RNN可以学会如何利用这些信息。
这里写图片描述
但是,在有些情况下我们需要更多的信息,例如在预测“I grew up in France… I speak fluent French”这句话的最后一个单词时,附近的信息显示这个单词可能是一种语言,但是想要确定是哪种语言则需要France的信息,这个之间的距离就远了一些,而这个距离可能距离非常远。
不幸的是对于传统的RNN来说,随着距离的增大连接这些信息会越来越难。
这里写图片描述
理论上,RNN可以处理“长期依赖”的问题,人们可以精心的选择它的参数来处理这种简单的问题,遗憾的是实际上RNN无法自己学会这些参数的设置,Hochreiter (1991) [German] 和 Bengio, et al. (1994)证明了RNN这些问题的根本原因。
幸运的是LSTM并不存在这样的问题。

LSTM网络

LSTM(Long Short Term Memory networks)是一种特殊的RNN,它可以自己学习到长期依赖的问题,它是由Hochreiter & Schmidhuber (1997)发明的,经过多年的优化和推广,在很多问题上都表现很好,并且被广泛使用。
LSTM就是为了解决长期依赖的问题而设计的,对信息的长期记忆是它们的默认属性,并不需要特别努力的学习。
在所有的RNN中都是一串重复的神经网络,在最传统的RNN中重复的模块非常简单,比如只有一个tanh层的形式。
这里写图片描述
LSTM也具有这种链式结构,但是他们重复的模块并不相同,有四个隐藏层进行交互。
这里写图片描述
先不必担心这里面的细节,首先了解一下将会用到的符号。
这里写图片描述
在上面这幅图中,每一条线都表示一整个向量,并且从流出的节点被送到流入的节点。粉红色的圆圈表示对向量进行逐元素的运算,比如向量加法。黄色的方框是学出来的神经网络层。汇聚的线条表示数据的串联,而分叉的线条表示数据被拷贝然后分发到不同的位置。

LSTM的核心思想

LSTM的关键是cell的状态,图中最上面横着的直线。
cell状态的更迭有一点像传送带的输送,它随着整个模块链传递,只有一些线性的变化,这使得信息流在传递中不会发生改变。
这里写图片描述
在叫做gate的结构的控制下,LSTM可以向cell中添加和移除信息。
gate使用中控制消息传递的通道,它由一个sigmoid层和一个逐元素乘法构成。
这里写图片描述
sigmoid层的输出介于0,1之间,表示对每个component放行多少信息,0表示“禁止通行”,1表示完全通过。
LSTM中有三个gate,用于保护和控制cell的状态。

LSTM的运行步骤

第一步就是决定需要从之前的cell状态中移除什么信息,这是由一个叫做”forget gate layer”的sigmoid层实现的,它的输入是 ht1xt ,然后对cell状态 Ct1 中的每一个元素都输出一个介于0,1之间的数,又来表示“遗忘”多少,0表示完全忘记,1表示完全记住。
然后我们回到预测单词的例子中,在这个问题中,cell状态可能记住主语的性别,这样才能预测正确的代词。当我们遇见新的主语时就需要忘记之前的主语。
这里写图片描述
下一步就是决定在cell中存储什么新的信息,这里有两部分,首先一个叫做“input gate layer”的sigmoid层决定我们更新哪个信息,然后,一个tanh层用来创建新的候选值 C~t ,它可以被添加到cell的状态中,下一步,我们将结合两者对状态进行更新。
在我们的语言模型中,我们想要添加新的主语的性别来替换之前的主语性别。
这里写图片描述
现在,就要把之前cell的状态 Ct1 更新为 Ct ,具体的,我们使用 ft 与旧状态逐元素相乘决定遗忘什么,然后加上 itC~t ,在语言模型的例子中,上述的过程就是把旧的性别信息换成新的性别信息的过程。
这里写图片描述
最后,我们需要决定我们将输出什么,输出将基于我们cell的状态,但是会进行一些过滤,首先,我们使用一个sigmoid层(输出 ot )决定cell的哪一个部分将会输出。然后,我们计算 tanh(Ct) (0,1之间),并把它与 ot 相乘,这样我们只输出了我们想要输出的信息。
对于语言模型的例子,由于模型刚刚看见了一个主语,它可能会输出与动词有关的信息,以便在需要的时候产生正确的动词。例如,它可能会输出主语是单数还是复数,所以如果接下来要产生一个动词,那么就知道该选择什么样的词形。
这里写图片描述

LSTM的变种

上面所说的是最基本的LSTM,大多数paper中的应用都会有一些变化,虽然变化不大,但还是有必要进行一些介绍。
Gers和Schmidhuber(2000)提出了一种常用的 LSTM 变种,它加入了“窥视孔连接”(peephole connections),这使得各个门的神经网络层能够看见细胞状态。
这里写图片描述
上图中为所有的gate加入了窥视孔,但是在许多论文中只会为部分的gate增加窥视孔。

另外一个变种是把forget gate和input gate合并。不同于分别决定哪些部分要被遗忘,哪些部分需要加入新信息,我们现在同时作出决定。我们只遗忘那些需要被更新的部分,(或者说)我们只更新那些被遗忘掉的部分。
这里写图片描述

Cho等人(2014)提出了一种改动较大的 LSTM 是门循环单元(Gated Recurrent Unit),也被简称为 GRU。它把遗忘门和输入门 合并成一个“更新门”(update gate)。它还把细胞状态和隐层状态合并,然后有一些其它改动。最终的模型比标准的 LSTM 简单,并且变得越来越流行。
这里写图片描述
上面提到的只是一些 LSTM 的著名变种。除此之外还有一些,比如 Yao等人(2015) 提出的带有深度门的 RNN(Depth Gated RNNs)。还存在着一些处理长期依赖的不同方法,比如 Koutnik等人(2014) 提出的发条 RNN(Clockwork RNNs)。

哪一种变种是最好的呢?这些改动有什么用处吗?Gref等人(2015) 对流行的变种做了一个很好的比较,发现它们其实是一样的7。 Jozefowicz等人(2015)对超过一万种 RNN 结构进行测试,发现有一些结构在某个任务下会比 LSTM 效果好些。

结论

LSTM确实在很多问题上都表现很好。
LSTM对于传统的RNN来说确实是一个很大的进步,因为它的记忆相比之前的RNN来说更加灵活,那么我们自然会问,还可以再进一步吗?研究界的共识是:“当然!下一个突破口就是注意力(attention)机制!”核心思想就是让 RNN 的每一步都从一个大的信息集合中挑选一部分信息。比如,如果要用 RNN 来对一张图片产生一句话的描述,可以让它在生成每一个单词的时候都只关注图片的某一部分。实际上, Xu等人(2015)就是这么做的——如果你想研究注意力机制,这可能是一个有趣的起点!还有许多已有的工作是从注意力的角度考虑的,而且似乎有更多的工作与注意力机制有关…
注意力机制并不是 RNN 研究的唯一分支。例如,Kalchbrenner等人(2015) 提出的网格 LSTM(Grid LSTMs)也是一个很有前途的工作。把 RNN 用于生成式模型——例如 Gregor等人(2015),Chung等人(2015),和 Bayer与Osendorfer(2015) 的工作看起来都很有趣。过去的几年是循环神经网络发展的黄金时期,而接下来的几年很有可能更是如此!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值