| Typ | Quelle |
|---|---|
| Rohdatei | sources/Neuronale_Netze_selber_erstellen.pdf (nur lokal, per .gitignore vom Repository ausgeschlossen) |
| Autor | Tariq Rashid, übersetzt von Frank Langenau |
| Verlag | O'Reilly / dpunkt.verlag, Heidelberg |
| Datum_quelle | 2024 (2., aktualisierte und erweiterte Auflage; englisches Original „Make Your Own Neural Network“) |
| Format | PDF (lizenziertes E-Book), 251 Seiten, mit Textebene |
| Erstellt | 2026-09-26 |
| Aktualisiert | 2026-09-26 |
| Tags | neuronale-netze, maschinelles-lernen, python, pytorch, buch |
Einsteigerbuch von Tariq Rashid (2. Auflage 2024): Es entwickelt neuronale Netze Schritt für Schritt aus Schulmathematik, programmiert eines in Python für die handgeschriebenen Ziffern von MNIST und überträgt es zum Schluss auf PyTorch.
Das PDF ist ein auf den Nutzer lizenziertes E-Book. Die Lizenz erlaubt nur die eigene Nutzung und keine Weitergabe an Dritte. Deshalb liegt die Rohdatei nur lokal in sources/ und ist per .gitignore vom Repository ausgeschlossen (Entscheid des Nutzers vom 2026-09-26). Die Wiki-Seiten fassen den Inhalt in eigenen Worten zusammen und zitieren Code nur in kurzen Zeilen.
Aufbau der Quelle
| Seiten | Kapitel | Eingeflossen in |
|---|---|---|
| 9–14 | Einführung: Suche nach Denkmaschinen, KI-Winter, biologisches Vorbild | Künstliches neuronales Netz |
| 15–43 | Vorhersagemaschine, linearer Klassifizierer, Lernrate, Grenzen bei XOR | Linearer Klassifikator |
| 44–72 | Neuronen, Schwellwert, Sigmoid, Schichten, Gewichte, Matrizenmultiplikation | Künstliches neuronales Netz, Aktivierungsfunktion |
| 73–84 | Fehler aufteilen und zurückführen, Matrixform mit transponierter Gewichtsmatrix | Backpropagation |
| 84–103 | Gradientenverfahren, Fehlerfunktionen, Herleitung der Gewichtsaktualisierung | Gradientenverfahren, Backpropagation |
| 103–108 | Daten vorbereiten: Skalierung, Zielwerte, Anfangsgewichte | Künstliches neuronales Netz |
| 109–132 | Python-Grundlagen: Notebooks, Schleifen, Funktionen, numpy, Klassen | – |
| 132–176 | Die Klasse neuralNetwork, MNIST, Lernrate, Epochen, versteckte Knoten |
Künstliches neuronales Netz, MNIST |
| 177–188 | Eigene Handschrift, Rückwärtsabfrage („Gedächtnis“), Drehungen als Zusatzdaten | Künstliches neuronales Netz |
| 189–219 | PyTorch: Classifier, Dataset, Training, BCE, Leaky ReLU, Adam, LayerNorm | PyTorch, Aktivierungsfunktion, Gradientenverfahren |
| 221 | Epilog: Deep Learning, AlphaGo 2016 | Künstliches neuronales Netz |
| 223–243 | Anhang: Einführung in die Analysis, Potenz- und Kettenregel | Differentialrechnung |
Kernaussagen
- Lernen heisst: einen Parameter anhand des Fehlers schrittweise verbessern, gedämpft durch eine Lernrate. Ein einzelner linearer Klassifizierer kann aber nur Daten trennen, die sich durch eine Gerade trennen lassen, und scheitert schon an XOR (Linearer Klassifikator).
- Ein künstliches neuronales Netz besteht aus Schichten von Knoten. Jeder Knoten summiert die gewichteten Eingänge und wendet eine Aktivierungsfunktion an. Mit Matrizen wird das zu X = W·I und O = sigmoid(X), unabhängig von der Netzgrösse (Künstliches neuronales Netz, Aktivierungsfunktion).
- Die Backpropagation verteilt den Ausgabefehler im Verhältnis zu den Gewichten rückwärts auf die inneren Knoten, in Matrixform e_hidden = Wᵀ · e_output (Backpropagation).
- Die Gewichte werden mit dem Gradientenverfahren angepasst: kleine Schritte entgegen der Steigung der Fehlerfunktion. Die Steigung liefert die Kettenregel der Differentialrechnung (Gradientenverfahren).
- Ein einfaches dreischichtiges Netz in etwa 50 Zeilen Python erkennt die handgeschriebenen Ziffern von MNIST zu rund 97,5 %. Mit gedrehten Zusatzbildern sind es 97,9 %. In PyTorch bringen BCE-Verlust, Leaky ReLU, Adam und LayerNorm die Genauigkeit von 87 % auf 97 % (MNIST, PyTorch).
Bewertung
Das Buch ist bewusst elementar: Es erklärt die Mathematik anschaulich und ohne Vorwissen und verzichtet auf moderne Architekturen wie Faltungsnetze (CNN), Transformer oder Stapelverarbeitung. Ein Grossteil des Stoffs von Kapitel 1–3 stammt aus der 1. Auflage (englisch 2016, Code „(c) Tariq Rashid, 2016“), die 2. Auflage ergänzt vor allem Kapitel 4 zu PyTorch.
Nachgerechnet und korrekt: km-in-Meilen-Beispiel, Training des Klassifizierers (A = 0,25 → 0,3083 → 1,6042), Signalfluss im Zwei-Schichten-Netz (0,7408 und 0,6457), sigmoid(1,16) = 0,761, Fehlerrückführung (0,42 / 0,88 und 0,362 / 0,938), Gewichtsaktualisierung (Gradient −0,0265, neues Gewicht 2,00265), Analysis-Anhang (Tangentensteigung 12, Sekante 6, Ableitung 3t² + Δt² → 3t²).
- S. 43 (Kernideen): „Ein einzelner linearer Klassifizierer kann keine Daten separieren, wenn diese Daten selbst von einem einzelnen linearen Prozess stammen.“ Hier fehlt ein „nicht“. Gemeint ist: wenn die Daten nicht von einem einzelnen linearen Prozess stammen, wie bei XOR.
- S. 86: Bei 18 Gewichten mit je 1000 möglichen Werten gebe es „18.000 Möglichkeiten“. Richtig sind 1000¹⁸ = 10⁵⁴ Kombinationen. Auch die „500 Millionen“ für ein Netz mit 500 Knoten pro Schicht sind viel zu tief. Die Schlussfolgerung, dass Durchprobieren unmöglich ist, gilt dadurch erst recht.
- S. 106 vs. S. 137: Der Text empfiehlt als Streuung der Anfangsgewichte 1/√(Anzahl eingehender Verknüpfungen). Der Code verwendet aber die Knotenzahl der nächsten Schicht (
pow(self.hnodes, -0.5)). Für die erste Gewichtsmatrix wären das 1/√784 ≈ 0,036 statt 1/√100 = 0,1. - S. 119–120: Python runde bei
/ 2auf eine ganze Zahl ab. Das galt nur für Python 2. In Python 3 ist/immer eine Gleitkomma-Division, ganzzahlig teilt//. - S. 170: Die Spitzenleistung mit Lernrate 0,1 wird einmal mit 0,9628, einmal mit 0,9689 angegeben. Ausserdem heisst es, 5 Epochen seien das Optimum, obwohl die Spitze bei 7 Epochen liegt.
- Kleinigkeiten: Abbildung 1-21 zeigt y = 0,3086x statt 0,3083x (S. 37). Der Dateipfad wechselt zwischen
myo_ganundgan(S. 193, 207). Im Anhang steht (x² + x)² statt (x³ + x)² (S. 240).
scipy.misc.imread (S. 179) wurde aus SciPy entfernt. numpy.asfarray gibt es in NumPy 2.0 (2024) nicht mehr, scipy.ndimage.interpolation.rotate heisst heute scipy.ndimage.rotate. Der Code aus Kapitel 2 und 3 läuft auf aktuellen Installationen deshalb vermutlich nicht unverändert. Ersatz wären z.B. numpy.asarray(..., dtype=float) und das Paket imageio.
Neu angelegte Seiten
- Künstliches neuronales Netz, Linearer Klassifikator, Backpropagation, Gradientenverfahren, Aktivierungsfunktion
- Entitäten: MNIST, PyTorch
Verwandt
- Quelle - Bildverarbeitung Zusammenfassung – behandelte 2004 dieselben Backpropagation-Netze als einen Klassifikator unter vielen
- Quelle - Recherche - Bildverarbeitung heute 2026 – wie tiefe Netze ab 2012 die Bilderkennung übernahmen
- Quelle - Mathematik Zusammenfassung – die Schulmathematik (Funktionen, Ableitung, Kettenregel), auf der das Buch aufbaut
