目前普通RNN存在的问题
记忆存储部分一直在任务中传递,倘若序列较长, 其参数的幂较大,易于出现梯度消失或者梯度爆照的问题。这就造成一般的RNN不能“长期依赖”。
因此我们引入LSTM。
Long Short-Term Memory 长短时记忆网络
引入
序列短时,相关的信息和预测的词位置之间的间隔小,RNN可以学会使用先前的信息;
然而,序列长时,相关信息和当前预测位置之间的间隔大,RNN会丧失学习到连接如此之远的信息的能力;
此外,序列过长时,会发生梯度爆炸或者梯度消失。
结构
四个输入分别为:存入的记忆以及三个决定门开闭的信号
一个输出为:取出的记忆。
过程
说明
1.与一般的神经网络相比,只需要将神经元变成LSTM的结构即可。
2.LSTM不仅仅是更新 c < t > c^{<t>} c<t>,其实还会把输出作为输入,把记忆也作为输入(变种):
其中 h t ≠ y t h_t \not =y_t ht=yt。这与SRN类似,但多了一个记忆单元。
3.当然,LSTM也不仅仅是一层:
4.其中,输入 x t x^t xt经过四个transform转化为三个信号一个输入数据,用以运行LSTM,每一个input都是一个向量,控制多个LSTM。
5.能够解决梯度消失的情况。
为什么LSTM能解决梯度问题?
原本: ω 1 ( ω 1 ⋅ x 1 + x 2 ) \omega_1(\omega_1\cdot x_1 + x_2) ω1(ω1⋅x1+x2)
LSTM: c < 2 > = Γ i c ^ < 2 > + Γ f c < 1 > c^{<2>} =\Gamma_i\widehat{c}^{<2>} + \Gamma_fc^{<1>} c<2>=Γic
<2>+Γfc<1>
导致梯度爆炸/梯度消失的罪魁祸首是递归的倒数一直大于1,或者一直在0和1之间,而LSTM的递归倒数在不同的情况下,控制门控取值,从而抑制梯度消失或者爆炸,保持梯度。
整体公式
无peephole。
GRU(Gated Recurrent Unit)
门控循环单元,LSTM的简化版。
结构与公式
优势
参数少,过拟合风险小:
LSTM的参数量是Navie RNN的四倍,参数量过多就会存在过拟合的风险,而GRU只用两个门控开关就达到了和LSTM接近的结果,参数量不过是Naive RNN的三倍。
转载:https://blog.csdn.net/weixin_46365033/article/details/117407846