1. 简介
(Gated Recurrent Unit)GRU是门控制单元,它是LSTM的一种变体,通常能够提供同等的效果, 并且计算的速度明显更快
LSTM和GRU都支持隐状态的门控,模型有专门的机制来确定应该何时更新隐状态, 以及应该何时重置隐状态。 这些机制是可学习的
2. GRU理解
GRU中有两个核心的门控,分别是重置门和更新门(注意:通过sigmoid函数后两者都是(0,1)之间的值)
- 重置门用于控制我们需要记住多少的过信息
- 更新门用于控制旧信息在新信息中的占比
2.1 重置门\更新门公式描述
如下图所示为一个基本的结构,两个门都由上一时刻的隐状态 Ht−1 ~\mathbf H_{t-1}~ Ht−1 和当前时刻的输入向量Xt\mathbf X_tXt共同组成,分别对应公式如下Rt=σ(XtWxr+Ht−1Whr+br),Zt=σ(XtWxz+Ht−1Whz+bz),\mathbf{R}_t = \sigma(\mathbf{X}_t \mathbf{W}_{xr} + \mathbf{H}_{t-1} \mathbf{W}_{hr} + \mathbf{b}_r),\\
\mathbf{Z}_t = \sigma(\mathbf{X}_t \mathbf{W}_{xz} + \mathbf{H}_{t-1} \mathbf{W}_{hz} + \mathbf{b}_z),Rt=σ(XtWxr+Ht−1Whr+br),Zt=σ(XtWxz+Ht−1Whz+bz),其中这里激活函数选择的一样是sigmoid,W\mathbf WW代表对应位置的权重矩阵,b\mathbf bb代表对应时刻的偏置值(公式跟LSTM很像吧)

2.2 候选隐变量
与LSTM不同的地方在于GRU中引入了候选隐变量的概念,如下图所示,t时刻的隐状态H~t=tanh(XtWxh+(Rt⊙Ht−1)Whh+bh)\tilde{\mathbf{H}}_t = \tanh(\mathbf{X}_t \mathbf{W}_{xh} + \left(\mathbf{R}_t \odot \mathbf{H}_{t-1}\right) \mathbf{W}_{hh} + \mathbf{b}_h)H~t=tanh(XtWxh+(Rt⊙Ht−1)Whh+bh)可以看到其中 (Rt⊙Ht−1) ~\left(\mathbf{R}_t \odot \mathbf{H}_{t-1}\right)~ (Rt⊙Ht−1) 使用了上一时刻的隐状态和重置门进行哈达玛积
哈达玛积就是对应元素按乘法运算,即是cij=aij∗bij,这里a、b矩阵同维c_{ij} = a_{ij}*b_{ij},这里a 、b矩阵同维cij=aij∗bij,这里a、b矩阵同维
为什么需要这块式子呢,其实本质就是削弱过去的信息对当前时刻影响,这个削弱因子就是上面提到的重置门((0,1)之间的数),这个因子是可以自学习的!! 然后其他就是我们熟悉的计算公式了,值得注意的是这里用的激活函数是tanh,使得输出的output控制在(-1,1)之间

2.3 隐变量
计算完上面这些信息后,我们就可以更新当前时刻的隐变量啦,下图就是我们完整的一个GRU单元结构,包含了上面提到过的所以控制门和其之间的计算逻辑,而我们最终更新隐状态的公式可以写成:Ht=Zt⊙Ht−1+(1−Zt)⊙H~t.\mathbf{H}_t = \mathbf{Z}_t \odot \mathbf{H}_{t-1} + (1 - \mathbf{Z}_t) \odot \tilde{\mathbf{H}}_t.Ht=Zt⊙Ht−1+(1−Zt)⊙H~t.可以看到这里使用了前面提到的更新门,并且结合了前一时刻的隐状态和当前时刻的候选隐状态 。举个例子:
- 如果说更新门状态值几乎接近1的话,那么上一个时间步的隐状态就会保留到下一个时刻中
- 如果说更新门状态值几乎接近0的话,那么上一个时间步的隐藏状态就几乎不会流传下来(更接近候选隐藏状态)

3. 总结
不同于LSTM的三个门控单元,GRU中只有两个(将输入门和输出门合并为一个更新门),简化了计算。但是对于大数据集的情况下,LSTM比GRU性能更好,而总体而言差不多
在GRU中
- 重置门有助于捕获序列中的短期依赖关系
- 更新门有助于捕获序列中的长期依赖关系
1万+

被折叠的 条评论
为什么被折叠?



