RNN (再帰ニューラルネット)
RNN (Recurrent NN)
- 前の時刻の隠れ状態ベクトルht−1(l)と,現時刻の入力ベクトルht(l−1)を使って,現在の隠れ状態ベクトルht(l)を更新
- 原理的には前の入力(文脈)全てを記憶して予測できる
- 時間方向誤差逆伝播法(BPTT)を使う
双方向RNN
- 前向き走査隠れ状態ベクトルh→と後向き走査隠れ状態ベクトルh←の両方を計算する
- 入力全体の情報を各時刻で考慮できる
- ただし予測時には入力列全体が与えられている必要が有る
- h→の計算にh←を使わないなど,両方向の扱いは色々考えられる
ゲート付RNN
- RNNの元の層数は少なくても,本質的には深い層を扱っているのと同じで,勾配消失発散問題が生じる
- 長期間の依存関係を表現するパラメータの学習が難しい
- ゲート
- 忘却の度合いを調整
- 逆誤差伝播の観点では,流量制限をかけることに相当
LSTM (Long Short-Term Memory)
- 3つのゲート
- 入力 i
- 忘却 f
- 出力 o
- 長期の状態を保持するセルと呼ばれる,別の隠れ状態ベクトルcを使う
GRU (Gated Recurrent Unit)
- セルを使わず,長期の情報を隠れ状態ベクトルhに集約する
- 2つのゲート
- 再設定(reset) r: 1時刻前の隠れ状態ベクトルの減衰
- 更新(update) z: 1時刻前の隠れ状態ベクトルからの更新率を調整
- LSTMとGRUの性能差は不明
- 同じ状態変数数なら,GRUの方が少ない計算量・メモリ量で済む
木構造再帰ニューラルネット (Tree-RNN)
- Recursive NNともよばれる
- 系列構造のRNNを木構造に拡張したもの
- 分岐数を固定した木構造を使う