GRU(Gated Recurrent Unit)

1 GRU の概要

GRU(Gated Recurrent Unit) [Chung et al., 2014] は,LSTM(Long Short Term Memory) の簡易版である.LSTMのゲート機構を簡略させることで,計算効率化を狙った改善版である.

この記事では,GRUについて簡潔に紹介する.

GRUは元は,機械翻訳用のRNN Encoder-Decoder向けにLSTMのブロックの代わりに提案されたもの [Cho et al., 2014] を指すが,Gated Recurrent Neural Networkとは呼ばれず「GRU」と呼ばれることが標準的になった.

GRUはLSTM簡易版なので,NLPや音声認識にビジョンなどにおける様々な系列モデリングにおいて,LSTMの代わりに用いられる.

LSTMでは3つあるゲート機構を,GRUでは2つに減らしLSTMと同等の機能を果たすような仕組みになっている.LSTMには用意されていた「記憶セル」変数も,GRUでは使わない.

2 GRU の構造と性質

GRUのゲート構造
図2 GRUのゲート構造

概要でも述べたとおり,GRUは,LSTMを少し簡易したモデルである.LSTMのゲート機構はパラメータも多く,学習に時間がかかる原因ともなる.そこで,LSTMの各ゲートを結合して2つのゲートから構成されるブロックへと単純化し,セルも用いず$\bm{h}_t$だけで同等の働きを達成することで,計算効率性を向上させた.

各ステップ$t$で再帰さえる図2のブロックをGated Recurrent Unitと呼び,それを$t$ステップ分つなげたので,GRUs もしくは GRU network と呼ぶ.

GRUでは,リセット(reset) ゲート更新(update)ゲートの2つのゲートを用いて,毎ステップ $t$ における潜在状態 $\bm{h}_t$の回帰を行う:

\begin{align}
\bm{z}_t &= \sigma (\bm{W}_{z} [\bm{x}_{t}, \bm{h}_{t-1}]) \\
\bm{r}_t &= \sigma (\bm{W}_{r}[\bm{x}_{t}, \bm{h}_{t-1}]) \\
\tilde{\bm{h}}_t &= \tanh (\bm{W}_{h}[\bm{x}_{t}, \bm{r}_t \circ \bm{h}_{t-1} ]) \\
\bm{h}_t &= (1 -\bm{z}_t) \circ \tilde{\bm{h}}_{t-1} + \bm{z}_t \circ \bm{h}_t
\end{align}

最後の4行目の処理が,GRUのメインの仕組みに相当している.

次節で4つの処理を順に分けて紹介する

2.1 GRU のブロック構造:「忘れる」と「覚える」のバランス調整による長期記憶.

GRUは,異なる時間スケール間での依存関係について,適応的に「覚える(remember) v.s 忘れる(forget)」の割合を調整する仕組みとなっている.LSTMはこの仕組みを3つのゲートで実現していたが,それを簡素化してGRUでは2つのゲート「更新ゲート」と「リセットゲート」で実現している.

更新ゲートは新たに記憶として覚える割合の調整を担当しており,長期記憶の記憶の更新割合の重み$\bm{z}_t$を生成する:

\[
\bm{z}_t = \sigma (\bm{W}_{z} [\bm{x}_{t}, \bm{h}_{t-1}])
\]

リセットゲートは記憶の忘れる割合の調整を担当しており,記憶中のリセットする割合の重み$\bm{r}_t$を生成する:

\[
\bm{r}_t = \sigma (\bm{W}_{r}[\bm{x}_{t}, \bm{h}_{t-1}])
\]

リセットゲートは,LSTMの忘却ゲートと同じく「前フレームの潜在状態$\bm{h}_{t-1}$をどれだけ忘れるか(メモリ上から除去するか)」の役割を担当している.

次にリセット量の$\bm{r}_t$を用いて,記憶の更新を行うための$\tilde{\bm{h}}_t$を準備する:

\[
\tilde{\bm{h}}_t = \tanh (\bm{W}_{h}[\bm{x}_{t}, \bm{r}_t \circ \bm{h}_{t-1} ])
\]

そして,ブロック中の最後の処理として,$(1-z):z$ の比で $\bm{h}_{t-1}$ と $\tilde{\bm{h}}_t$ を重み付けし,長期記憶$\bm{h}_t$を更新する:

\[
\bm{h}_t = (1 -\bm{z}_t) \circ \tilde{\bm{h}}_{t-1} + \bm{z}_t \circ \bm{h}_t
\]

2.3 LSTMとGRUの使い分け

動画認識や言語処理などにおいて,中~高次元の特徴ベクトルを使う場合にはGRUの方が計算性効率が良い.しかし,1次元の生波形をそのまま特徴化しないで解析する場合など,入力特徴ベクトルが低~中次元ベクトルであり,なおかつ系列長もあまり長くない対象であればLSTMで十分でもある.

またGRUは,省略前のLSTMほどの長期記憶性能は持ち合わせいないので,GRUだと性能が出ない場合には,LSTMのほうが予測性能が良くなる場合もある.2者の使い分け意識は大事である.

長い系列には向かないが,ニューラル言語モデルとしてLSTMとGRUは用いられてきたため,Transformer流行以降も,Vision and Languageや動画認識などの「系列長がそれほど長くない問題」や「フレーム間で連続的に特徴ベクトルやトークンが変化している問題」では,良い埋め込みベクトルに助けられて,系列モデルで頑張らなくても良くなる意味で,引き続きGRUが系列モデル部に採用される傾向が強い.

References

  • [Cho et al., 2014] Kyunghyun Cho, Bart Van Merrie ̈nboer, Caglar Gulcehre, Dzmitry Bahdanau, Fethi Bougares, Holger Schwenk, and Yoshua Bengio. “Learning phrase representations using rnn encoder-decoder for statistical machine translation.” In EMNLP, 2014.
  • [Chung et al., 2014] J. Chung, C. Gulcehre, K. Cho, and Y. Bengio. Empirical evaluation of gated recurrent neural networks on sequence modeling. arXiv preprint arXiv:1412.3555, 2014

参照外部リンク

参考書籍

関連記事