LSTM视频参考
GRU视频参考
循环神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的神经网络。相比一般的神经网络来说,他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义,RNN就能够很好地解决这类问题。
LSTM是RNN的一种,可以解决RNN长序列训练过程中的梯度消失和梯度爆炸问题,当一条序列足够长,那RNN将很难将信息从较早的时间步传送到后面的时间步,而LSTM能学习长期依赖的信息,记住较早时间步的信息,因此可以做到联系上下文。
不同与RNN,RNN是想要记住所有的信息,不在乎不关注信息是否有用是否重要,而LSTM则设计了一个记忆细胞,起到筛选功能,具备选择记忆的功能,用于选择记忆重要的信息,过滤噪音与非重要信息以减轻记忆负担。它的出现解决了梯度失真的问题。而且使得RNN的收敛速度比普通的RNN要快上不少。
LSTM 的核心概念在于细胞状态以及“门”结构。细胞状态相当于信息传输的路径,让信息能在序列连中传递下去。你可以将其看作网络的“记忆”。理论上讲,细胞状态能够将序列处理过程中的相关信息一直传递下去。
GRU(Gate Recurrent Unit)是循环神经网络(RNN)的一种,可以解决RNN中不能长期记忆和反向传播中的梯度等问题,与LSTM的作用类似,不过比LSTM简单,容易进行训练。它与 LSTM 非常相似,与 LSTM 相比GRU 去除掉了细胞状态,使用隐藏状态来进行信息的传递。它只包含两个门:更新门和重置门。
GRU是LSTM的一个变种,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。GRU和LSTM在很多情况下实际表现上相差无几,但是GRU计算更简单,更易于实现。
LSTM模型与RNN模型进行对比:
把 X t X_t Xt单独拎出来,其中
C C C表示记忆细胞,公式是Cell State
h h h表示状态
X X X表示新内容
σ σ σ表示门单元
f t f_t ft遗忘门,公式是Forget Gate
i t i_t it输入门,公式是Input Gate
o t o_t ot输出门,公式是Output Gate
对比 f t f_t ft, i t i_t it, o t o_t ot的公式可以发现它们的规律都是 σ ( W × X t + W × h t − 1 + b ) σ(W×X_t+W×{h_{t-1}}+b) σ(W×Xt+W×ht−1+b)类型。根据上面的模型结构图可以发现 ( X t , h t − 1 ) (X_t,h{_t-1}) (Xt,ht−1)都会输入到σ门里,所以三个门的X和h值都是一样的。通过 ( X t , h t − 1 ) (X_t,h{_t-1}) (Xt,ht−1)可以计算得到四个值 f t f_t ft, i t i_t it, C ~ \widetilde{C} C 和 o t o_t ot。其中 t a n h tanh tanh是激活函数其输出向量的每个元素均在-1~1之间, W , b W,b W,b是各个门神经元的参数,是要在训练过程中学习得到的。
公式表达:
z t = σ ( W x z × X t + W h z × h t − 1 + b z ) z_t = σ(W_{xz}×X_t+W_{hz}×{h_{t-1}}+b_z) zt=σ(Wxz×Xt+Whz×ht−1+bz)
r t = σ ( W x r × X t + W h r × h t − 1 + b r ) r_t = σ(W_{xr}×X_t+W_{hr}×{h_{t-1}}+b_r) rt=σ(Wxr×Xt+Whr×ht−1+br)
h ~ t = t a n h ( W x h × X t + W h h × ( r t ⨀ h t − 1 ) + b h ) \widetilde{h}_t = tanh(W_{xh}×X_t+W_{hh}×(r_t⨀{h_{t-1}})+b_h) h t=tanh(Wxh×Xt+Whh×(rt⨀ht−1)+bh)
h t = ( 1 − z t ) ⨀ h t − 1 + z t ⨀ h ~ t h_t = (1-z_t)⨀h_{t-1}+z_t⨀\widetilde{h}_t ht=(1−zt)⨀ht−1+zt⨀h t
GRU只有两个门,将LSTM中的输入门和遗忘门合二为一的称为更新门(update gate)公式为 z t z_t zt,而另一个称为重置门(reset gate)公式为 r t r_t rt。
可以观察到两个门的公式也都是 σ ( W × X t + W × h t − 1 + b ) σ(W×X_t+W×{h_{t-1}}+b) σ(W×Xt+W×ht−1+b)类型,但是这里的 h ~ t \widetilde{h}_t h t和LSTM的 C ~ \widetilde{C} C 不同,LSTM的 C ~ \widetilde{C} C 是由 h t − 1 , X t h_{t-1},X_t ht−1,Xt组成的,而GRU的 h ~ t \widetilde{h}_t h t是由 ( r t ⨀ h t − 1 ) , X t (r_t⨀h_{t-1}),X_t (rt⨀ht−1),Xt组成的。其中 t a n h tanh tanh是激活函数其输出向量的每个元素均在-1~1之间, W , b W,b W,b是各个门神经元的参数,是要在训练过程中学习得到的。
优点:
缺点: