LSTM & GRU

basic RNN:

LSTM  long-term short-term memory  

LSTM的提出主要是为了解决传统RNN在长序列时会发生的梯度消失或者梯度爆炸的问题,在LSTM中,状态的更新是累加的方式,而不是累乘

主要有三个门:forget input和output,来调节应该记住多少,忘掉多少,到下一步输出多少

最上方的贯穿整个的横线表示细胞状态(核心),输入时是ct-1,到下一个单元的就是ct了(也可以理解为整个的长期记忆),三个门将控制ct到底记忆多少,遗忘多少

整体的流程是下面这样(圆圈表示点乘):

从左到右,先经过第一个forget门,选择忘记(或者说记住)过去的部分信息,然后加上input门乘以candidate状态(记忆现在的信息),最后过一个tanh后乘以输出门,得到下一个状态

这几个门的输入是一样的:

具体来说就是:

这里将过去和现在的记忆合并,最后经过ot输出(长期记忆中哪些才是当前有用的)

GRU

GRU是LSTM的一个变体,比LSTM更简单

遗忘门和输入门合成为更新门

其中r是reset门,z是update门,这里的候选隐藏层和lstm中的类似,可以看成是当前时刻的新信息,rt用来控制需要保留多少原来的信息,zt用来控制从前一层中忘记多少,加入多少当前层的

GRU中并没有output门

LSTM及其变种的比较

基本相似。

GRU的参数更少,训练的更快;如果有足够的数据,LSTM的表现力更强一些

猜你喜欢

转载自blog.csdn.net/BeforeEasy/article/details/85039835