数式
GRUとは、Gated Recurrent Unitの略で、RNNの一種。
通常の単純なRNNは入力x(t)と前の時刻の隠れ層h(t−1)を入力として、次の時刻の隠れ層h(t)を出力する。
h(t)=ftanh(x(t),h(t−1))
ここで、ftanhは時刻tの入力と前の時刻の隠れ層を重み付き和で結合し、活性化関数にtanhを用いたものである。
GRUの数式は以下の通り。
z(t)r(t)h~(t)h(t)=fzσ(x(t),h(t−1))=frσ(x(t),h(t−1))=fhtanh(x(t),r(t)⊙h(t−1))=(1−z(t))⊙h(t−1)+z(t)⊙h~(t)
突然複雑になった。
説明
GRUは、通常のRNNの隠れ層を、リセットゲートと更新ゲートに分けたもの。リセットゲートは、前の時刻の隠れ層をどれだけ無視するかを決める。更新ゲートは、前の時刻の隠れ層と現在の入力をどれだけ重視するかを決める。
(4)式を見ると、 一つ前の隠れ層h(t−1)と調整された隠れ層h~(t)の重み付き和を取っていることがわかる。その重み付き和のパラメータがz(t)になっている。すなわちz(t)は、一つ前の隠れ層h(t−1)をどれだけ重視するか(hをどの程度更新するか)を決めるパラメータである。そのz(t)は入力x(t)と前の時刻の隠れ層h(t−1)から決まる。
(3)式を単純なRNNの式と比較すると、h~(t)は、前の隠れ層をr倍していることがわかる。これにより、以前の情報をどれだけ弱めるかを決めている。そのためrはリセットゲートと呼ばれる。rはzと同様に入力x(t)と前の時刻の隠れ層h(t−1)から決まる。
GRUは通常の単純なRNNにrとzという調整パラメータを追加したものと考えることができる。リセットゲートrが大きくなれば以前の情報が強く反映され、更新ゲートzが大きくなれば現在の情報が強く反映される。
参考
【深層学習】GRU - RNN に記憶をもたせる試みその1【ディープラーニングの世界 vol. 10 】