ゲート付き回帰型ユニット

ゲート付き回帰型ユニット（ゲートつきかいきがたユニット、英: Gated recurrent unit、略称: GRU）は、回帰型ニューラルネットワーク（RNN）におけるゲート機構である。2014年にKyunghyun Cho（조 경현）らによって発表された。GRUは忘却ゲートを持つ長・短期記憶（long short-term memory、LSTM）に似ているが、出力ゲートを欠くためLSTMよりもパラメータが少ない。多声音楽モデリングおよび音声シグナルモデリングの特定の課題におけるGRUの性能は、LSTMの性能と類似していることが明らかにされている。GRUは特定のより小さなデータセットではもっと良い性能を示すことが明らかにされている。 しかしながら、Gail Weiss、Yoav Goldberg、およびEran Yahavによって示されているように、LSTMは無制限の計数を容易に実行できるがGRUはできないため、LSTMはGRUよりも「厳密に強力」である。これが、LSTMによって学習可能な単純な言語の学習をGRUが失敗する理由である。 同様に、Google BrainのDenny Britz、Anna Goldie、Minh-Thang Luong、およびQuoc Leによって示されているように、LSTMセルは「ニューラル機械翻訳のためのアーキテクチャ変法の初の大規模分析」においてGRUセルを一貫して上回った。 GRUのアイデアは次の式で表される（実際の演算とは異なる）。 h t = ( 1 − z ) ⋅ h t − 1 + z ⋅ f ( x t + r ⋅ h t − 1 ) {\displaystyle h_{t}=(1-z)\cdot h_{t-1}+z\cdot f(x_{t}+r\cdot h_{t-1})} すなわち隠れ状態 h t {\displaystyle h_{t}} は以下の2要素の重み付け和で更新される。 1ステップ前の隠れ状態 h t − 1 {\displaystyle h_{t-1}} 「入力 x t {\displaystyle x_{t}} 」と「重み付けられた隠れ状態 r ⋅ h t − 1 {\displaystyle r\cdot h_{t-1}} 」の f {\displaystyle f} による非線形変換 例えば z = 1 {\displaystyle z=1} であれば入力は無視され隠れ状態がそのまま保持される。逆に z = 0 {\displaystyle z=0} であれば入力と隠れ状態の非線形変換により新たな隠れ状態が計算される。 r {\displaystyle r} は新たな隠れ状態の計算に影響を与える。 r = 0 {\displaystyle r=0} であれば入力のみから新な隠れ状態が計算され、 r = 1 {\displaystyle r=1} であれば入力・隠れ状態の両方が利用される。これら z {\displaystyle z} と r {\displaystyle r} もまた x t {\displaystyle x_{t}} と h t − 1 {\displaystyle h_{t-1}} から計算される。 単純なRNNと比較して、GRUは更新ゲート z {\displaystyle z} による隠れ状態の保持とそれによる長期記憶が可能になる。また初期化ゲート r {\displaystyle r} による隠れ状態の削除が可能になることでよりコンパクトな隠れ表現を得られる。 隠れ状態のサイズが1以上であれば複数の z {\displaystyle z} と r {\displaystyle r} ( z t j {\displaystyle z_{t}^{j}} と r t j {\displaystyle r_{t}^{j}} ) を持つことになる。それぞれの j {\displaystyle j} は独立して学習されるため、ある j {\displaystyle j} は更新ゲート z {\displaystyle z} が長期間1に近いすなわち長期記憶を保持し、ほかの j {\displaystyle j} は初期化ゲート r {\displaystyle r} が頻繁に切り替わりながら入力のフィルタリングをおこなうように振る舞う、といったことが可能になっている。すなわちそれぞれの隠れ状態が異なる時間スケールの表現を学習しうる。 様々な組合せで以前の隠れ状態とバイアスを使ってゲーティングを行う完全ゲート付きユニットや最小ゲート付きユニット（minimal gated unit）と呼ばれる単純形など複数の変種が存在する。 以下の式において、演算子 ∘ {\displaystyle \circ } はアダマール積を示す。 最初、 t = 0 {\displaystyle t=0} に対して、出力ベクトルは h 0 = 0 {\displaystyle h_{0}=0} である。 z t = σ g ( W z x t + U z h t − 1 + b z ) r t = σ g ( W r x t + U r h t − 1 + b r ) h t = ( 1 − z t ) ∘ h t − 1 + z t ∘ σ h ( W h x t + U h ( r t ∘ h t − 1 ) + b h ) {\displaystyle {\begin{aligned}z_{t}&=\sigma _{g}(W_{z}x_{t}+U_{z}h_{t-1}+b_{z})\\r_{t}&=\sigma _{g}(W_{r}x_{t}+U_{r}h_{t-1}+b_{r})\\h_{t}&=(1-z_{t})\circ h_{t-1}+z_{t}\circ \sigma _{h}(W_{h}x_{t}+U_{h}(r_{t}\circ h_{t-1})+b_{h})\end{aligned}}} 変数 x t {\displaystyle x_{t}} : 入力ベクトル h t {\displaystyle h_{t}} : 出力ベクトル z t {\displaystyle z_{t}} : 更新ゲートベクトル r t {\displaystyle r_{t}} : 初期化ゲートベクトル W {\displaystyle W} 、 U {\displaystyle U} 、および b {\displaystyle b} : パラメータ行列およびベクトル 活性化関数 σ g {\displaystyle \sigma _{g}} : オリジナルはシグモイド関数。 σ h {\displaystyle \sigma _{h}} : オリジナルは双曲線正接関数. σ g ( x ) ∈ [ 0 , 1 ] {\displaystyle \sigma _{g}(x)\in [0,1]} という条件で、別の活性化関数も利用可能である。 z t {\displaystyle z_{t}} および r t {\displaystyle r_{t}} を変更することによって代替形式を作ることができる。 タイプ1、それぞれのゲートが以前の隠れ状態およびバイアスにのみ依存する。 z t = σ g ( U z h t − 1 + b z ) r t = σ g ( U r h t − 1 + b r ) {\displaystyle {\begin{aligned}z_{t}&=\sigma _{g}(U_{z}h_{t-1}+b_{z})\\r_{t}&=\sigma _{g}(U_{r}h_{t-1}+b_{r})\\\end{aligned}}} タイプ2、それぞれのゲートが以前の隠れ状態にのみ依存する。 z t = σ g ( U z h t − 1 ) r t = σ g ( U r h t − 1 ) {\displaystyle {\begin{aligned}z_{t}&=\sigma _{g}(U_{z}h_{t-1})\\r_{t}&=\sigma _{g}(U_{r}h_{t-1})\\\end{aligned}}} タイプ3、それぞれのゲートはバイアスのみを使って計算される。 z t = σ g ( b z ) r t = σ g ( b r ) {\displaystyle {\begin{aligned}z_{t}&=\sigma _{g}(b_{z})\\r_{t}&=\sigma _{g}(b_{r})\\\end{aligned}}} 最小ゲート付きユニットは、更新ゲートベクトルおよび初期化ゲートベクトルが忘却ゲートへと統合されたことを除いて、完全ゲート付きユニットと類似している。これは、出力ベクトルに対する方程式が変更されなければならないこと になる。 f t = σ g ( W f x t + U f h t − 1 + b f ) h t = f t ∘ h t − 1 + ( 1 − f t ) ∘ σ h ( W h x t + U h ( f t ∘ h t − 1 ) + b h ) {\displaystyle {\begin{aligned}f_{t}&=\sigma _{g}(W_{f}x_{t}+U_{f}h_{t-1}+b_{f})\\h_{t}&=f_{t}\circ h_{t-1}+(1-f_{t})\circ \sigma _{h}(W_{h}x_{t}+U_{h}(f_{t}\circ h_{t-1})+b_{h})\end{aligned}}} 変数 x t {\displaystyle x_{t}} : 入力ベクトル h t {\displaystyle h_{t}} : 出力ベクトル f t {\displaystyle f_{t}} : 忘却ベクトル W {\displaystyle W} 、 U {\displaystyle U} 、および b {\displaystyle b} : パラメータ行列およびベクトル