Wie nutze ich das frühe Stoppen richtig für das Training eines tiefen neuronalen Netzwerks?

19

Ich habe ein tiefes neuronales Netzwerkmodell und muss es auf meinem Datensatz trainieren, der aus ungefähr 100.000 Beispielen besteht. Meine Validierungsdaten enthalten ungefähr 1000 Beispiele. Da es einige Zeit dauert, um jedes Beispiel zu trainieren (ungefähr 0,5 Sekunden für jedes Beispiel) und um eine Überanpassung zu vermeiden, möchte ich ein vorzeitiges Anhalten anwenden, um unnötige Berechnungen zu vermeiden. Aber ich bin mir nicht sicher, wie ich mein neuronales Netz mit einem frühen Stopp richtig trainieren soll. Einige Dinge verstehe ich jetzt nicht ganz:

  • Was wäre eine gute Validierungshäufigkeit? Sollte ich mein Modell am Ende jeder Epoche auf die Validierungsdaten überprüfen? (Meine Losgröße ist 1)

  • Ist es der Fall, dass die ersten Epochen zu schlechteren Ergebnissen führen, bevor die Konvergenz zu einem besseren Wert einsetzt? Sollten wir in diesem Fall unser Netzwerk für mehrere Epochen trainieren, bevor wir nach einem frühen Stopp suchen?

  • Wie gehe ich mit dem Fall um, dass der Validierungsverlust hoch und runter gehen könnte? In diesem Fall könnte ein vorzeitiges Anhalten mein Modell daran hindern, weiter zu lernen, oder?

Danke im Voraus.

Das Lazy Log
quelle
Ich empfehle dringend eine Losgröße größer als eins. Übliche Größen sind 32, 64 und 128.
ComputerScientist

Antworten:

20

Was wäre eine gute Validierungshäufigkeit? Sollte ich mein Modell am Ende jeder Epoche auf die Validierungsdaten überprüfen? (Meine Losgröße ist 1)

Es gibt keine Goldregel, die Berechnung des Validierungsfehlers nach jeder Epoche ist durchaus üblich. Da Ihr Validierungssatz viel kleiner als Ihr Trainingssatz ist, wird das Training nicht wesentlich verlangsamt.

Ist es der Fall, dass die ersten Epochen zu schlechteren Ergebnissen führen, bevor die Konvergenz zu einem besseren Wert einsetzt?

Ja

Sollten wir in diesem Fall unser Netzwerk für mehrere Epochen trainieren, bevor wir nach einem frühen Stopp suchen?

Sie könnten, aber dann ist die Frage, wie viele Epochen Sie überspringen sollten. In der Praxis überspringen die Menschen also meistens keine Epoche.

Wie gehe ich mit dem Fall um, dass der Validierungsverlust hoch und runter gehen könnte? In diesem Fall könnte ein vorzeitiges Anhalten mein Modell daran hindern, weiter zu lernen, oder?

Die Leute definieren normalerweise eine Geduld, dh die Anzahl der Epochen, die vor einem frühen Stopp gewartet werden müssen, wenn keine Fortschritte bei der Validierung erzielt wurden. Die Geduld wird oft irgendwo zwischen 10 und 100 eingestellt (10 oder 20 sind häufiger), aber es hängt wirklich von Ihrem Datensatz und Ihrem Netzwerk ab.

Beispiel mit Geduld = 10:

Bildbeschreibung hier eingeben

Franck Dernoncourt
quelle
Sollte man das Modell verwenden, wenn es vorzeitig gestoppt wurde oder die patienceModellepochen zuvor gestoppt wurden (das 'beste' ohne weitere Verbesserungen)?
Stackunderflow
2
@Displayname Geduld Epochen vor gestoppt
Franck Dernoncourt
10

Ich bin kürzlich auf eine Zeitung mit dem Titel "Early Stopping - but when?" Gestoßen. von Lutz Prechelt, der viele großartige Beispiele für das frühe Stoppen mit klaren Erklärungen zu den jeweiligen Aufgaben und Formeln enthält.

Hoffentlich kann ein Blick darauf helfen.

Pro Q
quelle
Das Papier ist in einem seltsamen Stil geschrieben, aber die Informationen waren hilfreich.
Josiah
3

Um zu anderen hervorragenden Antworten beizutragen, können Sie auch - nicht aufhören. Ich für gewöhnlich:

  • NN für weit mehr Zeit laufen zu lassen, hätte ich für sinnvoll gehalten,
  • Speichern Sie die Modellgewichte alle N Epochen und
  • Wenn sich der Trainingsverlust stabilisiert hat, wähle ich einfach das Modell mit dem geringsten Validierungsverlust aus.

Das macht natürlich nur Sinn, wenn Sie nicht im Minutentakt bezahlen (oder die Kosten gering genug sind) und wenn Sie das Training manuell beenden können. Der Vorteil ist, dass es im Nachhinein viel einfacher ist, den niedrigsten Validierungsfehler zu bestimmen.

johndodo
quelle
1
Ich mache das auch. Obwohl ich mir wie du bewusst bin, dass es ein Luxus ist. Als die Modelle anfingen, viel Platz in Anspruch zu nehmen, stellte ich fest, dass ich anhand der vorherigen Verlust- und F-Score-Zahlen programmgesteuert bestimmen konnte, wann auch vorherige Modelle gelöscht werden sollten - so dass Sie ein sich bewegendes Fenster mit den besten Modellkandidaten erhalten, die ungefähr so ​​viel Platz verbrauchen viel Festplattenspeicher, wie sie wahrscheinlich wert sind.
QA Collective