[1707.05589] On the State of the Art of Evaluation in Neural Language Models
概要
Neural Language Model のSOTAなアーキテクチャを同じ環境で比較実験をする
Models
- Long Short-Term Memory (LSTM) (Hochreiter & Schmidhuber, 1997)
- Recurrent Highway Network (RHN) (Zilly+, 2016)
- NAS (Zoph & Le, 2016)
Dataset
- Penn Treebank (Marcus+, 1993), preprocessed (Mikolov+, 2010)
- Wikitext-2 (Merity+, 2016)
- Enwik8 from the Hutter Prize dataset (Hutter, 2012)
- こいつだけ char-level model にする
内の最初の90M文字を train に用いて残りの10M文字で validation と test を作った.
Training
Penn Treebank と Wikitext-2 には以下の通りにする.
- batch size: 64
- Adam (Kingma & Ba, 2014)
- \(\beta_1=0\)
- exponential moving average が切られるのでほぼモーメント無しの RMSProp
- \(\beta_2 = 0.999, \epsilon=10^{-9}\) (default)
Enwik8 は char-level にしたいので以下のように変える
- batch size: 128
- Adam (Kingma & Ba, 2014)
- \(\beta_1=0\)
- exponential moving average が切られるのでほぼモーメント無しの RMSProp
- \(\beta_2 = 0.99, \epsilon=10^{-5}\) (default)
Evaluation
validation での perlexity が best の時点のモデルで評価する. 評価時には batch size は 1 にする. Word-level だと, 訓練のときのバッチサイズのままにすると 0.3 PPL くらい悪くなる. Char-level だと影響は無いのでどうでも良いらしい.
Hyperparameter tuning
Google Vizier (Golovin+, 2017) を使う. こいつはブラックボックス最適化をしてくれる. 簡単のために以下に限って最適化をした:
- learning rate
- input embedding ratio
- input dropout
- state dropout
- output dropout
- weight decay
Results
論文報告との比較. Perplexity なので小さい方が良い (PPL\(=2^H\)).
パラメータを注意深く選べば報告よりも良くなる.