Wenn Sie wissen, wer von Tom und Jerry den Kampf gewinnt, dann wissen Sie ungefähr, wie Generative Adversarial Networks (GANs) funktionieren – GANs ähneln einem nicht enden wollendes Katz- und Mausspiel.
“The coolest idea in deep learning in the last 20 years.” — Yann LeCun on GANs.
LeCun’s Zitat hebt die Innovation und Bedeutung von GANs hervor, die von Ian Goodfellow und seinem Team im Jahr 2014 vorgestellt wurden. Doch was sind GANs, wie funktionieren sie und wie werden sie trainiert?
Inhaltsverzeichnis
Was sind Generative Adversarial Networks?
Generative Adversarial Networks (GANs) sind eine Technik aus dem Bereich Unsupervised Machine Learning. Sie können neue Daten generieren (meist Bilder), die bestehenden Trainingsdaten ähneln. Dabei ist das besondere an GANs, dass sie nicht nur neue Daten generieren, sondern auch Unterschiede zwischen echten und gefälschten Inhalten identifizieren können.
Ein Generative Adversarial Network besteht aus zwei Teilen:
- Ein Generator G (Jerry Mouse): Dieser hat die Aufgabe, neue Bilder zu erzeugen.
- Ein Diskriminator D (Polizei oder Tom Cat): Dieser hat die Aufgabe, zu erkennen, ob das eingegebene Bild echt oder gefälscht (also vom Generator, erstellt) ist.
Wie funktionieren die beiden Modelle miteinander?
Die beiden Modelle sind Gegenspieler des jeweils anderen. Zum Beispiel erzeugt der Generator G einen Stapel synthetischer Bilder und übergibt diese zusammen mit den echten Bildern (aus den Trainingsdaten) an den Diskriminator D. Der Diskriminator D unterscheidet anschließend zwischen echten und gefälschten Bildern. Beide Modelle trainieren sich wechselseitig, bis der Generator gut genug ist, Bilder zu erzeugen, die den Trainingsdaten so sehr ähneln, dass der Generator sie nicht mehr auseinanderhalten kann. Mathematisch ausgedrückt, versucht das Modell, die den echten Bildern zugrunde liegende Datenverteilung zu erlernen und eine ähnliche Datenverteilung für die Erstellung neuer Bilder zu replizieren.
Modellarchitektur und Training
Der Generator G ist ein neuronales Netz mit den Parametern θ und dem Eingangsvektor z.
- Punkte im latenten Raum, d.h. ein 100-Elemente-Vektor (z) einer Gauß’schen Zufallszahl, wird als Eingabe in das Netz gegeben. Die nachfolgenden Schichten werden für das Anreichern der Daten verwendet, um das gewünschte Bild zu erzeugen.
- In einem tiefen neuronalen Netzwerk, einem sog. Convolutional Neural Network (CNN), gibt es verschiedene Merkmalskarten, die jeweils eine andere Interpretation des Bildes liefern. Auch bei der Erstellung eines Bildes aus einem Vektor der Länge n müssen mehrere Bilder erzeugt werden, die am Ende zu einem einzigen Bild zusammengefasst werden können. Daher muss die erste Schicht genügend Neuronen enthalten, um mehrere Merkmalskarten zu erstellen.
- Um zum Beispiel ein Bild des MNIST-Datensatzes (28 x 28 Bilder, schwarz-weiß) zu erstellen, enthält die erste dichte Schicht 6272 Neuronen. Die Ausgabe der ersten Schicht wird dann so umgeformt, dass sie 128 Merkmalskarten mit jeweils 7 x 7 Bildern enthält.
- Nachfolgende Schichten wenden Upsampling-Techniken an, um ein 28 x 28 Bild zu erzeugen.
- Dieses wird dann als eine der Eingaben an den Diskriminator D gegeben.
Der Diskriminator D ist ein binäres Klassifikationsmodell, das die Bilder in zwei Klassen einteilt: echt („1“) oder gefälscht („0“). Es handelt sich typischerweise ebenfalls um ein CNN mit den Parametern Φ und der Eingabe x. Die Eingabe x ist ein Stapel von Bildern, der zur Hälfte aus echten Bildern aus den Trainingsdaten, und zur anderen Hälfte aus den gefälschten Bildern vom Diskriminator D besteht.
Generative-Adversarial-Networks-Modell
Sowohl der Generator als auch der Diskriminator werden zu einem GAN-Modell kombiniert, wie folgende Abbildung zeigt:
Modell-Training
Ein Teil des Trainings von Generative Adversarial Networks (GANs) besteht darin, dem Generator eine Reihe von latenten Rauschvektoren zu geben. Der Generator erzeugt daraufhin aus jedem dieser Eingangsvektoren ein Bild. Diese Bilder werden mit dem Label „0“ (gefälscht) versehen, wenn sie als Eingabe für den Diskriminator verwendet werden. Aus den echten Bildern (Trainingsbildern) wird eine gleich große Menge von Bildern entnommen. Diesen Bildern wird die Kennzeichnung „1“ (echt) zugewiesen. Beide Stapel werden als Eingabe für den Diskriminator verwendet, um echte und gefälschte Bilder zu klassifizieren. Nach der Forward-Propagation durch das neuronale Netzwerk werden zwei Optimierungs-Variablen unabhängig voneinander berechnet: Der „Loss“ des Generator-Modells und der Fehler des Diskriminator-Modells. Letzterer ist gleichzeitig der Klassifizierungsfehler. Dieser wird zur Aktualisierung der Gewichte des Diskriminators durch einen konventionellen Backpropagation-Mechanismus des CNNs verwendet.
Wie oft die Gewichte des Generators aktualisiert werden, hängt von der Leistung des Diskriminators bei den gefälschten Bildern ab. Wenn der Diskriminator in der Lage ist, die gefälschten Bilder zu erkennen, werden die Gewichte des Diskriminators aktualisiert. Wenn der Diskriminator jedoch nicht in der Lage ist, die gefälschten Bilder von den echten Bildern zu unterscheiden (was bedeutet, dass der Generator in der Lage ist, sehr echt wirkende Bilder zu erzeugen), werden die Gewichte des Generators aktualisiert. Der „Loss“ wird mittels einer Back-Propagation übertragen, um die Gewichte des neuronalen Netzes des Generators zu aktualisieren. Während der Backpropagation des Generators werden die Gewichte des Diskriminator-Netzes als nicht trainierbar markiert. Dadurch wird sichergestellt, dass die Gewichte des Diskriminators während der Back-Propagation im Generator-Modell nicht verändert werden.
„Dieselben erzeugten Bilder haben zwei verschiedene Labels. Wenn der Diskriminator trainiert wird, ist das Label 0 und wenn der Generator trainiert wird, ist das Label 1.“
Das Diskriminator-Modell gibt die Wahrscheinlichkeit für die Echtheit des Bildes an. Wenn es einen Konfidenzwert von weniger als einem Schwellenwert, z.B. 0,4, angibt, wird das Bild als gefälscht eingestuft. Mit anderen Worten: Das erzeugte Bild ist mit einem Konfidenzniveau von weniger als 0,4, oder 40 % echt. Um den Generator darauf zu trainieren, realistische Bilder zu erzeugen, wird die Optimierungs-Metrik für den Generator auf der Grundlage der Einstufung des Bildes durch den Diskriminator als echt berechnet. Daher werden bei der Aktualisierung der Gewichte des Generators die erzeugten Bilder als „1“ markiert. Somit ist der Fehler des Generators bei generierten Bildern mit niedrigem Konfidenzniveau wesentlich größer, weswegen er die Gewichte aktualisiert, um realistischere Bilder zu erzeugen.
Verlustfunktionen für Diskriminator und Generator
Die Verlustfunktionen sowohl für den Diskriminator als auch für den Generator lassen sich aus der binären Kreuzentropiegleichung ableiten:
Diskriminatorverlust: Der Diskriminatorverlust quantifiziert die Fähigkeit des Diskriminators, zwischen echten und gefälschten Bildern zu unterscheiden. Er vergleicht die Vorhersagen des Diskriminators für echte Bilder mit einer Reihe von Einsen und seine Vorhersagen für gefälschte Bilder mit einer Reihe von Nullen. Der Gesamtverlust für den Diskriminator ist der kumulative Verlust für die echten und die gefälschten Bilder.
Für echte Bilder, y = 1 und ^y = D8x), Verlust für echte Bilder L(1,D(x)) = log D(x)
Für synthetisch generierte Bilder, y = 0 und ^y = D(G(z)), Verlust für synthetisch generierte Bilder L(D0,D(Gz)) = log [1 – D(Gz))]
Das Ziel des Diskriminators ist es, beide Verlustfunktionen zu maximieren. Mathematisch ist der Gesamtverlust für den Diskriminator demnach wie folgt definiert:
Generatorverlust: Der Generatorverlust quantifiziert die Fähigkeit des Generatormodells, dem Diskriminator vorzugaukeln, dass es sich bei den gefälschten Bildern um echte Bilder handelt. Wenn der Generator also gut trainiert ist, werden die erzeugten (gefälschten) Bilder vom Diskriminator als echt (1) eingestuft. Folglich wird die Ausgabe des Diskriminators für die erzeugten Bilder mit einer Reihe von Einsen verglichen.
Der Generator hingegen versucht, den Diskriminator zu täuschen, und versucht daher, die Verlustfunktion zu minimieren:
Der Generator kann sich nicht direkt auf den Term log(D(x)) auswirken, so dass die Minimierung des Verlustes für den Generator gleichbedeutend ist mit:
Die kombinierte Verlustfunktion des GAN lautet daher:
Der GAN-Algorithmus wird in der Originalveröffentlichung von Ian Goodbfellow so beschrieben:
Anwendungsbeispiele für Generative Adversarial Networks
Die Grundidee von Generative Adversarial Networks (GANs) besteht also darin, Daten zu generieren, die von echten Daten nicht zu unterscheiden sind. Dies macht GANs zu einem leistungsstarken Werkzeug für die Erzeugung synthetischer Daten. Sie können in einer Vielzahl von Bereichen eingesetzt werden, z.B. bei der Bilderzeugung, der Bildtransformation, dem Einfärben von Bildern, der Musiksynthese, der Videoerzeugung, der Erzeugung von 3D-Objekten und vielem mehr. Im Folgenden finden Sie eine Liste einiger praktischer Anwendungen von GANs, die heute eingesetzt werden.
StyleGAN
Dieses von Nvidia entwickelte KI-Modell bietet den Benutzern ein hohes Maß an Kontrolle über die Erzeugung hochrealistischer Bilder. Der Benutzer kann selbst bestimmen, welchen Teil des Bildes er manipulieren möchte. Bei der Erstellung von Gesichtsbildern können die Benutzer beispielsweise die Haarfarbe oder den Haarschnitt, den Gesichtsausdruck und vieles mehr ändern. Für Unternehmen bedeutet dies, dass sie schnell mehrere Visualisierungen eines einzigen Bildes erstellen können. Automobilhersteller können in kürzester Zeit verschiedene Innenraumdesigns für Kunden erstellen, und Modeagenturen können innerhalb von Sekunden neue Kleidungsmuster entwerfen.
CycleGAN
Dieses leistungsstarke KI-Modell zeichnet sich durch die Umwandlung von Bildern von einem Stil in einen anderen aus. Seine Einzigartigkeit liegt darin, dass es keine übereinstimmenden Bildpaare benötigt, um zu lernen, wie man Umwandlungen vornimmt. Dies kann ein sehr leistungsfähiges Werkzeug für E-Commerce-Händler oder Immobilienagenturen sein, um zu zeigen, wie ihre Produkte in verschiedenen Umgebungen aussehen (z. B. in unterschiedlichen Lichtsituationen).
MidiNet
Eine weitere leistungsstarke Anwendung von GANs, MidiNet, wurde entwickelt, um Musiksequenzen im MIDI-Format (Musical Instrument Digital Interface) zu erzeugen. Es ermöglicht Anwendern, maßgeschneiderte Musik für verschiedene Anwendungsfälle zu erzeugen, sei es für Marketing, Medien, Unterhaltung, Werbevideos und mehr.
0 Kommentare