Erklärung der entropieübergreifenden Verluste


35

Angenommen, ich erstelle eine NN für die Klassifizierung. Die letzte Schicht ist eine dichte Schicht mit Softmax-Aktivierung. Ich habe fünf verschiedene Klassen zu klassifizieren. Angenommen, für ein einzelnes Trainingsbeispiel true labelist das, [1 0 0 0 0]während die Vorhersagen sind [0.1 0.5 0.1 0.1 0.2]. Wie würde ich den Kreuzentropieverlust für dieses Beispiel berechnen?

Antworten:


50

Die Kreuzentropieformel nimmt zwei Verteilungen auf, , die wahre Verteilung, und , die geschätzte Verteilung, definiert über die diskrete Variable und ist gegeben durchp(x)q(x)x

H(p,q)=-xp(x)Log(q(x))

Für ein neuronales Netz ist die Berechnung von Folgendem unabhängig:

  • Welche Art von Schicht wurde verwendet?

  • Welche Art von Aktivierung wurde verwendet - obwohl viele Aktivierungen nicht mit der Berechnung kompatibel sind, da ihre Ausgaben nicht als Wahrscheinlichkeiten interpretierbar sind (dh ihre Ausgaben sind negativ, größer als 1 oder summieren sich nicht zu 1). Softmax wird häufig für die Klassifizierung mehrerer Klassen verwendet, da es eine gut verhaltene Wahrscheinlichkeitsverteilungsfunktion garantiert.

Für ein neuronales Netzwerk wird die Gleichung normalerweise in einer Form in der der Grundwahrheitsvektor und (oder ein anderer Wert, der direkt aus der Ausgabe der letzten Ebene stammt) ist die Schätzung. Für ein einzelnes Beispiel würde es so aussehen:yyy^

L=-yLog(y^)

Dabei ist das Vektorpunktprodukt.

Ihre Beispielgrundwahrheit gibt alle Wahrscheinlichkeiten für den ersten Wert an, und die anderen Werte sind Null, sodass wir sie ignorieren können. Verwenden Sie einfach den passenden Begriff aus Ihren Schätzungenyyy^

L=-(1×lOG(0,1)+0×Log(0,5)+...)

L=-lOG(0,1)2.303

Ein wichtiger Punkt aus den Kommentaren

Das heißt, der Verlust wäre gleich, egal ob die Vorhersagen oder .[0,1,0,5,0,1,0,1,0,2][0.1,0.6,0.1,0.1,0.1]

Ja, dies ist ein Schlüsselmerkmal von Multiclass Logloss. Es belohnt / bestraft nur die Wahrscheinlichkeiten korrekter Klassen. Der Wert ist unabhängig davon, wie die verbleibende Wahrscheinlichkeit auf falsche Klassen aufgeteilt wird.

Sie werden diese Gleichung häufig über alle Beispiele gemittelt als Kostenfunktion sehen . Es wird in Beschreibungen nicht immer strikt eingehalten, aber normalerweise ist eine Verlustfunktion niedriger und beschreibt, wie eine einzelne Instanz oder Komponente einen Fehlerwert ermittelt, während eine Kostenfunktion höher ist und beschreibt, wie ein komplettes System zur Optimierung bewertet wird. Eine Kostenfunktion, die auf dem Verlust von Multiklassenprotokollen für einen Datensatz der Größe basiert, könnte folgendermaßen aussehen:N

J=1N(i=1Nyilog(y^i))

Bei vielen Implementierungen müssen Ihre Grundwahrheitswerte einmalig (mit einer einzigen wahren Klasse) codiert werden, da dies eine zusätzliche Optimierung ermöglicht. Im Prinzip kann der Kreuzentropieverlust jedoch berechnet und optimiert werden, wenn dies nicht der Fall ist.


1
Okay. Das heißt, der Verlust wäre gleich, egal ob die Vorhersagen [0,1 0,5 0,1 0,1 0,2] oder [0,1 0,6 0,1 0,1 0,1] sind.
Nain

@Nain: Das ist richtig für dein Beispiel. Der Kreuzentropieverlust hängt nicht von den Werten falscher Klassenwahrscheinlichkeiten ab.
Neil Slater

8

Die Antwort von Neil ist richtig. Ich halte es jedoch für wichtig, darauf hinzuweisen, dass der Verlust zwar nicht von der Verteilung zwischen den falschen Klassen abhängt (nur von der Verteilung zwischen der richtigen Klasse und dem Rest), der Gradient dieser Verlustfunktion jedoch die falschen Klassen je nach Art und Weise unterschiedlich beeinflusst falsch sind sie. Wenn Sie also beim maschinellen Lernen Cross-Ent verwenden, ändern Sie die Gewichte für [0,1 0,5 0,1 0,1 0,2] und [0,1 0,6 0,1 0,1 0,1] unterschiedlich. Dies liegt daran, dass die Bewertung der richtigen Klasse durch die Bewertungen aller anderen Klassen normalisiert wird, um daraus eine Wahrscheinlichkeit zu machen.


3
Können Sie es mit einem richtigen Beispiel ausarbeiten?
Nain

@Lucas Adams, kannst du bitte ein Beispiel geben?
Koryakinp

Die Ableitung von JEDEM y_i (Softmax-Ausgang) für JEDES Protokoll z (oder den Parameter w selbst) hängt von JEDEM y_i ab. medium.com/@aerinykim/…
Aaron

2

Mal sehen, wie sich der Gradient des Verlusts verhält ... Wir haben die Kreuzentropie als Verlustfunktion, die gegeben ist durch

H(p,q)=i=1np(xi)log(q(xi))=(p(x1)log(q(x1))++p(xn)log(q(xn))

xi

xiH(p,q)=xip(xi)log(q(xi)).
xiH(p,q)=p(xi)1q(xi)q(xi)xi.

p(xi)

Ich frage mich, wie Softwarepakete mit einem vorhergesagten Wert von 0 umgehen sollen, während der wahre Wert größer als Null war ... Da wir in diesem Fall durch Null teilen.


Ich denke, was Sie wollen, ist eine Ableitung für den Parameter, nicht für x_i.
Aaron

1

Beginnen wir mit dem Verständnis der Entropie in der Informationstheorie: Angenommen, Sie möchten eine Folge von Buchstaben "aaaaaaaa" kommunizieren. Sie könnten das leicht als 8 * "a" tun. Nehmen Sie jetzt eine andere Zeichenfolge "jteikfqa". Gibt es eine komprimierte Möglichkeit, diese Zeichenfolge zu kommunizieren? Es ist nicht da. Wir können sagen, dass die Entropie der zweiten Zeichenfolge mehr ist, als dass wir zur Kommunikation mehr "Bits" an Informationen benötigen.

log2(n)log2(1/8)

i=1818log2(18)=3

Bei der Kreuzentropie konzentrieren wir uns, wie der Name schon sagt, auf die Anzahl der Bits, die erforderlich sind, um den Unterschied zwischen zwei verschiedenen Wahrscheinlichkeitsverteilungen zu erklären. Das beste Szenario ist, dass beide Verteilungen identisch sind. In diesem Fall ist die geringste Anzahl von Bits erforderlich, dh einfache Entropie. In mathematischer Hinsicht

H(y,y^)=iyiloge(y^i)

y^y

Fazit: Als Laie könnte man sich die Kreuzentropie als den Abstand zwischen zwei Wahrscheinlichkeitsverteilungen in Form der Informationsmenge (Bits) vorstellen, die zur Erklärung dieses Abstands benötigt wird. Es ist eine einfache Methode, einen Verlust zu definieren, der abnimmt, wenn sich die Wahrscheinlichkeitsvektoren annähern.


0

Ich bin nicht einverstanden mit Lucas. Die obigen Werte sind bereits Wahrscheinlichkeiten. Beachten Sie, dass der ursprüngliche Beitrag angab, dass die Werte eine Softmax-Aktivierung aufwiesen.

Der Fehler wird nur auf die "heiße" Klasse zurückübertragen und die Wahrscheinlichkeit Q (i) ändert sich nicht, wenn sich die Wahrscheinlichkeiten innerhalb der anderen Klassen untereinander verschieben.


2
Lucas ist richtig. Bei der vom OP beschriebenen Architektur ist der Gradient bei allen Protokollen (im Gegensatz zu den Ausgängen) nicht Null, da die Softmax-Funktion sie alle verbindet. Der [Gradient des] Fehlers in der "heißen" Klasse breitet sich also auf alle Ausgangsneuronen aus.
Neil Slater

+1 für Neil und Lucas
Aaron

-1

Das Problem ist, dass die Wahrscheinlichkeiten von einer 'komplizierten' Funktion stammen, die die anderen Ausgaben in den gegebenen Wert einbezieht. Die Ergebnisse sind miteinander verbunden, so dass wir nicht das tatsächliche Ergebnis ableiten, sondern alle Eingaben der letzten Aktivierungsfunktion (Softmax) für jedes einzelne Ergebnis.

pich-yich

Andere nette Beschreibung unter gombru.github.io/2018/05/23/cross_entropy_loss .

Ich denke, dass die Verwendung eines einfachen Sigmoid als letzte Aktivierungsschicht zur genehmigten Antwort führen würde, aber die Verwendung von Softmax zeigt eine andere Antwort an.


1
Willkommen bei Stack Exchange. Das, was Sie geschrieben haben, scheint jedoch keine Antwort auf die Frage des OP nach der Berechnung des Cross-Entropy-Verlusts zu sein.
user12075
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.