Gated Recurrent Unit(GRU)は、2014年にKyunghyun Cho、Bart van Merriënboer、Caglar Gulcehre、Dzmitry Bahdanau、Fethi Bougares、Holger Schwenk、Yoshua Bengioによって提案された。彼らは機械翻訳のためのエンコーダ・デコーダモデルの研究において、長期依存関係を効率的に学習するための簡素化されたゲート機構を模索していた。同年に発表された論文「Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation」において、GRUの基本構造が初めて示された。GRUはLong Short-Term Memory(LSTM)の複雑さを軽減することを目的として設計され、その後、多くのシーケンスモデリングタスクで標準的なアーキテクチャの一つとして確立された。
GRUは、リセットゲート(reset gate)と更新ゲート(update gate)という2つのゲート機構を用いて、隠れ状態の流れを制御する。各タイムステップにおいて、入力ベクトル \(x_t\) と前の隠れ状態 \(h_{t-1}\) を受け取り、新しい隠れ状態 \(h_t\) を生成する。ゲートはシグモイド関数で出力される0から1の値を持ち、情報の保持と忘却を調節する。
2.1 リセットゲート
リセットゲート \(r_t\) は、前の隠れ状態のどの程度を無視するかを決定する。式は \(r_t = \sigma(W_r x_t + U_r h_{t-1} + b_r)\) で表され、\(\sigma\) はシグモイド関数、\(W_r\) と \(U_r\) は重み行列、\(b_r\) はバイアス項である。リセットゲートが0に近いと前の隠れ状態の影響が強く抑制され、短期の依存関係に焦点が当てられる。逆に1に近いと前の状態がそのまま保持される。
2.2 更新ゲート
更新ゲート \(z_t\) は、前の隠れ状態からどの程度の情報を現在の状態に引き継ぐかを制御する。式は \(z_t = \sigma(W_z x_t + U_z h_{t-1} + b_z)\) である。更新ゲートが1に近いと前の状態がほぼそのまま保持され、0に近いと新しい候補状態が強く反映される。この機構により、長期依存関係を学習しやすくなる。
2.3 隠れ状態の計算
まず、リセットゲートを用いて候補隠れ状態 \(\tilde{h}_t\) を計算する。\(\tilde{h}_t = \tanh(W_h x_t + U_h (r_t \odot h_{t-1}) + b_h)\)。ここで \(\odot\) は要素ごとの積である。次に、更新ゲートを用いて最終的な隠れ状態を求める。\(h_t = z_t \odot h_{t-1} + (1 - z_t) \odot \tilde{h}_t\)。この線形補間により、更新ゲートが長期記憶と短期記憶のバランスを調整する。
2.4 活性化関数
GRUでは、ゲート用の活性化関数としてシグモイド関数 \(\sigma(x) = 1/(1+e^{-x})\) が用いられる。これは出力を0から1に制限し、ゲートの開閉を表現するためである。一方、候補隠れ状態の計算には双曲線正接関数 \(\tanh\) が使用される。\(\tanh\) は出力を-1から1に収め、勾配消失を緩和する効果がある。これらの活性化関数は標準的なRNNアーキテクチャと共通である。
3.1 構造の違い
LSTMは忘却ゲート、入力ゲート、出力ゲートの3つのゲートとセル状態を持つ。一方、GRUは更新ゲートとリセットゲートの2つで隠れ状態を直接更新する。GRUにはLSTMのセル状態がなく、隠れ状態が唯一の状態ベクトルとなる。また、LSTMの出力ゲートに相当する機構はGRUには存在せず、隠れ状態全体が次のステップに渡される。構造の単純化により、GRUはLSTMよりパラメータ数が少ない。
3.2 パラメータ数と計算量
GRUの重み行列は、入力隠れ状態変換に3組(リセットゲート、更新ゲート、候補状態)、各々に入力重みと隠れ重み(バイアスを含む)があるため、合計6つの重み行列と3つのバイアスベクトルとなる。LSTMは4組(忘却ゲート、入力ゲート、出力ゲート、セル候補)で、8つの重み行列と4つのバイアスベクトルが必要である。パラメータ数が約25%少ないため、GRUは計算効率が高く、学習時間が短縮される。
3.3 性能特性
GRUとLSTMは多くのタスクで同等の性能を示すが、データ量が少ない場合やモデルサイズに制約がある場合にGRUが有利とされる。長期依存関係の学習においてLSTMが優れる場合もあるが、GRUの単純な構造は過学習を防ぎやすい。音声認識や自然言語処理の分野では、しばしばGRUがLSTMと同程度の精度を達成しつつ、より高速な収束を示す。ただし、特定のタスク(例えば長い系列の言語モデル)ではLSTMに劣ることも報告されている。
4.1 自然言語処理
GRUは機械翻訳、テキスト生成、感情分析、文書分類など多岐にわたる自然言語処理タスクで利用される。エンコーダ・デコーダモデルの文脈では、GRUがシーケンス間学習の中核として機能する。特に、Bahdanauらが提案した注意機構と組み合わせることで、長い文の翻訳精度が向上した。
4.2 時系列予測
金融市場の株価予測、気象データの予測、センサーデータの異常検知など、時系列データのモデリングにGRUが適用される。ゲート機構により、長期的なトレンドと短期的な変動を同時に捉えることができる。LSTMと同様に、GRUは時系列データの非線形性と時間依存関係を効果的に学習する。
4.3 音声と音楽
音声認識における音響モデル、音楽生成、音声感情認識などでGRUが使用される。リセットゲートの機能により、音声信号の時間的構造の変化に適応しやすい。また、双方向GRUを用いることで、現在のフレームに対する前後のコンテキストを考慮した特徴抽出が可能となる。
5.1 双方向GRU
双方向GRU(Bi-GRU)は、前方方向と後方方向の2つのGRU層を並列に配置し、各タイムステップで両方の隠れ状態を結合する。これにより、系列の過去と未来の情報を同時に利用できる。自然言語処理の文脈での品詞タグ付けや固有表現抽出、音声認識の特徴抽出において、性能が向上することが多い。
5.2 多層GRU
複数のGRU層を積み重ねた多層GRUは、より深い階層的特徴を学習する。下層は低レベルの時間パターン、上層は高レベルの意味情報を捉える。層数が増えると表現能力は高まるが、勾配消失や過学習のリスクも増大する。一般的には2〜4層が用いられ、層間にはドロップアウトが適用されることが多い。
5.3 注意機構との統合
GRUの隠れ状態系列に対して注意機構を適用することで、重要なタイムステップに重みを付けて情報を集約できる。これは機械翻訳や画像キャプション生成などのタスクで標準的な手法となっている。特に、エンコーダにGRU、デコーダに注意付きGRUを用いる構成が広く普及している。また、自己注意(Transformer)との組み合わせも研究されている。
6.1 初期化方法
GRUの重み行列の初期化は学習の安定性に影響する。一般的には、一様分布または正規分布を用いた小さな値(例:\(U[-0.1, 0.1]\))が使われる。また、直交初期化(orthogonal initialization)や、活性化関数に応じたHe初期化(tanhの場合)が推奨される。バイアス項は多くの場合ゼロで初期化されるが、忘却ゲートに相当する機構がないGRUでは、更新ゲートのバイアスを正の値(例:1.0)に初期化すると長期記憶が促進されることが知られている。
6.2 勾配クリッピング
RNN全般に言えるが、GRUでも勾配爆発を防ぐために勾配クリッピングが重要な手法である。通常、全勾配のL2ノルムが閾値(例:5.0や10.0)を超えた場合、そのノルムで除算してスケーリングする。これにより学習が安定し、発散を防ぐことができる。シーケンス長が長いタスクでは特に有効である。
6.3 ドロップアウト
GRUの過学習を防ぐために、ドロップアウトが適用される。典型的な方法は、隠れ状態間の結合に対してドロップアウトをかけるのではなく、各タイムステップでの入力または出力に適用する(variational dropout)。また、多層GRUでは層間の接続にドロップアウトを用いることが多い。時系列データでは、連結する系列全体に同じマスクを使用する「same mask」方式が効果的とされる。