この記事はMachine Learning Advent Calendar 2013 3日目の記事です. はじめに ニューラルネットワークの汎化性能を向上させるDropoutは, Deep Learningを実装する上で必須の技術だと思います. 本日はDropoutとその実装方法について説明させていただきます. Dropoutとは ニューラルネットは複雑なモデルであるため過学習に陥りやすいです. これを回避するためにはL2ノルムで値の増加を防いだり, L1ノルムでスパースにしたりするのが一般的です. しかし正則化でもニューラルネットのような複雑なモデルに適切に制約を加えるのは困難です. そこでDropoutの考え方です. Dropoutは各訓練データに対して中間素子をランダムに50%(または任意の確率で)無視しながら学習を進めます. 推定時は素子の出力を半分にします. なぜこれだけで汎化性