Ich habe mich diese Frage seit Monaten gestellt. Die Antworten auf CrossValidated und Quora zeigen alle nette Eigenschaften der logistischen Sigmoid-Funktion, aber es scheint, als hätten wir diese Funktion klug erraten. Was ich vermisst habe, war die Rechtfertigung für die Wahl. Ich habe endlich einen in Abschnitt 6.2.2.2 des "Deep Learning" -Buches von Bengio (2016) gefunden . In Meinen Eigenen Worten:
Kurz gesagt, wir möchten, dass der Logarithmus der Modellausgabe für eine gradientenbasierte Optimierung der Log-Wahrscheinlichkeit der Trainingsdaten geeignet ist.
Motivation
- Wir wollen ein lineares Modell, aber wir können z= wTx + b direkt als z∈(−∞,+∞) .
- Für die Klassifizierung ist es sinnvoll, die Bernoulli-Verteilung anzunehmen und ihren Parameter θ in P(Y=1)=θ modellieren .
- Also müssen wir z von (−∞,+∞) auf [0,1] abbilden , um die Klassifizierung durchzuführen.
Warum die logistische Sigmoidfunktion?
Das Abschneiden von z mit P(Y=1|z)=max{0,min{1,z}} ergibt einen Nullgradienten für z außerhalb von [0,1] . Wir brauchen einen starken Gradienten, wenn die Vorhersage des Modells falsch ist, weil wir die logistische Regression mit dem Gradientenabstieg lösen. Für die logistische Regression gibt es keine geschlossene Lösung.
Die logistische Funktion hat die nette Eigenschaft, einen konstanten Gradienten zu asymptotisieren, wenn die Vorhersage des Modells falsch ist, da wir die Maximum-Likelihood-Schätzung verwenden, um das Modell anzupassen. Dies ist unten gezeigt:
Für numerische Vorteile kann die Maximum-Likelihood-Schätzung durchgeführt werden, indem die negative Log-Likelihood der Trainingsdaten minimiert wird. Unsere Kostenfunktion lautet also:
J(w,b)=1m∑i=1m−logP(Y=yi|xi;w,b)=1m∑i=1m−(yilogP(Y=1|z)+(yi−1)logP(Y=0|z))
P(Y=0|z)=1−P(Y=1|z)Y=1P(Y=1|z)z=wTx+b
fzP(Y=1|z)
- ∀z∈R:f(z)∈[0,1]
- f(0)=0.5
- f(0,0.5)f(−x)=1−f(x)
- f
f(z)=11+e−zf(z)=0.5+0.5z1+|z|f(z)=11+e−z
Y=1
P(Y=1|z)=11+e−zY=1m=1
J(z)=−log(P(Y=1|z))=−log(11+e−z)=−log(ez1+ez)=−z+log(1+ez)
−z
- zY=1log(1+ez)zz−z
- z|z|Y=1log(1+ez)0z−zz−1zEs findet keine Sättigung statt, die zu verschwindenden Verläufen führen würde.
Y=0
Y=1Y=0
J(z)Y=1
Y=0
Alternativen
z1+|z|[0,1]P(Y=1|z)=0.5+0.5z1+|z|
Y=1
J(z)=−log(0.5+0.5z1+|z|)
was so aussieht:
z→−∞