2017-06-21 8 views
10

Kann jemand die Unterschiede zwischen all diesen Kreuz-Entropie-Verlusten erklären? keras sprichtKreuz-Entropie-Dschungel

  • Binary Kreuzentropie
  • kategorische Kreuzentropie
  • Sparse kategorische Kreuzentropie

während tensorflow

    hat
  • Softmax Kreuzentropie Mit Logits
  • Sparse Softmax Kreuzentropie Mit Logits
  • Sigmoid Kreuzentropie Mit Logits

(bringt auch die Frage: es irgendwelche Kreuzentropie Typen ohne Logis?)

Was sind die Unterschiede und Beziehungen zwischen ihnen? Was sind die typischen Anwendungen für sie und was ist der mathematische Hintergrund? Gibt es andere Cross-Entropie-Typen, die man kennen sollte?

Antwort

11

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.

+0

Cool! Es wäre großartig, wenn wir wüssten, welche Keras-Verlustfunktionen es darstellen. –

+1

Ich verwendete Namenskonvention kompatibel mit Keras und TF, so Keras "binäre Kreuz Entropie" ist "Binary CE" von meinem Tisch und so weiter. – lejlot