2016-11-09 1 views
0

Ich versuche, das Transferlernen durch Feinabstimmung eines VGG16-Netzwerks (vortrainiert auf ImageNet) durchzuführen, um die Bildklassifizierung auf einem wesentlich kleineren Datensatz (11000 Bilder, 200 Klassen) durchzuführen. Ich trainiere eigentlich nur die letzten 3 FC-Schichten des modifizierten VGG16-Netzwerks. Ich habe Dropout auf zwei der 3 FC Schichten mit einer Wahrscheinlichkeit von 0,5 hinzugefügt.Welcher Zusammenhang besteht zwischen Verlust- und Validierungsgenauigkeit?

Also, wenn ich in diesem Netzwerk trainiere, mache ich keine ausgefallene Vorbearbeitung außer, um jeden Kanal im Bild mit den VGG_MEAN Werten zu subtrahieren, die von den ursprünglichen Autoren gegeben wurden.

So ist das Training scheint gut zu gehen, geht der Verlust wesentlich und stabilisiert sich um einen bestimmten Wert, und ich überwache die Vorhersage Genauigkeit des Netzes auf einem Validierungs-Set (20% der Daten) nach einer bestimmten Anzahl von Chargen wurden trainiert. Ich merke, dass die durchschnittliche Validierungsgenauigkeit keine Trends in der Verbesserung zeigt - und die durchschnittliche Validierungsgenauigkeit schwankt während des gesamten Trainings, als ich tatsächlich gehofft hatte, dass dies allmählich zunimmt. Ich habe sichergestellt, dass die Validierungsdaten beim Inferencing nicht gemischt werden.

Ich habe versucht, die Lernrate zu reduzieren, Feinabstimmung weniger Schichten, aber ohne Erfolg.Wenn Verlust ein Surrogat ist, um anzuzeigen, dass das Modell tatsächlich lernt, warum die Diskrepanz in der Validierungsgenauigkeit?

(1) Liegt es daran, dass ich nur sehr wenige Trainingsdaten habe? (2) Das ursprüngliche Imagine-Dataset hat 1000 Klassen, aber meine Klassifizierungsaufgabe ist feinkörniger und hat 1/5 der ursprünglichen Anzahl von ImageNet-Klassen (denken Sie daran, Vogelarten oder verschiedene Primaten zu klassifizieren). Könnte das ein Problem sein? Ich hätte gerne eine Meinung und Feedback von Personen, die Erfahrung mit solchen Problemen haben.

+0

Wenn ich es gut verstehe, nimmt die Verlustfunktion ab, aber der Validierungsverlust geht nicht mehr zurück, was darauf hinweist, dass Sie Ihr Trainingsprogramm nicht mehr anpassen. Wenn dies der Fall ist, versuchen Sie, Ihre Parameter zu strafen, um eine Überanpassung zu vermeiden. – Feras

+0

Hinzufügen von Dropout von 0,5 zu den Schichten FC7 und FC6 verbessert nichts. Tatsächlich ist die Validierungsgenauigkeit so schlecht, dass ich nur ratlos bin. – user1050648

Antwort

0

Es stellt sich heraus, dass ich mit einem "feinkörnigen" Klassifizierungsproblem konfrontiert war. Bilder von Vogelarten sahen einander sehr ähnlich und dies stellte ein Problem für das Netzwerk dar, um zu lernen.

+0

Hallo, Aus Ihrer Sicht ist es keine gute Idee, für weniger Klassen fein abzustimmen. Ich feile auch VGG16 für 50 Klassen von Tüchern. Und ich sehe, dass der Verlust nicht nachlässt. Er fluktuiert nur zwischen 7000 und 4000 im Durchschnitt um 5000. Ich habe noch keine Validierung durchgeführt. – Rusty

+0

@Rusty, Nicht genau ... was ich meinte war in meinem Fall das Klassifikationsproblem war zu feinkörnig - Bilder aus verschiedenen Klassen sahen sich sehr ähnlich. Es ist schwieriger, zwischen zwei Baumarten zu unterscheiden, als beispielsweise zwischen einem Baum und einem Auto zu unterscheiden. – user1050648

+0

okay. Hat der Verlust also irgendeine Bedeutung, so dass er immer kleiner als ein bestimmter Wert usw. sein sollte, oder sollte ich mich nur auf die Validierungsgenauigkeit verlassen? – Rusty

0

Ich weiß, dass der Wert des (Trainings-) Verlustes eine starke Beziehung zur Zuggenauigkeit hat. Wenn der Verlust beim Training abnimmt, erhöht sich die Trainingsgenauigkeit. Aber keine starke Beziehung zwischen Zugverlust und Validierungsgenauigkeit. Wenn der Zugverlust abnimmt und die Validierungsgenauigkeit steigt, dann erwarten wir dies. Wenn jedoch der Zugverlust abnimmt, während die Validierungsgenauigkeit auf die Sättigung fällt, kann es zu einer Überanpassung kommen. Und in diesem Fall sollte das Training gestoppt werden und einige Parameter wie Gewichtsabnahme für Regularisierung und Abbruchrate angepasst werden.

So kann die Validierungsgenauigkeit nicht direkt durch den Trainingsverlust ersetzt werden. Wenn möglich, sollte die Validierungsgenauigkeit verwendet werden, anstatt nur die Kurve des Lernverlustes zu sehen. Das obige ist mein Verständnis.

Verwandte Themen