机器学习/深度学习/NLP-5-RNN、LSTM、GRU

机器学习/深度学习/NLP-5-RNN、LSTM、GRU

RNN

RNN(Recurrent Neural Network)即通常所说的循环神经网络。其特点是在多层神经网络的训练中,当前时刻的输出是由当前时刻的输入以及之前时刻的状态共同决定的。它能够有效学习到上下文的序列信息。
RNN是由多个单元组成的,每个单元的形式和操作都是一样的,整体图结构如下:
机器学习/深度学习/NLP-5-RNN、LSTM、GRU
以这个图为例,可展开如下公式:
机器学习/深度学习/NLP-5-RNN、LSTM、GRU
机器学习/深度学习/NLP-5-RNN、LSTM、GRU
其中, V 是输出层权重矩阵,g 是**函数(常用softmax);U 是输入x的权重矩阵,W 是上一次的值 st-1 作为这一次的输入的权重矩阵,f 是**函数(常用tanh)。
由公式可以推出,当前时刻t的输出值 ot 受之前的输出值 xt 、xt-1、xt-2 等影响。
如果是双向RNN,那受之前的输出值 ot 会同时受它前后单元的影响。

LSTM

LSTM(Long Short-Term Memory)是一种时间循环神经网络,是RNN的一种改进,主要用于解决RNN存在的长期依赖问题:如果序列很长,RNN很难将信息从较早的时间步传送到后面的时间步,此时如果尝试处理一段文本进行预测,RNN可能会遗漏开头的重要信息。
LSTM和RNN的主要区别在于单元内的操作。对比图为:
机器学习/深度学习/NLP-5-RNN、LSTM、GRU
RNN在处理单元时只用了一个**函数,而LSTM则用了选择门、遗忘门、输出门三个门机制来控制信息在序列上的传递。

遗忘门

LSTM的第一个门是遗忘门(forget gate)。此门决定应丢弃或保留哪些信息。来自先前隐藏状态和来自当前输入的信息通过sigmoid函数传递。值介于0和1之间。越接近0越容易遗忘,越接近1则意味着要保留。
机器学习/深度学习/NLP-5-RNN、LSTM、GRU
公式为:
机器学习/深度学习/NLP-5-RNN、LSTM、GRU
其中,ht-1为上一个细胞的隐藏层状态,xt表示当前细胞输入。

输入门及细胞状态更新

LSTM的第二个门是输入门(input gate)。此门用于更新单元状态。
首先,将先前的隐藏状态和当前输入传递给sigmoid函数。这决定了通过将值转换为0到1来更新哪些值。0表示不重要,1表示重要。然后将隐藏状态和当前输入传递给tanh函数,将它们压缩到-1和1之间以帮助调节网络。最后将tanh输出与sigmoid输出相乘。sigmoid输出将决定哪些信息很重要,需要tanh输出保存。
机器学习/深度学习/NLP-5-RNN、LSTM、GRU
公式为:
机器学习/深度学习/NLP-5-RNN、LSTM、GRU
把旧的细胞状态与 ft 相乘,丢弃掉确定需要丢弃的信息。接着加上 it∗C~t,就是新的细胞状态,其根据决定更新每个状态的程度进行变化。
机器学习/深度学习/NLP-5-RNN、LSTM、GRU
公式为:
机器学习/深度学习/NLP-5-RNN、LSTM、GRU

输出门

LSTM的第三个门是输出门(output gate)。此门决定了下一个隐藏状态是什么。隐藏状态可以用于下一个状态的计算,也可以用于预测。
首先,将先前的隐藏状态和当前输入传递给sigmoid函数。然后将新的单元状态传递给tanh函数。再将tanh输出与sigmoid输出相乘,以决定隐藏状态应携带的信息。它的输出就是当前层隐藏状态。最后将新的单元状态和新的隐藏状态传递到下一个时间步。
机器学习/深度学习/NLP-5-RNN、LSTM、GRU
公式为:
机器学习/深度学习/NLP-5-RNN、LSTM、GRU

GRU

GRU是LSTM的一种变体,它不适用细胞单元状态,而是只以隐藏状态来传输信息。而且它只有两个门:重置门和更新门。
重置门是用来计算候选隐藏层h~t,控制保留多少前一时刻隐藏层ht-1的信息。
更新门是用来控制加入多少候选隐藏层h~t的信息,从而得到输出ht。
机器学习/深度学习/NLP-5-RNN、LSTM、GRU
公式为:
机器学习/深度学习/NLP-5-RNN、LSTM、GRU
还有一张图可以更形象表述GRU的流程:
机器学习/深度学习/NLP-5-RNN、LSTM、GRU
与LSTM相比,GRU内部少了一个门,参数比LSTM少,但是却也能够达到与LSTM相当的功能。考虑到硬件的计算能力和时间成本,GRU的应用也很广泛。

参考

循环神经网络RNN原理
一份详细的LSTM和GRU图解 (动态图很漂亮,强推!)
RNN & LSTM & GRU 的原理与区别
GRU原理理解