Deep-Learning-Kurs
(fleuret.org)- Öffentliches Lehrmaterial zu Deep Learning, zusammengestellt für 14x050 an der Universität Genf; Folien, Handouts und Aufzeichnungen von François Fleuret sind an einem Ort verfügbar
- Auf Basis von PyTorch-Beispielen deckt der Kurs ein breites Einstiegsspektrum ab, von Tensor-Operationen, automatischer Differenzierung und Gradientenabstieg bis hin zu generativen, rekurrenten und Attention-Modellen
- Das komplette PDF-Archiv umfasst 1.107 Folien; Untertitel zu Screencasts werden als ZIP-Datei bereitgestellt und wurden automatisch mit OpenAI Whisper erzeugt
- Practical 1–6, Lösungscode und ein gemeinsamer Python-Prologue werden mitgeliefert, sodass MNIST/CIFAR10-Loading und Vorverarbeitungsoptionen direkt in Übungen genutzt werden können
- Vorausgesetzt werden Grundlagen in linearer Algebra, Differentialrechnung, Python, Wahrscheinlichkeit/Statistik, Optimierung, Algorithmen und Signalverarbeitung; die Materialien werden unter CC BY-NC-SA 4.0 veröffentlicht
Kursüberblick
- Deep Learning Course ist eine Seite, die Folien und Aufzeichnungen zu François Fleurets Deep-Learning-Kurs 14x050 an der Universität Genf bündelt
- Der Kurs ist als Einführung in Deep Learning mit Beispielen im PyTorch-Framework aufgebaut
- Der Vorlesungsumfang entwickelt sich entlang folgender Schwerpunkte
- Ziele und zentrale Aufgaben des Machine Learning
- Tensor-Operationen
- Automatische Differenzierung und Gradientenabstieg
- Spezielle Verfahren für Deep Learning
- Generative Modelle, rekurrente Modelle, Attention-Modelle
- Als separates Material wird auch "The Little Book of Deep Learning" angeboten
- Eine kurze Einführung in Deep Learning im Smartphone-Format für Leser mit STEM-Hintergrund
- Dieser Kurs wurde 2018 erstmals am Idiap Research Institute entwickelt und bis 2022 als EE-559 an der École Polytechnique Fédérale de Lausanne unterrichtet
Materialformate und Downloads
- Die Folien-PDFs für die Vorlesung verwenden Querformat und Overlays passend zur Präsentation
- Die Handout-PDFs werden im Hochformat kompiliert und enthalten zusätzliche Notizen ohne Overlay-Effekte
- Die Screencasts sind als Browser-Stream und als herunterladbare mp4-Dateien verfügbar
- Das komplette PDF-Archiv kann über folgende Dateien bezogen werden
- dlc-handout-all.zip: 101,7 Mb
- dlc-slides-all.zip: 101,7 Mb
- Die Untertitel zu den Screencasts wurden automatisch mit OpenAIs Whisper erzeugt; die Datei dlc-video-subtitles.zip ist 502,1 Kb groß
Ablauf der 13 Einheiten
- Das gesamte Vorlesungsmaterial besteht aus 13 großen Einheiten; zu jeder Einheit werden Folienzahl und Videolaufzeit angegeben
- Der erste Teil konzentriert sich darauf, grundlegende Konzepte von Deep Learning und Machine Learning zu vermitteln
- Introduction: von neuronalen Netzen zu Deep Learning, aktuelle Anwendungen und Erfolgsbeispiele, Tensor-Grundlagen und lineare Regression, höherdimensionale Tensoren, interne Struktur von Tensoren
- Machine learning fundamentals: Loss und Risk, Overfitting und Underfitting, Bias-Variance-Dilemma, Evaluierungsprotokolle, Clustering und Embeddings
- Multi-layer perceptron and back-propagation: Perzeptron, probabilistische Sicht auf lineare Klassifikatoren, lineare Separierbarkeit, MLP, Gradientenabstieg, Backpropagation
- Im Mittelteil geht es weiter mit PyTorch-Nutzung sowie Deep-Learning-Layern und Lernverfahren
- Graphs of operators, autograd, and convolutional layers: DAG-Netzwerke, Autograd, PyTorch-Module und Batch-Verarbeitung, Convolution, Pooling, Schreiben von PyTorch-Modulen
- Initialization and optimization: Cross-Entropy-Loss, stochastischer Gradientenabstieg, PyTorch-Optimizer, L2/L1-Penalty, Parameterinitialisierung, Architekturwahl und Trainingsprotokoll, Schreiben von Autograd-Funktionen
- Going deeper: Vorteile von Tiefe, Rectifier, Dropout, Batch Normalization, Residual Network, GPU-Nutzung
- Der spätere Teil erweitert den Umfang auf generative Modelle, Computer Vision, Analyse des Modellinneren und Sequenzmodelle
- Autoencoders: Transposed Convolution, Deep Autoencoder, Denoising Autoencoder, Variational Autoencoder
- Der VAE-Screencast ist nicht auf dem neuesten Stand; die Folien sollten konsultiert werden
- Computer vision: Computer-Vision-Tasks, Netzwerke zur Bildklassifikation, Netzwerke zur Objekterkennung, Netzwerke zur semantischen Segmentierung, DataLoader und neuro-surgery
- Under the hood: Parameter betrachten, Aktivierungen betrachten, Verarbeitung anhand der Eingabe visualisieren, Eingabeoptimierung
- Autoregression and Normalizing Flows: Autoregression, Causal Convolution, Non-volume preserving Network
- Generative Adversarial Networks: GAN, Wasserstein GAN, Conditional GAN und Bildtransformation, Modellpersistenz und Checkpoints
- Recurrent models and NLP: RNN, LSTM und GRU, Word Embeddings und Übersetzung
- Attention models: Attention für Speicher und Sequenzübersetzung, Attention-Mechanismus, Transformer Network
- Der Screencast zur Attention-Einheit ist nicht auf dem neuesten Stand; die Folien sollten konsultiert werden
- Autoencoders: Transposed Convolution, Deep Autoencoder, Denoising Autoencoder, Variational Autoencoder
Übungsmaterialien und Python-Prologue
- Die Übungen werden als Practical 1–6 bereitgestellt; jeweils sind PDF und Lösungscode verlinkt
- Der Python-Prologue für die Übungen wird als dlc_practical_prologue.py bereitgestellt
- Der Prologue verarbeitet Kommandozeilenargumente
--full: das gesamte Dataset verwenden--tiny: ein sehr kleines Dataset für schnelle Checks verwenden--seed SEED: Random Seed festlegen; bei Werten unter 0 wird nicht geseedet--cifar: CIFAR-Dataset statt MNIST verwenden--data_dir DATA_DIR: Speicherort der PyTorch-Daten festlegen; Standardwert ist$PYTORCH_DATA_DIRoder./data
- Die Funktion
load_data(cifar=None, one_hot_labels=False, normalize=False, flatten=True)lädt bei Bedarf die Daten herunter und wandelt Bilder in eindimensionale Vektoren um, wennflattenwahr ist - Zurückgegeben werden vier Tensoren:
train_data,train_target,test_data,test_target - Wenn
cifar=True, wird CIFAR10 verwendet; beiFalsewird MNIST verwendet; beiNonefolgt die Funktion dem Argument--cifar - Wenn
one_hot_labels=True, werden die Targets in einen 2D-torch.Tensormit so vielen Spalten wie Klassen umgewandelt; nur die Position der richtigen Antwort wird auf 1 gesetzt, alle übrigen auf -1 - Wenn
normalize=True, werden die Datentensoren anhand von Mittelwert und Varianz der Trainingsdaten normalisiert - Wenn
flatten=True, werden die Daten zu einem 2D-TensorN × D; andernfalls zu einem 4D-TensorN × C × H × W - Das Standardbeispiel verwendet MNIST und wird ohne
--fullauf 1.000 Trainings- und 1.000 Test-Samples reduziert; die Eingabegröße isttorch.Size([1000, 784])
Vorausgesetztes Wissen und Referenzdokumentation
- Das vorausgesetzte Wissen umfasst folgende Bereiche
- Lineare Algebra: Vektoren, Matrizen, euklidischer Raum
- Differentialrechnung: Jacobian, Hessian, Chain rule
- Python-Programmierung
- Grundlagen von Wahrscheinlichkeit und Statistik: diskrete und kontinuierliche Verteilungen, Gesetz der großen Zahlen, bedingte Wahrscheinlichkeit, Bayes, PCA
- Grundlagen der Optimierung: Konzept eines Minimums, Gradientenabstieg
- Grundlagen der Algorithmen: Rechenaufwand
- Grundlagen der Signalverarbeitung: Fourier transform, Wavelet
- Als Referenzdokumentation können Python-, Jupyter-notebook- und PyTorch-Dokumentation herangezogen werden
Nutzungslizenz
- Die eigenen Materialien der Seite werden unter der Creative Commons BY-NC-SA 4.0 International License veröffentlicht
- Die Nutzung für reguläre akademische Lehrzwecke ist erlaubt; zugleich wird ausdrücklich festgehalten, dass sie nicht für Bücher, stark werbefinanzierte YouTube-Inhalte oder andere Monetarisierungsmodelle verwendet werden sollen
2 Kommentare
Schade, dass es keine Untertitel zu den Vorlesungen gibt..
Meinungen auf Hacker News
Auch Stanfords YouTube-Kanal ist sehenswert. Dort gibt es eine vollständige Machine-Learning-Vorlesungsreihe mit 19 Videos
https://m.youtube.com/playlist?list=PLoROMvodv4rNyWOpJg_Yh4NSqI4Z4vOYy
Wenn man sich den Kanal ansieht, findet man dort ziemlich viele Informatikvorlesungen, und die Qualität ist ebenfalls recht gut
Es wurden viele gute Materialien genannt, aber Understanding Deep Learning scheint in der Liste zu fehlen
Simon J.D. Prince hat mit diesem Buch meiner Meinung nach wirklich Großartiges geleistet. Nicht nur der Haupttext, sondern auch die Notizen zu jedem Kapitel führen direkt zu weiterführender Fachliteratur; außerdem gibt es Übungsaufgaben, die das Verständnis wirklich prüfen, und hervorragende Notebooks, in denen die Konzepte in echtem Code umgesetzt werden
Wenn man einen Deep-Learning-Kurs unterrichtet, eignet es sich auch gut als kostenloses Übungsmaterial für Studierende, auch wenn diese Community wohl nicht die Hauptzielgruppe ist
[0] https://udlbook.github.io/udlbook/
Wenn dich dieser Kurs interessiert, lohnt sich unbedingt auch ein Blick in das Little Book of Deep Learning desselben Autors
https://fleuret.org/francois/lbdl.html
Eine weitere gute Ressource ist die NYU-Deep-Learning-Vorlesung von Yann LeCun und Alfredo Canziani, die vollständig auf YouTube verfügbar ist
https://atcold.github.io/NYU-DLSP20/
https://www.youtube.com/playlist?list=PLLHTzKZzVU9eaEyErdV26ikyolxOsz6mq
Practical Deep Learning for Coders ist ebenfalls einen Blick wert
https://course.fast.ai/
Gibt es gute, tiefgehende Kurse, bei denen man keine Videos schauen muss?
Ich arbeite an einem Kurs, der etwas weniger Theorie und etwas mehr Anwendung enthält: https://github.com/VikParuchuri/zero_to_gpt
Alle Videos sind optional und behandeln denselben Inhalt wie der Text
Ich empfehle auch diese Vorlesungssammlung von Andrej Karpathy. Die erste Vorlesung ist auch aus Anfängerperspektive recht zugänglich
https://karpathy.ai/zero-to-hero.html
Auch dieser Kurs von Sebastian Raschka ist insgesamt gut zugänglich. Wenn man ein wenig Python oder eine ähnliche Sprache kennt, kann man gut folgen
https://youtube.com/playlist?list=PLTKMiZHVd_2KJtIXOW0zFhFfBaJJilH51&si=ocsN2zSPN7YsrGiY
Als Full-Stack-Entwickler, der seit einigen Jahren dabei ist und etwas eingerostet wirkt, würde ich gern in dieses Feld einsteigen, habe aber überhaupt kein Gefühl dafür, ob man mit sechs Monaten Lernen überhaupt irgendwie den Einstieg schaffen kann
Die Einstiegskurve ist nicht ganz so steil, aber die Gesamtzeit kann länger sein; es ist also eher ein Marathon als ein Sprint