Verlustfunktion
Beim Training eines neuronalen Netzes wird eine Methode benötigt, um die Leistungsfähigkeit des Modells zu bewerten. Dies geschieht mithilfe einer Verlustfunktion, die den Unterschied zwischen den vorhergesagten Ausgaben und den tatsächlichen Zielwerten quantifiziert. Das Ziel des Trainings besteht darin, diesen Verlust zu minimieren, sodass die Vorhersagen möglichst nahe an den tatsächlichen Werten liegen.
Eine der am häufigsten verwendeten Verlustfunktionen für die binäre Klassifikation ist der Kreuzentropie-Verlust, der besonders gut mit Modellen funktioniert, die Wahrscheinlichkeiten als Ausgabe liefern.
Herleitung des Kreuzentropie-Verlusts
Um den Kreuzentropie-Verlust zu verstehen, beginnt man mit dem Maximum-Likelihood-Prinzip. Bei einem binären Klassifikationsproblem besteht das Ziel darin, ein Modell zu trainieren, das die Wahrscheinlichkeit y^ schätzt, dass ein gegebener Input zur Klasse 1 gehört. Das tatsächliche Label y kann entweder 0 oder 1 sein.
Ein gutes Modell sollte die Wahrscheinlichkeit maximieren, alle Trainingsbeispiele korrekt vorherzusagen. Das bedeutet, dass die Likelihood-Funktion maximiert werden soll, die die Wahrscheinlichkeit beschreibt, die beobachteten Daten unter den Vorhersagen des Modells zu sehen.
Für ein einzelnes Trainingsbeispiel, unter der Annahme der Unabhängigkeit, kann die Likelihood wie folgt geschrieben werden:
P(y∣x)=y^y(1−y^)1−yDieser Ausdruck bedeutet einfach:
- Wenn y=1, dann P(y∣x)=y^, das heißt, y^ (die Wahrscheinlichkeit für Klasse 1) soll maximiert werden;
- Wenn y=0, dann P(y∣x)=1−y^, das heißt, 1−y^ (die Wahrscheinlichkeit für Klasse 0) soll maximiert werden.
P(y∣x) bezeichnet die Wahrscheinlichkeit, das tatsächliche Klassenlabel y unter den Eingaben x zu beobachten.
Um die Optimierung zu erleichtern, wird anstelle der Likelihood die Log-Likelihood verwendet (da Logarithmen Produkte in Summen umwandeln und so die Ableitung vereinfachen):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Da das Ziel die Maximierung ist, wird die Verlustfunktion als negative Log-Likelihood definiert, die minimiert werden soll:
L=−(ylog(y^)+(1−y)log(1−y^))Dies ist die binäre Kreuzentropie-Verlustfunktion, die häufig bei Klassifikationsproblemen verwendet wird.
Angenommen, die Variable output
repräsentiert y^ für ein bestimmtes Trainingsbeispiel und die Variable target
repräsentiert y für dieses Trainingsbeispiel, kann diese Verlustfunktion wie folgt implementiert werden:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Warum diese Formel?
Die Kreuzentropie-Verlustfunktion hat eine klare intuitive Interpretation:
- Wenn y=1, vereinfacht sich der Verlust zu −log(y^), das bedeutet, der Verlust ist gering, wenn y^ nahe bei 1 liegt, und sehr hoch, wenn y^ nahe bei 0 liegt;
- Wenn y=0, vereinfacht sich der Verlust zu −log(1−y^), das bedeutet, der Verlust ist gering, wenn y^ nahe bei 0 liegt, und sehr hoch, wenn er nahe bei 1 liegt.
Da Logarithmen negativ groß werden, wenn ihr Argument gegen Null geht, werden falsche Vorhersagen stark bestraft, was das Modell dazu anregt, selbstbewusste und korrekte Vorhersagen zu treffen.
Werden mehrere Beispiele während der Vorwärtspropagation übergeben, wird der Gesamtverlust als durchschnittlicher Verlust über alle Beispiele berechnet:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))wobei N die Anzahl der Trainingsbeispiele ist.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 4
Verlustfunktion
Swipe um das Menü anzuzeigen
Beim Training eines neuronalen Netzes wird eine Methode benötigt, um die Leistungsfähigkeit des Modells zu bewerten. Dies geschieht mithilfe einer Verlustfunktion, die den Unterschied zwischen den vorhergesagten Ausgaben und den tatsächlichen Zielwerten quantifiziert. Das Ziel des Trainings besteht darin, diesen Verlust zu minimieren, sodass die Vorhersagen möglichst nahe an den tatsächlichen Werten liegen.
Eine der am häufigsten verwendeten Verlustfunktionen für die binäre Klassifikation ist der Kreuzentropie-Verlust, der besonders gut mit Modellen funktioniert, die Wahrscheinlichkeiten als Ausgabe liefern.
Herleitung des Kreuzentropie-Verlusts
Um den Kreuzentropie-Verlust zu verstehen, beginnt man mit dem Maximum-Likelihood-Prinzip. Bei einem binären Klassifikationsproblem besteht das Ziel darin, ein Modell zu trainieren, das die Wahrscheinlichkeit y^ schätzt, dass ein gegebener Input zur Klasse 1 gehört. Das tatsächliche Label y kann entweder 0 oder 1 sein.
Ein gutes Modell sollte die Wahrscheinlichkeit maximieren, alle Trainingsbeispiele korrekt vorherzusagen. Das bedeutet, dass die Likelihood-Funktion maximiert werden soll, die die Wahrscheinlichkeit beschreibt, die beobachteten Daten unter den Vorhersagen des Modells zu sehen.
Für ein einzelnes Trainingsbeispiel, unter der Annahme der Unabhängigkeit, kann die Likelihood wie folgt geschrieben werden:
P(y∣x)=y^y(1−y^)1−yDieser Ausdruck bedeutet einfach:
- Wenn y=1, dann P(y∣x)=y^, das heißt, y^ (die Wahrscheinlichkeit für Klasse 1) soll maximiert werden;
- Wenn y=0, dann P(y∣x)=1−y^, das heißt, 1−y^ (die Wahrscheinlichkeit für Klasse 0) soll maximiert werden.
P(y∣x) bezeichnet die Wahrscheinlichkeit, das tatsächliche Klassenlabel y unter den Eingaben x zu beobachten.
Um die Optimierung zu erleichtern, wird anstelle der Likelihood die Log-Likelihood verwendet (da Logarithmen Produkte in Summen umwandeln und so die Ableitung vereinfachen):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Da das Ziel die Maximierung ist, wird die Verlustfunktion als negative Log-Likelihood definiert, die minimiert werden soll:
L=−(ylog(y^)+(1−y)log(1−y^))Dies ist die binäre Kreuzentropie-Verlustfunktion, die häufig bei Klassifikationsproblemen verwendet wird.
Angenommen, die Variable output
repräsentiert y^ für ein bestimmtes Trainingsbeispiel und die Variable target
repräsentiert y für dieses Trainingsbeispiel, kann diese Verlustfunktion wie folgt implementiert werden:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Warum diese Formel?
Die Kreuzentropie-Verlustfunktion hat eine klare intuitive Interpretation:
- Wenn y=1, vereinfacht sich der Verlust zu −log(y^), das bedeutet, der Verlust ist gering, wenn y^ nahe bei 1 liegt, und sehr hoch, wenn y^ nahe bei 0 liegt;
- Wenn y=0, vereinfacht sich der Verlust zu −log(1−y^), das bedeutet, der Verlust ist gering, wenn y^ nahe bei 0 liegt, und sehr hoch, wenn er nahe bei 1 liegt.
Da Logarithmen negativ groß werden, wenn ihr Argument gegen Null geht, werden falsche Vorhersagen stark bestraft, was das Modell dazu anregt, selbstbewusste und korrekte Vorhersagen zu treffen.
Werden mehrere Beispiele während der Vorwärtspropagation übergeben, wird der Gesamtverlust als durchschnittlicher Verlust über alle Beispiele berechnet:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))wobei N die Anzahl der Trainingsbeispiele ist.
Danke für Ihr Feedback!