Unterschiedliche Definitionen der Kreuzentropieverlustfunktion


12

Ich habe mit dem Neuralnetworksanddeeplearning dot com Tutorial angefangen, etwas über neuronale Netze zu lernen. Insbesondere im 3. Kapitel gibt es einen Abschnitt über die Kreuzentropiefunktion und definiert den Kreuzentropieverlust als:

C.=- -1nxj(yjlneinjL.+(1- -yj)ln(1- -einjL.))

Beim Lesen der Tensorflow-Einführung ist der Kreuzentropieverlust jedoch definiert als:

(bei Verwendung der gleichen Symbole wie oben)C.=- -1nxj(yjlneinjL.)

Als ich mich dann umsah, um herauszufinden, was los war, fand ich einen weiteren Satz von Notizen: ( https://cs231n.github.io/linear-classify/#softmax-classifier ), der eine völlig andere Definition des Kreuzentropieverlusts verwendet, obwohl dies Zeit für einen Softmax-Klassifikator und nicht für ein neuronales Netzwerk.

Kann mir jemand erklären, was hier los ist? Warum gibt es übrigens Diskrepanzen? Als was definieren die Menschen den Kreuzentropieverlust? Gibt es nur ein übergeordnetes Prinzip?


Antworten:


18

Diese drei Definitionen sind im Wesentlichen gleich.

C.=- -1nxj(yjlneinj).

j=2

C.=- -1nx(y1lnein1+y2lnein2)
jeinj=1jyj=1
C.=- -1nx(y1lnein1+(1- -y1)ln(1- -ein1))
Das ist das gleiche wie im 3. Kapitel .

3) Wenn yist ein One-Hot-Vektor (was üblicherweise bei Klassifizierungsetiketten der Fall ist) mityk Da es sich um das einzige Nicht-Null-Element handelt, beträgt der Kreuzentropieverlust der entsprechenden Probe

C.x=- -j(yjlneinj)=- -(0+0+...+yklneink)=- -lneink.

In den cs231-Anmerkungen ist der Kreuzentropieverlust einer Probe zusammen mit der Softmax-Normalisierung als angegeben

C.x=- -ln(eink)=- -ln(efkjefj).

0

Im dritten Kapitel ist Gleichung (63) die Kreuzentropie, die im Tensoflow-Intro auf mehrere Sigmoide angewendet wird (die möglicherweise nicht 1 ergeben) die Kreuzentropie auf einer Softmax-Ausgangsschicht berechnet wird.

Wie von dontloo erklärt, sind beide Formeln für zwei Klassen im Wesentlichen gleichwertig, jedoch nicht, wenn mehr als zwei Klassen berücksichtigt werden. Softmax ist sinnvoll für Multiklassen mit exklusiven Klassen ( dh wenn es nur ein Etikett pro Probe gibt, das die One-Hot-Codierung von Etiketten ermöglicht), während (mehrere) Sigmoide verwendet werden können, um ein Multilabel-Problem zu beschreiben (dh bei Proben, die möglicherweise positiv sind für mehrere Klassen).

Siehe auch diese andere Dontloo-Antwort .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.