RNN和LSTM、GRU的简单理解



RNN循环神经网络,recurrent neural networks


1
,RNNs已经在众多自然语言处理(Natural Language Processing, NLP)中取得了巨大成功以及广泛应用,如语言模型与文本生成,机器翻译,语音识别,
2,RNNs的目的是用来处理序列数据,RNN中一个序列当前的输出与前面时刻的输出也有关(结合前面的状态、当前的记忆与当前的输入)。具体的表现形式为RNN网络会对前面的信息进行记忆并应用于当前输出的计算中。传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的


3,RNN的训练:
在使用梯度下降算法中,每一步的输出不仅依赖当前步的网络,并且还依赖前面若干步网络的状态
该学习算法称为Backpropagation Through Time (BPTT)
BPTT无法解决长时依赖问题(即当前的输出与前面很长的一段序列有关,一般超过十步就无能为力了),因为BPTT会带来所谓的梯度消失或梯度爆炸问题(the vanishing/exploding gradient problem),,
梯度爆炸相对比较好处理,可以用梯度裁剪(gradientclipping)来解决


vanilla RNN是最简单循环神经网络


4,LSTM Netwoorks
4.1
LSTM目前非常流行。它与一般的RNNs结构本质上并没有什么不同,只是使用了不同的函数去计算隐藏层的状态。
4.2 在LSTMs中,记忆结构被称为cells,可以把cells看作是黑盒用以保存当前输入之前保存的状态,结合前面的状态、当前的记忆与当前的输入
4.3 LSTM 有通过精心设计的称作为“门”的结构来去除或者增加信息到达细胞状态的能力。门是一种让信息选择式通过的方法。他们包含一个 sigmoid 神经网络层和一个 pointwise 乘法操作
Sigmoid 层输出 0 到 1 之间的数值,描述每个部分有多少量可以通过。0 代表“不许任何量通过”,1 就指“允许任意量通过”
4.4 LSTM 拥有三个门,来保护和控制细胞状态
忘记门:将细胞状态中的信息选择性的遗忘 ,回到语言模型的例子中来基于已经看到的预测下一个词。在这个问题中,细胞状态可能包含当前主语的类别,因此正确的代词可以被选择出来。当我们看到新的主语,我们希望忘记旧的主语。 
输入层门:将新的信息选择性的记录到细胞状态中 .希望增加新的主语的类别到细胞状态中,来替代旧的需要忘记的主语。 他今天有事,所以我。。。。当处理到‘’我‘’这个词的时候,就会把主语我更新到细胞中去。
输出层门:
从记忆单元ct产生隐层单元ht(下一层),ct可能包含了很多对ht无用的信息,ot的作用就是判断ct中哪些部分是对ht有用的,哪些部分是无用的


5,Gated Recurrent Unit (GRU)
GRUs就是lstm的一个变体,它将忘记门和输入门合成了一个单一的 更新门。同样还混合了细胞状态和隐藏状态,和其他一些改动。最终的模型比标准的 LSTM 模型要简单,也是非常流行的变体。
它也是一般的RNNs的改良版本,主要是从以下两个方面进行改进。一是,序列中不同的位置处的单词(已单词举例)对当前的隐藏层的状态的影响不同,越前面的影响越小,即每个前面状态对当前的影响进行了距离加权,距离越远,权值越小。二是,在产生误差error时,误差可能是由某一个或者几个单词而引发的,所以应当仅仅对对应的单词weight进行更新


6,LSTMs与GRUs的区别
newmemory的计算方法都是根据之前的state及input进行计算,但是GRUs中有一个reset gate控制之前state的进入量,而在LSTMs里没有这个gate;
产生新的state的方式不同,LSTMs有两个不同的gate,分别是forget gate (f gate)和input gate(i gate),而GRUs只有一个update gate(z gate);
LSTMs对新产生的state又一个output gate(o gate)可以调节大小,而GRUs直接输出无任何调节。

猜你喜欢

转载自blog.csdn.net/qq_34562093/article/details/79121066