Aus einer einfachen Überprüfung Ihres Grundstücks könnte ich einige Schlussfolgerungen ziehen und Dinge auflisten, die Sie ausprobieren sollten. (Dies ohne mehr über Ihr Setup zu wissen: Trainingsparameter und Modellhyperparameter).
Es sieht so aus, als würde der Verlust abnehmen (setzen Sie eine Linie der besten Anpassung durch den Validierungsverlust). Es sieht auch so aus, als könnten Sie möglicherweise länger trainieren, um die Ergebnisse zu verbessern, da die Kurve immer noch nach unten zeigt.
Zuerst werde ich versuchen, Ihre Titelfrage zu beantworten:
Was ist die Ursache für die Fluktuation im Validierungsverlust?
Ich kann mir drei Möglichkeiten vorstellen:
- Regularisierung - um den Lernprozess zu glätten und die Modellgewichte robuster zu machen. Durch Hinzufügen / Erhöhen Ihrer Regularisierung wird verhindert, dass große Aktualisierungen der Gewichte eingeführt werden.
- Chargengröße - ist sie relativ klein (z. B. <20?). Dies würde bedeuten, dass der gemessene mittlere Fehler am Ende des Netzwerks mit nur wenigen Stichproben berechnet wird. Bei einer Chargengröße von beispielsweise hat
8
die 4/8
Richtigkeit und der Vergleich mit der 6/8
Richtigkeit einen großen relativen Unterschied, wenn man den Verlust betrachtet. Wenn man den Mittelwert der Fehler mit solch kleinen Chargen nimmt, führt dies zu einer nicht so glatten Verlustkurve. Wenn Sie über genügend GPU-Speicher / RAM verfügen, erhöhen Sie die Stapelgröße.
- Lernrate - ist möglicherweise zu groß. Dies ähnelt dem ersten Punkt in Bezug auf die Regularisierung. Um reibungslosere Verbesserungen zu erzielen, müssen Sie möglicherweise das Lerntempo verlangsamen, wenn Sie sich einem Verlustminimum nähern. Sie können dies möglicherweise nach einem Zeitplan ausführen, wobei es jedes Mal um einen Faktor reduziert wird (z. B. mit 0,5 multipliziert wird), wenn sich der Validierungsverlust beispielsweise nach
6
Epochen nicht verbessert hat . Dies verhindert, dass Sie große Schritte unternehmen und dann möglicherweise ein Minimum überschreiten und einfach nur herumhüpfen.
Speziell für Ihre Aufgabe würde ich auch vorschlagen, dass Sie versuchen, eine weitere Ebene freizugeben , um den Umfang Ihrer Feinabstimmung zu erhöhen. Dies gibt dem Resnet-18 ein wenig mehr Lernfreiheit, basierend auf Ihren Daten.
Zu Ihrer letzten Frage:
Ist dies etwas, worüber ich mir Sorgen machen sollte, oder sollte ich einfach das Modell auswählen, das bei meinem Leistungsmaß (Genauigkeit) am besten abschneidet?
Solltest du dir Sorgen machen? Kurz gesagt, nein. Eine Validierungsverlustkurve wie Ihre kann vollkommen in Ordnung sein und vernünftige Ergebnisse liefern. Ich würde jedoch einige der oben genannten Schritte ausprobieren, bevor ich mich damit begnüge.
Sollten Sie nur das leistungsstärkste Modell auswählen? Wenn Sie damit meinen, das Modell an seinem Punkt mit dem besten Validierungsverlust (Validierungsgenauigkeit) zu nehmen, würde ich sagen, dass Sie vorsichtiger sein sollten. In Ihrer obigen Darstellung könnte dies ungefähr der 30. Epoche entsprechen, aber ich persönlich würde einen Punkt annehmen, der etwas mehr trainiert hat, wo die Kurve etwas weniger volatil wird. Nachdem Sie einige der oben beschriebenen Schritte ausgeführt haben.