【DeepLearning】DropoutとInvertedDropout
Published in
2 min readDec 7, 2017
DropOutとは
DropoutはDeepLearningの学習時に、各隠れ層のユニットの何割かランダムに削除しする手法。(何割残すかを keep_prob
というパラメータで示すことが多い)
これを行うことで、Varianceを減らすことができる。様々な構造のネットワークで学習していることになるため、一種のアンサンブル学習と言える。
ただ学習時にユニットを何割か削除しているため、次の層に伝わる値(各層のActivation後の値×パラメータW:W_i^T*A)が減ることとなる。この問題への対処として2つある。
1つは、『テストデータの推定時』に、 keep_prob
を各層のActivation後の値にかけてあげること。そうすることで、学習時とスケールを合わせることができる。
Inverted Dropoutとは
そしてもう1つの対処法が、『学習時』に各層のActivation後の値を keep_prob
で割ってあげること。こうすることで、テスト時とスケールを合わせることができる。
Inverted Dropout は通常のDropoutと比べて、テストデータの推定時の処理が減ることから、推定時間が短縮される、という点で優れているようだ。