本文仅是博主自己学习用来加深印象和留存整理,对该内容有兴趣请去阅读原文。
循环神经网络(RNN)
循环神经网络(Recurrent Neural Networks)的特点是带有环,能使信息持久化,基于前面的信息进行处理。
但换言之,RNN和普通的神经网络也没什么不同。一个RNN可以看作是网络间的信息传递。
RNN在一系列的任务中都取得了令人惊叹的成就,比如语音识别,语言建模,翻译,图片标题等等。
LSTM(Long Short Term Memory)是一种特殊的循环神经网络,LSTM是RNN中出类拔萃的存在。
长期依赖的问题
RNN主要可以通过训练来预测待测位置和相关信息距离较小时的情况,比如预测句子“the clouds are in the sky”中的最后一个单词。而对于距离较远的上下文消息时,比如预测句子“I grew up in France… I speak fluent French”中的最后一个单词,RNN就显得无能为力了。幸运的是,LSTM可以用来解决这些。
LSTM网络
LSTM全称为长短期记忆网络,能够学习到长期依赖关系,能够记住长期信息。
普通RNN重复模块结构非常简单,例如只有一个tanh层。LSTM的重复模块中有四个神经网络层。
LSTM核心思想
LSTM的关键是元胞状态(Cell State),元胞状态有点像传送带,贯穿整个链,上面承载着信息。
LSTM通过门结构对元胞状态添加或者删除信息。
0值表示不允许信息通过,1值表示让所有信息通过。一个LSTM有3个这种门,来保护和控制元胞状态。
LSTM的分布详解
LSTM的第一步是决定我们将要从元胞状态扔掉哪些信息。该决定由叫做“遗忘门(Forget Gate)”的Sigmoid层控制。遗忘门观察
ht−1
和
xt
,对于元胞状态
Ct−1
中的每一个元素输出一个0~1之间的数。1则完全保留该信息,0表示完全丢弃该信息。
遗忘在什么时候发生呢?元胞状态可能包含当前主语的性别信息,当遇到一个新的主语时,我们就需要把旧的性别信息遗忘了。
下一步是决定我们对信息的存储。类似于前面,叫做输入门的层决定我们要更新的信息,另一个层,进一步判断候选值,之后就用于元胞状态的更新。将旧元胞状态
Ct−1
更新到新状态
Ct
。
最后,需要决定最终的输出。总之是通过一定的限制,输出元胞的需要的部分。
LSTM的变种
提到了一些LSTM的改进版本,主要是对遗忘信息,记忆信息的更改和优化。