Aktivierungsfunktion

Aus Zweites Gehirn, dem persönlichen Wiki
Aktivierungsfunktion
TypKonzept
QuellenQuelle - Neuronale Netze selbst programmieren
Quelle - Neuronale Netze programmieren mit Python
Erstellt2026-09-26
Aktualisiert2026-09-27
Tagsneuronale-netze, maschinelles-lernen, funktion

Die Funktion, die in jedem Knoten eines neuronalen Netzes aus der Summe der gewichteten Eingänge das Ausgangssignal macht. Sie ahmt den Schwellwert biologischer Neuronen nach. Klassisch ist die Sigmoidfunktion, heute sind ReLU und Leaky ReLU verbreitet, weil ihre Steigung nicht verschwindet.

Idee: der Schwellwert

Biologische Neuronen geben ein Signal erst weiter, wenn die Eingabe eine Schwelle überschreitet. Sie „feuern“ und lassen schwaches Rauschen nicht durch (Quelle - Neuronale Netze selbst programmieren, S. 46–47). Eine Aktivierungsfunktion bildet das nach. Ohne sie wäre ein ganzes Netz nur eine lineare Funktion und könnte nicht mehr als ein Linearer Klassifikator.

Die wichtigsten Funktionen

Funktion Formel Eigenschaften
Stufenfunktion 0 unter der Schwelle, 1 darüber abrupt, nicht ableitbar an der Sprungstelle
Sigmoid (logistische Funktion) y = 1 / (1 + e⁻ˣ) sanfte S-Kurve, Werte zwischen 0 und 1, y(0) = 0,5
ReLU (Rectified Linear Unit) y = max(0, x) Gerade für x > 0, Steigung verschwindet nicht
Leaky ReLU y = x für x > 0, sonst a·x mit kleinem a (z.B. 0,02) auch links eine kleine Steigung

Sigmoid

Das Buch verwendet die Sigmoidfunktion für das eigene Netz (S. 47–49):

  • Die Natur macht keine Sprünge: Die sanfte Kurve ist realistischer als die Stufe.
  • Ihre Ableitung ist besonders einfach: sigmoid′(x) = sigmoid(x) · (1 − sigmoid(x)). Das macht die Herleitung der Backpropagation leicht.
  • Die Umkehrfunktion ist die Logit-Funktion x = ln(y / (1 − y)). Das Buch nutzt sie, um ein trainiertes Netz rückwärts abzufragen (S. 182).

In Python liefert scipy.special.expit() die Sigmoidfunktion, scipy.special.logit() die Umkehrung.

Sättigung und Wertebereich

  • Für grosse |x| wird die Sigmoid-Kurve sehr flach. Weil die Gewichtsänderung proportional zur Steigung ist, lernt das Netz dort kaum noch. Das heisst Sättigung (S. 103–104).
  • Die Sigmoidfunktion erreicht 0 und 1 nie. Zielwerte von genau 0 oder 1 würden die Gewichte immer grösser treiben. Das Buch verwendet deshalb Zielwerte von 0,01 bis 0,99 (S. 104–105).
  • Auch Eingänge sollten klein sein, aber nicht null, deshalb 0,01 bis 1,0.

ReLU und Leaky ReLU

Das Hauptproblem der Sigmoidfunktion sind verschwindende Gradienten bei grossen Werten. ReLU löst das für positive Werte mit konstanter Steigung 1. Für negative Werte ist die Steigung aber null, deshalb gibt man bei Leaky ReLU der linken Hälfte eine kleine Steigung (S. 212–214).

Im PyTorch-Experiment des Buchs steigt die Genauigkeit auf MNIST allein durch den Wechsel von Sigmoid zu LeakyReLU(0.02) von 87 % auf 97 % (PyTorch). Bei der Kombination mit BCE-Verlust bleibt nach der letzten Schicht eine Sigmoidfunktion, weil BCE Werte zwischen 0 und 1 braucht (S. 218).

Weitere Funktionen und Begriffe

Quelle - Neuronale Netze programmieren mit Python ergänzt:

  • Heaviside-Funktion: die Stufenfunktion mit Schwelle 0 (nach Oliver Heaviside). Mit dem Bias-Trick genügt sie für jede Schwelle (S. 82, 96, siehe Perzeptron).
  • Semilineare Funktion: steigt zwischen zwei Grenzen geradlinig von 0 auf 1 (S. 35).
  • Tangens hyperbolicus: wie Sigmoid, aber mit Werten von −1 bis +1 (S. 213).
  • Dying ReLU: Ein ReLU-Neuron, das nur noch negative Eingänge bekommt, gibt immer 0 aus und lernt nicht mehr. Dagegen helfen Leaky ReLU und die ELU (Exponential Linear Unit), die für negative Werte exponentiell gegen einen kleinen negativen Wert geht. ELU ist aufwendiger zu rechnen, konvergiert aber schneller (S. 214–216).
  • Softmax: Aktivierung der letzten Schicht bei mehreren Klassen. Sie macht aus den Werten (Logits) Wahrscheinlichkeiten zwischen 0 und 1, die sich zu 1 summieren: softmax(zⱼ) = e^zⱼ / Σ e^zₖ (S. 210–211, siehe Faltungsnetz, Transformer).
  • Identität als Ausgabefunktion: Das Buch trennt Aktivierungsfunktion f_akt und Ausgabefunktion g, die meist einfach den Wert durchreicht (S. 140, 154).

Initialisierung und Aktivierung gehören zusammen: Xavier Glorot und Yoshua Bengio erklärten verschwindende und explodierende Gradienten mit einer ungünstigen Kombination aus Startgewichten und Sigmoid. Die Startgewichte sollen deshalb zufällig mit einer Streuung gewählt werden, die von der Zahl der ein- und ausgehenden Verbindungen abhängt: Glorot-Initialisierung für Sigmoid und tanh, He-Initialisierung (Kaiming He) für ReLU (S. 212–214). Das verfeinert Rashids Faustregel 1/√(eingehende Verbindungen) aus Künstliches neuronales Netz.

Fehler in der Quelle

Quelle - Neuronale Netze programmieren mit Python (S. 214) schreibt, bei einer Normalverteilung lägen 64,26 % der Werte zwischen −σ und +σ. Richtig sind 68,26 %, wie die Abbildung daneben mit 2 × 34,13 % selbst zeigt.

Das Buch zeigt auch, dass Gewichte zur Aktivierungsfunktion passen müssen: Die XOR-Gewichte, die mit Sigmoid funktionieren, liefern mit ReLU falsche Ergebnisse (S. 160–161).

Einordnung (Claude)

Die Sigmoidfunktion ist dieselbe logistische Funktion, die man für Wachstum mit Sättigung verwendet, z.B. für die Verbreitung eines Produkts, dessen Umsatz sich einem Sättigungsniveau nähert (vgl. Produktlebenszyklus). Die Umkehrfunktion ist ein schönes Beispiel für eine Umkehrfunktion im Sinn von Funktion: Vertauschen von x und y und Auflösen, hier mit dem natürlichen Logarithmus (siehe Potenz, Wurzel und Logarithmus).

Verwandt