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 = - y ⋅log( 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 × l og( 0,1 ) + 0 × log( 0,5 ) + . . . )
L = - l o g( 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=1Nyi⋅log(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.