Es gibt nur ein Kreuz (Shannon) Entropie wie folgt definiert:
H(P||Q) = - SUM_i P(X=i) log Q(X=i)
Alle Funktionen, die Sie aufgelistet sind nur Helferfunktionen, die verschiedene Arten akzeptiert P
und Q
darzustellen.
Grundsätzlich gibt es drei wichtigsten Dinge zu berücksichtigen:
gibt es entweder 2 possibles Ergebnisse (binäre Klassifikation) oder mehr. Wenn es nur zwei Ergebnisse gibt, dann Q(X=1) = 1 - Q(X=0)
so ein einzelnes float in (0,1) identifiziert die gesamte Verteilung, das ist, warum neuronales Netzwerk in binärer Klassifikation einen einzigen Ausgang hat (und damit logistische Regression). Wenn es K> 2 mögliche Ergebnisse hat man auf K Ausgänge (einen pro Q(X=...)
)
man entweder erzeugt richtige Wahrscheinlichkeiten (was bedeutet, dass Q(X=i)>=0
und SUM_i Q(X=i) =1
oder eine nur einen „score“ erzeugt und haben einige feste Methode definieren Score Wahrscheinlichkeit. zum Beispiel kann eine einzige reelle Zahl kann „umgewandelt Wahrscheinlichkeit“ durch S-förmige Aufnahme, und eine Reihe von reellen Zahlen verwandeln kann durch ihre softmax und so weiter nehmen umgewandelt werden.
ist es j
so dass P(X=j)=1
(Es gibt eine "wahre Klasse", Ziele sind "hart", wie "dieses Bild repräsentiert eine Katze") oder es gibt "weiche Ziele" (wie "wir sind zu 60% sicher, dass dies eine Katze ist, aber für 40% ist es eigentlich ein Hund ").
Abhängig von diesen drei Aspekten sollte verschiedene Hilfsfunktion verwendet werden:
outcomes what is in Q targets in P
-------------------------------------------------------------------------------
binary CE 2 probability any
categorical CE >2 probability soft
sparse categorical CE >2 probability hard
sigmoid CE with logits 2 score any
softmax CE with logits >2 score soft
sparse softmax CE with logits >2 score hard
Am Ende nur „kategorische Kreuzentropie“ verwenden könnte man, wie das ist, wie es mathematisch definiert ist, jedoch Da Dinge wie harte Ziele oder binäre Klassifizierung sehr beliebt sind, bieten moderne ML-Bibliotheken diese zusätzlichen Hilfsfunktionen, um die Dinge einfacher zu machen. Insbesondere "stapeln" sigmoide und cross-entropy mag numerisch instabil sein, aber wenn man weiß, dass diese beiden Operationen zusammen angewendet werden, gibt es eine numerisch stabile Version von ihnen kombiniert (was in TF implementiert ist).
Es ist wichtig zu beachten, dass der Code normalerweise ausgeführt wird, wenn Sie eine falsche Hilfsfunktion anwenden, aber die Ergebnisse werden falsch sein. Wenn Sie z. B. den Softmax_ * -Helfer für die binäre Klassifizierung mit einem Ausgang anwenden, wird davon ausgegangen, dass Ihr Netzwerk am Ausgang immer "True" erzeugt.
Als abschließende Bemerkung - diese Antwort hält Klassifizierung, es ist etwas anders, wenn Sie Multi-Label Fall betrachtet (wenn ein einzelner Punkt mehrere Labels haben kann), wie dann Ps Summe nicht auf 1, und einem sollte sigmoid_cross_entropy_with_logits verwenden, obwohl mehrere Ausgabeeinheiten vorhanden sind.
Cool! Es wäre großartig, wenn wir wüssten, welche Keras-Verlustfunktionen es darstellen. –
Ich verwendete Namenskonvention kompatibel mit Keras und TF, so Keras "binäre Kreuz Entropie" ist "Binary CE" von meinem Tisch und so weiter. – lejlot