ディープラーニング:なぜbatch_sizeを増やすとオーバーフィッティングが発生し、どうやってそれを減らすのですか?


8

以前はローカルマシンでモデルをトレーニングしていましたが、メモリはバッチごとに10のサンプルで十分です。ただし、モデルをAWSに移行し、より大きなGPU(Tesla K80)を使用した場合、バッチサイズ32に対応できました。しかし、AWSモデルはすべて非常に不十分であり、過剰適合を示しています。なぜこれが起こるのですか?

私が現在使用しているモデルはinception-resnet-v2モデルであり、対象としている問題はコンピュータービジョンモデルです。私が考えることができる1つの説明は、それがおそらくバッチノルムプロセスであるため、バッチイメージにより慣れているということです。緩和策として、batch_normの減衰移動平均を減らしました。

また、dropoutをbatch_normと一緒に使用する必要がありますか?この習慣は一般的ですか?

私のトレーニング画像は約5000ですが、約60エポックでトレーニングしました。これはよく考慮されますか、それとも早くトレーニングを中止する必要がありますか?


3
:私はこれの重複を考えるstats.stackexchange.com/questions/164876
usεr11852

回答:


3

グッドフェローの本の第6章:

小さなバッチは、おそらくそれらが学習プロセスに追加するノイズのために、正則化効果をもたらす可能性があります(Wilson and Martinez、2003)。一般化誤差は、バッチサイズが1の場合に最適です。勾配の推定値の分散が大きいため、このような小さいバッチサイズでのトレーニングは、安定性を維持するために小さな学習率を必要とする場合があります。学習率が低下し、トレーニングセット全体を観察するためにより多くのステップが必要になるため、より多くのステップを実行する必要があるため、合計ランタイムは非常に高くなる可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.