LSTM与GRU

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

https://blog.csdn.net/gzj_1101/article/details/79376798

这篇文章主要讲自己对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之间信息的联系程度。

 

 

 

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值