回帰問題でのDropoutの悪影響とその対策
背景・目的
回帰問題をNNで解くときにDropoutとBatchNormを使わない方が良いという話を聞いた。
回帰問題をNNで解くときはドロップアウトとBatchNormは使わないほうがいいって話、あまり知られてない気がする
— Tsultra (@Tsultra_K) 2021年7月30日
Pitfalls with Dropout and BatchNorm in regression problemshttps://t.co/RNfCj5cqsB
Pitfalls with Dropout and BatchNorm in regression problems | by Søren Rasmussen | Towards Data Science
回帰問題でDropoutを使うことによる影響を検証し、その対策について検討する。
(BatchNormの検証はしていない。)
注意
汎化性能についての検証はしていない。
今回の検証結果では回帰問題でDropoutを使うことで悪影響があるという結論に至ったが、実際のタスクでは汎化性能向上による良い影響もあるという点に注意してほしい。
まとめ
- Dropoutによる悪影響
- 回帰問題でDropoutを使うと、正解値の絶対値が大きいときに推定値が小さくなる傾向があった。Dropoutの後に非線形層(ReLUなど)があるとその効果は特に顕著であった。
- 対策
- Dropoutの代わりにGaussianDropout, UniformDropoutを使うと悪影響がある程度改善された。
- MontecarloDropoutを使うと悪影響がなくなった。
- 考察
- 対策手法ではDropout適用後の分散の変化が小さくなる(と思う)ので、対策により結果が改善されたと考えられる。
- その他
- 分類問題ではDropoutを使っても悪影響はなかった。
感想
- かなり影響ありそうなので、使うときは注意した方がいい。
- 今回の結果に思い当たる節がある…。Dropoutを強くしたときに推定値が小さくなるなーと思ったことがあった。
- 実際に回帰問題でDropoutを使うかどうかは汎化性能との兼ね合いで決めるべき。UniformDropoutやGaussianDropoutを試してみるのもいいかも。MontecarloDropoutは計算量増加が許容されるなら強い。
詳細
Gistで公開しています。ブログ上だとスクロールしないといけないのでリンク先の方がたぶん見やすいです。
Effect of Dropout in regression task
他
参考文献
- Pitfalls with Dropout and BatchNorm in regression problems
https://towardsdatascience.com/pitfalls-with-dropout-and-batchnorm-in-regression-problems-39e02ce08e4d - 回帰でDropoutやBNを使ってはいけないという話を試してみた
https://github.com/ak110/regression-dropoutbn - GaussianDropout
http://www.cs.toronto.edu/~rsalakhu/papers/srivastava14a.pdf
https://keras.io/ja/layers/noise/ - UniformDropout
https://arxiv.org/pdf/1801.05134.pdf - Montecarlo Dropout
https://arxiv.org/pdf/1506.02142.pdf