梯度异常的意义
校验和:
考虑一个极端情况,其中第一个观测值包含一个校验和, 目标是在序列的末尾辨别校验和是否正确。 在这种情况下,第一个词元的影响至关重要。 我们希望有某些机制能够在一个记忆元里存储重要的早期信息。 如果没有这样的机制,我们将不得不给这个观测值指定一个非常大的梯度, 因为它会影响所有后续的观测值。
无关信息
一些词元没有相关的观测值。
例如,在对网页内容进行情感分析时, 可能有一些辅助HTML代码与网页传达的情绪无关。 我们希望有一些机制来跳过隐状态表示中的此类词元。
逻辑中断
序列的各个部分之间存在逻辑中断。
例如,书的章节之间可能会有过渡存在, 或者证券的熊市和牛市之间可能会有过渡存在。 在这种情况下,最好有一种方法来重置我们的内部状态表示。
门控隐状态
模型有专门的机制来确定应该何时更新隐状态, 以及应该何时重置隐状态。
这些机制是可学习的,并且能够解决了上面列出的问题。
例如,如果第一个词元非常重要, 模型将学会在第一次观测之后不更新隐状态。 同样,模型也可以学会跳过不相关的临时观测。 最后,模型还将学会在需要的时候重置隐状态。
重置门和更新门
我们把它们设计成(0,1)区间中的向量, 这样我们就可以进行凸组合。(因此使用sigmoid作为激活函数)
重置门允许我们控制“可能还想记住”的过去状态的数量X
更新门将允许我们控制新状态中有多少个是旧状态的副本,可以直接绕过X,看上一个隐状态
重置门和更新门的数学表达
给定时间步t,输入是一个小批量上一个时间步t-1的隐状态为
,
其中
虽然这两个门结构一样,但参数不一样,通过学习得到,
可视化学习参数,观察权重
候选隐状态
重置门Rt 与 常规隐状态更新机制集成,得到时间步t的候选隐藏状态
候选状态的数学表达
候选状态解释
当接近0时,表示要把
即上一个隐藏状态的值给忘掉,相当于重新开始,以往的信息全部不要;当
接近1时,表示要记住上一个隐藏状态。
是可以学习的,因此可以自动决定哪些需要保留。
候选状态来表示上一个输入X对隐状态更新的影响
GRU的隐状态
隐状态更新公式:
更新公式解释:
GRU隐状态的更新取决于 ,
更新门的作用就在于把旧状态和候选状态进行凸组合。
从而有效地跳过了依赖链条中的时间步t。
总结
门控循环单元具有以下两个显著特征
- 重置门有助于捕获序列中的短期依赖关系。
- 更新门有助于捕获序列中的长期依赖关系。