GRU (Gated Recurrent Unit)

1. GRU の概要

GRU (Gated Recurrent Unit) [Cho et al., 2014]は,LSTM(Long Short Term Memory) の簡易版である.LSTMのゲート機構中の3つのゲートのうち,出力ゲートを無くして2ゲート構成にして,計算効率化・軽量化を狙ったLSTMの改善版である.

この記事では,GRUについて,LSTMとも比較しながら,簡潔にだけ紹介する.

元々GRUは,機械翻訳用のseq2seq (RNN Encoder-Decoder)のRNNに,LSTMのブロックの代わりに使用することが提案された [Cho et al., 2014].元提案[Cho et al., 2014] では命名はされなかったのだが, [Chung et al., 2014] で,RNN, LSTM とGRUが命名込みで比較実験されてたなどした時期以降,NLP業界を中心に「Gated Recurrent Neural Network」 と呼ばれることがふつうとなった.

LSTMと同様に,Gated Recurrent Neural Networkとは呼ばれず,省略してGRUと呼ばれることが多い.GRUは,LSTM簡易版なので,NLPや音声認識にビジョンなどの,様々な系列ラベリング問題において,LSTMの代わりに用いられる.

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

2. GRU の構造と性質

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

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

各ステップ $t$ において再帰されるブロック(図2)を,Gated Recurrent Unitと呼ぶ.そのユニットを$t$ステップ分つなげたので,GRU / 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$ の2つをそれぞれ重み付けし,長期記憶 $\bm{h}_t$ を更新する:

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

2.2 LSTMとGRUの使い分け

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

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

長い系列データには向かないが,再帰型ニューラル言語モデルとして,よくLSTMとGRUは用いられてきた.「系列長がそれほど長くない問題」や「フレーム間で連続的に特徴ベクトルやトークンが変化している問題」では,良い埋め込みベクトルに助けられて,よい性能が出せる.よって,Transformer・BERT登場以降も,Vision and Languageや動画認識などで,引き続きGRUが系列モデル部に採用される傾向は続いた.Transformer・BERTは,そもそも大規模パラメータから成る巨大ネットワークであるので,系列長がどうこう言う以前に,大量データや大量タスクからの学習において威力を発揮する.

(2022年3月追記した段落)「自然言語処理向けモデル」のイメージがあるLSTM・GRUではあるが,コンピュタービジョンの動画認識や,Vision and Language の中で,(Transformer登場以前は)「CNN(画像モデル担当) + RNN(系列モデル担当)」の組み合わせモデルがよく用いられていたが,これらのRNN部分にも,LSTMかGRUがよく用いられていた.

系列対系列変換の手段が,LSTM・GRUを用いたRNN Encoder-Decoder (+アテンション)からTransformerに代わって以降も,seq2seq with attentionが主役時代の研究論文(2014~2018頃)は,今でも従来手法として読むことになる.その意味で,当時,よく使われていたGRUについては,性質を知っておくのが好ましい (例えば,機械翻訳のGoogle NMTなども,GRUを並列スタックしたseq2seq with attentionモデルである).

3. まとめ

この記事では,LSTMを改良して簡易モデル化した,GRUについて紹介した.また,各種の系列モデルにRNNを用いる際に,「LSTMとGRUの,どちらをRNNに用いると良いか」の使い分けについても論じた(2.2節).

参考書籍

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

参照外部リンク

関連記事