JGU Logo JGU Logo JGU Logo JGU Logo

Institut für Informatik

Modellierung 2

Michael Wand
David Hartmann
Sommersemester 2021DIGITAL

Lehreinheit 12

Initialisierung & noch eine Visualisierung
Letzte Änderung: 13. April 2021, 10:44 Uhr
Abgabe: Dienstag, der 06.07.2021, 13 Uhr

  /  



The Building Blocks of Interpretability

In A.I., the holy grail was how do you generate internal representations.

Geoffrey Hinton




Aufgabe 0: Baseline

Wir benötigen für den folgenden Aufgaben eine funktionierende Lösung der letzten Lehreinheit.
Bestenfalls kann an dieser Stelle alles mit PyTorch implementiert werden, Sie können selbstverständlich aber auch eine eigene Implementierung etwa mit Numpy, oder mit einer Auswahl der funktionalität von PyTorch verwenden.


Stellen Sie also sicher, dass Ihr Code einen der 2D-Spielzeugdatensätze (siehe LE10) Klassifizieren kann. (Es ist hierbei nicht so wichtig möglichst hohe Accuracies zu erhalten, besser als die Lösung zu erraten soll das Netz jedoch schon sein).

Aufgabe 1: Initialisierung von ReLU-Netzwerken

Wir haben in der letzten Woche die Datenverteilung so normiert, dass sie in etwa Standardnormalverteilt ist. Dieses Wissen haben wir genutzt, um die Gewichte passend darauf auszurichten; wir haben die Initialisierung der Gewichte ebenfalls Standardnormalverteilt gewählt.


Warum tun wir dies?
Die Idee dabei ist, dass die Varianz der Zwischenergebnisse ungefähr gleich groß bleiben soll.
Im Falle einer steigenden Varianz (über die Layer hinweg) würden wir irgendwann ein numerical Overflow in den Zwischenrechnungen erhalten, da dieser Effekt sich multiplikativ auswirken würde. Entsprechend würde eine sinkende Varianz numerical Underflow hervorrufen. Von den Gradienten haben wir hier noch gar nicht gesprochen.


Konkret schauen wir uns einen beliebigen Layer der Form \(y = a(x^T W + b)\) an, wobei \(x\) die Ausgabe des Layers davor oder die Eingabe des Neuronalen Netzes selbst ist und \(a\) eine Aktivierungsfunktion darstellt. Unser Ziel ist es die resultierenden Varianzen zweier beliebig aufeinanderfolgenden linearer Layer (inklusive Nicht-Linearität) konstant zu halten, also die Gleichung \[ \operatorname{Var}(y) = \operatorname{Var}(x) \] zu erfüllen.


Wir nehmen der Einfachheit halber an, dass alle Dimensionen von \(x\) stochastisch unabhängig sind. Streng genommen stimmt dies natürlich nicht, aber bessere Annäherungen sind zum einen nur schwierig zu bestimmen, zum anderen interessieren wir uns hier für die initialisierung der Gewichte von \(W\). Zu begin des Trainings sehen die jeweiligen Eingabedaten-Dimensionen unkorrelliert aus. Denken Sie hier beispielsweise an Aufgabe 2 aus Lehreinheit 7 — für einige Dimensionen kann man diese Annahme näherungsweise durchaus treffen.


Aufgaben:

  1. Angenomen, \(a(x) = x\). Wir betrachten zuerst rein-lineare Netzwerke.
    • Bestimmen Sie nur \(Var(y_i)\), die Varianz einer beliebigen Komponente nach der Matrix-Vektor Multiplikation.
      Hinweise:
      • Drücken Sie die Varianz mithilfe der Varianz \(Var(x)\) und der Varianz \(Var(W_{ij})\) dar.
      • Der Erwartungswert von \(x\) und somit aller nachfolgenden Layer ist 0. (Erinnern Sie sich, dass wir die Daten normiert hatten, bevor Sie in das Netz eingegeben wurden?)
    • Wie müssen wir nun \(Var(W_{ij})\), die Skalierung der Standardnormalverteilung der Gewichte wählen, damit die Zwischenergebnisse auch bei Wiederholung des Vorgangs (Anzahl Layer \(\rightarrow \infty\)) stets numerisch stabil bleiben?
  2. Bestimmen Sie Layer-weisen den jeweiligen Erwartungswert und die jeweilige Varianz praktisch.
    1. Was können Sie beobachten?
    2. Ändern Sie nun die Layer-Anzahl auf 11. Das Training sollte nun nicht mehr funktionieren. Können Sie dies mithilfe des Erwartungswertes und der Varianz erklären?
  3. Wir nehmen nun an \(a(x) = \operatorname{ReLU}(x) := \operatorname{max}(0,x)\). Wir können also nicht mehr so einfach darauf schließen, dass alle Zwischenergebnisse gemittelt bleiben.
    Bestimmen Sie die Varianz \(E[y]\) für den Fall, dass der Biasterm stets 0 ist.

    Wie müssen wir unter diesen Bedingungen den die Gewichte sampeln, damit die Zwischenergebnisse numerisch stabil bleiben?
  4. Implementieren Sie das bestimmte Initialisierungsschema und testen Sie das Training erneut mit \(11\) Layern. (Diesmal sollte es klappen).

Aufgabe 2: Pseudoinversen-Rückprojektion

In der letzten Lehreinheit haben wir die komplexität eines Netzwerks nachvollzogen, indem wir die „Entscheidungszellen“ der jeweiligen Layer visualisiert haben.
In dieser Aufgabe möchten wir verstehen was die Aktivierungen tatsächlich mit der Eingabe tun (und so die in der Vorlesung vorgestellte Visualisierung nachimplementieren).


Wir möchten uns anschauen, was die ReLU nicht-linearität eigentlich mit dem Eingaberaum anstellt. (Auch hier nutzen wir die Darstellbarkeit des Eingaberaumes aus.) Da eine Abbildung wie \(y = x \cdot W + b\) lediglich einen affinen Basiswechsel darstellt, analysieren wir was es bedeutet diesen Basiswechsel nach der Nicht-linearität rückgängig zu machen: \[ \begin{aligned} y & = \text{relu} \left( x\cdot W + b \right)\\ \hat x & = (y-b)W^+, \quad \text{ mit } W = WW^+W \end{aligned} \] Die Matrix \(W^+\) ist dabei die pseudoinverse dar (im speziellen die links-pseudoinverse)


Jede Ausgabedimension \(y_i\) kann nun einen der beiden Fällen folgen:

  1. das Zwischenergebnis \(x\cdot W + b\) ist positiv
  2. das Zwischenergebnis \(x\cdot W + b\) ist negativ

Wir interessieren uns für die Daten abseits einer konkreten Basis. Aus dem Grund definieren wir noch was es heißt, dass zwei Funktionen in der Äquivalenzklasse aller affinen Basen gleich sind.


Definition:
Gleichheit unter einer passenden affinen Basis Wir sagen, zwei Funktionen \(f,g:\mathbb{R}^n\rightarrow \mathbb{R}^m\) sind gleich unter einer passenden afinen Basis, falls für jevde affine Transformation \((V,c)\) auf \(f(x)\) es eine entsprechende affine Transformation \((V',c')\) auf \(g(x)\) gibt, so dass \[ f(x)V + c = g(x)V' + c' \] gilt.


Theorem:
Angenommen es gelte \(n ≥ m\), wobei \(\mathbb{R}^n\) der Eingaberaum and \(\mathbb{R}^m\) the Ausgaberaum der Funktion \(y = x\cdot W + b\) ist. Dann ist die Aktivierung eines linearen Layers, \(y=\text{relu} \left( x\cdot W + b \right)\) gleich unter einer passenden affinien Basis zur Rückprojektion \(\hat x=(y-b)W^+\).


Aufgaben:

  1. Zeigen Sie, dass das Theorem gilt.
    Hinweise: Gehen Sie die beiden oben beschriebenen Fälle für die Ausgabedimension \(y_i\) getrennt durch. Sie benötigen lediglich das Wissen, dass \(W^+\) die links-Inverse ist, also \(W^+ W = I\) und dass die Zeilen von \(W\) linear unabhängig sind.
  2. Wir möchten die Rückprojektion nun implementieren und so visualisieren, was die jeweiligen Layer beim Training eines Spielzeugdatensatzes tun. Die Links-Pseudoinverse kann (im Falle von reellen Komponenten) beispielsweise durch \(W^+ = W^T(WW^T)^{-1}\) bestimmt werden.

    Wir projezieren so alle Layer bis in den Eingaberaum zurück. Konkret würden wir den zweiten Layer durch die Rückprojektion erst in den Ausgaberaum des ersten Layers überführen und dann mit der Rückprojektion des ersten Layers in die des Eingaberaumes.

    Die Annahme \(n ≥ m\) bedeutet, dass der Eingaberaum eingebettet wird in \(\mathbb{R}^m_\text{max}\), wobei \(m_\text{max}\) die maximale Anzahl an Neuronen darstellt. Dies bringt uns leider nicht um das Problem die Dimension zu reduzieren, wir sind uns jedoch sicher, dass wir es lediglich mit einer fehlenden affinen Transformation des Eingaberaumes zu tun haben.

    Beispielsweise kann die PCA in diesem Raum verwenndet werden, um die Projektion wieder 2D darstellen zu können. Sie können aber auch testen, was passiert, wenn Sie lediglich die Dimension der Eingabedaten, die nicht-null sind beobachten.