Wie man "Verlust" und "Genauigkeit" für ein Modell des maschinellen Lernens interpretiert

200

Wenn ich mein neuronales Netzwerk mit Theano oder Tensorflow trainiert habe, wird pro Epoche eine Variable namens "Verlust" gemeldet.

Wie soll ich diese Variable interpretieren? Ein höherer Verlust ist besser oder schlechter, oder was bedeutet dies für die endgültige Leistung (Genauigkeit) meines neuronalen Netzwerks?

mamatv
quelle

Antworten:

283

Je geringer der Verlust, desto besser ein Modell (es sei denn, das Modell hat sich zu stark an die Trainingsdaten angepasst). Der Verlust wird nach Schulung und Validierung berechnet und seine Interferenz gibt an, wie gut das Modell für diese beiden Sätze abschneidet. Im Gegensatz zur Genauigkeit ist der Verlust kein Prozentsatz. Es ist eine Zusammenfassung der Fehler, die für jedes Beispiel in Trainings- oder Validierungssätzen gemacht wurden.

Im Fall von neuronalen Netzen ist der Verlust normalerweise eine negative logarithmische Wahrscheinlichkeit und eine verbleibende Quadratsumme für die Klassifizierung bzw. Regression. Dann besteht das Hauptziel in einem Lernmodell natürlich darin, den Wert der Verlustfunktion in Bezug auf die Modellparameter zu reduzieren (zu minimieren), indem die Gewichtsvektorwerte durch verschiedene Optimierungsmethoden wie die Rückausbreitung in neuronalen Netzen geändert werden.

Der Verlustwert impliziert, wie gut oder schlecht sich ein bestimmtes Modell nach jeder Iteration der Optimierung verhält. Idealerweise würde man die Verringerung des Verlusts nach jeder oder mehreren Iterationen erwarten.

Die Genauigkeit eines Modells wird normalerweise bestimmt, nachdem die Modellparameter gelernt und festgelegt wurden und kein Lernen stattfindet. Dann werden die Testproben dem Modell zugeführt und die Anzahl der Fehler (Null-Eins-Verlust), die das Modell macht, wird nach dem Vergleich mit den wahren Zielen aufgezeichnet. Dann wird der Prozentsatz der Fehlklassifizierung berechnet.

Wenn beispielsweise die Anzahl der Testproben 1000 beträgt und das Modell 952 davon korrekt klassifiziert, beträgt die Genauigkeit des Modells 95,2%.

Geben Sie hier die Bildbeschreibung ein

Es gibt auch einige Feinheiten beim Reduzieren des Verlustwerts. Beispielsweise kann es zu einem Problem der Überanpassung kommen, bei dem sich das Modell die Trainingsbeispiele "merkt" und für den Testsatz irgendwie unwirksam wird. Eine Überanpassung tritt auch in Fällen auf, in denen Sie keine Regularisierung verwenden . Sie haben ein sehr komplexes Modell (die Anzahl der freien Parameter)W ist groß) oder die Anzahl der Datenpunkte Nsehr gering ist.

Amir
quelle
2
Hallo @Amir, danke für deine ausführliche Erklärung. Ich habe jedoch ein Problem: In meinem neuronalen Netzwerk nimmt der Verlust beim Training immer ab (wenn die Epochen zunehmen), die Genauigkeit ist jedoch nicht besser.
Mamatv
8
@mamatv Solange die Kosten sinken, sollten Sie bereit sein zu gehen. Obwohl Kosten und Genauigkeit normalerweise eine umgekehrte Proportionalitätsbeziehung haben, können Sie feststellen, dass Genauigkeit eine Summe von Null-Eins-Fehlern ist, während Kosten eine Summe von Gleitkommazahlen ist. Daher bedeutet eine Verringerung der Kosten um 0,001% nicht unbedingt eine Erhöhung der Genauigkeit um 0,001%. Das Erhöhen der Genauigkeit ist viel schwieriger, wenn die Kostenreduzierung nicht greifbar ist (die Kosten liegen sehr nahe an einem lokalen Minimum)
Amir
2
@mamatv Ich hätte sagen sollen, solange die Kosten für Schulung und Validierung sinken, sollten Sie bereit sein, loszulegen. Sie können auch die Validierungsgenauigkeit für jede Epoche überprüfen. Wenn es anfängt zu steigen, hat Ihr Modell möglicherweise eine Überanpassung und Sie sollten aufhören, es zu trainieren.
Amir
1
Warum trainieren Sie das Modell nicht, um die Genauigkeit zu erhöhen, anstatt Verluste zu minimieren?
Bikashg
2
@bikashg Genauigkeit ist nicht differenzierbar und daher können Sie nicht darauf zurückgreifen.
DharmaTurtle
23

Dies sind zwei verschiedene Metriken zur Bewertung der Leistung Ihres Modells, die normalerweise in verschiedenen Phasen verwendet werden.

Verlust wird häufig im Trainingsprozess verwendet, um die "besten" Parameterwerte für Ihr Modell zu finden (z. B. Gewichte im neuronalen Netzwerk). Es ist das, was Sie versuchen, im Training zu optimieren, indem Sie die Gewichte aktualisieren.

Genauigkeit ist mehr aus einer angewandten Perspektive. Sobald Sie die oben optimierten Parameter gefunden haben, verwenden Sie diese Metriken, um zu bewerten, wie genau die Vorhersage Ihres Modells mit den tatsächlichen Daten verglichen wird.

Lassen Sie uns ein Spielzeugklassifizierungsbeispiel verwenden. Sie möchten das Geschlecht anhand des Gewichts und der Größe vorhersagen. Sie haben 3 Daten, diese lauten wie folgt: (0 steht für männlich, 1 steht für weiblich)

y1 = 0, x1_w = 50 kg, x2_h = 160 cm;

y2 = 0, x2_w = 60 kg, x2_h = 170 cm;

y3 = 1, x3_w = 55 kg, x3_h = 175 cm;

Sie verwenden ein einfaches logistisches Regressionsmodell mit y = 1 / (1 + exp- (b1 * x_w + b2 * x_h))

Wie finden Sie b1 und b2? Sie definieren zuerst einen Verlust und verwenden die Optimierungsmethode, um den Verlust iterativ zu minimieren, indem Sie b1 und b2 aktualisieren.

In unserem Beispiel kann ein typischer Verlust für dieses binäre Klassifizierungsproblem sein: (Ein Minuszeichen sollte vor dem Summationszeichen hinzugefügt werden.)

Wir wissen nicht, was b1 und b2 sein sollen. Nehmen wir eine zufällige Vermutung an, sagen wir b1 = 0,1 und b2 = -0,03. Was ist dann unser Verlust jetzt?

so ist der Verlust

Dann wird Ihr Lernalgorithmus (z. B. Gradientenabstieg) einen Weg finden, b1 und b2 zu aktualisieren, um den Verlust zu verringern.

Was ist, wenn b1 = 0,1 und b2 = -0,03 das endgültige b1 und b2 ist (Ausgabe vom Gradientenabstieg), wie hoch ist jetzt die Genauigkeit?

Nehmen wir an, wenn y_hat> = 0,5 ist, entscheiden wir, dass unsere Vorhersage weiblich ist (1). Andernfalls wäre es 0. Daher sagt unser Algorithmus y1 = 1, y2 = 1 und y3 = 1 voraus. Wie hoch ist unsere Genauigkeit? Wir machen eine falsche Vorhersage für y1 und y2 und machen eine richtige für y3. Unsere Genauigkeit beträgt jetzt 1/3 = 33,33%

PS: In Amirs Antwort wird die Rückausbreitung als Optimierungsmethode in NN bezeichnet. Ich denke, es wäre ein Weg, um einen Gradienten für Gewichte in NN zu finden. Übliche Optimierungsmethoden in NN sind GradientDescent und Adam.

Unentschieden
quelle
Danke für die Mathematik. es half, das Konzept zu klären.
Finn Frotscher
6

@Aadnan Nur zur Verdeutlichung der Trainings- / Validierungs- / Testdatensätze: Der Trainingssatz wird verwendet, um das anfängliche Training des Modells durchzuführen und die Gewichte des neuronalen Netzwerks zu initialisieren.

Der Validierungssatz wird verwendet, nachdem das neuronale Netzwerk trainiert wurde. Es wird verwendet, um die Hyperparameter des Netzwerks zu optimieren und zu vergleichen, wie sich Änderungen an ihnen auf die Vorhersagegenauigkeit des Modells auswirken. Während der Trainingssatz als zum Erstellen der Gate-Gewichte des neuronalen Netzwerks verwendet angesehen werden kann, ermöglicht der Validierungssatz eine Feinabstimmung der Parameter oder der Architektur des neuronalen Netzwerkmodells. Dies ist nützlich, da es einen wiederholbaren Vergleich dieser verschiedenen Parameter / Architekturen mit denselben Daten- und Netzwerkgewichten ermöglicht, um zu beobachten, wie sich Änderungen von Parametern / Architekturen auf die Vorhersagekraft des Netzwerks auswirken.

Dann wird der Testsatz nur verwendet, um die Vorhersagegenauigkeit des trainierten neuronalen Netzwerks an zuvor nicht sichtbaren Daten nach dem Training und der Auswahl von Parametern / Architekturen mit den Trainings- und Validierungsdatensätzen zu testen.

Jon
quelle