LSTM与GRU

编程入门 行业动态 更新时间:2024-10-19 20:44:08

<a href=https://www.elefans.com/category/jswz/34/1763947.html style=LSTM与GRU"/>

LSTM与GRU

很多博客已经详细讲述了lstm和gru的结构及公式,这里就不一一介绍了,参考下面链接,讲的挺详细

这篇文章主要讲自己对lstm与gru的区别及联系的理解。

在传统RNN中,由于反向传播过程中出现激活函数的累乘,容易造成梯度消失和梯度爆炸,这就造成在较长的time-steps下,后面的step很难学到前面step的信息,为了解决这一问题,设计出了lstm及lstm的变种,其核心原理在于在前向计算中,刻意地选择记住一定比例的过去的信息和一定比例的现在的信息。

而这个一定比例的选择我们很容易想到激活函数sigmoid,它的输出正好是(0,1)之间,在lstm中一般称为门。

LSTM的结构如下:

从图中可以看出,lstm主要包括三个门,分别称为遗忘门,输入门和输出门。我们构建这个结构的起因就是想记住一部分过去的信息,这个主要通过最左侧的遗忘门实现,选择记住ft倍的Ct-1,另一部分当前的信息通过输入门实现,选择记住it倍的Ct(^),两个部分加起来就是当前所记住的信息,但是一般我们不会需要输出记住的所有信息,只需要输出记住的一部分有用信息,也就是输出门的功能,即选择ot倍的ct输出。

这样我们可以通俗地理解,Ct为某个time-step记住的所有信息,ht为某个step输出的有用信息。

由于lstm的结构复杂性且引入了一个新的状态变量,Cho, et al. (2014)基于lstm提出了一种变种,称为gru,其结构比标准的lstm的结构简单,在后来也很流行,结构如下所示:

与lstm相比,从直观上我们可以看到“门”由三个变为两个,论文中称为重置门和更新门。同时,也少了ct这个状态变量。

gru中通过1-zt倍的ht-1选择记住部分过去信息,通过zt倍的ht(~)选择记住部分当前信息,相加为当前step的输出信息。与lstm的核心原理相同,gru也是选择记住一定比例的过去的信息和一定比例的现在的信息,但在比例的选择上呈现差异,lstm对过去和现在的信息选择相同的比例输出,而gru对过去和现在的信息输出的比例和为1,对输出的过去信息和现在信息有一种权重的作用。

核心区别在于gru在计算当前state信息时对过去信息有一种选择性,即当前信息的产生是否受过去信息的影响。

举个例子:对于这样一句话“你喜欢吃苹果,而我喜欢吃香蕉”,“喜欢”这个信息的产生并不受“你”的影响,也有可能是讨厌之类的,但是“我”的信息的产生就受到“而”的转折的影响。

对于lstm,“你”之后出现“喜欢”和“讨厌”的比例为4:3或4:1没有区别,最后的输出信息为“你喜欢”,谁大输出谁

而对于gru,“你”之后出现“喜欢”和“讨厌”的比例为4:3或者4:1,表示最后的输出信息为“你喜欢”的可能性是输出“你讨厌”的可能性的1.3倍或者4倍,表示两种事件。

所以gru与lstm相比,进行了更深层次的理解,增加了不同state之间信息的联系程度。

 

 

 

更多推荐

LSTM与GRU

本文发布于:2024-03-13 02:33:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1732986.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:LSTM   GRU

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!