Warum ändert sich der Verlust in Abhängigkeit von der Anzahl der gewählten Epochen?


8

Ich benutze Keras, um verschiedene NN zu trainieren. Ich würde gerne wissen, warum, wenn ich die Epochen in 1 erhöhe, das Ergebnis bis zur neuen Epoche nicht dasselbe ist. Ich verwende shuffle = False und np.random.seed (2017) und habe überprüft, ob das Ergebnis dasselbe ist, wenn ich es mit der gleichen Anzahl von Epochen wiederhole, sodass keine zufällige Initialisierung funktioniert.

Hier füge ich das Bild des resultierenden Trainings mit 2 Epochen bei:

Und hier füge ich das Bild des resultierenden Trainings mit 3 Epochen bei:

Geben Sie hier die Bildbeschreibung ein

Außerdem würde ich gerne wissen, warum die Trainingszeit nicht (3/2) ist und wie es möglich ist, dass einige von ihnen mit einer weiteren Epoche weniger genau sind.

Vielen Dank!


Diese Frage sollte migriert werden zu: datascience.stackexchange.com .
JahKnows

Antworten:


1

Sie verwenden hier zwei Optimierer: Stochastic Gradient Descent (SGD) und Adam (eine komplexere Variante von SGD).

Der "stochastische" Teil bedeutet also, dass er zufällig ist.

Der stochastische Gradientenabstieg funktioniert, indem ein kleinerer Zufall genommen wird Teil der Trainingsdaten, der als "Mini-Batch" bezeichnet wird, verwendet wird und sich darauf zurück ausbreitet (Züge). Dies zu tun, bis der gesamte Datensatz einmal verarbeitet wurde, wird oft als eine Epoche * bezeichnet.

So funktioniert der Gefälleabstieg auf den Punkt gebracht: Stellen Sie sich vor, Sie fahren einen U-förmigen Hügel hinunter. Du bist ziemlich weit unten in der U-Form und willst durch Springen weiter nach unten gehen. Sie finden heraus, welche Richtung für Sie "unten" ist: und dann springen Sie. Aber verdammt noch mal: Du bist zu weit gesprungen und bist weiter oben auf der anderen Seite des U gelandet!

Das ist nur ein einfaches Beispiel. Sie arbeiten wahrscheinlich in viel größeren Dimensionen, was diese Analogie etwas kompliziert.

Auf jeden Fall führt dies dazu, dass der Verlust von Zeit zu Zeit steigt, wenn Sie eine andere Epoche trainieren. Wenn Sie viele Epochen trainieren und der Verlust weiter steigt, sollten Sie die Lernrate überprüfen (die im Grunde entscheidet, wie groß ein "Sprung" ist).

Ich hoffe es hilft :)


*: Es gibt andere Möglichkeiten, eine Epoche zu definieren, aber alles geht in Varianten davon.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.