statsuのblog

愛知のデータサイエンティスト。自分の活動記録。主に機械学習やその周辺に技術について学んだことを記録していく予定。

回帰問題でのDropoutの悪影響とその対策

背景・目的

回帰問題をNNで解くときにDropoutとBatchNormを使わない方が良いという話を聞いた。


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

github.com

参考文献