Neuronale Netze · zum Nachrechnen
Ein einzelnes Neuron kann nur eine Gerade ziehen. Vier davon, richtig verschaltet, grenzen ein geschlossenes Gebiet ab. Diese Seite rechnet das Stück für Stück vor — siebzehn Zahlen, jede davon nachprüfbar — und zeigt am Ende, wie ein Netz dieselben Zahlen von allein findet.
01 — Der Baustein
Ein künstliches Neuron rechnet zwei Dinge. Erst eine gewichtete Summe seiner Eingänge, dann drückt es das Ergebnis durch eine S-Kurve:
Drei Zahlen, mehr steckt nicht darin. Und weil σ streng monoton ist, gilt h > ½ genau dann, wenn die Summe positiv ist. Das Neuron teilt die Ebene mit einer Geraden.
Nehmen wir ein konkretes, das wir für den Rest der Seite brauchen:
| x | −4 | −2 | −1 | 0 | +2 |
|---|---|---|---|---|---|
| h₁ | 0,0003 | 0,5000 | 0,9820 | 0,9997 | 1,0000 |
Bei x = −2 steht das Neuron genau auf seiner Schwelle. Links davon fällt es rasch auf null, rechts davon steigt es rasch auf eins. Die 4 vor dem x bestimmt, wie rasch — mit einer 1 statt der 4 wäre der Übergang viermal so breit.
02 — Zwei davon
Nimm ein zweites Neuron, das in die andere Richtung schaut, und lass ein drittes beide auswerten:
Die Schwelle 1,5 verlangt, dass beide Neuronen nahe bei eins liegen — eines allein reicht nicht, denn 1 + 0 = 1 < 1,5. Das ist ein logisches UND.
Das Ergebnis
p = ½ heißt h1 + h2 = 1,5. Bei x = 2 steht h2 genau auf seiner eigenen Schwelle, σ(0) = ½, während h1 längst gesättigt ist, σ(16) ≈ 1. Zusammen also ziemlich genau 1,5.
Nachgerechnet
Die Kante liegt bei x = ±1,99999989. Die Abweichung von 2 beträgt e−16 ≈ 1,1 · 10−7 — genau der Rest, den σ(16) auf 1 noch fehlt.
Beachte, was hier nicht passiert: Beide Neuronen hängen nur von x ab, also hängt auch p nur von x ab. Der Streifen ist nach oben und unten unendlich lang. Ein Punkt bei (0, 1 000 000) bekommt dieselben 95 % wie der Ursprung.
03 — Das Ergebnis
Der Streifen begrenzt nur eine Richtung. Nimm zwei weitere Neuronen, die dasselbe für y tun, und verlange, dass alle vier zutreffen:
| Punkt | Σh | p | |
|---|---|---|---|
| (0 | 0) | 3,9987 | 0,9522 | innen |
| (1,5 | 1,5) | 3,7616 | 0,8277 | innen, nahe der Kante |
| (5 | 0) | 2,9993 | 0,0472 | außen, eine Bedingung verletzt |
| (3 | 3) | 2,0360 | 0,0002 | außen, zwei verletzt |
Der Aufbau
Interaktiv
Mehr Neuronen, mehr Kanten. Die gezeichnete Linie ist nicht gemalt, sondern die tatsächliche ½-Niveaumenge des Modells, bei jedem Wechsel neu berechnet.
Ein echtes Vieleck hätte beim Quadrat ein Verhältnis von Ecke zu Kantenmitte von √2 ≈ 1,414. Gemessen sind es 1,220. Die S-Kurve schleift die Ecken ab, weil dort zwei Bedingungen gleichzeitig knapp werden.
Mit größerer Steilheit nähert sich das Verhältnis dem Ideal — und mit kleinerer zerfließt die Form. Der Schieber zeigt beides.
04 — Die Bedingung
Man könnte denken, die S-Kurve sei Beiwerk — eine Glättung, die man auch weglassen könnte. Rechnen wir nach, was dann passiert. Dieselben vier Neuronen, nur ohne σ:
Bei jedem Punkt. Die Steigungen heben sich weg, übrig bleibt eine Konstante. Das UND ist verschwunden, weil eine Summe von Geraden wieder eine Gerade ist.
Formal: W₂(W₁x + b₁) + b₂ = (W₂W₁)x + (W₂b₁ + b₂) — wieder eine einzige affine Abbildung. Die S-Kurve ist nicht die Verzierung zwischen den Schichten, sie ist der Grund, warum es Schichten gibt.
Sie trennt ob von wie weit. Eine Gerade liefert einen unbegrenzten Abstand; σ kappt ihn bei 0 und 1. Erst dadurch lässt sich zählen, wie viele Bedingungen erfüllt sind — statt Abstände gegeneinander aufzurechnen, wo ein sehr großes Plus ein Minus überstimmen würde.
In der Breite verwendet man max(0, x) statt der S-Kurve. Der Grund ist die Ableitung: σ′ geht bei großen Beträgen gegen null, und über viele Schichten multipliziert verschwindet das Gradientensignal.
Am Prinzip ändert das nichts — ReLU ist ebenso nichtlinear, und die Rechnung oben bricht mit ihr genauso zusammen. Die S-Kurve überlebt am Ausgang, wo eine Wahrscheinlichkeit gebraucht wird.
05 — Die Grenze
Mit einer versteckten Schicht lässt sich jedes konvexe Gebiet abgrenzen: Schnitte von Halbebenen sind Vielecke, und mit genug Neuronen wird daraus ein Kreis. Das Ausgabeneuron setzt dabei eine einzige Schwelle.
Schwelle 3,5
Der Schnitt aller Halbebenen. Ergibt das Quadrat.
Schwelle 0,5
Die Vereinigung. Ergibt alles außerhalb eines Kreuzes.
nicht möglich
Eine Schwelle kann nicht „drinnen bei A oder drinnen bei B“ sagen, ohne den Zwischenraum mitzunehmen.
Für zwei getrennte Inseln braucht es eine zweite versteckte Schicht: eine, die zwei Quadrate baut, und eine darüber, die sie verodert. Genau hier fängt Tiefe an, nötig zu werden — und nicht früher.
Zur Einordnung
Eine einzige versteckte Schicht genügt im Prinzip für jede vernünftige Trennfläche — das ist der Satz von Cybenko (1989). Nur kann die nötige Breite dabei exponentiell wachsen. Breite gibt Ausdruckskraft überhaupt, Tiefe gibt Ausdruckskraft pro Parameter.
06 — Exkurs
Bis hierher habe ich sie hingeschrieben. Ich wusste, wo das Quadrat liegen soll, und habe die Gewichte danach gewählt. Ein Netz weiß das nicht — es bekommt nur Punkte mit der Angabe innen oder außen und muss den Rest finden.
Man misst den Fehler am Ausgang, fragt für jedes Gewicht „wie sehr trägt es zu diesem Fehler bei“, und verschiebt es ein Stück in die Gegenrichtung. Die Frage nach dem Beitrag beantwortet die Kettenregel — rückwärts durch das Netz, daher der Name.
Vier Faktoren: der Fehler am Ausgang, das Gewicht auf dem Weg dorthin, die lokale Ableitung der S-Kurve, und der Eingang selbst. Der dritte Faktor h(1−h) ist der Grund für das Verschwinden der Gradienten: Ist ein Neuron gesättigt, also h nahe 0 oder 1, wird er winzig und das Gewicht bewegt sich kaum noch.
1200 zufällige Punkte im Bereich −6 bis 6, jeder markiert mit innen oder außen. Ein Netz mit derselben Bauform — zwei Eingänge, vier versteckte Neuronen, ein Ausgang — aber mit zufälligen Startgewichten. 4000 Durchläufe, zehn verschiedene Startwerte.
Ergebnis
Alle zehn Anläufe finden das Quadrat: 95,2 bis 98,8 % richtig auf 600 Punkten, die im Training nie vorkamen.
Der beste Lauf liefert diese vier Neuronen:
Neuron 1: σ(+2,73·x +0,23·y −5,69) feuert bei x > +2,08
Neuron 2: σ( −0,07·x +2,48·y −5,58) feuert bei y > +2,25
Neuron 3: σ( +0,35·x −2,77·y −6,07) feuert bei y < −2,19
Neuron 4: σ(−3,08·x −0,27·y −6,61) feuert bei x < −2,15
Ausgabe : σ(−7,63·h₁ −8,58·h₂ −7,82·h₃ −9,09·h₄ +3,92)
Die vier Kanten stimmen auf etwa ein Zehntel: 2,08 · 2,25 · −2,19 · −2,15 gegen die wahren ±2. Aus reinen Punkten rekonstruiert, ohne dass jemand „Quadrat“ gesagt hätte.
Meine vier Neuronen prüfen, ob ein Punkt innerhalb liegt, und das Ausgabeneuron verlangt, dass alle vier zutreffen — ein UND mit positiven Gewichten. Die gelernten prüfen, ob er außerhalb liegt, und alle Ausgabegewichte sind negativ: Sobald eines feuert, wird die Ausgabe heruntergezogen.
| von Hand | gelernt | |
|---|---|---|
| Neuronen prüfen | liegt innerhalb | liegt außerhalb |
| Ausgabegewichte | +6 · +6 · +6 · +6 | −7,6 … −9,1 |
| Schwellenwert | −21 | +3,92 |
| Verknüpfung | alle vier erfüllt | keine verletzt |
| Logisch | UND | NOR |
Beides beschreibt dasselbe Quadrat. Es ist die Regel von De Morgan, und das Netz hat sich für die andere Seite entschieden — weil ihm niemand gesagt hat, welche gemeint war. Es sucht keine Erklärung, es sucht ein Minimum.
Dass alle zehn Anläufe funktionieren, liegt an der Einfachheit dieser Aufgabe. Die Fehlerfläche eines Netzes ist nicht konvex — anders als bei einer einzelnen logistischen Regression gibt es kein garantiertes Auffinden des Minimums. Bei knapperer Ausstattung, etwa drei statt vier Neuronen, scheitern einzelne Läufe.
Und die kleinen Querterme wie +0,23·y in Neuron 1 zeigen, dass die Kanten leicht schief stehen. Perfekt achsenparallel wird es nie — dafür gibt es in den Daten keinen Anlass.
07 — Quellen
Der Satz über die universelle Approximation stammt von George Cybenko, Approximation by superpositions of a sigmoidal function (1989); Kurt Hornik verallgemeinerte ihn kurz darauf. Dass Tiefe gegenüber Breite exponentiell sparsamer sein kann, zeigen die Arbeiten von Matus Telgarsky und von Ronen Eldan und Ohad Shamir aus dem Jahr 2016.
Für den Zugang zu Fuß empfehle ich Michael Nielsens frei verfügbares Neural Networks and Deep Learning — es leitet Backpropagation vollständig her, ohne Bibliothek und ohne Vorwissen. Wer lieber zusieht: die Reihe Neural Networks von 3Blue1Brown.
Die Zahlen auf dieser Seite stammen aus einem eigenen Skript von rund vierzig Zeilen Python ohne Bibliotheken — Vorwärtsrechnung, Kettenregel, Gradientenabstieg. Genau die vier Faktoren aus Kapitel 6, mehr braucht es nicht.