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.
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.
quelle
Mal sehen, wie sich der Gradient des Verlusts verhält ... Wir haben die Kreuzentropie als Verlustfunktion, die gegeben ist durch
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.
quelle
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.
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
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.
quelle
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.
quelle
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.
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.
quelle