Softmax vs Sigmoid Funktion im Logistic Classifier?


63

Was entscheidet über die Wahl der Funktion (Softmax vs Sigmoid) in einem Logistic-Klassifikator?

Angenommen, es gibt 4 Leistungsklassen. Jede der obigen Funktionen gibt die Wahrscheinlichkeiten jeder Klasse als die richtige Ausgabe an. Also welche für einen Klassifikator?


16
Die Softmax-Funktion ist nichts anderes als eine Verallgemeinerung des Sigmoid. Es ist also nicht ganz klar, was Sie unter "Softmax vs. Sigmoid" verstehen.
Dsaxton

2
Es ist der Fall mit dem Sigma. Wenn wir das Sigma verwenden, hat eine Klasse die Wahrscheinlichkeit und die andere die Wahrscheinlichkeit . exp(βTx)/(exp(βTx)+1)1/(exp(βTx)+1)
Dsaxton

3
Das reddit-Plakat macht eine Unterscheidung, die ich für falsch oder zumindest irrelevant halte. Ob eine der Klassen eine Gewichtung hat oder nicht, ist nur eine Frage der Verschiebung der Punktzahlen, was keinen Einfluss auf die Wahrscheinlichkeiten hat.
Dsaxton


3
"Es ist nicht ganz klar, was Sie mit" softmax vs. sigmoid "meinen." Direkt unter dem Titel befindet sich der Kern der Frage - sehr leicht zu übersehen, ich weiß. Außerdem ist es ein guter Titel, Google-Anfragen hierher zu schicken, um genau zu beantworten, was gefragt wurde.
Michael

Antworten:


77

Die Sigmoid-Funktion wird für die logistische Regression mit zwei Klassen verwendet, während die Softmax-Funktion für die logistische Regression mit mehreren Klassen verwendet wird (auch bekannt als MaxEnt, multinomiale logistische Regression, Softmax-Regression, Maximum Entropy Classifier).


In der logistischen Regression mit zwei Klassen lauten die vorhergesagten Wahrscheinlichkeiten unter Verwendung der Sigmoid-Funktion wie folgt:

Pr(Yi=0)=eβXi1+eβ0XiPr(Yi=1)=1Pr(Yi=0)=11+eβXi

In der logistischen Mehrklassen-Regression mit Klassen lauten die vorhergesagten Wahrscheinlichkeiten unter Verwendung der Softmax-Funktion wie folgt:K

Pr(Yi=k)=eβkXi 0cKeβcXi

Man kann beobachten, dass die Softmax-Funktion eine Erweiterung der Sigmoid-Funktion auf den Mehrfachklassenfall ist, wie nachstehend erläutert wird. Betrachten wir die logistische Regression mehrerer Klassen mit Klassen:K=2

Pr(Yi=0)=eβ0Xi 0cKeβcXi=eβ0Xieβ0Xi+eβ1Xi=e(β0β1)Xie(β0β1)Xi+1=eβXi1+eβXiPr(Yi=1)=eβ1Xi 0cKeβcXi=eβ1Xieβ0Xi+eβ1Xi=1e(β0β1)Xi+1=11+eβXi

mit . Wir sehen, dass wir mit der Sigmoid-Funktion die gleichen Wahrscheinlichkeiten wie bei der zweiklassigen logistischen Regression erhalten. Wikipedia erweitert diesbezüglich etwas.β=(β0β1)


1
Ich bin in dieser naiv, aber ich sehe dies viel Zeit β = - (β0 - β1) Was könnte eine mögliche Erklärung dafür sein? Soweit ich weiß, wäre in Sigmoids β ein Vektor. Und sie sind in der Regel eine für einen bestimmten Lauf. Wie kommt es dann, dass β0 und β1 in das Bild kommen?
Ishan Bhatt

1
@IshanBhatt dieser Kommentar kann helfen.
Tom Hale

Seltsamerweise kann ich immer noch mit nur Sigmoid auf Multiklassen zurückgreifen :)
datdinhquoc

15

Sie sind in der Tat äquivalent in dem Sinne, dass das eine in das andere umgewandelt werden kann.

Angenommen, Ihre Daten werden durch einen Vektor beliebiger Dimension dargestellt, und Sie haben einen Binärklassifikator dafür erstellt, wobei Sie eine affine Transformation gefolgt von einem Softmax verwenden:x

(z0z1)=(w0Tw1T)x+(b0b1),
P(Ci|x)=softmax(zi)=eziez0+ez1,i{0,1}.

Lassen Sie uns es in einen äquivalenten binären Klassifikator umwandeln, der ein Sigmoid anstelle des Softmax verwendet. Zunächst müssen wir entscheiden, mit welcher Wahrscheinlichkeit das Sigma ausgegeben werden soll (dies kann für die Klasse oder ). Diese Wahl ist absolut willkürlich und deshalb wähle ich die Klasse . Dann hat mein Klassifikator die Form:C0C1C0

z=wTx+b,
P(C0|x)=σ(z)=11+ez,
P(C1|x)=1σ(z).

Die Klassifikatoren sind äquivalent, wenn die Wahrscheinlichkeiten gleich sind, also müssen wir auferlegen:

σ(z)=softmax(z0)

Ersetzen von , und durch ihre Ausdrücke in Form von und und Durchführen einiger einfacher Durch algebraische Manipulation können Sie überprüfen, ob die obige Gleichheit genau dann wenn und gegeben sind durch:z0z1zw0,w1,w,b0,b1,bxwb

w=w0w1,
b=b0b1.

@null Ok, ich wenn du das fragst, dann hast du meine Erklärung nicht verstanden. Lassen Sie mich auf Ihr spezielles Problem eingehen: Wenn Sie mir mitteilen, dass Sie Ihre Daten einem Sigma zuführen, muss es sich um eine eindimensionale Zahl handeln, . Wenn Sie es einem Sigma zuführen, erhalten Sie die Wahrscheinlichkeit, dass zu einer Ihrer beiden Klassen gehört, zum Beispiel : . Dann ist die Wahrscheinlichkeit, dass in ist: . Ersetzen wir nun Ihr Sigma durch ein Softmax. (Fortsetzung folgt). xxC0P(C0|x)=σ(x)xC1P(C1|x)=1P(C0|x)=σ(x)
D ...

(Fortsetzung). Um einen Softmax auf ein Klassifizierungsproblem mit zwei Klassen anzuwenden, müssen Sie Ihre eindimensionalen Daten in einen zweidimensionalen Vektor transformieren. Daher müssen wir unser und . Wählen . Da erfüllen muss , haben wir , also . Jetzt haben wir und . Auf diese Weise können Sie sofort überprüfen, ob . w0w1w0=1w1w=w0w11=1w1w1=0z0=w0x=xz1=w1x=0σ(x)=softmax(z0)
D ...

Außerdem ist jede Kombination von und , die erfüllt (das heißt, ) würde auf den exakt gleichen Ergebnis führen. Dies zeigt, dass der Softmax einen redundanten Parameter hat. Obwohl dies dumm erscheinen mag, ist es in der Tat eine interessante Eigenschaft, da es eine Normalisierung der Parameter , was die numerische Stabilität des Lernalgorithmus und der Inferenz fördert. Aber dies ist nur ein zusätzlicher Kommentar, es ist nicht wichtig, Ihre Frage zu beantworten :)w0w1w=w0w11=w1w0wi
D ...

Danke vielmals. Ich hab es geschafft. In Ihrem ersten Kommentar sollte die Wahrscheinlichkeit wahrscheinlich . Ich verstehe jetzt, was die Idee hinter der Transformation ist. P(C1|x)1σ(x)
null

Schön, dass du es verstanden hast;) Ja, es ist ein Tippfehler, es sollte offensichtlich . Vielen Dank für den Hinweis! P(C1|x)=1σ(x)
D ...

8

Mir ist aufgefallen, dass Menschen bei der Suche nach der Verwendung von Sigmoid vs Softmax in neuronalen Netzen häufig auf diese Frage hingewiesen werden. Wenn Sie eine dieser Personen sind, die einen Klassifikator für neuronale Netze erstellen, können Sie hier entscheiden, ob Sie Sigmoid oder Softmax auf die Rohausgabewerte Ihres Netzes anwenden möchten:

  • Wenn Sie ein Problem mit der Mehrfachetikettenklassifizierung haben = es gibt mehr als eine "richtige Antwort" = die Ausgaben schließen sich NICHT gegenseitig aus, dann verwenden Sie eine Sigmoid-Funktion für jede Rohausgabe unabhängig. Mit dem Sigmoid haben Sie eine hohe Wahrscheinlichkeit für alle Ihre Klassen, einige von ihnen oder keine von ihnen. Beispiel: Klassifizierung von Krankheiten in einem Röntgenbild der Brust. Das Bild enthält möglicherweise eine Lungenentzündung, ein Emphysem und / oder Krebs oder keinen dieser Befunde.
  • Wenn Sie ein Klassifizierungsproblem mit mehreren Klassen haben = es gibt nur eine "richtige Antwort" = die Ausgaben schließen sich gegenseitig aus, dann verwenden Sie eine Softmax-Funktion. Der Softmax erzwingt, dass die Summe der Wahrscheinlichkeiten Ihrer Ausgabeklassen gleich eins ist. Um also die Wahrscheinlichkeit einer bestimmten Klasse zu erhöhen, muss Ihr Modell die Wahrscheinlichkeit mindestens einer der anderen Klassen entsprechend verringern. Beispiel: Klassifizieren von Bildern aus dem MNIST-Datensatz handgeschriebener Ziffern. Ein einzelnes Bild einer Ziffer hat nur eine wahre Identität - das Bild kann nicht gleichzeitig eine 7 und eine 8 sein.

Verweis: Eine ausführlichere Erläuterung der Verwendung von Sigmoid vs. Softmax im neuronalen Netzwerkdesign, einschließlich Beispielberechnungen, finden Sie in diesem Artikel: "Klassifizierung: Sigmoid vs. Softmax".


-1

Hinzufügen zu allen vorherigen Antworten - Ich möchte die Tatsache erwähnen, dass jedes Mehrklassen-Klassifizierungsproblem mit der "one-vs-all" -Methode auf mehrere binäre Klassifizierungsprobleme reduziert werden kann, dh mit C-Sigmoiden (wenn C die Anzahl von ist) Klassen) und Interpretieren jedes Sigmoid, um die Wahrscheinlichkeit zu sein, in dieser bestimmten Klasse zu sein oder nicht, und die maximale Wahrscheinlichkeit zu nehmen.

So können Sie beispielsweise im MNIST-Ziffernbeispiel entweder einen Softmax oder zehn Sigmoids verwenden. Genau das macht Andrew Ng in seinem Coursera ML-Kurs. Sie können hier nachlesen , wie Andrew Ng 10 Sigmoide für die Klassifizierung mehrerer Klassen verwendet hat (von mir von Matlab an Python angepasst), und hier ist meine Softmax-Anpassung in Python.

Beachten Sie auch, dass die Funktionen zwar äquivalent sind (für die Klassifizierung mehrerer Klassen), sich jedoch in ihrer Implementierung geringfügig unterscheiden (insbesondere in Bezug auf ihre Ableitungen und die Darstellung von y).

Ein großer Vorteil der Verwendung mehrerer Binärklassifikationen (z. B. Sigmoids) gegenüber einer einzelnen Multiklassenklassifikation (z. B. Softmax) besteht darin, dass Ihr Softmax zu groß ist (z. B. wenn Sie eine One-Hot-Word-Einbettung mit einer Wörterbuchgröße von 10 KB oder mehr verwenden) ) - es kann ineffizient sein, es zu trainieren. Sie können stattdessen einen kleinen Teil Ihres Trainingssets nehmen und damit nur einen kleinen Teil Ihrer Sigmoiden trainieren. Dies ist die Hauptidee hinter Negative Sampling .


Die Funktionen sind nicht äquivalent, da das Softmax-Netzwerk darauf beschränkt ist, eine Wahrscheinlichkeitsverteilung über die Klassen als Ausgabe zu erzeugen: Der Vektor ist nicht negativ und summiert sich zu 1. Die Sigmoid-Einheiten sind nicht negativ, können aber zu einer beliebigen Zahl summiert werden zwischen 0 und ; Es ist keine gültige Wahrscheinlichkeitsverteilung. Diese Unterscheidung ist entscheidend für die Unterscheidung der beiden Funktionen. CC
Setzen Sie Monica

Was ist Ihre Definition von Äquivalent? Meins ist: Sie können beide ohne Probleme für die Klassifizierung mehrerer Klassen verwenden. Außerdem kann jede Multiklassifikation, die Softmax verwendet, in eine binäre Ein-gegen-Alles-Klassifikation umgewandelt werden, die Sigmoide verwendet. Warum sollte ich mich für die Verteilung der Ausgänge interessieren, die auf 1 summieren?
David Refaeli

Ihr Argument zur Mehrfachetikettenklassifizierung zeigt, warum Sigmoid und Softmax nicht gleichwertig sind. Bei Verwendung von Softmax verringert die Erhöhung der Wahrscheinlichkeit einer Klasse die Gesamtwahrscheinlichkeit aller anderen Klassen (aufgrund der Summe zu 1). Wenn Sie Sigmoid verwenden, ändert sich durch Erhöhen der Wahrscheinlichkeit einer Klasse nicht die Gesamtwahrscheinlichkeit der anderen Klassen. Diese Beobachtung ist der Grund , warum Sigmoide für die Klassifizierung mit mehreren Markierungen plausibel sind: Ein einzelnes Beispiel kann zu den Klassen . Sum-to-1 ist auch der Grund, warum Softmax nicht für die Klassifizierung mit mehreren Etiketten geeignet ist. 0,1,2,,C
Setzen Sie Monica

Ich habe dich verloren. Für alle mir bekannten praktischen Zwecke sind mehrere Sigmoids = 1 Softmax. Ich habe sogar den Fall der negativen Abtastung hinzugefügt, bei der mehrere Sigmoide tatsächlich einen Vorteil gegenüber einem Softmax haben.
David Refaeli
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.