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を木構造に拡張したもの
- 分岐数を固定した木構造を使う