Warum sollten Sie im Softmax-Klassifikator die Funktion exp verwenden, um eine Normalisierung durchzuführen?

30

Warum Softmax im Gegensatz zur Standardnormalisierung verwenden? Im Kommentarbereich der oberen Antwort auf diese Frage hat @Kilian Batzner zwei Fragen aufgeworfen, die mich ebenfalls sehr verwirren. Es scheint, dass niemand eine Erklärung abgesehen von numerischen Vorteilen gibt.

Ich habe die Gründe für die Verwendung von Cross-Entropy Loss herausgefunden, aber wie hängt das mit dem Softmax zusammen? Sie sagten, "die Softmax-Funktion kann als Versuch angesehen werden, die Kreuzentropie zwischen den Vorhersagen und der Wahrheit zu minimieren". Angenommen, ich würde die Standard- / Linearnormalisierung verwenden, aber immer noch den Cross-Entropy-Verlust. Dann würde ich auch versuchen, die Cross-Entropy zu minimieren. Wie ist der Softmax mit Ausnahme der numerischen Vorteile mit der Cross-Entropy verknüpft?

Was die Wahrscheinlichkeitssicht betrifft: Was ist die Motivation, Log-Wahrscheinlichkeiten zu betrachten? Die Argumentation scheint ein bisschen zu sein wie "Wir verwenden e ^ x im Softmax, weil wir x als Log-Wahrscheinlichkeiten interpretieren". Mit der gleichen Überlegung könnten wir sagen, wir verwenden e ^ e ^ e ^ x im Softmax, weil wir x als log-log-log-Wahrscheinlichkeiten interpretieren (hier natürlich übertreiben). Ich habe die numerischen Vorteile von softmax, aber was ist die theoretische Motivation dafür?

Hans
quelle
Es ist differenzierbar, führt zu nicht negativen Ergebnissen (wie es für eine Wahrscheinlichkeit erforderlich wäre, damit die Querentropie berechnet werden kann) und verhält sich wie die Max-Funktion, die in einer Klassifizierungseinstellung angemessen ist. Willkommen auf der Seite!
Emre
@Emre Danke! Aber was bedeutet "Verhalten wie Max-Funktion"? Außerdem, wenn ich eine andere Funktion habe, die ebenfalls differenzierbar ist, monoton ansteigt und zu nicht negativen Ergebnissen führt, kann ich sie verwenden, um die exp-Funktion in der Formel zu ersetzen?
Hans
Wenn Sie mit normalisieren , wird das größte Argument auf 1 abgebildet, während der Rest aufgrund des Wachstums der exponentiellen Funktion auf Null abgebildet wird. max
Emre

Antworten:

37

Es ist mehr als nur numerisch. Eine kurze Erinnerung an den Softmax:

P(y=j|x)=exjk=1Kexk

Dabei ist ein Eingabevektor mit einer Länge, die der Anzahl der Klassen . Die Softmax-Funktion hat 3 sehr schöne Eigenschaften: 1. Sie normalisiert Ihre Daten (gibt eine korrekte Wahrscheinlichkeitsverteilung aus), 2. ist differenzierbar und 3. sie verwendet die von Ihnen erwähnte exp. Einige wichtige Punkte:KxK

  1. Die Verlustfunktion steht nicht in direktem Zusammenhang mit softmax. Sie können die Standardnormalisierung verwenden und trotzdem die Kreuzentropie verwenden.

  2. Eine "Hardmax" -Funktion (dh Argmax) ist nicht unterscheidbar. Der Softmax gibt allen Elementen im Ausgabevektor mindestens eine minimale Wahrscheinlichkeit und ist daher gut differenzierbar, daher der Begriff "soft" in softmax.

  3. Jetzt komme ich zu deiner Frage. Das in softmax ist die natürliche Exponentialfunktion. Bevor wir normalisieren, transformieren wir wie im Diagramm von :x e xexex

natürliche Exponentialfunktion

Wenn 0 ist, dann ist , wenn 1 ist, dann ist und wenn 2 ist, dann ist ! Ein großer Schritt! Dies ist eine nichtlineare Transformation unserer nicht normalisierten Log-Scores. Die interessante Eigenschaft der Exponentialfunktion in Kombination mit der Normalisierung im Softmax ist, dass hohe Werte in viel wahrscheinlicher werden als niedrige Werte.y = 1 x y = 2,7 x y = 7 xxy=1xy=2.7xy=7x

Ein Beispiel . Sagen Sie und Ihr Log-Score ist Vektor . Die einfachen argmax-Funktionsausgaben:x [ 2 , 4 , 2 , 1 ]K=4x[2,4,2,1]

[0,1,0,0]

Der Argmax ist das Ziel, aber es ist nicht differenzierbar und wir können unser Modell nicht damit trainieren: (Eine einfache Normalisierung, die differenzierbar ist, gibt die folgenden Wahrscheinlichkeiten aus:

[0.2222,0.4444,0.2222,0.1111]

Das ist wirklich weit weg vom Argmax! :( Während die Softmax-Ausgänge:

[0.1025,0.7573,0.1025,0.0377]

Das kommt dem argmax viel näher! Da wir das natürliche Exponential verwenden, erhöhen wir die Wahrscheinlichkeit der größten Punktzahl enorm und verringern die Wahrscheinlichkeit der niedrigeren Punktzahlen im Vergleich zur Standardnormalisierung. Daher das "max" in softmax.

Vega
quelle
3
Tolle Infos. Wie wäre es jedoch emit einer Konstante, sagen wir 3 oder 4 , anstatt sie zu verwenden ? Wird das Ergebnis dasselbe sein?
Cheok Yan Cheng
7
@ CheokYanCheng, ja. Hat eaber ein schöneres Derivat;)
Vega
Ich habe gesehen, dass das Ergebnis von softmax typischerweise als die Wahrscheinlichkeit der Zugehörigkeit zu jeder Klasse verwendet wird. Wenn die Wahl von 'e' anstelle einer anderen Konstante willkürlich ist, ist es nicht sinnvoll, dies in Bezug auf die Wahrscheinlichkeit zu sehen, oder?
Javierdvalle
@vega Entschuldigung, aber ich verstehe immer noch nicht, wie das die Frage beantwortet: Warum nicht e ^ e ^ e ^ e ^ e ^ x aus den gleichen Gründen verwenden? Bitte erklären Sie
Gulzar
@jvalle es ist nicht edas macht es interpretierbar als eine Wahrscheinlichkeit, ist es die Tatsache ist , jedes Element des softmax Ausgangs begrenzt ist in [0,1] und den ganzen Summen 1.
Vega
2

Zusätzlich zu Vegas Erklärung,

Definieren wir den generischen Softmax: wobei eine Konstante> = 1 ist

P(y=j|x)=ψxjk=1Kψxk
ψ

Wenn , dann sind Sie ziemlich weit von Argmax entfernt, wie von @vega erwähnt.ψ=1

Nehmen wir jetzt an, , jetzt sind Sie ziemlich nah am Argmax, aber Sie haben auch wirklich kleine Zahlen für negative Werte und große Zahlen für positive. Diese Zahlen überlaufen die Schwimmerkommaarithmetik Grenze leicht (zB maximale Grenze von numpy float64 sind ). Darüber hinaus sollten Frameworks eine stabilere Version von softmax (Multiplikation von Zähler und Nenner mit Konstante ) implementieren , selbst wenn die Auswahl was viel kleiner als , da die Ergebnisse zu klein werden, um ausgedrückt werden zu können mit solcher Präzision.ψ=10010308ψ=e100C

Sie möchten also eine Konstante auswählen, die groß genug ist, um sich Argmax gut anzunähern, und die klein genug ist, um diese großen und kleinen Zahlen in Berechnungen auszudrücken.

Und natürlich hat auch ziemlich nette Ableitungen.e

komunistbakkal
quelle
2

Diese Frage ist sehr interessant. Ich kenne den genauen Grund nicht, aber ich denke, der folgende Grund könnte verwendet werden, um die Verwendung der Exponentialfunktion zu erklären. Dieser Beitrag ist inspiriert von der statistischen Mechanik und dem Prinzip der maximalen Entropie.

Ich werde dies anhand eines Beispiels mit N Bildern erläutern , die aus n1 Bildern der Klasse C1 , n2 Bildern der Klasse C2 , ... und nK Bildern der Klasse CK . Dann gehen wir davon aus, dass unser neuronales Netzwerk in der Lage war anzuwenden auf unseren Bildern nicht - lineare Transformation, so dass wir ein ‚Energieniveau‘ können zuweisen Ek für alle Klassen. Wir gehen davon aus, dass diese Energie nichtlinear ist, wodurch wir die Bilder linear trennen können.

Die mittlere Energie E¯ ist mit dem anderen Energien bezogen Ek durch die folgende Beziehung

NE¯=k=1KnkEk.()

Gleichzeitig sehen wir, dass die Gesamtanzahl der Bilder als folgende Summe berechnet werden kann

N=k=1Knk.()

Die Grundidee des Maximum-Entropy-Prinzips ist, dass die Anzahl der Bilder in den entsprechenden Klassen so verteilt wird, dass die Anzahl der möglichen Kombinationen für eine gegebene Energieverteilung maximiert wird. Einfacher ausgedrückt wird das System nicht sehr wahrscheinlich in einen Zustand übergehen, in dem wir nur die Klasse n1 es wird auch nicht in einen Zustand übergehen, in dem wir in jeder Klasse die gleiche Anzahl von Bildern haben. Aber warum ist das so? Wenn alle Bilder in einer Klasse wären, hätte das System eine sehr niedrige Entropie. Der zweite Fall wäre ebenfalls eine sehr unnatürliche Situation. Es ist wahrscheinlicher, dass wir mehr Bilder mit mäßiger Energie und weniger Bilder mit sehr hoher und sehr niedriger Energie haben.

Die Entropie nimmt mit der Anzahl der Kombinationen zu, in denen wir die N Bilder mit entsprechender Energie in die n1 , n2 , ..., nK aufteilen können . Diese Anzahl von Kombinationen ist durch den Multinomialkoeffizienten gegeben

(N!n1!,n2!,,nK!)=N!k=1Knk!.

Wir werden versuchen, diese Zahl zu maximieren, vorausgesetzt, wir haben unendlich viele Bilder N . Seine Maximierung hat aber auch Gleichheitsbeschränkungen () und () . Diese Art der Optimierung wird als eingeschränkte Optimierung bezeichnet. Wir können dieses Problem mithilfe der Methode der Lagrange-Multiplikatoren analytisch lösen. Wir führen die Lagrange-Multiplikatoren β und α für die Gleichheitsbedingungen ein und wir führen die Lagrange-Funktion L(n1,n2,,nk;α,β) .

L(n1,n2,,nk;α,β)=N!k=1Knk!+β[k=1KnkEkNE¯]+α[Nk=1Knk]

Da wir N haben, können wir auch nk annehmen und die Stirling-Näherung für die Fakultät verwenden

lnn!=nlnnn+O(lnn).

Beachten Sie, dass diese Näherung (die ersten beiden Terme) nur asymptotisch ist. Dies bedeutet jedoch nicht, dass diese Näherung gegen lnn! konvergiert ! für n .

Die partielle Ableitung der Lagrange-Funktion in Bezug auf nk~ führt zu

Lnk~=lnnk~1α+βEk~.

Wenn wir diese partielle Ableitung auf Null setzen, können wir finden

nk~=exp(βEk~)exp(1+α).()

()

exp(1+α)=1Nk=1Kexp(βEk).

If we put this back into () we get something that should remind us of the softmax function

nk~=exp(βEk~)1Nk=1Kexp(βEk).

If we define nk~/N as the probability of class Ck~ by pk~ we will obtain something that is really similar to the softmax function

pk~=exp(βEk~)k=1Kexp(βEk).

Hence, this shows us that the softmax function is the function that is maximizing the entropy in the distribution of images. From this point, it makes sense to use this as the distribution of images. If we set βEk~=wkTx we exactly get the definition of the softmax function for the kth output.

MachineLearner
quelle