Zaremba et al., Recurrent Neural Network Regularization, ICLR 2015メモ
examplesにあるRNNLMのコードのベースになっている論文がコメントにあるようなので、読んだメモ。
[1409.2329] Recurrent Neural Network Regularization
概要
- LSTMを使ったRNNsの場合、単純なDropoutがうまくいかない
- また、実用的な応用では、大きなRNNだと過学習してしまうため、しばしば(かなり)小さいモデルが使われる
- うまく適用する方法を紹介する
RNNとLSTM
- RNNをとする
- 「時刻tのひとつ前のレイヤーl-1」と「時刻t-1のレイヤーl」の隠れ層から「時刻tのレイヤーl」の隠れ層の値が決まる
- よくあるRNNsの場合は、で計算
- LSTMはこの時間の遅れによる影響を「memorize」できるようにすることで拡張している
- だいたいは明示的に「メモリセル」を明示的に持つ
- ここで考えるLSTMは、Input gate, Input modulation gate, Forget gate, Output gateを持つ
提案手法
- main ideaは、「non-recurrentな接続に対してのみドロップアウト操作を適用する」こと
- BPTT(Backpropagation through time)な感じに時間展開したネットワークで考えると、現時刻tでの遷移にのみ適用
- 各gateへの入力のうち、に対してランダムに値を0にする(dropout)
- 考え
- ユニットが過去に起きたイベントを覚えておくことは重要
- しかし、すべての接続関係にDropoutを適用してしまうと、recurrentしている接続をしているところを混乱させることになってしまう
- これはLSTMに長期記憶を格納することを難しくさせてしまう
- そこで、recurrentしている接続にはドロップアウトを適用しないことで、過去の記憶能力をそのまま発揮できるようになる
実験
ネットワークの作り方とかやってみないとわからなそうなので、実験は後から見る。