Sigmoid
Die Sigmoid-Funktion bildet jede reelle Zahl auf einen Wert zwischen 0 und 1 ab. Behandelt werden die Formel, der Gradient, Wahrscheinlichkeitsausgaben, Gates und Python-Code für PyTorch.
Die Sigmoidfunktion σ(x) = 1 / (1 + e^(−x)) bildet jede reelle Zahl entlang einer S-förmigen Kurve auf einen Wert zwischen 0 und 1 ab: Große negative Eingaben ergeben Werte nahe 0, große positive Eingaben Werte nahe 1, und die Eingabe 0 ergibt genau 0.5. In der maschinellen Lernverfahren (ML) bezeichnet „Sigmoid“ fast immer diese logistische Funktion, also dieselbe Kurve, die in der logistischen Regression einen linearen Wert in eine Wahrscheinlichkeit umwandelt. In einem neuronalen Netz (NN) hat Sigmoid drei Aufgaben: Ursprünglich diente die Funktion als Aktivierungsfunktion verborgener Schichten. Sie wandelt außerdem einen abschließenden Wert für binäre Ausgaben und Ausgaben mit mehreren Labels in eine Wahrscheinlichkeit um. Schließlich dient sie als weicher Ein-Aus-Schalter in den Gates rekurrenter Zellen und anderen gegateten Schichten. Verborgene Schichten verwenden inzwischen andere Funktionen wie ReLU. Deshalb findet man Sigmoid in aktuellen Modellen hauptsächlich in Ausgaben und Gates.
Formel und Eigenschaften#
Sigmoid ist symmetrisch um ihren Mittelpunkt: σ(−x) = 1 − σ(x). Ihre Umkehrfunktion ist die Logit-Funktion log(p / (1 − p)), die eine Wahrscheinlichkeit zurück in Log-Odds umwandelt. Deshalb bezeichnet man die rohe Ausgabe eines Netzwerks vor der Sigmoidfunktion als Logit. Die Ableitung hat die kompakte Form σ′(x) = σ(x)(1 − σ(x)). Bei x = 0 erreicht sie mit 0.25 ihren Höchstwert und fällt gegen null, wenn sich die Kurve an beiden Enden abflacht – ein Verhalten, das als Sättigung bezeichnet wird. Das folgende PyTorch-Codebeispiel berechnet Ausgaben und Gradienten an fünf Punkten:
import torch
x = torch.tensor([-6.0, -2.0, 0.0, 2.0, 6.0], requires_grad=True)
y = torch.sigmoid(x)
# Backpropagate to get the derivative sigmoid(x) * (1 - sigmoid(x)) at each input
y.sum().backward()
print(f"Sigmoid: {[round(v, 4) for v in y.tolist()]}")
print(f"Gradient: {[round(v, 4) for v in x.grad.tolist()]}")Ausgegeben werden die Sigmoidwerte [0.0025, 0.1192, 0.5, 0.8808, 0.9975] und die Gradienten [0.0025, 0.105, 0.25, 0.105, 0.0025]. Bei ±6 liegt die Ausgabe höchstens 0.0025 vom Grenzwert entfernt, und der Gradient ist 100-mal kleiner als bei null. Eine Eingabe in diesem Bereich verändert die Gewichte, die sie erzeugt haben, also kaum.
Sigmoid in verborgenen Schichten#
Frühe mehrschichtige Netzwerke verwendeten Sigmoid in jeder verborgenen Schicht, was zwei Probleme verursachte. Bei der Rückpropagation wird der Aktivierungsgradient jeder Schicht multipliziert. Da die Ableitung der Sigmoidfunktion nie größer als 0.25 ist, skalieren allein diese Ableitungen den Gradienten über zehn Sigmoid-Schichten höchstens mit 0.25¹⁰, also auf weniger als ein Millionstel. Dies ist das Problem des verschwindenden Gradienten. Außerdem sind Sigmoid-Ausgaben immer positiv. Deshalb haben alle Gewichtsgradienten eines Neurons, das diese Ausgaben empfängt, bei jedem Aktualisierungsschritt dasselbe Vorzeichen, sodass sich die Gewichte ihrem Optimum nur im Zickzack nähern können. Tanh zentriert seine Ausgaben um null. Xavier Glorot und Yoshua Bengio zeigten 2010, dass der positive Mittelwert von Sigmoid die oberste verborgene Schicht eines zufällig initialisierten tiefen Netzwerks in die Sättigung treibt. ReLU beseitigte beide Probleme und wurde zur Standardfunktion für verborgene Schichten. Glatte Nachfolger wie SiLU, x · σ(x), verwenden Sigmoid weiterhin als Gate.
Sigmoid als Ausgabeschicht#
Bei der binären Klassifizierung wird eine einzelne Ausgabe z zu p = σ(z), der vorhergesagten Wahrscheinlichkeit für die positive Klasse. Ein Schwellenwert von 0.5 für p entspricht einem Schwellenwert von 0 für z. Beim Training wird Sigmoid mit der binären Kreuzentropie kombiniert. Deren Gradient bezüglich des Logits lautet einfach p − y, also die vorhergesagte Wahrscheinlichkeit minus das Label. Frameworks kombinieren beide Funktionen aus Gründen der numerischen Stabilität: BCEWithLogitsLoss von PyTorch verarbeitet rohe Logits und verwendet intern den Log-Sum-Exp-Trick. Dadurch wird verhindert, dass der Logarithmus einer Wahrscheinlichkeit berechnet wird, die auf genau 0 oder 1 gerundet wurde.
Wenn Labels gleichzeitig auftreten können, verwendet ein Modell für jedes Label eine Sigmoidfunktion. Diese Konfiguration wird als Klassifizierung mit mehreren Labels bezeichnet. Softmax lässt die Klassen stattdessen um eine gemeinsame Wahrscheinlichkeitseinheit konkurrieren und eignet sich für Labels, die sich gegenseitig ausschließen:
import torch
# Logits from a classifier for the labels "person", "backpack", and "car"
logits = torch.tensor([2.0, 1.5, -3.0])
# Sigmoid scores each label on its own; softmax makes the labels compete for one total
sigmoid_probs = torch.sigmoid(logits)
softmax_probs = torch.softmax(logits, dim=0)
print(f"Sigmoid: {[round(p, 3) for p in sigmoid_probs.tolist()]}, sum {sigmoid_probs.sum():.3f}")
print(f"Softmax: {[round(p, 3) for p in softmax_probs.tolist()]}, sum {softmax_probs.sum():.3f}")Die Sigmoidwerte [0.881, 0.818, 0.047] ergeben zusammen 1.746. Daher liegen „Person“ und „Rucksack“ beide über 0.5. Softmax teilt dieselben Logits dagegen in [0.62, 0.376, 0.004] auf, und nur „Person“ bleibt über 0.5. YOLO26 Erkennungsmodelle bewerten jede Klasse mit einer unabhängigen Sigmoidfunktion, die mit BCEWithLogitsLoss trainiert wird. Deshalb müssen sich die Klassenwerte einer Box nicht zu 1 summieren. Posemodelle von YOLO26 wenden auf den Sichtbarkeitslogit jedes Keypoints eine Sigmoidfunktion an, um die Wahrscheinlichkeit auszugeben, dass der Keypoint sichtbar ist.
Sigmoid als Gate#
Da ihre Ausgabe zwischen 0 und 1 liegt, kann die Sigmoidfunktion ein anderes Signal elementweise skalieren – von vollständig blockiert bis vollständig durchgelassen –, wobei sie differenzierbar bleibt:
- LSTM- und GRU-Zellen: Sigmoid-Gates bestimmen, wie viel des alten Speichers erhalten bleibt, wie viel neuer Inhalt geschrieben wird und welcher Anteil des Zustands bei jedem Zeitschritt ausgegeben wird. Tanh formt dabei den Inhalt selbst.
- SwiGLU: Die Feed-forward-Schichten vieler großer Sprachmodelle (LLMs) multiplizieren eine gelernte Projektion mit einer zweiten Projektion, auf die SiLU angewendet wird. Dieses Gate basiert auf Sigmoid.
- SigLIP: Dieses Bild-Text-Modell bewertet jedes Bild-Untertitel-Paar in einem Stapel mit einer eigenen Sigmoidfunktion, die eine Ja-oder-Nein-Wahrscheinlichkeit für eine Übereinstimmung ausgibt. Daher muss der Verlust nicht über den Stapel hinweg normalisiert werden.
Sigmoid und verwandte Funktionen#
- Logistische Funktion: Ein Synonym für Sigmoid im ML. In der Mathematik bezeichnet „Sigmoid“ auch andere S-förmige Kurven, etwa tanh und die Fehlerfunktion.
- Softmax: Normalisiert einen ganzen Vektor zu Wahrscheinlichkeiten, die sich zu 1 summieren. Bei zwei Klassen ergibt Softmax über die Logits (z₁, z₂) für die erste Klasse σ(z₁ − z₂). Deshalb beschreiben Softmax mit zwei Ausgaben und Sigmoid mit einer Ausgabe dasselbe Modell.
- Tanh: Eine skalierte Sigmoidfunktion mit tanh(x) = 2σ(2x) − 1. Ihre Ausgaben liegen zwischen −1 und 1, sind um null zentriert und haben eine maximale Ableitung von 1.
- Hartes Sigmoid: Eine stückweise lineare Näherung, die auf mobiler Hardware die Exponentialfunktion vermeidet. MobileNetV3 verwendet ReLU6(x + 3) / 6. Die Funktion ist für x < −3 gleich 0, für x > 3 gleich 1 und verläuft dazwischen linear.










