JGU Logo JGU Logo JGU Logo JGU Logo

Institut für Informatik

Modellierung 2

Michael Wand
David Hartmann
Sommersemester 2022

Lehreinheit 8

Einführung Optimierung mit PyTorch
Letzte Änderung: 02. May 2022, 11:00 Uhr
Abgabe: Montag, der 08.06.2021, 13 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?