Wie wird die Überanpassung gemessen, wenn die Zug- und Validierungsprobe im Keras-Modell klein ist?

8

Ich habe folgendes Diagramm:

Das Modell wird mit der folgenden Anzahl von Beispielen erstellt:

%Vor%

Nach meinem Verständnis zeigt die Handlung, dass es keine Überanpassung gibt. Aber ich denke, Da die Stichprobe sehr klein ist, bin ich nicht sicher, ob das Modell allgemein ist genug.

Gibt es eine andere Möglichkeit, die Überanpassung als die obige zu messen?

Dies ist mein vollständiger Code:

%Vor%     
pdubois 08.02.2018, 01:06
quelle

4 Antworten

6

Also zwei Dinge hier:

  1. Stratifizieren Sie Ihre Daten w.r.t. Klassen - Ihre Validierungsdaten haben eine völlig andere Klassenverteilung als Ihr Trainingssatz (Zugverband ist ausgeglichen, Validierungssatz dagegen nicht). Dies könnte sich auf Ihre Verluste und Messwerte auswirken. Es ist besser, die Ergebnisse zu stratifizieren, damit das Klassenverhältnis für beide Sets gleich ist.

  2. Mit so wenigen Datenpunkten verwenden Sie mehr grobe Validierungsschemata - wie Sie sehen können, haben Sie insgesamt nur 74 Bilder. In diesem Fall ist es kein Problem, alle Bilder in numpy.array zu laden (Sie könnten weiterhin Daten mit flow function erweitern) und Validierungsschemas verwenden, die schwer zu erhalten sind, wenn Sie Ihre Daten in einem Ordner haben. Die Schemata (von sklearn ), die ich dir empfehlen soll, sind:

    • geschichtete k-fache Kreuzvalidierung - wo Sie teilen Ihre Daten in k Chunks - und für jede Auswahl von k - 1 Chunks trainieren Sie zuerst Ihr Modell auf k - 1 und berechnen dann Metriken auf der einen, die war zur Validierung verlassen. Das Endergebnis ist ein Mittelwert aus Ergebnissen, die bei Validierungsabschnitten erhalten wurden. Sie können natürlich nicht nur bedeuten , sondern auch andere Statistiken der Verluste Verteilung (wie zB min , max , Median usw.). Sie können sie auch mit Ergebnissen vergleichen, die für jede Falte in einem Trainingssatz erhalten wurden.
    • leave-one-out - das ist ein Sonderfall des vorherigen Schemas - wobei die Anzahl der Chunks / fals gleich der Anzahl der Beispiele in Ihrem Dataset ist. Diese Methode wird als die raueste Methode zur Messung der Modellleistung angesehen. Es wird selten im Deep Learning verwendet, da der Trainingsprozess normalerweise zu langsam ist und Datensätze zu groß sind, um Berechnungen in einer vernünftigen Zeit durchzuführen.
Marcin Możejko 13.02.2018 09:17
quelle
3

Ich empfehle, die Vorhersagen als nächsten Schritt zu betrachten.

Wenn Sie beispielsweise anhand des oberen Diagramms und der Anzahl der bereitgestellten Stichproben feststellen, schwankt Ihre Validierungsprognose zwischen zwei Genauigkeiten, und der Unterschied zwischen diesen Vorhersagen ist genau eine Probe, die richtig geschätzt wurde.

Also sagt Ihr Modell mehr oder weniger die gleichen Ergebnisse voraus (plus minus eine Beobachtung) ohne Rücksicht auf die Anpassung. Das ist ein schlechtes Zeichen.

Auch die Anzahl der Merkmale und trainierbaren Parameter (Gewichte) ist für die angegebene Anzahl von Proben viel zu hoch. All diese Gewichte haben einfach keine Chance, tatsächlich trainiert zu werden.

    
Denis Zubo 08.02.2018 04:28
quelle
3

Ihr Validierungsverlust ist konstant niedriger als der Trainingsverlust. Ich wäre Ihren Ergebnissen ziemlich verdächtig. Wenn Sie sich die Validierungsgenauigkeit ansehen, sollte es nicht so sein.

Je weniger Daten Sie haben, desto weniger Vertrauen können Sie in etwas haben. Sie haben also recht, wenn Sie sich nicht sicher sind, ob Sie überziehen. Das einzige, was hier funktioniert, ist das Sammeln von mehr Daten, entweder durch Datenerweiterung oder durch Kombination mit einem anderen Datensatz.

    
Aleksandar Jovanovic 16.02.2018 17:10
quelle
3

Wenn Sie die Überausstattung Ihres aktuellen Modells messen möchten, können Sie das Modell auf Ihrem kleinen Testset testen und jedes Mal 34 Proben aus dem validate set auswählen, d. h. durch die Funktion sample mit der Einstellung replace=TRUE . Indem Sie Samples auswählen, die Sie von Ihrem validate set ersetzen, können Sie mehr "extreme" Datasets erstellen und so eine bessere Schätzung darüber erhalten, wie stark die Vorhersage basierend auf Ihren verfügbaren Daten variieren könnte. Diese Methode wird bagging oder bootstrap aggregating genannt.

    
nadizan 18.02.2018 13:52
quelle