2017-11-14 10 views
1

Ich möchte ein CNN trainieren, aber ich möchte alle Daten verwenden, um das Netzwerk zu trainieren und somit keine Validierung durchzuführen. Ist das eine gute Wahl? riskiere ich, mein CNN zu überfrachten, wenn ich nur den Trainingsverlust als Kriterium für den frühen Stopp des CNN verwende?Was ist die beste Metrik, um zu beurteilen, wie gut CNN trainiert wird? Validierungsfehler oder Trainingsverlust?

Mit anderen Worten, was ist der beste 'Monitor' Parameter in KERAS (zum Beispiel) für frühes Stoppen, unter den folgenden Optionen?

early_stopper=EarlyStopping(monitor='train_loss', min_delta=0.0001, patience=20) 
early_stopper=EarlyStopping(monitor='train_acc', min_delta=0.0001, patience=20) 
early_stopper=EarlyStopping(monitor='val_loss', min_delta=0.0001, patience=20) 
early_stopper=EarlyStopping(monitor='val_acc', min_delta=0.0001, patience=20) 

Es gibt eine Diskussion, wie dies in Stackoverflow Keras: Validation error is a good measure for stopping criteria or validation accuracy? aber sie sprechen nur über die Validierung. Ist es besser, Kriterien in Validierungs- oder Trainingsdaten zu verwenden, um ein CNN-Training frühzeitig zu stoppen?

Antwort

2
  1. Ich möchte ein CNN trainieren, aber ich möchte alle Daten verwenden, um das Netzwerk zu trainieren, damit die Überprüfung nicht durchgeführt wird. Ist das eine gute Wahl? bin ich riskieren, mein CNN überzufüllen, wenn Sie nur den Trainingsverlust wie das Kriterium für frühes Stoppen des CNN verwenden?

Antwort: Nein, ist Ihr Ziel auf neue Proben vorherzusagen, auch bekam man 100 Trainings Genauigkeit%, aber Sie können bekam schlechte Vorhersage auf neue Proben. Sie haben keine Möglichkeit zu überprüfen, ob Sie

  1. Mit anderen Worten: eine Überanpassung haben, was das Beste ist ‚Monitor‘ Parameter in Keras (zum Beispiel) für die frühe Stopp , unter den Optionen unten?

Antwort: Es sollten die Kriterien am nächsten an der

Realität

early_stopper=EarlyStopping(monitor='val_acc', min_delta=0.0001, patience=20)

Darüber hinaus müssen Sie trainieren, validieren, und Testdaten. Zug ist, Ihr Modell zu trainieren, validieren ist, einige Modelle + Parameter zu validieren und das beste auszuwählen, und Test ist, Ihr Ergebnis unabhängig zu überprüfen (es wird nicht für die Auswahl von Modellen, Parametern verwendet, also entspricht es neuen Proben)

2

Ich habe bereits Antwort gewählt, aber wollte einen kritischen, praktischen Punkt zu verfeinern: das beste Kriterium ist das, das am besten Ihre Erfolgskriterien entspricht. Um zu wissen, Sie müssen Sie Ihre praktische Scoring-Funktion definieren, bevor Ihre Frage für uns völlig sinnvoll ist.

Was ist wichtig für die Anwendung, für die Sie dieses Modell trainieren? Wenn es nicht mehr ist als die Vorhersagegenauigkeit der Top-1, dann ist die Validierungsgenauigkeit (val_acc) mit ziemlicher Sicherheit Ihr einziges Kriterium. Wenn Sie sich für Konfidenzniveaus interessieren (z. B. wenn Sie Ihre Wetten bei einer 48% igen Chance absichern, 42% ist ein Wolf, 10% ein Ferrari), dann wird die korrekte Implementierung einer Fehlerfunktion den Validierungsfehler (val_err) zu einer besseren Wahl machen.

Schließlich betone ich noch einmal, dass die ultimative Metrik ist tatsächlichen Leistung nach Ihren gewählten Kriterien. Test Daten sind eine repräsentative Stichprobe Ihrer tatsächlichen Eingabe. Sie können ein vorzeitiges Abbruchkriterium für eine schnellere Turnaround-Schulung verwenden, aber Sie sind nicht bereit für die Bereitstellung, bis Ihre realen Kriterien getestet und erfüllt sind.

Verwandte Themen