GANs versuchen, eine Wahrscheinlichkeitsverteilung zu replizieren. Sie sollten daher Verlustfunktionen verwenden, die die Entfernung zwischen den vom GAN generierten Daten und der Verteilung der echten Daten widerspiegeln.
Wie erfassen Sie den Unterschied zwischen zwei Verteilungen in GAN-Verlustfunktionen? Diese Frage ist ein Bereich aktiver Forschung, zu dem viele Ansätze entwickelt wurden. Hier werden zwei gängige GAN-Verlustfunktionen erläutert, die beide in TF-GAN implementiert sind:
- Minimax Loss: Die Verlustfunktion, die im Artikel zur Einführung von GANs verwendet wird.
- Wassersteinverlust: Die Standardverlustfunktion für TF-GAN-Schätzer. Zum ersten Mal in einem Artikel von 2017 beschrieben.
TF-GAN implementiert außerdem viele weitere Verlustfunktionen.
Eine Verlustfunktion oder zwei?
Ein GAN kann zwei Verlustfunktionen haben: eine für das Generatortraining und eine für das Diskriminatortraining. Wie können zwei Verlustfunktionen zusammenwirken, um eine Entfernungsmessung zwischen Wahrscheinlichkeitsverteilungen widerzuspiegeln?
In den Verlustmodellen betrachten wir hier die Verluste zwischen Generator und Diskriminatoren aus einer einzigen Entfernungsmessung zwischen Wahrscheinlichkeitsverteilungen. In beiden Schemata kann sich der Generator jedoch nur auf einen Begriff in der Entfernungsmessung auswirken: den Begriff, der die Verteilung der fiktiven Daten widerspiegelt. Während des Generatortrainings wird der andere Begriff weggelassen, der die Verteilung der tatsächlichen Daten widerspiegelt.
Die Verluste von Generator und Diskriminator sehen am Ende unterschiedlich aus, obwohl sie aus einer einzelnen Formel abgeleitet werden.
Minimax-Verlust
In dem Artikel zur Einführung von GANs versucht der Generator, die folgende Funktion zu minimieren, während der Diskriminator versucht, diese zu maximieren:
In dieser Funktion gilt:
D(x)
ist die Schätzung des Diskriminators der Wahrscheinlichkeit, dass die tatsächliche Dateninstanz x echt ist.- Ex ist der erwartete Wert für alle realen Dateninstanzen.
G(z)
ist die Ausgabe des Generators bei einem bestimmten Geräusch von z.D(G(z))
ist die Schätzung des Diskriminators für die Wahrscheinlichkeit, dass eine gefälschte Instanz echt ist.- Ez ist der erwartete Wert über alle zufälligen Eingaben an den Generator (tatsächlich der erwartete Wert für alle generierten gefälschten Instanzen(G)).
- Die Formel ergibt sich aus der Kreuzentropie zwischen der reellen und der generierten Verteilung.
Der Generator kann den Begriff log(D(x))
in der Funktion nicht direkt beeinflussen. Für den Generator bedeutet das Minimieren des Verlusts dem Minimieren von log(1 -
D(G(z)))
.
Eine Implementierung dieser Verlustfunktion finden Sie in TF-GAN unter minimax_differenztor_loss and minimax_generator_loss.
Geänderter Minimax-Verlust
Im ursprünglichen GAN-Papier wird darauf hingewiesen, dass die oben beschriebene Minimax-Verlustfunktion dazu führen kann, dass das GAN in den frühen Phasen des GAN-Trainings steckt, wenn der Job des Diskriminators sehr einfach ist. Daher wird empfohlen, den Verlust des Generators so zu ändern, dass der Generator versucht, log D(G(z))
zu maximieren.
Eine Implementierung dieser Änderung finden Sie in TF-GAN unter Modified_generator_loss.
Wassersteinverlust
Standardmäßig verwendet TF-GAN den Wasserstein-Verlust.
Diese Verlustfunktion hängt von einer Änderung des GAN-Schemas ("Wasserstein GAN" oder "WGAN") ab, bei der der Diskriminator keine Instanzen klassifiziert. Für jede Instanz wird eine Zahl ausgegeben. Diese Zahl muss nicht kleiner oder gleich 0 sein.Daher können wir nicht 0,5 als Grenzwert verwenden, um zu entscheiden, ob eine Instanz echt oder eine Fälschung ist. Das Training des Diskriminators versucht lediglich, die Ausgabe für echte Instanzen größer als für gefälschte Instanzen zu machen.
Da der WGAN-Diskriminator nicht richtig zwischen Fake und Fake unterscheiden kann, wird er eigentlich als „Kritiker“ bezeichnet. Diese Unterscheidung ist theoretisch wichtig, aber aus praktischen Gründen können wir sie als Anerkennung dafür verwenden, dass die Eingaben für die Verlustfunktionen keine Wahrscheinlichkeiten sein müssen.
Die Verlustfunktionen selbst sind trügerisch einfach:
Kritischer Verlust: D(x) - D(G(z))
Der Diskriminator versucht, diese Funktion zu maximieren. Mit anderen Worten: Es wird versucht, den Unterschied zwischen der Ausgabe auf echten Instanzen und der Ausgabe auf gefälschten Instanzen zu maximieren.
Generatorverlust: D(G(z))
Der Generator versucht, diese Funktion zu maximieren. Mit anderen Worten: Es wird versucht, die Ausgabe des Diskriminators für seine gefälschten Instanzen zu maximieren.
Für diese Funktionen gilt:
D(x)
ist die Kritikerausgabe für eine echte Instanz.G(z)
ist die Ausgabe des Generators bei einem bestimmten Geräusch von z.D(G(z))
ist die Kritikerausgabe für eine gefälschte Instanz.- Die Ausgabe des Kritikers D muss nicht zwischen 1 und 0 liegen.
- Die Formeln ergeben sich aus der Entfernung der Erde zwischen der realen und der generierten Verteilung.
Implementierungen findest du in TF-GAN unter wasserstein_generator_loss and wasserstein_disziplin_loss.
Voraussetzungen
Die theoretische Begründung für das Wasserstein-GAN (oder WGAN) erfordert, dass die Gewichtungen im gesamten GAN so festgelegt werden, dass sie in einem begrenzten Bereich bleiben.
Vorteile
Wasserstein-GANs bleiben anfälliger für Minimax-basierte GANs und vermeiden Probleme mit dem Verfall von Gradienten. Der Abstand der Erdbewegunger hat auch den Vorteil, dass es sich um einen wahren Messwert handelt: ein Entfernungsmaß in einem Bereich der Wahrscheinlichkeitsverteilungen. Kreuzentropie ist in diesem Sinne kein Messwert.