GRU介绍
GRU网络的输入与输出
输入:t时刻的输入 ,和t-1时刻的隐藏层状态 ,这个隐藏层状态包含了之前节点的相关信息。 输出:t时刻隐藏节点的输出 和传递给下一个节点的隐状态
GRU网络的门控机制
与LSTM内部中的三个门不同,GRU内部只有两个门,重置门和更新门。
通过上一个传输下来的状态 和当前节点的输入 Xt来获取两个门控状态。
更新门
更新门Zt用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。
重置门
重置门 Rt 用于控制前一状态有多少历史信息被写入到当前的候选集上,重置门越小,前一状态的信息被写入的越少。
GRU的候选隐状态与隐藏状态
候选隐状态
将重置门与上一时间步的隐藏状态进行计算,得到在时间步 t 的候选隐状态,在这里使用的是tanh非线性激活函数来确保候选隐状态中的值保持在区间(-1,1)中。
与相乘可以减少以往状态的影响。每当重置门中的项接近于1时,GRU就能恢复成一个普通的循环神经网络。对于重置门中所有接近0的项,候选隐状态是以作为输入的多层感知机的结果。因此,任何预先存在的隐状态都会被重置为默认值。
隐藏状态
上述的计算结果只是候选隐状态,我们仍然需要结合更新门的效果。 这一步确定新的隐藏状态在多大程度上来自旧的状态和 新的候选状态。 更新门仅需要在上一步的隐藏状态 和 候选隐状态之间进行按元素的凸组合就可以实现这个目标。 这就得出了门控循环单元的最终更新公式:
每当更新门接近1时,模型就倾向只保留旧状态。 此时,来自的信息基本上被忽略, 从而有效地跳过了依赖链条中的时间步 t 。 相反,当接近0时, 新的隐状态就会接近候选隐状态。 这些设计可以帮助我们处理循环神经网络中的梯度消失问题, 并更好地捕获时间步距离很长的序列的依赖关系。 例如,如果整个子序列的所有时间步的更新门都接近于1, 则无论序列的长度如何,在序列起始时间步的旧隐状态都将很容易保留并传递到序列结束。
重置门 Rt 决定了如何将新的输入信息与前面的记忆相结合,更新门 Zt 定义了前面记忆保存到当前时间步的量。
总结
1、门控循环神经网络可以更好地捕获时间步距离很长的序列上的依赖关系。
2、重置门有助于捕获序列中的短期依赖关系。
3、更新门有助于捕获序列中的长期依赖关系。
4、重置门打开时,门控循环单元包含基本循环神经网络;更新门打开时,门控循环单元可以跳过 子序列。
LSTM与GRU的区别
LSTM与GRU二者结构十分相似,不同在于:
新的记忆都是根据之前状态及输入进行计算,但是GRU中有一个重置门控制之前状态的进入量,而在LSTM里没有类似门(其实输入门也有这个意思);
产生新的状态方式不同,LSTM有两个不同的门,分别是遗忘门(forget gate)和输入门(input gate),而GRU只有一种更新门(update gate);
LSTM对新产生的状态可以通过输出门(output gate)进行调节,而GRU对输出无任何调节。
GRU的优点是这是个更加简单的模型,所以更容易创建一个更大的网络,而且它只有两个门,在计算性能上也运行得更快,然后它可以扩大模型的规模。
LSTM更加强大和灵活,因为它有三个门而不是两个。
部分参考自:https://blog.csdn.net/weixin_45420890/article/details/127834892