其他分享
首页 > 其他分享> > 动手学深度学习 | 门控制循环单元(GRU)| 56

动手学深度学习 | 门控制循环单元(GRU)| 56

作者:互联网

目录

门控制循环单元 GRU

首先这个GRU是最近几年才提出来的,它是在LSTM之后才提出来的,之所以先讲GRU是因为它相对比较简单一些。LSTM相对复杂,但是其实二者的表现效果差不多,所以实际使用哪个都是可以的。

GRU最主要是知道什么叫做“门控”。

我们之前说过,RNN是处理不了太长的序列的,是因为把所有的信息都放在隐藏状态中,当时间一长,隐藏状态中就累计了太多东西了,对于比较前的信息就不好抽取了。

其实观察一个序列,并不是每个观察值都是同等重要的,第一次出现的猫很重要,但是之后出现的猫就那么重要了,第一次出现的老鼠也很重要。

序列的话,重要的其实就是那几个关键词,关键句子。

门这个东西这里通过公式和图来给大家解释一下。

\(R_t,Z_t\)都是可以认为是长度和\(H\)一样的一个权重。

和之前的RNN相比,GRU这里有多学了几个权重\(W_{xr},W_{hr},W_{xz},W_{hz}\)。

\(\sigma\)是是sigmoid,用于讲输出收放到\([0,1]\)。

门其实是一个电路中的概念,就是控制这个电流能不能从这里过去,当然这是“软”的,因为范围控制在\([0,1]\)之间。

可以看最后的更新门Z,如果Z趋向全1,那么就和原始的RNN没有什么区别,因为\(H_t \approx H_{t-1}\),也就是选择要记住什么新东西,也没有要忘记什么旧东西。

代码

QA

  1. GRU网络中,R_t和Z_t的网络结构是一样的,为什么就可以自动把R_t选成Reset gate,Z_t选成Update gate?

是的,它们的网络结构是一样的,但是它的参数是可以学习的。

我们这里这样写公式,就是希望它们可以像这样去学习参数。但是模型究竟是不是这么学的呢?这个是不知道的,如果要验证的话,可以进行参数结果的可视化。

  1. 为什么GRU激活函数使用tanh呢?用relu或其他的激活函数可以吗?

应该是没有问题的,可以尝试一下。

这是使用tanh作为激活函数是因为那个时候relu激活函数还没有出来。

标签:GRU,重要,RNN,可以,56,机制,隐藏,单元
来源: https://www.cnblogs.com/Rowry/p/15375292.html