6 Punkte von GN⁺ 2023-11-20 | 2 Kommentare | Auf WhatsApp teilen
  • Ö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
  • 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

Ü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_DIR oder ./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, wenn flatten wahr ist
  • Zurückgegeben werden vier Tensoren: train_data, train_target, test_data, test_target
  • Wenn cifar=True, wird CIFAR10 verwendet; bei False wird MNIST verwendet; bei None folgt die Funktion dem Argument --cifar
  • Wenn one_hot_labels=True, werden die Targets in einen 2D-torch.Tensor mit 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-Tensor N × D; andernfalls zu einem 4D-Tensor N × C × H × W
  • Das Standardbeispiel verwendet MNIST und wird ohne --full auf 1.000 Trainings- und 1.000 Test-Samples reduziert; die Eingabegröße ist torch.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

 
bigtallee 2023-11-20

Schade, dass es keine Untertitel zu den Vorlesungen gibt..

 
GN⁺ 2023-11-20
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

    • Diese Stanford-Vorlesung wirkt wie ein ziemlich fortgeschrittener und anspruchsvoller Kurs
  • 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/

    • Ich war schockiert, dass Jeremy Howard nicht auf der Liste der Top 100 in AI stand. Dieser Kurs ist wirklich hervorragend
  • Gibt es gute, tiefgehende Kurse, bei denen man keine Videos schauen muss?

  • 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

    • Ist sie auch für Leute geeignet, denen etwas höhere Mathematik fehlt?
  • 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

    • Wenn du dich daran erinnerst, was Ableitungen sind, und ein gewisses Maß an Mathematik und Wahrscheinlichkeit beherrschst, ist das absolut machbar. Ich denke, dass man das meiste davon sogar leichter lernt als React
      Die Einstiegskurve ist nicht ganz so steil, aber die Gesamtzeit kann länger sein; es ist also eher ein Marathon als ein Sprint