Generative Adversarial Networks (GAN): der Fälscher gegen den Detektiv
Das Spiel von Generator und Diskriminator, ein GAN von Grund auf, der nicht sättigende Verlust, acht Cluster auf einem Kreis und Mode Collapse, Ziffern schärfer als beim VAE, aber nicht alle, und der Weg vom GAN zu Diffusionsmodellen.
Serie KI-Grundlagen Teil 45 von 52
- Landkarte der künstlichen Intelligenz: was was ist und wie alles zusammenpasst
- Eine kurze Geschichte der künstlichen Intelligenz: von Turing bis zu Sprachmodellen
- Daten, Modell, Training, Inferenz: die Grundbegriffe an einem einzigen Beispiel
- Mathematische Notation lesen: Symbole, Indizes, Summen und Quantoren
- Mengen und Relationen: der Baukasten, aus dem Definitionen in der KI bestehen
- Funktionen und Abbildungen: warum jedes KI-Modell eine Funktion ist
- Logik und Beweise: die Regeln, nach denen KI schließt
- Graphen und Bäume: die Struktur, auf der Suche und neuronale Netze stehen
- Lineare Algebra für maschinelles Lernen: Vektoren, Matrizen und warum KI vor allem multipliziert
- Ableitungen, Gradient und Kettenregel: wie ein Modell herausfindet, in welche Richtung es lernen soll
- Gradientenabstieg: wie ein Modell lernt
- Was ist Wahrscheinlichkeit: vom Würfelwurf zu den Kolmogorow-Axiomen
- Bedingte Wahrscheinlichkeit und der Satz von Bayes: wie du deine Einschätzung änderst, wenn du etwas Neues erfährst
- Zufallsvariable und Verteilungsfunktion: eine Funktion, die alles über eine Verteilung verrät
- Dichtefunktion und Wahrscheinlichkeitsfunktion: warum eine stetige Zufallsvariable in einem Punkt die Wahrscheinlichkeit null hat
- Erwartungswert, Varianz und Kovarianz: wo eine Verteilung liegt, wie breit sie ist und was womit zusammenhängt
- Überblick über Wahrscheinlichkeitsverteilungen: Bernoulli-, Binomial-, Poisson-, Gleich-, Normal- und Exponentialverteilung
- Gesetz der großen Zahlen und zentraler Grenzwertsatz: Warum sich Durchschnitte so vorhersagbar verhalten
- Statistik und Parameterschätzung: Maximum Likelihood, MAP und Konfidenzintervalle
- Informationstheorie: Entropie, Kreuzentropie und KL-Divergenz — woher Verlustfunktionen kommen
- Zustandsraumsuche: BFS, DFS, UCS und A* mit Animationen
- Spiele und Gegner: Minimax, Alpha-Beta-Suche und Monte Carlo Tree Search
- Constraint Satisfaction: Backtracking, Constraint-Propagierung und AC-3 an Sudoku und einer Karte tschechischer Regionen
- Logik und wissensbasierte Systeme: Vorwärts- und Rückwärtsverkettung, Resolution und Expertensysteme
- Planung: STRIPS, die Blockwelt, Heuristiken aus Relaxierung und Planung in KI-Agenten
- Lokale Suche und simulierte Abkühlung: ein Handlungsreisender durch die tschechischen Regionalhauptstädte
- Genetische Algorithmen: Population, Kreuzung, Mutation und Selektion am Rucksack für die Wanderung
- Evolutionsstrategien und genetische Programmierung: von der 1/5-Erfolgsregel zum Keplerschen Gesetz
- Ameisenkolonieoptimierung: wie eine Pheromonspur einen kurzen Weg findet
- Partikelschwarmoptimierung: Trägheit, eigene Erfahrung und die Erfahrung des Schwarms
- Neuroevolution: Evolution der Gewichte und der Gestalt neuronaler Netze und der Algorithmus NEAT
- Fuzzy-Mengen und Zugehörigkeitsfunktionen: wie man „etwas warm“ aufschreibt
- Fuzzy-Logik und Wahrscheinlichkeit: warum „etwas warm“ nicht „wahrscheinlich warm“ bedeutet
- Fuzzy-Logik: t-Normen, Implikationen und WENN–DANN-Regeln
- Fuzzy-Regelung: Mamdani und Sugeno vom Ventilator bis zum Pendel auf dem Wagen
- Fuzzy-Clustering: der Algorithmus fuzzy c-means und Punkte zwischen den Clustern
- Neuro-Fuzzy-Systeme (ANFIS): Fuzzy-Regeln, die aus Daten lernen
- Markow-Ketten: Übergangsmatrix, stationäre Verteilung und PageRank
- Hidden-Markov-Modelle: der Viterbi-Algorithmus und das unehrliche Kasino
- Bayessche Netze: warum das Gras nass ist und was das für den Rasensprenger bedeutet
- Der Kalman-Filter: wie man aus ungenauen Messungen schätzt, wo ein Auto ist und wie schnell es fährt
- Arten des maschinellen Lernens: überwacht, unüberwacht, halbüberwacht und mehr
- Prompts, Kontext und RAG: wie man einem Modell die richtigen Informationen gibt
- Variational Autoencoder (VAE): neue Bilder aus einem stetigen latenten Raum
- Generative Adversarial Networks (GAN): der Fälscher gegen den Detektiv
- Diffusionsmodelle: wie aus reinem Rauschen ein Bild wird
- Markow-Entscheidungsprozesse: Zustände, Aktionen, Belohnungen und Bellman-Gleichungen
- Q-Learning und DQN: den Wert von Aktionen lernen, von der Tabelle bis zum neuronalen Netz
- Policy Gradient und PPO: die Strategie direkt lernen
- Wie ein KI-Agent funktioniert: ein Sprachmodell in einer Schleife mit Werkzeugen
- Programmieren mit KI-Agenten: Auftrag, Tests und Kontrolle
- Bewertung und Sicherheit von KI-Systemen: wie man misst und wie man überwacht
Der ganze Lehrplan der Serie 52 von 83 Themen fertig
- Wie der Generator nur aus dem Gradienten des Diskriminators lernt.
- Warum das Training von GANs instabil ist und was Mode Collapse ist.
- Worin GANs den VAE schlagen, worin sie verlieren und warum sie heute von der Diffusion abgelöst wurden.
Vorher gut zu wissen: Variational Autoencoder (VAE): neue Bilder aus einem stetigen latenten Raum, Spiele und Gegner: Minimax, Alpha-Beta-Suche und Monte Carlo Tree Search
Der Variational Autoencoder aus dem letzten Teil generiert ehrlich, aber verschwommen. 2014 kam Ian Goodfellow auf eine Idee, die fast wie ein Trick aussieht: Wir messen nicht, wie stark sich eine Stichprobe von den Daten unterscheidet, sondern lassen das ein anderes Netz beurteilen. Zwei Netze spielen ein Spiel — das eine fälscht, das andere erkennt die Fälschung — und beide werden dabei besser. So entstanden die ersten maschinell erzeugten Gesichter, die du nicht von Fotos unterscheiden kannst. In diesem Teil schreiben wir beide Netze von Grund auf und sehen, warum ihr Training so launisch ist.
Er baut auf den Teilen Variational Autoencoder, Logistische Regression (Sigmoid und Kreuzentropie) und Spiele und Gegner auf.
1. Der Fälscher und der Detektiv
Definition — Generative Adversarial Network (GAN)
Ein GAN (Ian Goodfellow u. a., 2014) besteht aus zwei Netzen. Der Generator G macht aus zufälligem Rauschen z ~ N(0, I) eine Stichprobe G(z). Der Diskriminator D gibt die Wahrscheinlichkeit D(x) zurück, dass x aus den echten Daten stammt. Sie spielen ein Nullsummenspiel zweier Spieler:
minG maxD Ex ~ data[log D(x)] + Ez[log(1 − D(G(z)))].
Für festes G ist der beste Diskriminator D*(x) = pdata(x) / (pdata(x) + pG(x)). Im Gleichgewicht erzeugt G genau die Verteilung der Daten und D gibt überall ½ zurück.
Ein Fälscher druckt Banknoten, ein Detektiv sortiert sie in echte und falsche. Der Detektiv lernt aus seinen Irrtümern. Der Fälscher hat nie eine echte Banknote gesehen — er lernt nur aus dem, was ihn beim Detektiv verraten hat. Wenn sich beide verbessern, werden die Fälschungen immer besser. Ende des Spiels: Der Detektiv kann nur noch raten, und er rät halbe-halbe.
minG maxD Ex ~ data[ log D(x) ] + Ez ~ N(0, I)[ log(1 − D(G(z))) ]
- Ex ~ data[log D(x)]
- der Diskriminator auf echten Daten — am größten (0), wenn D echten Stichproben 1 gibt; der Logarithmus bestraft einen selbstsicheren Irrtum (D → 0) unbeschränkt
- Ez[log(1 − D(G(z)))]
- der Diskriminator auf Fälschungen — am größten, wenn er ihnen 0 gibt; es ist der einzige Term, in dem G vorkommt, der Generator lernt also nur aus ihm
- maxD
- der Diskriminator erhöht den Wert — beide Terme zusammen sind die negative binäre Kreuzentropie, es ist also gewöhnliches Training eines Klassifikators „echt / Fälschung“
- minG
- der Generator senkt den Wert — er will, dass der Diskriminator sich bei Fälschungen irrt; was ein Spieler gewinnt, verliert der andere (Nullsumme)
Satz — der beste Diskriminator und was der Generator minimiert
Für festes G ist der Wert des Spiels ∫ [pdata(x) log D(x) + pG(x) log(1 − D(x))] dx. In jedem Punkt x maximieren wir die Funktion a log y + b log(1 − y) für y ∈ (0, 1), wobei a = pdata(x), b = pG(x).
Beweis. Die Ableitung a/y − b/(1 − y) ist null für y = a/(a + b) und die Funktion ist konkav (zweite Ableitung −a/y² − b/(1 − y)² < 0), es handelt sich also um ein Maximum. Daraus folgt D*(x) = pdata(x) / (pdata(x) + pG(x)). Durch Einsetzen und Umformen (Goodfellow u. a., 2014):
V(D*, G) = −log 4 + 2 · JSD(pdata ‖ pG), JSD(p ‖ q) = ½ KL(p ‖ m) + ½ KL(q ‖ m), m = ½(p + q).
Die Jensen-Shannon-Divergenz ist nichtnegativ und genau dann null, wenn pG = pdata. Mit dem besten Diskriminator minimiert der Generator also die JSD, und das Minimum −log 4 ≈ −1,386 wird erreicht, wenn er genau die Daten erzeugt. ∎
Beispiel: Wo die Dichte der Daten 0,3 und die der Fälschungen 0,1 ist, ist D* = 0,3 / 0,4 = 0,75 (der Punkt ist eher echt); wo der Generator übers Ziel hinausschießt (Daten 0,1, Fälschungen 0,3), ist D* = 0,25. Wo die Dichten gleich sind, ist D* = ½ und der Verlust des Diskriminators (binäre Kreuzentropie pro Stichprobe) ist ln 2 ≈ 0,693.
Der Diskriminator ist ein gewöhnlicher Klassifikator mit Sigmoid und Kreuzentropie, wie die logistische Regression, nur mit zusätzlichen Schichten. Der Zauber liegt im Generator: Der Gradient seines Verlusts fließt per Backpropagation durch den Diskriminator bis ins Bild und von dort in die Gewichte des Generators. Der Diskriminator sagt ihm so, in welche Richtung er jedes Pixel verschieben soll, damit es glaubwürdiger aussieht.
2. Training: abwechselnde Schritte
Trainiert wird abwechselnd: ein Schritt des Diskriminators (ein Batch echter Daten und ein Batch Fälschungen, D bei den echten erhöhen, bei den falschen senken), dann ein Schritt des Generators (die Fälschungen dorthin verschieben, wo D sie für echt hält). Beide Netze haben bei uns zwei verborgene Schichten mit Leaky ReLU und werden mit Adam trainiert.
Definition — nicht sättigender Verlust des Generators
Statt log(1 − D(G(z))) aus dem ursprünglichen Spiel zu minimieren, lernt der Generator, log D(G(z)) zu maximieren, also −log D(G(z)) zu minimieren. Beide Verluste haben dasselbe Ziel, aber einen anderen Gradienten: Ist D = σ(s), dann ist |∂ log(1 − D)/∂s| = D, während |∂(−log D)/∂s| = 1 − D. Vorgeschlagen haben ihn schon Goodfellow u. a. im selben Artikel.
Am Anfang sind die Fälschungen schlecht und der Detektiv durchschaut sie leicht, D liegt bei ihnen nahe null. Der ursprüngliche Verlust sendet in diesem Moment fast kein Signal — der Fälscher erfährt nicht, was er verbessern soll, genau dann, wenn er es am meisten braucht. Die umgekehrte Frage („wie überzeuge ich den Detektiv“) liefert von Anfang an ein starkes Signal.
∂/∂s log(1 − σ(s)) = −D, ∂/∂s (−log σ(s)) = −(1 − D)
- s
- der Logit — die Ausgabe des Diskriminators vor dem Sigmoid; wir leiten nach ihm ab, weil der Gradient von hier zurück in den Diskriminator und durch ihn in die Fälschung fließt
- D = σ(s)
- die Wahrscheinlichkeit, dass die Fälschung echt ist; man verwendet σ′(s) = σ(s)(1 − σ(s)), deshalb kommen so einfache Ausdrücke heraus
- log(1 − σ(s))
- der ursprüngliche Verlust des Generators (wird minimiert) — sein Gradient hat den Betrag D, wenn der Diskriminator die Fälschung also sicher entlarvt (D ≈ 0), ist er fast null: Sättigung
- −log σ(s)
- der nicht sättigende Verlust — sein Gradient hat den Betrag 1 − D, ist also gerade bei Fälschungen am größten, die der Diskriminator entlarvt hat
Ehrlich gesagt: In unseren kleinen Versuchen hat auch der ursprüngliche Verlust gelernt, weil der Diskriminator am Anfang nicht so selbstsicher war. Bei großen Netzen auf Bildern, wo der Diskriminator schnell gewinnt, ist der Unterschied entscheidend. Im Weiteren verwenden wir den nicht sättigenden Verlust.
Wie der Gradient bis zum Generator gelangt, zeigt die Kettenregel. Die Fälschung x = G(z) ist für den Diskriminator nur eine Eingabe, die Backpropagation muss also nicht in ihm enden:
∂LG / ∂θG = ∂LG / ∂s · ∂s / ∂x · ∂x / ∂θG
- ∂LG / ∂s
- eine einzige Zahl aus dem Verlust, beim nicht sättigenden −(1 − D) — „wie stark“ sich die Fälschung verbessern soll
- ∂s / ∂x
- der Gradient des Diskriminators nach seiner Eingabe (beim Kreis 2 Zahlen, bei einer Ziffer 64) — „in welche Richtung“ jede Koordinate verschoben werden soll, damit die Fälschung echter aussieht; die Gewichte des Diskriminators ändern sich in diesem Schritt nicht
- ∂x / ∂θG
- gewöhnliche Backpropagation durch den Generator — übersetzt die gewünschte Verschiebung der Fälschung in eine Änderung der Gewichte des Generators
Definition — Verlust des Diskriminators und Softplus
Der Diskriminator gibt einen Logit s zurück und D = σ(s). Für eine echte Stichprobe mit Logit sr und eine Fälschung mit Logit sf ist sein Verlust die binäre Kreuzentropie
LD = −log σ(sr) − log(1 − σ(sf)) = softplus(−sr) + softplus(sf), softplus(u) = ln(1 + eu),
denn −log σ(s) = ln(1 + e−s) und 1 − σ(s) = σ(−s). Das Programm berechnet Softplus über den Logit, nicht über D: Für s = 40 ist σ(s) in Gleitkommadarstellung genau 1 und log(1 − D) käme als −∞ heraus, während softplus(40) ≈ 40. Gradienten: ∂LD/∂sr = σ(sr) − 1, ∂LD/∂sf = σ(sf).
for t in range(kroku):
# 1. Schritt des Diskriminators: echt → 1, Fälschungen → 0
gD = 0
for _ in range(davka):
x = nahodny_vzorek(data)
gD += D.zpet(D(x), dL_ds=sigmoid(D(x)) - 1)
f = G(sum()) # Fälschung, G lernt jetzt nicht
gD += D.zpet(D(f), dL_ds=sigmoid(D(f)))
adam_D(gD / davka)
# 2. Schritt des Generators: der Gradient geht durch D bis in die Fälschung
gG = 0
for _ in range(davka):
x = G(sum())
dL_ds = sigmoid(D(x)) - 1 # nicht sättigend −log σ(s)
dL_dx = D.zpet_do_vstupu(dL_ds) # Gewichte von D unverändert
gG += G.zpet(dL_dx)
adam_G(gG / davka) # Adam mit β₁ = 0,5 wie bei DCGAN
3. Acht Cluster auf einem Kreis
Ein klassisches Experiment: Die Daten sind Punkte aus acht kleinen normalverteilten Clustern (σ = 0,05), angeordnet auf einem Kreis mit Radius 2. Der Generator bekommt zweidimensionales Rauschen und gibt einen Punkt in der Ebene zurück. Wir messen die Qualität (Anteil der Stichproben innerhalb von 3σ um irgendein Zentrum) und die Abdeckung (in wie viele Cluster mindestens 2 % der Stichproben fallen).
Definition — Daten, Qualität und Abdeckung
Die Zentren der Cluster sind cj = (r cos(2πj/8), r sin(2πj/8)) für j = 0, …, 7 mit r = 2; ein Datenpunkt ist cj mit zufälligem j plus Rauschen N(0, σ²I), σ = 0,05. Für Stichproben x1, …, xn des Generators:
Qualität = (1/n) · #{i : minj ‖xi − cj‖ < 3σ}, Abdeckung = #{j : nj ≥ 0,02 · n},
wobei nj die Anzahl der Stichproben innerhalb von 3σ um das Zentrum cj ist. Zahlen: 3σ = 0,15, benachbarte Zentren liegen 2r sin(π/8) ≈ 1,53 auseinander, also mehr als zehnmal so weit. Die Momentaufnahmen haben n = 400 Stichproben, ein Cluster gilt also ab 8 Stichproben als abgedeckt.
Selbst ein perfekter Generator hat keine Qualität von 100 %: Der Abstand eines Punktes vom Zentrum einer zweidimensionalen Normalverteilung ist Rayleigh-verteilt, und innerhalb von 3σ liegt der Anteil 1 − e−9/2 ≈ 0,989, also etwa 98,9 %.
Nach 500 Schritten erzeugt der Generator eine verschwommene Wolke (Qualität 6 %), nach 2 000 Schritten ziehen sich die Punkte in 6 Cluster zusammen, und am Ende (Schritt 8 000) deckt er alle 8 mit einer Qualität von 73 % ab. Der Generator hat nie einen einzigen echten Punkt gesehen — alles hat er aus dem Gradienten des Diskriminators erfahren.
4. Mode Collapse
Definition — Mode Collapse (Modenkollaps)
Der Generator erzeugt nur einen Teil der Datenverteilung — einige Moden (Cluster, Arten von Bildern) — und lässt die übrigen aus. Der Verlust bestraft das nicht direkt: Der Diskriminator beurteilt jede Stichprobe für sich, und eine gute Fälschung einer Art ist für ihn genauso überzeugend wie eine bunte Sammlung. Beim vollständigen Kollaps erzeugt der Generator für jedes z fast dasselbe.
Der Fälscher merkt, dass der Detektiv falsche Hunderter am schlechtesten erkennt. Also druckt er nur noch Hunderter. Mit der Zeit merkt es der Detektiv und beginnt, Hunderter zu verdächtigen — der Fälscher springt auf Zweihunderter um. Das Spiel dreht sich im Kreis, und der Fälscher erzeugt nie alle Banknoten auf einmal.
Satz — gegen einen festen Diskriminator ist ein einziger Punkt am besten
Für festes D ist der Verlust des Generators LG = Ez[−log D(G(z))] ≥ −log D(x*), wobei x* der Punkt ist, in dem D am größten ist. Gleichheit gilt für einen Generator, der jedes z nach x* schickt.
Beweis. Für jedes z ist D(G(z)) ≤ D(x*), und weil −log fallend ist, ist −log D(G(z)) ≥ −log D(x*); der Erwartungswert erhält die Ungleichung. ∎
Der Verlust ist ein Mittelwert über einzelne Stichproben, und nichts in ihm belohnt Vielfalt. Gegen einen festen Gegner ist der vollständige Kollaps also optimal; verhindert wird er nur dadurch, dass der Diskriminator reagiert und anfängt, x* zu verdächtigen. Springt der Generator schneller, als der Diskriminator vergisst, dreht sich das Spiel im Kreis. Deshalb helfen Anpassungen, die dem Diskriminator einen Blick auf den ganzen Batch geben (Minibatch Discrimination, Tim Salimans u. a., 2016), oder ein anderer Abstand zwischen Verteilungen (Wasserstein, siehe unten).
Dasselbe Netz, dieselben Daten, dieselben Einstellungen — nur ein anderer zufälliger Seed:
| Seed | abgedeckte Cluster nach den Schritten 1 000 … 8 000 | am Ende | Qualität am Ende |
|---|---|---|---|
| 1 | 0 · 2 · 7 · 6 · 6 · 7 · 7 · 7 | 7 von 8 | 66 % |
| 2 | 4 · 5 · 8 · 8 · 8 · 8 · 8 · 8 | 8 von 8 | 73 % |
| 3 | 1 · 4 · 4 · 4 · 5 · 5 · 5 · 5 | 5 von 8 | 54 % |
| 4 | 0 · 5 · 6 · 6 · 6 · 6 · 6 · 6 | 6 von 8 | 49 % |
Nur einer der vier Läufe hat alle acht Cluster abgedeckt. Der Lauf mit Seed 3 endete bei 5 und hat sich ab Schritt 5 000 nicht mehr bewegt. Das ist typisch für GANs: Das Training hat nicht einen einzigen Verlust, der sinkt, sondern ein Spiel zweier Spieler, und das Ergebnis hängt stärker vom Zufall ab, als uns lieb wäre.
5. Ziffern: schärfer, aber nicht alle
Jetzt dieselben Ziffern 8 × 8 wie beim VAE. Generator: achtdimensionales Rauschen → 64 → 64 → 64 Pixel mit Sigmoid; der Diskriminator spiegelbildlich. 6 000 Schritte, zwei Läufe mit unterschiedlichem Seed. Die Qualität messen wir genauso wie im letzten Teil — über den Abstand einer Stichprobe zur nächsten Trainingsziffer.
Die Stichproben des GAN sind schärfer: Abstand 0,049 und 0,042 gegenüber 0,054 beim VAE (echte Ziffern 0,017). Ein GAN bestraft Unschärfe nicht durch Mittelung wie der Rekonstruktionsverlust des VAE — ein verschwommenes Bild erkennt der Diskriminator leicht. Aber wie viele von welchen Ziffern erzeugt der Generator?
In den Daten kommt jede Ziffer gleich oft vor. Der Lauf mit Seed 2 erzeugt dabei vor allem Sechsen (69 von 200), Achten und Dreien, und die Ziffern 0, 1, 2, 4, 7 fast gar nicht (höchstens 3 Stichproben). Der Lauf mit Seed 1 ist vielfältiger, aber auch dort haben die Ziffern 0, 4, 9 weniger als die Hälfte ihres Anteils (höchstens 6 Stichproben statt 20). Es ist derselbe Mode Collapse wie beim Kreis, nur auf Bildern: Das GAN gewinnt bei der Schärfe, der VAE bei der Abdeckung.
6. Vom GAN zur Diffusion
- DCGAN (Alec Radford u. a., 2015) zeigte, wie man konvolutionale GANs baut, die sich zuverlässig auf Fotos trainieren lassen.
- Wasserstein GAN (Martin Arjovsky u. a., 2017) ersetzte den Klassifikator durch einen „Kritiker“, der den Abstand zwischen Verteilungen misst; das Training ist stabiler und weniger anfällig für Mode Collapse.
- StyleGAN (Tero Karras u. a., Nvidia, 2018–2020) erzeugt fotorealistische Gesichter in einer Auflösung von 1024 × 1024 — die bekannte Website „this person does not exist“.
- Um 2021 wurden GANs von Diffusionsmodellen überholt (Prafulla Dhariwal und Alex Nichol: „Diffusion Models Beat GANs on Image Synthesis“). Sie sind langsamer, trainieren aber stabil und decken die ganze Verteilung ab. Die Idee des Diskriminators lebt aber weiter — als Hilfsverlust, der Bildern Schärfe verleiht, etwa in Bild- oder Audio-Codecs.
Warum Wasserstein hilft, sieht man am einfachsten Beispiel (eine vereinfachte Version des Beispiels aus dem Artikel von Arjovsky u. a., 2017): Die Daten sind ein einziger Punkt 0, der Generator erzeugt einen einzigen Punkt θ. Solange θ ≠ 0, überlappen sich die Verteilungen nicht und JSD = ln 2 ≈ 0,693, egal wie weit θ entfernt ist — der Gradient nach θ ist null und der Generator weiß nicht, wohin. Die Wasserstein-Distanz ist |θ|, sie zeigt die Richtung also auch aus großer Entfernung.
W(pdata, pG) = sup‖f‖L ≤ 1 ( Ex ~ data[f(x)] − Ez[f(G(z))] )
- sup‖f‖L ≤ 1
- der Kritiker f — ein Netz, das statt einer Wahrscheinlichkeit eine beliebige Zahl zurückgibt; die Bedingung „1-Lipschitz-stetig“ (|f(a) − f(b)| ≤ ‖a − b‖) erlaubt ihm nicht, zwei nahe Punkte beliebig scharf zu trennen, sonst könnte die Differenz ins Unendliche wachsen
- Edata[f(x)]
- die durchschnittliche Bewertung der echten Daten — der Kritiker will sie möglichst groß
- Ez[f(G(z))]
- die durchschnittliche Bewertung der Fälschungen — der Kritiker will sie möglichst klein, der Generator möglichst groß; die Differenz ist stetig in den Parametern des Generators, der Gradient verschwindet also nicht, selbst wenn sich die Verteilungen nicht überlappen
7. Zusammenfassung
- GAN = Generator und Diskriminator in einem Spiel; der Generator lernt nur aus dem Gradienten, den ihm der Diskriminator schickt.
- Der nicht sättigende Verlust −log D(G(z)) gibt dem Generator ein starkes Signal auch am Anfang, wenn der Diskriminator gewinnt.
- Bei acht Clustern hat nur einer der vier Läufe alle abgedeckt (7, 8, 5, 6); das Ergebnis hängt stark vom Zufall ab.
- Bei Ziffern sind die Stichproben schärfer als beim VAE (0,042 gegenüber 0,054), aber einige Ziffern fehlen — Mode Collapse.
- Heute erzeugen vor allem Diffusionsmodelle Bilder; der Diskriminator ist als Helfer für Schärfe geblieben.
Willst du es selbst ausprobieren? Lass einen KI-Agenten ein kleines GAN auf acht Clustern auf einem Kreis trainieren und es fünfmal mit verschiedenen Seeds laufen. Dann soll er ein Wasserstein GAN mit demselben Netz versuchen und vergleichen, wie viele Cluster es jedes Mal abdeckt.
Siehst du das anders? Schreib an support@coden-app.com.