Was sind Softmax und Kreuzentropie? Logits in Wahrscheinlichkeiten und Trainingsverlust umwandeln

Von 쉬었음.com

Softmax und Kreuzentropie bilden eine Kombination, mit der ein neuronales Netzwerk für Mehrklassenklassifikation ausdrücken kann, welche Klasse unter mehreren Kandidaten korrekt ist, indem es Wahrscheinlichkeiten ausgibt, und numerisch bewerten kann, wie stark diese Vorhersage von der richtigen Antwort abweicht. Softmax wandelt die Roh-Ausgaben des Modells, die Logits genannt werden, in eine Wahrscheinlichkeitsverteilung um, deren Summe 1 beträgt. Die Kreuzentropie berechnet die Differenz zwischen dieser Wahrscheinlichkeitsverteilung und der Zielverteilung als Verlust. Training ist der Prozess, die Gewichte des Modells so anzupassen, dass dieser Verlust sinkt.

Angenommen, Sie klassifizieren ein Bild als Katze, Hund oder Vogel. Das Modell antwortet anfangs häufig nicht mit etwas wie „70 % Wahrscheinlichkeit für Katze“. Stattdessen erzeugt es Logits: vergleichende Bewertungen für die drei Klassen. Softmax normalisiert diese Bewertungen zu vergleichbaren Wahrscheinlichkeiten, und die Kreuzentropie weist eine Strafe danach zu, wie viel Wahrscheinlichkeit das Modell der tatsächlichen Antwort zugeordnet hat. Beide Konzepte gemeinsam zu verstehen, kann typische Verwirrung über die finale Ausgabeschicht, Label-Formate und die Konfiguration der Verlustfunktion vermeiden.

Was macht die Softmax-Funktion?

Softmax ist eine Funktion, die einen Vektor von Logits z=(z1,,zK)z=(z_1,\dots,z_K) für KK Klassen in Klassenwahrscheinlichkeiten p=(p1,,pK)p=(p_1,\dots,p_K) umwandelt. Die Wahrscheinlichkeit der Klasse ii wird wie folgt berechnet.

pi=softmax(z)i=ezij=1Kezjp_i=\operatorname{softmax}(z)_i= \frac{e^{z_i}}{\sum_{j=1}^{K}e^{z_j}}

Hier verleiht die Exponentialfunktion ezie^{z_i} Klassen mit höheren Bewertungen ein größeres relatives Gewicht. Da der Nenner die Summe der exponentierten Bewertungen aller Klassen ist, liegt jede Ausgabe zwischen 0 und 1, und die gesamte Wahrscheinlichkeit summiert sich auf 1. Die Softmax-Ausgabe stellt somit die relative Wahrscheinlichkeit dar, dass eine Eingabe zu jeder Klasse gehört, und zwar als eine einzige Wahrscheinlichkeitsverteilung. Die PyTorch-Dokumentation beschreibt Softmax ebenfalls als Skalierung jedes Eingabeelements in den Bereich von 0 bis 1, sodass die Elemente in der Summe 1 ergeben. docs.pytorch.org

Softmax eignet sich besonders, wenn die Kandidaten einander gegenseitig ausschließen. Das bedeutet: Wenn einer wahr ist, können die anderen nicht die richtige Antwort sein. Beispiele sind die Klassifikation eines Bildes, dessen Haupttier genau Katze, Hund oder Vogel ist, oder die Zuordnung eines Satzes zu genau einer vordefinierten Stimmungskategorie.

Softmax-Wahrscheinlichkeiten sind dagegen nicht voneinander unabhängig. Steigt die Wahrscheinlichkeit für Katze, muss die Wahrscheinlichkeit für Hund oder Vogel relativ sinken, damit die Summe der drei Wahrscheinlichkeiten 1 bleibt. Diese Eigenschaft ist in der Regel nicht für Fälle geeignet, in denen mehrere Labels gleichzeitig wahr sein können, etwa wenn sowohl eine Person als auch ein Fahrrad in einem Bild vorkommen können. In diesem Fall sollten Sie erwägen, Sigmoid unabhängig auf jede Klasse anzuwenden.

Worin unterscheiden sich Logits und Wahrscheinlichkeiten?

Ein Logit ist eine nicht normalisierte Bewertung, die von einer finalen linearen Schicht oder einer ähnlichen Komponente erzeugt wird. Logits können negativ oder größer als 1 sein, und die Summe der Logits über Klassen hinweg hat keine besondere Bedeutung. Beispielsweise kann [2,1,0][2,1,0] ein Satz von Logits für drei Klassen sein, ist aber kein Wahrscheinlichkeitsvektor.

Eine wichtige Eigenschaft von Logits besteht darin, dass die Unterschiede zwischen Klassen wichtiger sind als ihre absoluten Werte. Das Addieren derselben Konstante cc zu jedem Logit verändert das Softmax-Ergebnis nicht.

softmax(z)i=softmax(z+c)i\operatorname{softmax}(z)_i= \operatorname{softmax}(z+c)_i

Der Grund ist, dass sowohl Zähler als auch Nenner mit dem gemeinsamen Faktor ece^c multipliziert werden, der sich herauskürzt. Daher können die Logits [2,1,0][2,1,0] und [102,101,100][102,101,100] zwar wie unterschiedliche Rohbewertungen wirken, erzeugen aber dieselben Softmax-Wahrscheinlichkeiten. Softmax wandelt die relativen Unterschiede zwischen Kandidaten und nicht den Bezugspunkt der Bewertungen in Wahrscheinlichkeiten um.

Was misst die Kreuzentropie?

Kreuzentropie ist ein Verlust, der angibt, wie stark sich die tatsächliche Zielverteilung yy von der vom Modell vorhergesagten Verteilung pp unterscheidet. Ihre grundlegende Mehrklassenform lautet wie folgt.

H(y,p)=i=1KyilogpiH(y,p)=-\sum_{i=1}^{K}y_i\log p_i

Dabei ist yiy_i das Gewicht, das das tatsächliche Label der Klasse ii zuweist, und pip_i die vom Modell für Klasse ii vorhergesagte Wahrscheinlichkeit. Ein kleinerer Verlust bedeutet, dass die vorhergesagte Verteilung näher an der Zielverteilung liegt. Wird der natürliche Logarithmus verwendet, lautet die Einheit Nat.

Diese Formel trennt richtige und falsche Antworten nicht einfach in 0 oder 1. Sie berücksichtigt nicht nur, ob das Modell die Antwort richtig hatte, sondern auch, wie sicher es sich dabei war. Eine Vorhersage, die der korrekten Klasse 0,51 zuweist, und eine, die ihr 0,99 zuweist, können dieselbe Genauigkeit haben, wenn in beiden Fällen die Klasse mit der höchsten Wahrscheinlichkeit korrekt ist. Die Kreuzentropie weist der zweiten Vorhersage jedoch einen niedrigeren Verlust zu. Deshalb ermutigt das Training das Modell nicht nur dazu, die richtige Antwort an die erste Stelle zu setzen, sondern ihr auch eine höhere Wahrscheinlichkeit zuzuweisen.

Warum vereinfacht sich die Formel bei One-Hot-Labels?

Ziele für Klassifikation mit sich gegenseitig ausschließenden Klassen werden häufig als One-Hot-Vektoren dargestellt. Ist bei drei Klassen die erste Klasse korrekt, lautet das Label [1,0,0][1,0,0]. Da nur die Zielklasse tt den Wert yt=1y_t=1 hat und alle übrigen 0 sind, reduziert sich die Kreuzentropie auf Folgendes.

L=logptL=-\log p_t

Mit anderen Worten wird der Verlust allein durch die vorhergesagte Wahrscheinlichkeit ptp_t der korrekten Klasse bestimmt. Nähert sich ptp_t dem Wert 1, nähert sich logpt-\log p_t dem Wert 0. Wird ptp_t dagegen kleiner, wächst der Verlust schnell. Aufgrund dieser Eigenschaft erhalten Vorhersagen, die der korrekten Antwort eine niedrige Wahrscheinlichkeit zuweisen – insbesondere Vorhersagen, die mit sehr hoher Sicherheit eine falsche Antwort wählen – während des Trainings eine hohe Strafe.

Theoretisch ist log0\log 0 nicht definiert und der Verlust divergiert gegen unendlich, wenn die Wahrscheinlichkeit der korrekten Klasse exakt 0 beträgt. Tatsächliche Implementierungen neuronaler Netze verwenden normalerweise stabile Berechnungen auf Basis von Logits und vermeiden es, explizit eine Wahrscheinlichkeit von 0 zu erzeugen und anschließend deren Logarithmus zu bilden.

Wie hängen Softmax und Kreuzentropie zusammen?

Der letzte Teil eines typischen Mehrklassenmodells lässt sich in drei Schritten verstehen.

  1. Die letzte lineare Schicht gibt Klassen-Logits zz aus.
  2. Softmax wandelt die Logits in Wahrscheinlichkeiten pp um.
  3. Die Kreuzentropie vergleicht die Wahrscheinlichkeiten pp mit dem Ziel-Label yy, um den Verlust LL zu berechnen.

Für ein One-Hot-Ziel kann diese Verbindung wie folgt erweitert werden.

L=log(eztj=1Kezj)=zt+logj=1KezjL=-\log\left(\frac{e^{z_t}}{\sum_{j=1}^{K}e^{z_j}}\right) =-z_t+\log\sum_{j=1}^{K}e^{z_j}

Dieser Ausdruck wird oft Softmax-Kreuzentropie oder kategoriale Kreuzentropie genannt. Der erste Term zt-z_t wird kleiner, wenn der Logit der korrekten Klasse steigt, während der zweite Term logjezj\log\sum_j e^{z_j} auch die Bewertungen aller konkurrierenden Klassen berücksichtigt. Das Modell lernt daher, die Bewertung der korrekten Klasse zu erhöhen und sie gleichzeitig relativ stärker hervorzuheben als die falschen Klassen.

Hier sollten Softmax und Kreuzentropie konzeptionell unterschieden werden. Softmax ist eine Funktion, die die Darstellung von Ausgaben verändert, während die Kreuzentropie ein Verlust ist, der das Trainingsziel quantifiziert. In praktischen Frameworks werden die beiden Schritte jedoch oft als eine kombinierte Verlustfunktion angeboten, sodass sie wie eine einzige Funktion erscheinen können.

Was zeigt die Berechnung anhand von Zahlen?

Betrachten Sie ein Problem mit drei Klassen und den Logits [2,1,0][2,1,0]. Die Anwendung von Softmax ergibt näherungsweise die Wahrscheinlichkeiten [0.665,0.245,0.090][0.665,0.245,0.090]. Das Softmax-Beispiel von TensorFlow zeigt für diese Logits dieselben ungefähren Wahrscheinlichkeiten. docs.pytorch.org

Ist die erste Klasse korrekt, lautet das One-Hot-Label [1,0,0][1,0,0], und der Verlust ist wie folgt.

L=log(0.665)0.408L=-\log(0.665)\approx0.408

Die erste Klasse hat unter den drei Kandidaten die höchste Wahrscheinlichkeit, und diese beträgt etwa 0,665; der Verlust ist daher relativ klein. „Klein“ bezeichnet jedoch keine absolute Bestehensgrenze. Eine angemessene Verlustgröße kann je nach Anzahl der Klassen, Schwierigkeit der Daten, Label-Unsicherheit und danach variieren, ob der Verlust über einen Batch summiert oder gemittelt wird.

Wäre bei denselben Logits die dritte Klasse tatsächlich korrekt, wäre der Verlust log(0.090)-\log(0.090) und damit deutlich höher. Das Modell betrachtete die dritte Klasse als den unwahrscheinlichsten Kandidaten. Auf diese Weise bildet die Kreuzentropie nicht nur ab, ob eine Vorhersage falsch ist, sondern auch, wie sicher sie falsch ist.

Warum sollten Wahrscheinlichkeitsrangfolge und Verlustwert gemeinsam betrachtet werden?

Die Genauigkeit wählt üblicherweise die einzelne Klasse mit der größten Wahrscheinlichkeit und zählt, ob sie mit der richtigen Antwort übereinstimmt. Daher werden eine Vorhersage von [0.34,0.33,0.33][0.34,0.33,0.33], wenn die erste Klasse korrekt ist, und eine Vorhersage von [0.99,0.005,0.005][0.99,0.005,0.005], wenn die erste Klasse korrekt ist, beide als eine richtige Vorhersage gezählt.

Die Kreuzentropie behandelt diese Fälle nicht gleich. Die erste Vorhersage unterscheidet kaum zwischen den drei Klassen, während die zweite der korrekten Antwort eine sehr hohe Wahrscheinlichkeit zuweist. Umgekehrt variiert der Verlust auch dann, wenn die Klasse mit der höchsten Wahrscheinlichkeit falsch ist, je nachdem, wie niedrig die Wahrscheinlichkeit der korrekten Klasse war. Aus diesem Grund minimiert das Training im Allgemeinen die Kreuzentropie, während die Auswertung zusätzlich separate Metriken wie die Genauigkeit entsprechend dem Aufgabenziel prüft.

Warum sollten Logits direkt an die Trainingsverlustfunktion übergeben werden?

Die kombinierten Verlustfunktionen vieler Deep-Learning-Frameworks erwarten als Eingabe Logits, nicht Softmax-Wahrscheinlichkeiten. Beispielsweise akzeptiert TensorFlows softmax_cross_entropy_with_logits, wie der Name bereits sagt, Logits und führt intern die Berechnungen aus, die Softmax und Kreuzentropie entsprechen. Die Dokumentation warnt davor, Ausgaben zu übergeben, auf die Softmax bereits angewendet wurde. www.tensorflow.org

Wenn Sie gegen diese Regel verstoßen, indem Sie Softmax am Ende des Modells anwenden und das Ergebnis anschließend an eine für Logits vorgesehene Verlustfunktion übergeben, werden die Wahrscheinlichkeiten möglicherweise erneut als Logits interpretiert, anstatt die beabsichtigte einmalige Softmax-Anwendung zu erhalten. Das verändert die Bedeutung des Verlusts und seiner Gradienten, wodurch die Trainingskonfiguration fehlerhaft wird. Ob ein Verlust „Softmax intern enthält“ oder „bereits umgewandelte Wahrscheinlichkeiten akzeptiert“, sollte anhand des Eingabevertrags der API und nicht allein anhand des Funktionsnamens überprüft werden.

Der Zweck bei Inferenz oder Anzeige ist ein anderer. Nach dem Training können Sie Softmax auf Logits anwenden, wenn Sie Klassenwahrscheinlichkeiten anzeigen oder wahrscheinlichkeitsspezifische Nachbearbeitung durchführen möchten. Entscheidend ist nicht, dass Softmax nie verwendet werden sollte, sondern dass es genau einmal an der Eingabestufe angewendet wird, die von der Trainingsverlustfunktion erwartet wird.

Warum ist numerische Stabilität wichtig?

Die Softmax-Formel enthält Exponentialfunktionen und Logarithmen. Sind Logits extrem groß oder klein, kann die Berechnung von ezie^{z_i} den darstellbaren Bereich eines Computers überschreiten und so ein Risiko für Überlauf oder Unterlauf schaffen. Werden Wahrscheinlichkeiten zuerst berechnet und anschließend separat Logarithmen angewendet, kann dies für solche Probleme anfällig sein.

Kombinierte Verlustfunktionen und Implementierungen der log_softmax-Familie verwenden im Allgemeinen stabile Verfahren zur Berechnung von logjezj\log\sum_j e^{z_j}. Die PyTorch-Dokumentation erklärt außerdem, dass log_softmax bessere numerische Eigenschaften hat als die getrennte Berechnung von Softmax und Logarithmus. docs.pytorch.org

Die zuvor beschriebene Eigenschaft der konstanten Verschiebung lässt sich ebenfalls zur Stabilisierung verwenden. Das Subtrahieren des Maximalwerts m=maxjzjm=\max_j z_j von jedem Logit verändert das Softmax-Ergebnis nicht.

softmax(z)i=ezimjezjm\operatorname{softmax}(z)_i= \frac{e^{z_i-m}}{\sum_j e^{z_j-m}}

Dadurch wird der größte Exponentialterm zu e0=1e^0=1, sodass unnötig große Zahlen seltener verarbeitet werden müssen. In Produktivcode ist es jedoch im Allgemeinen besser, eine vom Framework bereitgestellte kombinierte Verlustfunktion auf Logit-Basis oder eine stabile Log-Softmax-Operation zu verwenden, statt die Komponenten selbst getrennt zu implementieren.

Sollten Labels One-Hot-Vektoren oder Ganzzahlen sein?

Die Label-Darstellung hängt mit dem Eingabevertrag der Verlustfunktion zusammen. Gängige Formate umfassen One-Hot- oder Wahrscheinlichkeits-Labels sowie spärliche Ganzzahl-Labels.

Label-FormatBeispiel, wenn bei drei Klassen die erste Klasse korrekt istEigenschaften
One-Hot-Label[1, 0, 0]Ein Vektor mit derselben Länge wie die Anzahl der Klassen; nur die korrekte Position ist 1.
Wahrscheinlichkeits-Label[0.8, 0.1, 0.1]Eine Zielverteilung, deren Elemente nicht negativ sind und sich zu 1 summieren.
Spärliches Ganzzahl-Label0Speichert nur den Index der korrekten Klasse.

One-Hot-Labels entsprechen direkt der grundlegenden Kreuzentropie-Formel. Spärliche Ganzzahl-Labels können dieselben Informationen kompakter speichern, was bei vielen Klassen nützlich sein kann. Die beiden Formate haben jedoch unterschiedliche Tensorformen und Datentypen, daher müssen Sie das von einer bestimmten Verlustfunktion verlangte Format verwenden.

Die TensorFlow-Dokumentation zur Logit-basierten Softmax-Kreuzentropie erläutert, dass Label-Vektoren gültige Wahrscheinlichkeitsverteilungen sein müssen, und unterscheidet verwandte Label-Formate für Klassifikation mit sich gegenseitig ausschließenden Klassen. www.tensorflow.org Beispielsweise kann das direkte Übergeben einer einzelnen Ganzzahl an eine One-Hot-Verlustfunktion oder das Übergeben eines One-Hot-Vektors an eine Funktion für spärliche Ganzzahl-Labels dazu führen, dass nicht die beabsichtigte Größe berechnet wird.

Wahrscheinlichkeits-Labels lockern die Annahme, dass genau eine Klasse den Wert 1 haben muss. Das bedeutet jedoch nicht dasselbe wie ein Multilabel-Problem, bei dem mehrere Klassen unabhängig voneinander wahr sein können. In der Softmax-Klassifikation stellen Wahrscheinlichkeits-Labels weiterhin eine Verteilung dar, deren Elemente sich zu 1 summieren.

Worin unterscheiden sich binäre Klassifikation, Mehrklassenklassifikation und Multilabel-Klassifikation?

Ausgabefunktionen und Verluste sollten nicht allein anhand der Anzahl der Klassen ausgewählt werden. Bestimmen Sie zuerst, ob Zielereignisse gleichzeitig auftreten können. Die folgende Unterscheidung ist in der Praxis hilfreich.

ProblemstrukturBeispielTypische AusgabedarstellungTypischer Verlust
Mehrklassenklassifikation mit sich gegenseitig ausschließenden KlassenKatze, Hund oder VogelSoftmax über alle KlassenSoftmax-Kreuzentropie
Binäre KlassifikationWahr/falsch, genehmigen/ablehnenEin Sigmoid oder Zwei-Klassen-SoftmaxBinäre Kreuzentropie oder Softmax-Kreuzentropie
Multilabel-KlassifikationEin Foto enthält sowohl eine Person als auch ein FahrradKlassenspezifisches SigmoidKlassenspezifische binäre Kreuzentropie

In der Mehrklassenklassifikation ist es natürlich, dass sich Klassenwahrscheinlichkeiten zu 1 summieren. Steigt die Wahrscheinlichkeit, dass ein Bild eine Katze zeigt, sollte die Wahrscheinlichkeit, dass dasselbe Bild einen Hund oder Vogel zeigt, relativ sinken. Die TensorFlow-Dokumentation unterscheidet ebenfalls zwischen dem Einsatz von Softmax-Kreuzentropie bei sich gegenseitig ausschließenden Labels und Situationen mit unabhängigen mehreren Labels, die eine andere Konfiguration erfordern. www.tensorflow.org

Bei der Multilabel-Klassifikation ähnelt jede Ausgabe eher einer separaten Frage: „Ist eine Person vorhanden?“, „Ist ein Fahrrad vorhanden?“ und „Ist ein Baum vorhanden?“ können alle gleichzeitig mit Ja beantwortet werden. Wenn Softmax die Gesamtsumme auf 1 zwingt, zwingt eine steigende Wahrscheinlichkeit für ein Label die Wahrscheinlichkeiten anderer Labels nach unten, was möglicherweise nicht zur Problemstruktur passt. Die Anwendung von Sigmoid auf jede Klasse ermöglicht es, die Wahrscheinlichkeit jedes Elements unabhängig zu behandeln.

Die binäre Klassifikation kann besonders verwirrend sein, weil beide Ansätze möglich wirken. Die Anwendung von Sigmoid auf eine Ausgabe stellt direkt die Wahrscheinlichkeit der positiven Klasse dar. Die Anwendung von Softmax auf zwei Logits stellt positiv und negativ als Zwei-Klassen-Verteilung dar, deren Summe 1 beträgt. Für welchen Ansatz Sie sich auch entscheiden: Label-Kodierung und Verlustfunktion müssen zu diesem Ausgabeformat passen.

Bedeutet das Minimieren der Kreuzentropie, Verteilungen anzugleichen?

Wenn sowohl das Ziel yy als auch die Vorhersage pp gültige Wahrscheinlichkeitsverteilungen sind, lässt sich die Kreuzentropie über ihre Beziehung zu Entropie und KL-Divergenz wie folgt ausdrücken.

H(y,p)=H(y)+DKL(yp)H(y,p)=H(y)+D_{\mathrm{KL}}(y\Vert p)

Dabei ist H(y)H(y) die Entropie, die die Unsicherheit der wahren Verteilung selbst darstellt, und DKL(yp)D_{\mathrm{KL}}(y\Vert p) die KL-Divergenz, die den Unterschied zwischen der wahren Verteilung yy und der vorhergesagten Verteilung pp darstellt. Wenn die Zielverteilung yy in den Trainingsdaten festgelegt ist, ändert sich H(y)H(y) nicht mit den Modellparametern. Abgesehen von dieser Konstante kann die Verringerung der Kreuzentropie daher als Verringerung der KL-Divergenz zwischen yy und pp interpretiert werden.

Diese Interpretation zeigt, warum Kreuzentropie als Lernziel für Wahrscheinlichkeitsverteilungen weit verbreitet ist. Das Modell wird nicht nur dazu gedrängt, die korrekte Klasse ganz oben zu platzieren, sondern auch dazu, Wahrscheinlichkeiten nahe der beobachteten Zielverteilung zu verteilen.

Diese Gleichung setzt jedoch bestimmte Bedingungen voraus. Sowohl yy als auch pp müssen Wahrscheinlichkeitsverteilungen sein: Ihre Komponenten müssen im passenden Bereich liegen und sich zu 1 summieren. Logits selbst sind keine Wahrscheinlichkeitsverteilungen und werden daher nicht direkt in diese Beziehung eingesetzt. Logits werden durch Softmax oder einen kombinierten Verlust auf Logit-Basis mit Berechnungen von Wahrscheinlichkeitsverteilungen verbunden.

Was sind häufige Missverständnisse und Fehler?

Das erste Missverständnis lautet: Logits sind Wahrscheinlichkeiten. Die Klasse mit dem größten Logit hat auch die größte Softmax-Wahrscheinlichkeit, aber Logit-Werte selbst können nicht als Prozentangaben gelesen werden. Wie stark sich ein Logit-Unterschied wie 2 gegenüber 1 in einen Wahrscheinlichkeitsunterschied übersetzt, wird erst nach Anwendung von Softmax zusammen mit allen anderen Logits bestimmt.

Das zweite Missverständnis lautet: Klassifikationstraining funktioniert nur, wenn Softmax am Ende des Modells hinzugefügt wird. Wenn Sie eine kombinierte Kreuzentropie-Verlustfunktion verwenden, die Logits akzeptiert, ist es üblich, während des Trainings kein finales Softmax explizit hinzuzufügen. Dies unterstützt die interne Berechnung und numerische Stabilität. www.tensorflow.orgdocs.pytorch.org

Das dritte Missverständnis lautet: Softmax-Kreuzentropie eignet sich für jedes Klassifikationsproblem. Diese Verlustkombination ist natürlich, wenn Klassen einander gegenseitig ausschließen. Wenn mehrere korrekte Tags für ein Beispiel gleichzeitig vorliegen können, kann Softmax, das die gesamte Klassenwahrscheinlichkeit auf 1 beschränkt, die Bedeutung der Daten möglicherweise nicht angemessen darstellen.

Das vierte Missverständnis lautet: Kreuzentropie und Genauigkeit sind dieselbe Metrik. Die Genauigkeit betrachtet im Allgemeinen nur die einzelne Klasse mit der höchsten Wahrscheinlichkeit, während die Kreuzentropie die gesamte der korrekten Antwort zugewiesene Wahrscheinlichkeit widerspiegelt. Daher können zwei Modelle mit derselben Genauigkeit unterschiedliche Kreuzentropiewerte haben. Das ist auch ein Grund, weshalb der Trainingsverlust sinken kann, ohne dass die Genauigkeit bei jedem Schritt monoton steigt.

Der fünfte Fehler besteht darin, allein anhand eines einzelnen Verlustwerts zu beurteilen, ob ein Modell gut oder schlecht ist. Kreuzentropiewerte werden von der Anzahl der Klassen, der Aufgabenschwierigkeit, dem Label-Format und der Aggregationsmethode beeinflusst. Angemessener ist es, Veränderungen unter derselben Aufgabe und Konfiguration, den Verlust auf Validierungsdaten und separate, für die Aufgabe geeignete Bewertungsmetriken zu berücksichtigen.

Was sollten Sie vor der Konfiguration des Modells prüfen?

Vor der Anwendung von Softmax und Kreuzentropie hilft es, die folgenden Fragen der Reihe nach zu prüfen.

  1. Hat jedes Beispiel genau eine korrekte Klasse? Wenn ja, ist Softmax-basierte Mehrklassenklassifikation ein möglicher Ansatz. Können mehrere Labels gleichzeitig wahr sein, sollten Sie zunächst klassenspezifisches Sigmoid und binären Verlust in Betracht ziehen.
  2. Sind die finalen Ausgaben des Modells Logits oder bereits Wahrscheinlichkeiten? Logits sind uneingeschränkte Rohbewertungen, während Wahrscheinlichkeiten normalisierte Werte sind. Erwartet der kombinierte Verlust Logits, wenden Sie Softmax nicht vorab an.
  3. Passt das Label-Format zur Verlustfunktion? Prüfen Sie, ob sie One-Hot- oder Wahrscheinlichkeitsvektoren oder Ganzzahlindizes akzeptiert. Prüfen Sie zusätzlich zum Format die Batch-Dimension und die Position der Klassen-Dimension.
  4. Haben Sie die Zwecke von Training und Inferenz unterschieden? Berechnen Sie beim Training mit einem stabilen Verlust auf Logit-Basis. Verwenden Sie bei der Inferenz Softmax, wenn Sie Wahrscheinlichkeiten anzeigen oder wahrscheinlichkeitsspezifische Regeln anwenden müssen.
  5. Interpretieren Sie Verlust und Bewertungsmetriken getrennt? Die Kreuzentropie ist ein Trainingsziel, das die Qualität von Wahrscheinlichkeitsvorhersagen widerspiegelt, während die Genauigkeit misst, ob die endgültige Auswahl dem Ziel entspricht. Interpretieren Sie beide gemeinsam entsprechend der Aufgabe.

Diese Checkliste ist nicht auf eine bestimmte Bibliothek beschränkt. Auch wenn tatsächliche API-Namen ähnlich sind, können sie sich darin unterscheiden, ob sie Logits, Wahrscheinlichkeiten oder Ganzzahl-Labels als Eingaben erwarten. Prüfen Sie unmittelbar vor der Implementierung die offizielle Dokumentation der verwendeten Funktion, um die Eingabeform und das Vorhandensein einer internen Aktivierungsfunktion zu bestätigen.

Fazit: Wahrscheinlichkeitsumwandlung und Verlustberechnung nach ihren Rollen verstehen

Softmax wandelt mehrere Logits in eine Wahrscheinlichkeitsverteilung um, deren Summe 1 beträgt, und stellt damit die relative Wahrscheinlichkeit sich gegenseitig ausschließender Klassen dar. Die Kreuzentropie berechnet die Differenz zwischen dieser vorhergesagten Verteilung und der Zielverteilung als Verlust und weist Vorhersagen, die der korrekten Antwort eine niedrige Wahrscheinlichkeit zuordnen, eine höhere Strafe zu. Für ein One-Hot-Ziel vereinfacht sich der Verlust zu logpt-\log p_t, wodurch das Lernziel, die Wahrscheinlichkeit der korrekten Klasse zu erhöhen, deutlich wird.

In der Praxis werden Softmax und Kreuzentropie oft nicht getrennt berechnet. Stattdessen wird eine kombinierte Verlustfunktion verwendet, die Logits akzeptiert. Dies bewahrt das mathematische Ziel und ermöglicht zugleich numerisch stabilere Berechnungen. Diese Kombination ist jedoch am natürlichsten, wenn die Problemstruktur „Mehrklassenklassifikation mit genau einer richtigen Antwort“ lautet. Bei der Auswahl von Ausgaben und Verlusten ist entscheidend, vor der Anzahl der Klassen zu prüfen, ob Labels einander gegenseitig ausschließen und welche Eingabe die Verlustfunktion erwartet.

Häufig gestellte Fragen

Müssen Softmax und Kreuzentropie immer zusammen verwendet werden?

Nicht immer. Sie werden häufig gemeinsam für Klassifikationsaufgaben verwendet, bei denen eine Klasse aus mehreren sich gegenseitig ausschließenden Klassen ausgewählt wird. Bei Multilabel-Problemen, bei denen mehrere Elemente gleichzeitig zutreffen können, werden dagegen normalerweise klassenspezifische Sigmoid-Funktionen und binäre Kreuzentropie verwendet.

Sollte ich während des Trainings vermeiden, Softmax direkt in die letzte Modellschicht einzubauen?

Das hängt von der verwendeten Verlustfunktion ab. Wenn Sie eine kombinierte Kreuzentropie-Funktion verwenden, die Logits erwartet, sollten Sie die Logits ohne vorherige Softmax-Anwendung übergeben. Die Funktion führt die erforderlichen Berechnungen intern aus.

Was bedeutet es, wenn die Kreuzentropie 0 beträgt?

Bei einem One-Hot-Ziel beträgt der Verlust 0, wenn der korrekten Klasse die Wahrscheinlichkeit 1 zugewiesen wird. Bei Modellen, die mit endlichen Logits berechnet werden, wird die Wahrscheinlichkeit normalerweise sehr nahe an 1 liegen, aber nicht exakt 1 erreichen.

Kann die Genauigkeit hoch sein, während die Kreuzentropie hoch ist?

Ja. Die Genauigkeit prüft, ob die Klasse mit der höchsten vorhergesagten Wahrscheinlichkeit korrekt ist, während die Kreuzentropie auch die Größe der der korrekten Klasse zugewiesenen Wahrscheinlichkeit berücksichtigt. Selbst bei einer korrekten Vorhersage kann der Verlust relativ hoch sein, wenn die Wahrscheinlichkeit der korrekten Klasse niedrig ist.

Was ist der Unterschied zwischen spärlichen Ganzzahl-Labels und One-Hot-Labels?

Ein spärliches Ganzzahl-Label speichert nur den Index der korrekten Klasse, während ein One-Hot-Label ein Vektor mit 1 an der korrekten Position und 0 an allen anderen Positionen ist. Wählen Sie für dieselbe Klassifikationsaufgabe das Format, das von Ihrer Verlustfunktion verlangt wird.