结构:
特点:
结构简单,参数较少
结构图:

对比LSTM:
1.LSTM有三个门,而GRU只有两个门
2.LSTM在左侧有两项输入,而GRU只有一项输入,将两项和
合二为一合成一个部分
3.LSTM中的参数数量很多(、
、
、
等9个),而GRU中的参数少得多(
、
等6个)
4.LSTM中的门为输入门、遗忘门、输出门,GRU的门为更新门和重置门
关注一个序列:
不是每个观察值都同等重要:
做RNN时,处理不了太长的序列,因为将整个序列信息放在隐藏状态里;当时间很长时,隐藏状态就累积了很多信息,对于前面很久前的信息并不容易将其抽取出来。

老鼠较为重要,第一次出现的猫也较为重要。
在现实生活中的NLP里,句子里可能只有一些关键字比较重要,关键句比较重要,其他的也不是很重要;类似于股票,重要的是几个点;电影里的几帧相类似,但在切换场景时,每次切换比较重要。
在RNN中无法实现特别关注某些区域,对RNN而言所有信息都为一个序列输入,门控神经网络通过一些额外的控制单元使得在构造隐藏状态时,可以选择的(重要的记住,不重要的忘记)浏览。
想只记住相关的观察需要:
能关注的机制(更新门)
能遗忘的机制(重置门)
门:
下图表示为一个层

:重置;若为RNN,则等价于使用sigmoid做激活函数的隐藏状态的计算方法
:更新;对比
也有自己的权重
门:与隐藏状态同样长度的一个向量,与RNN计算隐藏状态的方法类似

候选隐藏状态:
定义:
并不是真正的隐藏状态,而是候选的隐藏状态。

假设不看,类似于之前的RNN计算隐藏层
但现在加入了一个,用
代表对元素进行乘法;因为
和
的长度相同,可以按元素做乘法且值域在(0,1)之间,假设
中的元素更靠近"0",那么运算后的结果更靠近"0",等于把上一时刻的隐藏状态忘记;假设
中的元素更靠近"1",那么运算结果更靠近"1",等价于RNN做运算的结果。

可以根据前面的信息进行学习,决定信息可以丢弃或保留,是一个控制单元,被称为"门"。因为值域在(0,1),代表可以在(0,1)之间做比较软的控制。
隐状态:

:上一次的隐藏状态
:候选项隐藏状态
:控制单元;若
为"1",
=
,不更新过去状态,将过去状态放入现在,忽略掉元素;当
为"0",基本回到了RNN的情况,基本不看过去状态,而是看现在的状态。

总结:

引入了两个额外门,每个门可以学到的参数和之前的RNN一样多;两个门都为一个控制单元,控制(0,1)的输出值;Reset gate用来在更新新隐藏状态时,要用到多少过去隐藏状态的信息,在算新的隐藏状态时,需要用当前相关的多少信息;极端情况下,
回到RNN的情况;
