In der MNIST für ML-Anfänger definieren sie Kreuzentropie als
i y ' i ist der vorhergesagte Wahrscheinlichkeitswert für die Klasse und ist die wahre Wahrscheinlichkeit für diese Klasse.
Frage 1
Ist es nicht ein Problem, dass (in ) 0 sein könnte? Das würde natürlich bedeuten, dass wir einen wirklich schlechten Klassifikator haben. Aber denken Sie an einen Fehler in unserem Datensatz, zB ein „offensichtlich“ markiert , wie . Würde es einfach abstürzen? Gibt das gewählte Modell (Softmax-Aktivierung am Ende) grundsätzlich nie die Wahrscheinlichkeit 0 für die richtige Klasse an? melde mich ( y ich )1
3
Frage 2
Ich habe gelernt, dass Kreuzentropie definiert ist als
Was ist korrekt? Haben Sie Lehrbuchreferenzen für beide Versionen? Wie unterscheiden sich diese Funktionen in ihren Eigenschaften (als Fehlerfunktionen für neuronale Netze)?
quelle
Antworten:
Eine Möglichkeit, die Kreuzentropie zu interpretieren, besteht darin, sie als (Minus-) Log-Wahrscheinlichkeit für die Daten unter einem Modell .y′ich yi
Angenommen, Sie haben ein festes Modell (auch "Hypothese" genannt), das für Klassen ihre hypothetischen Auftrittswahrscheinlichkeiten vorhersagt . Angenommen, Sie beobachten jetzt (in Wirklichkeit) Instanzen der Klasse , Instanzen der Klasse , Instanzen der Klasse usw. Nach Ihrem Modell ist die Wahrscheinlichkeit, dass dies geschieht, wie folgt: Nehmen Sie den Logarithmus und ändern Sie das Vorzeichen:n {1,2,…,n} y1,y2,…,yn k1 1 k2 2 kn n P[data|model]:=yk11yk22…yknn. −logP[data|model]=−k1logy1−k2logy2−⋯−knlogyn=−∑ikilogyi N = k 1 + k 2 + ⋯ + k n y ' i = k i
Wenn Sie nun die rechte Summe durch die Anzahl der Beobachtungen und die empirischen Wahrscheinlichkeiten mit , erhalten Sie die Kreuzentropie:
N=k1+k2+⋯+kn y′i=ki/N −1NlogP[data|model]=−1N∑ikilogyi=−∑iy′ilogyi=:H(y′,y)
Darüber hinaus kann die Protokollwahrscheinlichkeit eines Datensatzes für ein gegebenes Modell als Maß für die "Codierungslänge" interpretiert werden - die Anzahl der Bits, die Sie zum Codieren dieser Informationen benötigen, wenn Ihr Codierungsschema auf Ihrer Hypothese basieren würde.
Dies folgt aus der Beobachtung, dass ein unabhängiges Ereignis mit der Wahrscheinlichkeit mindestens Bits benötigt, um es zu codieren (unter der Annahme einer effizienten Codierung), und folglich ist der Ausdruck buchstäblich die erwartete Länge der Codierung , wobei die Codierungslängen für die Ereignisse unter Verwendung der "hypothetischen" Verteilung berechnet werden, während die Erwartung die tatsächliche übernimmt.yi −log2yi −∑iy′ilog2yi,
Anstatt "Maß für die erwartete Codierungslänge" zu sagen, verwende ich am liebsten den informellen Begriff "Maß für die Überraschung". Wenn Sie viele Bits benötigen, um ein erwartetes Ereignis aus einer Distribution zu codieren, ist die Distribution für Sie "wirklich überraschend".
Unter Berücksichtigung dieser Intuitionen können die Antworten auf Ihre Fragen wie folgt angezeigt werden:
Frage 1 . Ja. Es ist ein Problem, wenn das entsprechende ungleich Null isty′i . Dies entspricht der Situation, in der Ihr Modell davon ausgeht, dass bei einer Klasse die Eintrittswahrscheinlichkeit Null ist, die Klasse jedoch in der Realität auftaucht. Infolgedessen ist die "Überraschung" Ihres Modells unendlich groß: Ihr Modell hat dieses Ereignis nicht berücksichtigt und benötigt nun unendlich viele Bits, um es zu codieren. Deshalb erhalten Sie Unendlich als Ihre Kreuzentropie.
Um dieses Problem zu vermeiden, müssen Sie sicherstellen, dass Ihr Modell keine vorschnellen Annahmen darüber macht, dass etwas unmöglich ist, solange es passieren kann. In der Realität tendieren Menschen dazu, Sigmoid- oder "Softmax" -Funktionen als ihre Hypothesenmodelle zu verwenden, die konservativ genug sind, um für jede Option zumindest eine Chance zu lassen.
Wenn Sie ein anderes Hypothesenmodell verwenden, müssen Sie es regulieren (auch als "glatt" bezeichnet), damit es keine Nullen hypothetisch darstellt, bei denen dies nicht der Fall sein sollte.
Frage 2 . In dieser Formel nimmt man normalerweise an, dass entweder oder , während die Wahrscheinlichkeitshypothese des Modells für die entsprechende Eingabe ist. Wenn Sie genau hinsehen, werden Sie feststellen, dass es sich lediglich um ein für Binärdaten handelt, ein Äquivalent der zweiten Gleichung in dieser Antwort.y′i 0 1 yi −logP[data|model]
Streng genommen ist dies also, obwohl es immer noch eine logarithmische Wahrscheinlichkeit ist, nicht syntaktisch äquivalent zu Kreuzentropie. Einige Leute meinen, wenn sie einen solchen Ausdruck als Kreuzentropie bezeichnen, dass es sich tatsächlich um eine Summe über binäre Kreuzentropien für einzelne Punkte im Datensatz handelt: wobei und muss als die entsprechenden Binärverteilungen und interpretiert werden .∑iH(y′i,yi), y′i yi (y′i,1−y′i) (yi,1−yi)
quelle
Das heißt, die Formel erfasst nur Fehler in der Zielklasse. Dabei wird jede Vorstellung von Fehlern verworfen, die Sie als "falsch positiv" betrachten könnten, und es spielt keine Rolle, wie die vorhergesagten Wahrscheinlichkeiten verteilt sind, außer der vorhergesagten Wahrscheinlichkeit der wahren Klasse.
Frage 1
0
log( max( y_predict, 1e-15 ) )
Frage 2
Wenn Sie ein solches Netzwerk so modifizieren, dass es zwei entgegengesetzte Ausgaben hat und Softmax plus die erste Logloss-Definition verwenden, können Sie sehen, dass es sich tatsächlich um die gleiche Fehlermessung handelt, aber die Fehlermetrik für zwei Klassen in eine einzige Ausgabe faltet.
Wenn es mehr als eine Klasse gibt, deren Zugehörigkeit vorhergesagt werden kann, und die Klassen nicht exklusiv sind, dh ein Beispiel könnte eine oder alle Klassen gleichzeitig sein, müssen Sie diese zweite Formulierung verwenden. Für die Ziffernerkennung ist das nicht der Fall (eine geschriebene Ziffer sollte nur eine "wahre" Klasse haben)
quelle
Erste Frage:
Die obige Antwort hat den Hintergrund Ihrer ersten Formel erklärt, die in der Informationstheorie definierte Kreuzentropie.
Aus einer anderen Sicht als der Informationstheorie:
Sie können sich selbst davon überzeugen, dass die erste Formel keine Strafe für die Falsch-Positivität hat (die Wahrheit ist falsch, aber Ihr Modell sagt voraus, dass sie richtig ist), während die zweite Formel eine Strafe für die Falsch-Positivität hat. Daher wirkt sich die Wahl der ersten oder zweiten Formel auf Ihre Metriken aus (auch bekannt als die statistische Größe, die Sie zur Bewertung Ihres Modells verwenden möchten).
Im Laienwort:
Wenn Sie akzeptieren möchten, dass fast alle guten Menschen Ihr Freund sind, aber bereit sind, einige schlechte Menschen als Freund zu akzeptieren, verwenden Sie die erste Formel als Kriterium.
Wenn Sie sich selbst bestrafen möchten, indem Sie einige schlechte Menschen als Freund akzeptieren, gleichzeitig aber die Akzeptanzrate für gute Menschen unter der ersten Bedingung liegt, verwenden Sie die zweite Formel.
Ich denke, die meisten von uns sind kritisch und würden gerne die zweite wählen (so wie viele ML-Pakete annehmen, was Kreuzentropie ist).
Zweite Frage:
Wenn es also nur zwei Klassen gibt (K = 2), haben Sie die zweite Formel.
quelle
Diese Probleme werden durch die Verwendung von Softmax im Lernprogramm behoben.
Zu 1) Sie haben Recht, dass softmax eine Ausgabe ungleich Null garantiert, da es die Eingabe potenziert. Bei Aktivierungen, bei denen diese Garantie nicht gegeben ist (z. B. relu), kann jeder Ausgabe einfach ein sehr kleiner positiver Term hinzugefügt werden, um dieses Problem zu vermeiden.
Was 2) betrifft, sind sie offensichtlich nicht die gleichen, aber ich habe die Softmax-Formulierung, die sie gegeben haben, verwendet, um das Problem zu lösen. Wenn Sie Softmax nicht verwenden, werden Sie zu großen Verzerrungsfaktoren veranlasst, die für jede Klasse eine 1 für jede Eingabe erraten. Da sie jedoch den Softmax über alle Klassen hinweg normalisieren, besteht die einzige Möglichkeit, die Ausgabe der richtigen Klasse zu maximieren, darin, dass sie relativ zu den falschen Klassen groß ist.
quelle
(a) ist für die Mehrklassenvorhersage korrekt (es ist tatsächlich eine Doppelsummierung), (b) ist dasselbe wie (a) für die Zweiklassenvorhersage. Beide sind Kreuzentropie.
Beispiel:
Sowohl (a) als auch (b) werden wie folgt berechnet:
Ableitung:
Die endgültige Formel für alle Trainingspunkte lautet:
das ist das gleiche wie (b).
Kreuzentropie (a) über Klassen (eine Summe)
Cross-Entropie (a) über Klassen ist:
Diese Version kann nicht für die Klassifizierungsaufgabe verwendet werden. Lasst uns die Daten aus dem vorherigen Beispiel wiederverwenden:
quelle