Deep Learning: Warum führt eine Erhöhung von batch_size zu einer Überanpassung und wie reduziert man diese?

8

Ich habe mein Modell auf meinem lokalen Computer trainiert, wo der Speicher nur für 10 Beispiele pro Stapel ausreicht. Als ich jedoch mein Modell auf AWS migrierte und eine größere GPU (Tesla K80) verwendete, konnte ich eine Stapelgröße von 32 aufnehmen. Die AWS-Modelle zeigten jedoch alle eine sehr, sehr schlechte Leistung mit einem großen Hinweis auf Überanpassung. Warum passiert das?

Das Modell, das ich derzeit verwende, ist das Modell inception-resnet-v2, und das Problem, auf das ich abziele, ist ein Computer-Vision-Modell. Eine Erklärung, die ich mir vorstellen kann, ist, dass es wahrscheinlich der Batch-Norm-Prozess ist, der es stärker an die Batch-Bilder gewöhnt. Zur Abschwächung habe ich den gleitenden Durchschnitt des Batch_Norm-Zerfalls reduziert.

Sollte ich Dropout auch zusammen mit batch_norm verwenden? Ist diese Praxis üblich?

Meine Trainingsbilder sind ungefähr 5000, aber ich habe ungefähr 60 Epochen trainiert. Wird dies als viel angesehen oder sollte ich das Training früher beenden?

infomin101
quelle

Antworten:

3

Kapitel 6 von Goodfellows Buch :

Kleine Chargen können einen regulierenden Effekt haben (Wilson und Martinez, 2003), möglicherweise aufgrund des Rauschens, das sie dem Lernprozess hinzufügen. Ein Generalisierungsfehler ist häufig am besten für eine Chargengröße von 1. Das Training mit einer so kleinen Chargengröße erfordert möglicherweise eine geringe Lernrate, um die Stabilität aufrechtzuerhalten, da die Schätzung des Gradienten sehr unterschiedlich ist. Die Gesamtlaufzeit kann sehr hoch sein, da mehr Schritte erforderlich sind, sowohl aufgrund der verringerten Lernrate als auch weil mehr Schritte erforderlich sind, um den gesamten Trainingssatz zu beobachten.

Erfan
quelle