JGU Logo JGU Logo JGU Logo JGU Logo

Institut für Informatik

Modellierung 2

Michael Wand
Ann-Christin Wörl & David Hartmann
Sommersemester 2023

Lehreinheit 9

Einführung Optimierung mit PyTorch
Letzte Änderung: 17. April 2023, 13:41 Uhr
Abgabe: Montag, der 19.06.2023, 12 Uhr

  /  



Zur Vorbereitung schauen wir uns in dieser Lehreinheit an, wie man mit PyTorch Variablen optimieren kann.


Vorbereitung 1: Optimierung mit PyTorch

Arbeiten Sie die folgenden offiziellen Guides durch:

Praxisaufgabe 1: Testfunktionen für Optimierer

PyTorch implementiert bereits jede Menge Optimierer vor: (torch.optim). Um einen Einblick zu bekommen was für mögliche Stärken und Schwächen eine Wahl eines Optimierers mit sich bringen kann, gibt es sog. künstliche Landschaften.


Wiki: Testfunctions for Optimization


Aufgaben:

Praxisaufgabe 2: Adam Optimizer


Ein Optimierer aus torch.optim benötigt drei Methoden (siehe "Learning PyTorch with Examples"):


Aufgaben:

  1. (Optional): Implementieren Sie den Adam-Optimierer nach & vergleichen Sie das Ergebnis Ihrer mit dem der vorgefertigten Klasse torch.optim.Adam. Die Gradienten \(g_t\) erhalten Sie wie vorher auch durch loss.backward() und werden in den Parameter-Attributen param.grad gespeichert.
  2. Als nächstes führen wir folgendes Experiment durch:
    • Wir starten mit einem Parametervektor aus \(\mathbb{R}^d\) und weisen diesem in jeweils \(n\) Schritten zufällige Normalverteilte Gradienten zu.
    • In jedem Schritt wenden wir Adam an und messen die Magnitude der tatsächlichen Veränderung (also die Länge der Distanz \(\theta_t - \theta_{t-1}\).
    • Plotten Sie diese Größe für Adam und SGD für etwa \(1000\) zufällige Optimierungsschritte und verschiedene Hyperparameter.
    • Können Sie die Beobachtung des Papers bestätigen, dass Adam selbstständig Learning Rate Änderungen durchführt?