「翻译」理解长短期记忆网络(LSTM)

原博文:Understanding LSTM Networks

循环神经网络(RNNs,Recurrent Neural Networks)

于人类而言,我们不会时时刻刻都从零开始思考,正如你阅读本文时,会依据上文来理解当前词,而绝不会丢弃脑中已有信息从零思考每个遇到的词,即思维具有延续性。
传统神经网络无此能力,此为传统神经网络之主要短处。比如你想使用神经网络对电影中每刻发生的事归类,但我们看不出传统神经网络如何根据影片中过去的信息推测未来事件。

对于此类问题,循环神经网络是一个可行的办法。循环神经网络内含循环结构,为信息的延续提供了可能:

循环神经网络(RNN)具有循环结构
在上图中,神经网络模块 A A A 接收 X t X_t Xt 输出 Y t Y_t Yt 。网络里的循环结构使信息能从当前时间步传递到下一时间步。

循环结构使RNN看起来神秘了许多,但若多想一下便会发现它与普通神经网络相差不大。我们可视RNN为同一网络的多个副本,各副本均向其后继传递信息。想象下展开其循环后呈何模样:
展开循环神经网络

这种链式特质表明循环神经网络与序列密切相关,即此神经网络结构天然适合处理序列数据。在过去几年里,RNN被成功地应用于各种问题:语音识别、语言建模、机器翻译、图像文本生成等。我们把这方面的讨论留给 Andrej Karpathy 的博文循环神经网络那匪夷所思的有效性

RNN所取得的几乎所有喜人成绩大都归功于长短期记忆网络(LSTMs)。LSTMs 是一类特殊的循环神经网络,在许多任务上的表现远超于标准RNN。

长程依赖(Long Term Dependencies)

循环神经网络的吸引人之处在于它能把过去的信息同当下任务相关联,如在视频理解上利用先前帧理解当下帧。循环神经网络若真能做到此事,则其价值不可估量,但真的能吗?

有时,我们只需利用少量邻近信息便可完成一项任务。如根据已有词推测下一词的语言模型:对于 “The clouds are in the sky”,我们只需少量上文信息即可推测出下一词为 sky。在这种信息所在处与信息被需要处相距很近的情形下,RNN 具有利用过去的邻近信息处理当前任务的能力。

展开后的循环神经网络
但实际中仍存在一些需要更多上下文信息才能进行有效推断的情形,如预测语句“I grew up in France… I speak fluent French.”中最后那个单词:邻近信息显示下个词大概率是一门语言,但若要缩小语言甄选范围,则需更早的信息。此时,信息所在处和需要该信息的位置相距较远。不幸的是,距离越远,其信息越难被 RNN 学得。

相关信息较远时的循环神经网络

按理说,循环神经网络完全有能力处理此类长程依赖。但,虽说人类自身能通过仔细甄选参数来解决此问题,实际中的循环神经网络却极难学到这些参数。Hochreiter (1991) [German]Bengio, et al. (1994) 在深入研究该问题后揭示了造成这种现象的基本原因。

长短期记忆网络(LSTMs,Long Short Term Memory Networks)

长短期记忆网络是一种特殊的、能学到长程依赖的循环神经网络网络。它在文章 Hochreiter & Schmidhuber (1997) 中首次被引入,并在后来被改进和推广。长短期记忆网络在很多问题上都表现得极其卓越,且已被广泛应用于各领域。

LSTM的设计初衷便是解决长程依赖问题:它把记忆长程信息作为其默认行为,从而解决了标准RNN对长程依赖学而不得的问题!

所有RNN网络都表现出重复神经网络模块的链式结构(展开后)。在标准RNN中,该重复模块的结构极其简单(如只一个 tanh ⁡ \tanh tanh 层):
标准RNN中的 tanh 层
LSTM亦有此链式结构,但其重复模块的结构更复杂,含有多达四个神经网络层,并以一种特殊的方式进行交互。
展开后的LSTM 网络
现在无须担心细节,接下来我们将逐步分析上面的LSTM原理图。首先熟悉下即将使用的符号:

  • 黄色图形:表示要进行学习的神经网络层;
  • 粉色图形:表示元素级操作,如向量加法;
  • 箭头:携带一整个向量,从一个结点输出并输入到下一结点;
  • 汇合线:表示拼接;
  • 分岔线:表示去往不同位置的副本。

长短期记忆网络背后的核心思想

LSTM网络的核心是细胞状态(Cell State),即下图中横贯上部的那条线。

细胞状态
细胞状态类似一条传送带,贯穿整个链式结构,期间仅发生微弱的线性交互。借助细胞状态,我们很容易就能把信息延续下去。

LSTM可通过精心调节“门”这一结构来更新细胞里的信息:删除旧信息,加入新信息。“门”具有使信息选择性通过的能力,由一个 s i g m o i d \rm sigmoid sigmoid 神经层和一个点乘(元素级乘法)运算组成。
门
s i g m o i d \rm sigmoid sigmoid 函数输出一个区间 ( 0 , 1 ) (0,1) (0,1) 内的值,凭此控制对应元素的通过度: 0 0 0 表示不通; 1 1 1 表示全通。

LSTM配有三个这样的门,以保护和控制细胞状态。

逐步分析长短期记忆网络

LSTM的第一步就是决定要遗忘细胞状态中的哪些信息。此决策由被称为“遗忘门(Forget Gate)”的 s i g m o i d \rm sigmoid sigmoid 网络层做出,它会综合考虑 h t − 1 h_{t-1} ht1 x t x_t xt ,然后为细胞状态 C t − 1 C_{t-1} Ct1 中的每个元素应用一个区间 ( 0 , 1 ) (0,1) (0,1) 内的值以控制其通过度: 0 0 0 表示完全忘记; 1 1 1 表示完全保留。

回到之前根据过去词预测当前词的语言模型案例。在该案例中,细胞状态可能包含当前主语的性别,这样后续便能确定正确的代词。但当看到一个新主语时,我们希望忘记旧主语的性别。

遗忘门

接下来确定应向细胞状态加入哪些新信息。此处涉及两部分工作:一是被称为输入门的 s i g m o i d \rm sigmoid sigmoid 层决定我们要更新哪些位置上的值;二是 tanh ⁡ \tanh tanh 层创建一个由候选值组成的可加到细胞状态上的向量 C ~ t \tilde{C}_{t} C~t 。分别计算出两部分后,综合二者生成对细胞状态的更新。

在我们的语言模型案例中,我们希望网络做到把新主语的性别加入细胞状态,以替换要遗忘的旧主语的性别。

输入门

现在到了把旧细胞状态 C t − 1 C_{t-1} Ct1 更新为新细胞状态 C t C_{t} Ct 的时候了。前面的几步确定了我们要做什么,这一步所要做的就是落实。
我们用 f t f_{t} ft 点乘旧细胞状态(即元素级相乘),从而决定忘记哪些值;然后我们加上(元素级加) i t ∗ C ~ t i_{t} \ast \tilde C_{t} itC~t
C t = C t − 1 ∗ f t + C t ~ ∗ i t C_t = C_{t-1} \ast f_{t} + \tilde{C_{t}} \ast i_{t} Ct=Ct1ft+Ct~it

在前述语言模型案例下,我们实际上会删除旧主语的性别信息并添加新主语的性别信息,即落实我们在前面几步中做的决定。
更新细胞状态
最后我们要决定输出什么!此输出基于当前细胞状态,不过是一个过滤后的版本,即通过 s i g m o i d \rm sigmoid sigmoid 来决定如何输出细胞状态中的信息;首先,利用 tanh ⁡ \tanh tanh 来把细胞状态映射到区间 ( − 1 , 1 ) (-1,1) (1,1) 内;接着,利用 s i g m o i d \rm sigmoid sigmoid 的输出控制如何输出这些值。
在上述语言模型案例下,因其刚见一新主语,故它可能会输出动词相关的信息。例如,模型可能输出单复数相关信息,这样我们就知道接下来的动词应该呈什么形式。

LSTM 的变体

本文先前描述的是一个相当普通的LSTM,并非所有LSTM都与之相同。实际上,每篇涉及LSTM的文章都会进行些微改动。这些改动虽小,但值得一提。
Gers & Schmidhuber(2000) 提出的一种流行的LSTM变体是增加了“窥视孔连接”,这意味着所有的门都能看见细胞状态。
加入窥视孔的 LSTM 变体
在上图中,所有门上都添加了窥视孔以利用细胞状态,但很多文献上只为其中部分门加窥视孔。

另一个变体是使用耦合的遗忘门和输入门:不独立决定遗忘什么旧信息和加入什么新信息,而是一并做出两个决定。我们只遗忘要更替为新信息处旧信息,亦即只向所遗忘的旧信息处注入新信息。

合并遗忘门和输入门的 LSTM 变体

还有一个被称为门控循环单元(GRU,Gated Recurrent Unit)的颇具戏剧性的LSTM变体 Cho, et al. (2014) :把遗忘门和输入门合并为单个的更新门;同时合并了细胞状态和隐藏状态,并做了其他一些改动。最终的模型比标准LSTM更简单,且愈加受欢迎。
GRU

这些只是最著名的LSTM变体中的几个,还有很多其他变体,如 Yao, et al. (2015) 的深度控循环神经网络(Depth Gated RNNs)。还有一些使用了完全不同的方法处理长期依赖问题,如 Koutnik, et al. (2014) 的Clockwork RNNs。

那么,哪种变体最好?它们的差别影响大吗?Greff, et al. (2015) 做了关于流行变体的对比实验,发现它们都差不多。Jozefowicz, et al. (2015) 测试了超过10000种RNN架构,发现有些架构在特定任务上比LSTMs效果更佳。

总结

我在前面提到了人们使用RNNs达成的显著成果。基本上所有这些都是用LSTMs达到的。对大多数任务,LSTMs的表现确实好得多。
直接写下一堆方程会使LSTMs看起来很骇人。本文希望在一步一步走下来的过程中,使它们更佳平易近人。
LSTMs 是 RNNs 在实际应用中走出的一大步!我们自然还想知道:是否还有其他的大步?研究人员们普遍认为:有,注意力!注意力的思想是每步都让网络从一大堆信息中有重点的选择一部分。例如,你想为一幅图生成一个标题,它只选取部分图像,查看输出的每个单词。Xu, et al.(2015) 就是这样做的——若你想研究注意力,这可能是一个有意思的开始。尽管我们已经利用注意力取得了许多喜人的结果,但似乎还有更多要出现……
注意力并非RNN研究中唯一一条令人兴奋的线。Kalchbrenner, et al. (2015) 的 Grid LSTMs 看起来同样极具前景;在生成模型中使用 RNNs(Gregor, et al. (2015)Chung, et al. (2015)Bayer & Osendorfer (2015))看起来也十分有趣。对于循环神经网络来说,过去的几年是一个激动人心的时期,未来的几年会更加如此!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值