Neuronale Netze: Vom Zero zum Hero
(karpathy.ai)- Ein von Andrej Karpathy persönlich geleiteter Kurs, in dem neuronale Netze von Grund auf im Code implementiert und so erlernt werden
- Beginnend bei den Grundlagen der Backpropagation bis hin zum schrittweisen Aufbau moderner Deep-Learning-Modelle auf GPT-Niveau
- Der Schwerpunkt liegt auf Sprachmodellen, mit praktischen Übungen zu zentralen Technologien wie PyTorch, torch.Tensor, BatchNorm, WaveNet und dem GPT-Tokenizer
- Jede Lektion ist auf den realen Entwicklungsprozess ausgerichtet, darunter Modelltraining, Verlustberechnung, Hyperparameter-Tuning und Overfitting-Diagnose
- Ein praxisorientiertes Curriculum, mit dem sich die interne Funktionsweise von Deep Learning und eine Intuition für Optimierung systematisch erlernen lassen
Kursüberblick
- Dieser Kurs ist als Lernprozess aufgebaut, bei dem neuronale Netze direkt im Code implementiert werden
- Erforderlich sind grundlegende Mathematikkenntnisse (Ableitungen, Gauß-Verteilung) sowie Python-Programmierkenntnisse
- Für den Austausch zwischen Lernenden steht ein Discord-Kanal zur Verfügung
- Gelernt wird mit Fokus auf Sprachmodelle, was auch für den Wissenstransfer in andere Bereiche (z. B. Computer Vision) nützlich ist
Kursaufbau (Syllabus)
1. Intro to Neural Networks and Backpropagation (2h25m)
- micrograd wird direkt implementiert, während Backpropagation und der Trainingsprozess neuronaler Netze Schritt für Schritt erklärt werden
- Verständlich mit grundlegenden Python-Kenntnissen und Analysis auf Oberstufenniveau
2. Intro to Language Modeling: Building makemore (1h57m)
- Implementierung eines zeichenbasierten Bigramm-Sprachmodells
- Behandelt werden die Verwendung von torch.Tensor und effiziente Methoden für Berechnungen mit neuronalen Netzen
- Einschließlich Modelltraining, Sampling und Verlustbewertung (negative Log-Likelihood)
3. Building makemore Part 2: MLP (1h15m)
- Implementierung eines zeichenbasierten Sprachmodells auf Basis eines Multi-Layer Perceptron (MLP)
- Enthält grundlegende Machine-Learning-Konzepte wie Anpassung der Lernrate, Hyperparameter, Datenaufteilung (train/dev/test) sowie Overfitting/Underfitting
4. Building makemore Part 3: Activations & Gradients, BatchNorm (1h55m)
- Analyse der internen Funktionsweise eines mehrschichtigen MLP durch Überprüfung der statistischen Eigenschaften von Aktivierungen und Gradienten
- Einführung von Batch Normalization zur Verbesserung der Trainingsstabilität
- Residual Connections und der Adam-Optimizer werden in späteren Videos behandelt
5. Building makemore Part 4: Becoming a Backprop Ninja (1h55m)
- Durchführung von manueller Backpropagation ohne PyTorch autograd
- Direkte Backpropagation für Cross-Entropy-Loss, tanh, BatchNorm, Embedding-Tabellen usw.
- Stärkt das Verständnis für Gradientenfluss und Optimierungsintuition auf Tensor-Ebene
6. Building makemore Part 5: Building a WaveNet (56m)
- Erweiterung des vorherigen 2-schichtigen MLP zu einer hierarchischen CNN-Struktur, ähnlich WaveNet (2016)
- Praktische Arbeit zur internen Funktionsweise von torch.nn und zu Deep-Learning-Entwicklungs-Workflows (Dokumentationsrecherche, Verwaltung von Tensor-Dimensionen, Code-Integration usw.)
7. Let's Build GPT: From Scratch, in Code (1h56m)
- Direkte Implementierung eines GPT-Modells entlang des Papers “Attention is All You Need” und der Architektur von OpenAI GPT-2/3
- Erwähnt werden auch Bezüge zu ChatGPT und GitHub Copilot
- Setzt autoregressives Sprachmodellieren und PyTorch-nn-Grundlagen aus den vorherigen makemore-Lektionen voraus
8. Let's Build the GPT Tokenizer (2h13m)
- Implementierung des in der GPT-Reihe verwendeten Tokenizers von Grund auf
- Einschließlich des Trainingsprozesses auf Basis von Byte Pair Encoding (BPE)
- Direkte Implementierung der Funktionen zur String↔Token-Umwandlung (encode/decode)
- Analyse anhand von Beispielen, dass ein Teil des anomalen Verhaltens von LLMs auf die Tokenisierung zurückzuführen ist
- Einschließlich einer Diskussion über die mögliche Abschaffung des Tokenizers
Status
- Der Kurs ist laufend (ongoing), weitere Videos sollen kontinuierlich hochgeladen werden
1 Kommentare
Hacker-News-Kommentare
Zuvor hatte ich schon viele Materialien zu Deep Learning genutzt, etwa Bücher, Coursera-Kurse, Uni-Veranstaltungen und fast.ai-Kurse, aber im Arbeitsalltag habe ich davon kaum etwas verwendet.
Diese Serie war jedoch der intuitivste Inhalt, den ich bisher gesehen habe. Sie enthält fast nichts Überflüssiges und ist nicht langweilig.
Wenn mich heute jemand fragt, womit man die Low-Level-Prinzipien von DNNs lernen sollte, empfehle ich das als Erstes.
Wenn man aus einem benachbarten Fachgebiet kommt, kann es sich etwas langsam anfühlen, aber es bleibt trotzdem immer interessant.
Ich forsche derzeit an der Modellierung raumzeitlicher Daten, um Vorhersagemodelle für urbane Verkehrssysteme zu entwickeln. Ich baue auch die ML-Infrastruktur selbst auf und bereite eine App vor, die das auf reale Verkehrsevent-Streams ausrollt.
Ich habe online mit Deeplearning.ai und skills.google gelernt; Ersteres wirkte etwas veraltet, Letzteres vermittelt dagegen Praxisnähe, etwa bei GPU-/TPU-Optimierung.
Aber zu einem echten Praktiker gemacht hat mich Francois Chollets Buch Deep Learning with Python. Das Buch erklärt die Konzepte klar vor dem Hintergrund von 70 Jahren Deep-Learning-Geschichte und enthält sogar Rezepte, mit denen man GPT- oder Diffusion-Modelle selbst implementieren kann.
Die wichtigste Lektion ist: „Deep Learning ist eher Kunst als Wissenschaft.“ Man braucht viel Übung, und die Ergebnisse lassen sich nicht vollständig erklären.
Außerdem sind Beispiel-Notebooks für TensorFlow, PyTorch und Jax enthalten. Dadurch habe ich inzwischen genug Selbstvertrauen, um Paper-Abstracts nachzubauen und Modelle in Produktion zu bringen.
Welches Niveau kann man erreichen, wenn man dieses Material komplett durcharbeitet?
Reicht es, um selbst etwas zu bauen oder sich an Gesprächen zu beteiligen? Oder versteht man am Ende nur die Konzepte?
Mich interessiert, welche Grenzen und Unterschiede es im Vergleich zu Forschern gibt.
Ich mache gerade den Deep RL Course, und bisher wirkt er ziemlich intuitiv. Wenn der Matheteil kommt, werde ich aber vermutlich zu kämpfen haben.
Trotzdem konnte ich Backprop und den Implementierungsprozess von tiny GPT verstehen. Karpathys Kurse sind hervorragend, um die Grundprinzipien zu begreifen.
Es gibt allerdings fast keine Übungen mit Bibliotheken, daher könnte der von dir erwähnte Kurs für die Praxis geeigneter sein.
Das automatische Bewertungssystem war zu formalistisch; man musste Sätze künstlich so formulieren, dass sie als richtig gewertet werden. Das hat die Lerneffizienz gesenkt und Zeit verschwendet.
Dagegen waren Karpathys Videos wirklich Material von Juwelenqualität.
Deshalb führt dieses Lernen vielleicht nicht direkt zu praktisch nutzbaren Fähigkeiten im Job.
Stattdessen empfehle ich ein weiteres Video von Karpathy: Deep Dive into LLMs like ChatGPT.
Neural Network from Scratch in Python (NumPy)
No local GPU? No problem – running Karpathy’s NanoGPT on Modal.com
Modal.com and NanoGPT continued – producing output using Tiktoken for bigger tokens
Wenn dir die Grundmechanik neuronaler Netze schwerfällt, würde ich empfehlen, es zuerst grob anzuschauen und später noch einmal. Beim zweiten Ansehen versteht man es viel besser.
Das Video erklärt das Prinzip von autograd, also die Art, wie PyTorch intern Ableitungen automatisch berechnet.
Früher musste man in TensorFlow oder Torch die Ableitungsfunktion jeder Schicht selbst definieren, aber PyTorch zeichnet den Python-Code während der Ausführung auf, erstellt daraus automatisch einen Graphen und berechnet die Ableitungen.
Wenn man das versteht, weiß man, wie PyTorch intern funktioniert.
Die meisten Nutzer können Modelle aber auch sehr gut verwenden, ohne diese Interna zu kennen.
Wenn du kompletter Anfänger bist, empfehle ich Andrew Ngs Coursera-Kurs Introduction to ML. Ich kenne die aktuelle Version nicht, aber er ist ein hervorragender Lehrer.
cs231n war einer der besten Kurse überhaupt, aber ich schiebe das hier vor mir her, weil es viele Überschneidungen zu geben scheint. Vermutlich wurde der Transformer-Teil ergänzt.
Er vermittelt ein intuitives Verständnis dafür, warum Gradient Descent und Normalisierung (normalization) funktionieren, und behandelt die Lerndynamik sehr tiefgehend.
Er hilft dabei, ein Gefühl dafür zu entwickeln, ob ein Modell tatsächlich richtig lernt.