Informatik

Gewichte und Aktivierung

Ein Neuron berechnet die gewichtete Summe — aber das allein reicht nicht. Die Summe kann jede Zahl sein, auch negativ oder sehr groß. Die Aktivierungsfunktion wandelt die Summe in eine sinnvolle Ausgabe um.

Die Sigmoid-Funktion

Die bekannteste Aktivierungsfunktion ist die Sigmoid-Funktion. Sie quetscht jede Zahl in den Bereich zwischen 0 und 1:

σ ( x ) = 1 1 + e x \sigma(x) = \frac{1}{1 + e^{-x}}

  • Sehr große Eingaben → Ausgabe nahe 1
  • Sehr negative Eingaben → Ausgabe nahe 0
  • Eingabe 0 → Ausgabe 0,5

Die Aktivierungsfunktion entscheidet, ob und wie stark ein Neuron „feuert". Sie nimmt die gewichtete Summe und erzeugt eine Ausgabe, die an die nächste Schicht weitergegeben wird.

Sigmoid ist eine Aktivierungsfunktion, die Werte in den Bereich (0, 1) presst. Gut für Wahrscheinlichkeiten.

ReLU (Rectified Linear Unit) gibt negative Werte auf 0 zurück und lässt positive unverändert: ReLU ( x ) = max ( 0 , x ) \text{ReLU}(x) = \max(0, x) . Einfach und schnell.

Aktivierungsfunktionen als Polymorphie

Hier kommt ein Konzept aus dem OOP-Lernpfad ins Spiel: Polymorphie. Wir definieren eine Schnittstelle Aktivierung und zwei Implementierungen: Sigmoid und ReLU. Das Neuron bekommt seine Aktivierungsfunktion zur Laufzeit — es weiß nicht, welche, und muss es auch nicht wissen.

Bevor du das Programm ausführst: Bei Bias 0.1 ist die gewichtete Summe 0.36 (aus der letzten Lektion). Sigmoid davon: etwa 0.59. ReLU davon: 0.36.

Im Programm unten wird der Bias danach auf -2.0 gesetzt. Achtung: Der Bias wird nicht addiert, sondern ersetzt — rechne die Summe also neu aus, statt 2.0 von 0.36 abzuziehen. Was gibt dann Sigmoid, was gibt ReLU?

Tipp 1: die neue Summe

summe = bias + gewicht[0] · eingabe[0] + gewicht[1] · eingabe[1] summe = -2.0 + 0.5 · 1.0 + (-0.3) · 0.8 summe = -2.0 + 0.5 - 0.24 = -1.74

Tipp 2: die beiden Ausgaben

Sigmoid(-1.74) = 1 / (1 + e^1.74) ≈ 1 / 6.70 ≈ 0.149

ReLU(-1.74) = max(0, -1.74) = 0

Die Aktivierungsfunktion ist ein klassisches Beispiel für Polymorphie: das Neuron hat eine Referenz vom Typ Aktivierung, und zur Laufzeit entscheidet der tatsächliche Objekttyp (Sigmoid oder ReLU), welche Berechnung läuft. Genau das hast du im OOP-Lernpfad bei den Schnittstellen gelernt — hier ist es kein konstruiertes Beispiel, sondern die echte Architektur eines neuronalen Netzes.

a) Führe das Programm aus und vergleiche mit deiner Papierberechnung.

b) Tausche die Aktivierungsfunktion beider Neuronen: gib dem ersten ReLU und dem zweiten Sigmoid. Was ändert sich?

c) Was passiert, wenn du ein Neuron mit Sigmoid und sehr großem positivem Bias (z.B. 10.0) rechnen lässt? Und mit sehr großem negativem Bias (z.B. -10.0)?

Tipp zu c)

Sigmoid „sättigt": bei sehr großen Werten geht die Ausgabe gegen 1, bei sehr negativen gegen 0. Dazwischen reagiert sie kaum noch — das ist ein Grund, warum in vielen Netzen ReLU bevorzugt wird.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Aktivierung und Sättigung ausprobieren

Jetzt hängt hinter dem Σ-Knoten die Aktivierungsfunktion. Rechts siehst du ihren Verlauf; der Punkt darauf ist die aktuelle Summe.

a) Schalte zwischen Sigmoid und ReLU um. Die Summe bleibt gleich, die Ausgabe nicht. Vergleiche mit deiner Antwort zu b) von oben.

b) Schiebe den Bias auf 10 und dann auf −10 und sieh dabei auf den Punkt in der Kurve. In welchem Bereich der Kurve landet er, und wie stark reagiert die Ausgabe noch, wenn du x₁ verschiebst? Das ist die Sättigung aus Aufgabe c).

c) Schalte die Aktivierung auf Stufe. Was kann dieses Neuron jetzt noch ausgeben?

Ein Neuron, das UND rechnet

Ein einzelnes Neuron kann logische Funktionen berechnen — wenn die Gewichte stimmen. Die Tabelle unter der Zeichnung prüft alle vier Eingabekombinationen auf einmal.

a) Stelle die beiden Gewichte und den Bias so ein, dass in allen vier Zeilen ein Haken steht. Es gibt viele Lösungen.

b) Stelle das Ziel auf ODER um. Was musst du am Bias ändern, damit es wieder passt? Die Gewichte kannst du lassen.

c) Stelle das Ziel auf XOR. Versuche es. Ab wann bist du sicher, dass es nicht geht?

Tipp zu a)

Bei UND soll die Ausgabe nur bei (1 | 1) über 0,5 liegen. Die Summe ist dort w 1 + w 2 + b w_1 + w_2 + b , bei (1 | 0) nur w 1 + b w_1 + b . Suche also Werte, bei denen w 1 + w 2 + b w_1 + w_2 + b positiv ist, w 1 + b w_1 + b aber negativ.

Tipp zu c)

Zeichne die vier Punkte (0|0), (0|1), (1|0) und (1|1) auf Papier und male die beiden mit Ausgabe 1 aus. Ein Neuron trennt sie immer mit einer geraden Linie. Bekommst du die zwei ausgemalten Punkte mit einer Geraden von den anderen beiden getrennt?

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Selbsttest

Gewichte und Aktivierung

Teilbare URL erstellen

Abschnitte auswählen