Anfängerpraktikum (BSc Informatik) - Neural Networks From Scratch

Kursübersicht

Discover the fascination of machine learning by really programming neural networks from scratch . We start with a simple polynomial curve fitting problem and then step by step implement a neural network (Multi-Layer-Perceptron/MLP) as well as its forward and backward pass in “plain Python”. Subsequently, we accelerate our self-written algorithms with CuPy on the GPUs of our cluster, enabling us to use larger architectures and datasets.

The internship is conducted in groups of up to three students. In the introductory phase , all groups jointly work on the basics: algorithmic foundations, network structure, and GPU acceleration. In the project phase , each group selects its own “from-scratch” topic, such as a CNN architecture, a Transformer, or training an MLP for a specific application using advanced training techniques. Regular feedback sessions accompany you throughout the process.

Throughout the course, we also learn tools for monitoring, management, and visualization of your experiments, enabling you to intuitively track the learning progress and parameters of neural networks.

Entdecke die Faszination des Maschinellen Lernens, indem du neuronale Netze wirklich von Grund auf programmierst. Wir starten mit einem simplen Polynomial-Curve-Fitting Problem und implementieren dann Schritt für Schritt in „plain Python“ ein neuronales Netz (Multi-Layer-Perceptron/MLP) sowie dessen Forward- und Backward-Pass. Anschließend beschleunigen wir unsere selbstgeschriebenen Algorithmen mit CuPy auf den GPUs unseres Clusters, um auch größere Architekturen und Datensätze verwenden zu können.

Das Praktikum wird in Gruppen von bis zu drei Studierenden durchgeführt. In der Einführungsphase erarbeiten alle Gruppen gemeinsam die Basis: algorithmische Grundlagen, Netzwerkstruktur und GPU-Beschleunigung. In der Projektphase wählt jede Gruppe ein eigenes „from-scratch“-Thema, bspw. eine CNN-Architektur, einen Transformer oder das Training eines MLP auf eine spezielle Anwendung unter Einsatz fortgeschrittener Training-Tricks. Regelmäßige Feedback-Runden begleiten euch dabei.

Im Verlauf des Kurses lernen wir außerdem Tools zur Überwachung, Verwaltung und Visualisierung eurer Experimente kennen, damit ihr Lernverläufe und Parameter der neuronalen Netze intuitiv nachvollziehen könnt.

Dozenten

  • Wang Xiao
  • Hendrik Borras

Inhalte

  • Polynomial Curve Fitting : Understanding overfitting and underfitting of a complex function to data
  • Multi-Layer-Perceptron : Architecture, forward and backward pass in Python, training on the MNIST dataset
  • CuPy Acceleration : GPU-based training of self-written models
  • Experiment Management & Visualization : Tracking, logging, and plotting of training metrics
  • Project Phase : Own “from-scratch” topic, e.g., CNN, Transformer, training strategies

  • Polynomal Curve Fitting : Verständnis für Über und Unterfitten einer komplexen Funktion zu Daten
  • Multi-Layer-Perceptron : Architektur, Forward- und Backward-Pass in Python, Training auf MNIST-Datensatz
  • CuPy-Beschleunigung : GPU-basiertes Training selbstgeschriebener Modelle
  • Experiment-Management & Visualisierung : Tracking, Logging und Plotting von Trainingsmetriken
  • Projektphase : Eigenes „from-scratch“-Thema, z.B. CNN, Transformer, Training-Strategien

Voraussetzungen

  • Good knowledge of Python and NumPy
  • Basic knowledge of Machine Learning (ML)
    • Expected: General understanding of the structure of a neural network, specifically Multi-Layer Perceptrons. Knowledge of the general training process of a deep neural network (DNN) via backpropagation and stochastic gradient descent.
    • These skills can be acquired through self-study (e.g., Deep Learning, Goodfellow et al.) or through one of the following courses: Learning (IML), Fundamentals of Machine Learning (IFML), Advanced Machine Learning (IAML), Embedded Machine Learning (MScTI_EML), Scalable and Robust Embedded Machine Learning (MScTI_SREML), or similar.
  • Prerequisite Courses
    • Introduction to Practical Computer Science (IPI) or Programming Course (IPK)
    • Linear Algebra 1 (MA4) or Mathematics for Computer Science 1 (IMI1)
  • Gute Kenntnisse in Python und Numpy
  • Grundsätzliches Vorwissen zu Maschinellem Lernen (ML)
    • Erwartet wird: Generelles Verständnis für den Aufbau eines Neuronalen Netzes, speziell Multi-Layer-Perceptrons. Wissen um den generellen Trainingsablauf eines tiefen Neuronalen Netzes (DNN) via Backpropagation und Stochastic-Gradient-Descent.
    • Diese Kenntnisse können im Selbststudium (bspw. Deep Learning, Goodfellow et al.) oder in einer der folgenden Vorlesungen errungen werden: Learning (IML), Fundamentals of Machine Learning (IFML) , Advanced Machine Learning (IAML), Embedded Machine learning (MScTI_EML), Scalable and Robust Embedded Machine Learning (MScTI_SREML) oder ähnliche.
  • Vorausgesetzte Veranstaltungen
    • Einführung in die Praktische Informatik (IPI) oder Programmierkurs (IPK)
    • Lineare Algebra 1 (MA4) oder Mathematik für Informatik 1 (IMI1)

Hinweise

The internship generally follows the procedures for the beginner’s internship/advanced internship B.Sc. Computer Science (see module handbook):

  • Credit points: 6 or 8 ECTS credits
  • Workload: 180 or 240 hours; of which at least 15 hours of presence
  • The examination consists of a presentation in poster session format as well as a report plus documented Python implementation of the project

Das Praktikum folgt generell den Formalien für das Anfängerpraktikum/Fortgeschrittenenpraktikum B.Sc. Informatik (s. Modulhandbuch):

  • Leistungspunkte: 6 oder 8 CP
  • Arbeitsaufwand: 180 oder 240 h; davon mind. 15 Präsenzstunden
  • Die Prüfung besteht aus einer Präsentation im Poster-Session-Format sowie einem Report plus dokumentierter Python-Implementierung des Projekts