一、GRU概念
GRU(Gated Recurrent Unit)也称门控循环单元结构,它也是传统RNN的变体,能够有效捕捉长序列之间的语义关联,缓解梯度消失或爆炸现象。
它的核心结构可以分为两个部分:更新门、重置门。
更新门:能够关注的机制
重置门:能够遗忘的机制
二、分步拆解
1、更新门、重置门
下图描绘了门控循环单元中的重置⻔和更新⻔的输⼊,输⼊是由当前时间步的输⼊和前⼀时间步的隐状态给出。两个⻔的输出是由使⽤sigmoid激活函数的两个全连接层给出。
2、候选隐藏状态
GRU候选隐藏状态: H 侯 = t a n h ( X t W x h + ( R t ⊙ H t − 1 ) W h h + b h ) H_侯 = tanh(X_t W_{xh} + (R_t ⊙ H_{t−1}) W_{hh} + b_h) H侯=tanh(XtWxh+(Rt⊙Ht−1)Whh+bh)
RNN隐藏状态: H t = t a n h ( X t W x h + ( 1 ⊙ H t − 1 ) W h h + b h ) H_t = tanh(X_t W_{xh} + (1⊙ H_{t−1}) W_{hh} + b_h) Ht=tanh(XtWxh+(1⊙Ht−1)Whh+bh)
GRU 的候选隐藏状态与 RNN 隐藏状态相比:候选隐藏状态的 R t R_t Rt 不一定等于 1。
极限情况, 当 R t = 0 R_t = 0 Rt=0 时,候选隐藏状态完全由当前时间步 X t X_t Xt 决定,遗忘掉之前的隐藏状态,因此, R t R_t Rt 决定了遗忘知识的多少,即重置门具有遗忘机制。
3、隐藏状态
GRU隐藏状态输出: H t = Z t ⊙ H t − 1 + ( 1 − Z t ) ⊙ H 侯 H_t = Z_t ⊙ H_{t−1} + (1 − Z_t) ⊙ H_侯 Ht=Zt⊙Ht−1+(1−Zt)⊙H侯
RNN隐藏状态输出: H t H_t Ht
GRU 的隐藏状态输出 与 RNN 隐藏状态输出相比:GRU隐藏状态的 Z t Z_t Zt 不一定等于 1。
其输出还记录了之前的隐藏状态输出,极限情况,GRU输出全部之前的隐藏状态。因此, Z t Z_t Zt 决定了关注之前知识的多少,即更新门具有关注机制。