ラビットチャレンジ - 深層学習 Day3 Section3 GRU


0.概要

本記事は日本ディープラーニング協会認定の講座プログラムである「ラビット・チャレンジ」が提供している科目の1つである深層学習のレポートである。
記事タイトルに記載のとおり、Day3 Section3 GRUについて以下にまとめる。

1.GRU(Gated Recurrent Unit)

LSTMはパラメータが多く、計算負荷が高くなる問題があったが、GRUでは構造を変えることでパラメータを削減し、タスクによっては精度も同様またはそれ以上を望めるようになった。
いわばLSTMを簡易化したもの。

上記のように計算負荷がLSTMより低い。
また、簡易化したものではあるが、必ずしもLSTMより劣るとは限らない。
これまでにも最適化手法や初期化等を通して感じてきたが、どのような手法も結局はやりたいタスクに合うかどうかによって良し悪しは変わる。

構造は下記サイトを参照。構造と合わせて数式やソースを比べるとそれほど複雑ではないことが分かる。

参考:
https://axa.biopapyrus.jp/deep-learning/rnn/gru.html
https://agirobots.com/lstmgruentrance-noformula/
https://ja.wikipedia.org/wiki/ゲート付き回帰型ユニット#完全ゲート付きユニット

1.1.リセットゲート

過去の情報を保持させるか忘却させるかを決定する。
LSTMで言うところの忘却ゲートに該当する。

r=\sigma(W_{r}h_{t-1}+U_{r}x_{t})

1.2.更新ゲート

過去の情報をどれだけ取り込むかを決定する。

z=\sigma(W_{z}h_{t-1}+U_{z}x_{t})

1.3.出力

c=tanh(W_{c}(h_{t-1}\otimes r)+U_{c}x_{t})
h_{t}=((1-z)\otimes h_{t-1})\oplus(z\otimes c)

2.確認テスト

2.1.確認テスト1

LSTMとCECが抱える課題について、それぞれ簡潔に述べよ。

回答:
LSTM:パラメータが多いため計算負荷が大きい。
CEC:重みが一律になって学習ができない。過去の情報が不要になっても残り続ける。任意のタイミングで伝搬や忘却が出来ない。

2.2.確認テスト2

LSTMとGRUの違いを簡潔に述べよ。

回答:
LSTM:
・ 入力ゲート、出力ゲート、忘却ゲートの3つのゲートがある。
・ ゲートも多いためその分パラメータ数も多い。

GRU:
・リセットゲート、更新ゲートの2つのゲートがある。
・LSTMをいわば簡易化したものであるため、パラメータ数は少なくなっている。

3.演習チャレンジ

3.1.GRU

def gru(x, h, W_r, U_r, W_z, U_z, W, U):
  # リセットゲート
  r = _sigmoid(x.dot(W_r.T) + h.dot(U_r.T))
  # 更新ゲート
  z = _sigmoid(x.dot(W_z.T) + h.dot(U_z.T))

  # 仮h
  h_bar = np.tanh(x.dot(W.T) + (r * h).dot(U.T))
  # h_{t}
  h_new = (1 - z) * h + z * h_bar
  return h_new

LSTMと同様に順伝播の計算は概要図と合わせて確認すると個々の計算はシンプルであることが分かる。

X.ラビットチャレンジとは

ラビットチャレンジとは、日本ディープラーニング協会認定の講座プログラムの1つ。
E資格を受験するためにはこのラビットチャレンジ等、いずれかの講座プログラムを修了しなければならない。

ラビットチャレンジの特徴は「現場で潰しが効くディープラーニング講座」の通学講座録画ビデオを編集した教材を使用した自習スタイルであるという点。
サポートは他の講座より少なく、受け身ではなく自主的に学んでいく姿勢でなければ進められないが、その分、他の講座に比べると安価であり、手が出しやすい。
ある程度知識がある人、自力で頑張るぞというガッツのある人向けではないかと感じる。