Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Autoencoder, VAE, word2vec, GANs – alle diese Modelle haben einen latenten Raum, in dem die gelernten Repräsentationen leben. In diesem Kapitel geht es um die Geometrie dieser Räume: Was bedeuten Richtungen und Abstände, was passiert zwischen zwei Codes, und was unterscheidet den diskreten latenten Raum eines Sprachmodells vom kontinuierlichen eines Bild-Autoencoders?

Wortvektoren geometrisch verstehen

Arithmetik im Latent Space

Der Klassiker bei word2vec: KING−MAN+WOMAN=QUEEN\text{KING} - \text{MAN} + \text{WOMAN} = \text{QUEEN}. Also ist WOMAN−MAN\text{WOMAN} - \text{MAN} die Richtung „feminin“. Auch:

Analog, aber in allen LLMs: Semantische Beziehungen werden zu Richtungen im latenten Raum, und Richtungen kann man addieren. Das ist keine Eigenschaft, auf die word2vec trainiert wurde, sie entsteht von selbst aus dem Kontext-Vorhersage-Training.

Beziehungen zwischen Wörtern als parallele Richtungen im Vektorraum (schematisch).

Beziehungen zwischen Wörtern als parallele Richtungen im Vektorraum (schematisch).

Figure 7 aus Bolukbasi et al. 2016 – Berufe, projiziert auf die Gender-Richtung.

Figure 7 aus Bolukbasi et al. 2016 – Berufe, projiziert auf die Gender-Richtung.

Bolukbasi et al. 2016, Man is to Computer Programmer as Woman is to Homemaker? Debiasing Word Embeddings: Dieselbe Arithmetik findet auch MAN−WOMAN≈COMPUTER PROGRAMMER−HOMEMAKER\text{MAN} - \text{WOMAN} \approx \text{COMPUTER PROGRAMMER} - \text{HOMEMAKER}. Die Embeddings enthalten die Stereotype des Trainingskorpus als Richtungen, und man kann sie messen – und, das ist der Beitrag des Papers, durch Projektion auf das orthogonale Komplement der Gender-Richtung teilweise entfernen (Abbildung oben).

Interpolation und Superposition

Ein Vektor im Latent Space ist ausdrucksstärker als ein Token, er kann interpolieren und Superposition ausdrücken: Statt „Katze“ oder „Hund“ geht auch 12Katze+12Hund\tfrac12 \text{Katze} + \tfrac12 \text{Hund} oder auch t⋅Katze+(1−t)⋅Hundt \cdot \text{Katze} + (1 - t) \cdot \text{Hund}. Aber: decode⁡(t⋅Katze+(1−t)⋅Hund)\operatorname{decode}(t \cdot \text{Katze} + (1 - t) \cdot \text{Hund}) ist entweder Katze oder Hund, es gibt kein „dazwischen“-Token außerhalb des Vokabulars.

Diskreter Latent Space

Bei word2vec und LLMs mit einem Vokabular von NN Token können nur genau NN Vektoren im Latent Space direkt zu Token dekodiert werden; für jeden anderen Vektor werden nahe liegende solche Vektoren ausgewählt zum Dekodieren. Gegeben ein Vektor im Latent Space, welches Token wählen wir aus? Das ist die Sampling-Strategie.

Gegeben Vektor v∈Rnv \in \mathbb{R}^n, welches Token t∈t \in Vokabular wählen wir?

Temperature Scaling: Gegeben eine Temperatur T>0T > 0, berechne die Verteilung

Pi=exp⁡(vi/T)∑jexp⁡(vj/T),P_i = \frac{\exp(v_i / T)}{\sum_j \exp(v_j / T)},

d.h. die Einträge von vv (die Logits) werden durch TT geteilt, dann wird mit Softmax eine Wahrscheinlichkeitsverteilung daraus. Großes T>1T > 1: Die verschiedenen PiP_i werden sich ähnlicher, das Modell wird „kreativer“ (und fehleranfälliger). Kleines T<1T < 1: Die großen PiP_i werden größer, die kleinen PiP_i werden kleiner; im Grenzfall T→0T \to 0 ist es top-1.

Latente Räume für Bilder: AE, VAE, GAN

Erinnerung: kontinuierlich statt diskret

Bei word2vec und LLMs können nur NN Vektoren dekodiert werden. Bei Autoencodern für Bilder ist dies anders: Jeder Vektor im Latent Space lässt sich zu einem Bild dekodieren. Damit lässt sich z.B. zwischen Hund und Katze interpolieren – der Decoder produziert für t⋅enc⁡(Hund)+(1−t)enc⁡(Katze)t \cdot \operatorname{enc}(\text{Hund}) + (1 - t) \operatorname{enc}(\text{Katze}) tatsächlich ein Bild, ob es sinnvoll aussieht, ist eine andere Frage.

Lineare Interpolation zwischen den Codes einer 3 und einer 8 im latenten Raum eines linearen Autoencoders (PCA mit 16 Komponenten auf den 8×8-Ziffern aus scikit-learn): Jeder Zwischenpunkt ist ein Bild.

Lineare Interpolation zwischen den Codes einer 3 und einer 8 im latenten Raum eines linearen Autoencoders (PCA mit 16 Komponenten auf den 8×8-Ziffern aus scikit-learn): Jeder Zwischenpunkt ist ein Bild.

Autoencoder vs. GANs

Der Generator eines GANs ist typischerweise gegeben durch eine Verteilung auf einem Latent Space, aus der gesampelt wird (i.d.R. eine Standardnormalverteilung), und einen Decoder, der aus dem latenten Vektor ein tatsächliches Bild generiert. Um einen guten Decoder zu bekommen, ist vor dem adversarial Training ein Pretraining in einem Autoencoder-Setup sinnvoll; daher ist der Latent Space zunächst derselbe. Nach dem GAN-Training des Decoders passen Encoder und Decoder aber nicht mehr zusammen, d.h. der Rekonstruktions-Loss steigt, während der Adversarial Loss sinkt. Der GAN-Decoder optimiert „sieht echt aus“, nicht „ist das Original“.

Autoencoder vs. VAE

Der Encoder eines VAE kodiert ein Eingabebild xx als Paar (μx,σx)(\mu_x, \sigma_x), wobei μx∈Rn\mu_x \in \mathbb{R}^n ein latenter Vektor wie beim Autoencoder ist. Der Unterschied vom VAE zum AE liegt im Training: Statt decode⁡(μx)\operatorname{decode}(\mu_x) mit xx zu vergleichen, wird decode⁡(μx+ε)\operatorname{decode}(\mu_x + \varepsilon) mit xx verglichen, wobei ε\varepsilon Varianz σx2\sigma_x^2 hat. Nach erfolgreichem Training ist dann auch decode⁡(μx)≈x\operatorname{decode}(\mu_x) \approx x, aber der Latent Space bzw. Decoder sieht anders aus als beim AE: Um jeden Code herum gibt es eine Umgebung, die ebenfalls zu einem ähnlichen Bild dekodiert.

Häufig wird zusätzlich zum +ε+\varepsilon-Trick auch noch ein Summand zur Loss-Funktion hinzugefügt, damit die Codes der Trainingsdaten im Latent Space ungefähr standardnormalverteilt sind (Variational Loss, siehe Kapitel „Variational Autoencoder“). So kann man später aus der Standardnormalverteilung im Latent Space sampeln und bleibt in der gelernten Verteilung.

Arvanitidis et al. 2017: Latent Space Oddity

Latent Space Oddity: on the Curvature of Deep Generative Models (ICLR 2018): Der latente Raum eines VAE sieht flach aus, aber der Decoder verzerrt ihn – die euklidische Gerade zwischen zwei Codes ist nicht der kürzeste Weg im Bildraum. Die richtige Geometrie ist die durch den Decoder induzierte Riemannsche Metrik, und Geodäten darin laufen um Regionen herum, in denen der Decoder unsicher ist (Abbildung unten). Praktisch: Interpolationen entlang Geodäten sehen besser aus als lineare.

Figure 1 aus Arvanitidis, Hansen, Hauberg: Latent Space Oddity (ICLR 2018): Die Gerade im latenten Raum (links) und die Geodäte bezüglich der vom Decoder induzierten Metrik führen zu unterschiedlichen Interpolationen.

Figure 1 aus Arvanitidis, Hansen, Hauberg: Latent Space Oddity (ICLR 2018): Die Gerade im latenten Raum (links) und die Geodäte bezüglich der vom Decoder induzierten Metrik führen zu unterschiedlichen Interpolationen.

Übung

Gegeben Embeddings KO¨NIG=(4,2)\text{KÖNIG} = (4,2), MANN=(3,0)\text{MANN} = (3,0), FRAU=(1,1)\text{FRAU} = (1,1).

  1. Berechnen Sie KO¨NIG−MANN+FRAU\text{KÖNIG} - \text{MANN} + \text{FRAU}. Welcher der Vektoren a=(4,6)a = (4,6), b=(2,2)b = (2,2), c=(0,4)c = (0,4) liegt am nächsten – gemessen mit dem Kosinus? Tipp: Kosinus heißt: normieren, dann Skalarprodukt. Die Längen unterscheiden sich hier deutlich, das Ergebnis mit euklidischem Abstand wäre ein anderes.

  2. Interpolieren Sie linear zwischen MANN\text{MANN} und FRAU\text{FRAU} in drei Schritten.

Antwortprobe: Bei (1) sind die Antworten für Kosinus und euklidischen Abstand verschieden – das ist der Punkt der Aufgabe.