RNN (再帰ニューラルネット)

RNN (Recurrent NN)

  • 前の時刻の隠れ状態ベクトル$h_{t-1}^{(l)}$と,現時刻の入力ベクトル$h_{t}^{(l-1)}$を使って,現在の隠れ状態ベクトル$h_t^{(l)}$を更新
    • 原理的には前の入力(文脈)全てを記憶して予測できる
    • 時間方向誤差逆伝播法(BPTT)を使う

双方向RNN

  • 前向き走査隠れ状態ベクトル$h^{\to}$と後向き走査隠れ状態ベクトル$h^{\gets}$の両方を計算する
    • 入力全体の情報を各時刻で考慮できる
    • ただし予測時には入力列全体が与えられている必要が有る
    • $h^{\to}$の計算に$h^{\gets}$を使わないなど,両方向の扱いは色々考えられる

ゲート付RNN

  • RNNの元の層数は少なくても,本質的には深い層を扱っているのと同じで,勾配消失発散問題が生じる
    • 長期間の依存関係を表現するパラメータの学習が難しい
  • ゲート
    • 忘却の度合いを調整
    • 逆誤差伝播の観点では,流量制限をかけることに相当

LSTM (Long Short-Term Memory)

  • 3つのゲート
    • 入力 $\bold{i}$
    • 忘却 $\bold{f}$
    • 出力 $\bold{o}$
  • 長期の状態を保持するセルと呼ばれる,別の隠れ状態ベクトル$\bold{c}$を使う

GRU (Gated Recurrent Unit)

  • セルを使わず,長期の情報を隠れ状態ベクトル$\bold{h}$に集約する
  • 2つのゲート
    • 再設定(reset) $\bold{r}$: 1時刻前の隠れ状態ベクトルの減衰
    • 更新(update) $\bold{z}$: 1時刻前の隠れ状態ベクトルからの更新率を調整
  • LSTMとGRUの性能差は不明
  • 同じ状態変数数なら,GRUの方が少ない計算量・メモリ量で済む

木構造再帰ニューラルネット (Tree-RNN)

  • Recursive NNともよばれる
  • 系列構造のRNNを木構造に拡張したもの
  • 分岐数を固定した木構造を使う
    • 木構造は予め定義されている必要がある