Generative Adversarial Networks (GANs)

Was sind GANs?

Bei Generative Adversarial Networks (GANs) handelt es sich um eine Art von tiefen neuronalen Netzen zur Erzeugung synthetischer Bilder. Die Architektur besteht aus zwei tiefen neuronalen Netzen, einem Generator und einem Diskriminator, die gegeneinander arbeiten (deswegen „adversarial“). Der Generator erstellt neue Dateninstanzen, während der Diskriminator die Authentizität der Daten bewertet und entscheidet, ob jede Instanz tatsächlich aus dem Trainingssatz stammt oder vom Generator gefälscht wurde.

Gemeinsam werden Generator und Diskriminator darauf trainiert, so lange gegeneinander zu arbeiten, bis der Generator realistische synthetische Daten erzeugt, die der Diskriminator nicht mehr als Fälschung erkennen kann. Nach erfolgreichem Training können Sie mit den vom Generator erzeugten Daten neue synthetische Daten erstellen, die als Eingabe für andere tiefe neuronale Netze dienen können.

GANs sind insofern vielseitig, als sie lernen können, neue Instanzen eines beliebigen Datentyps zu erzeugen, wie z. B. synthetische Gesichtsbilder, neue Lieder in einem bestimmten Stil oder den Text eines bestimmten Genres.

Training eines GAN

Anhand eines Beispiels der Erstellung synthetischer Bilder von Geld wollen wir die spezifischen Teile und Funktionen einer GAN-Architektur Schritt für Schritt durchgehen.

  1. Rauschen wird in den Generator eingespeist. Da der Generator noch nicht trainiert wurde, wird die Ausgabe anfangs wie Rauschen aussehen.
Illustration der GAN-Architektur sowie der Ein- und Ausgabe eines untrainierten GAN.
  1. Nun werden Trainingsdaten und die Ausgabe des Generators an den Diskriminator gesendet, der parallel trainiert wird, um echte/gefälschte Bilder zu identifizieren. Die Ausgabe des Diskriminators wird am Anfang nicht sonderlich präzise sein, da dieser Teil des Netzes noch trainiert wird, die Präzision also erst mit der Zeit steigen wird.
Illustration der GAN-Architektur sowie der Ein- und Ausgabe eines GAN während des Trainings.
  1. Feedback: Die Ausgabe des Diskriminators kann an den Generator und den Diskriminator zurückgespeist werden. Diese können die Informationen verwenden, um Parameter zu aktualisieren und zu versuchen, die Genauigkeit zu verbessern.
Illustration der GAN-Architektur ohne Feedback sowie der Ein- und Ausgabe eines GAN während des Trainings.

Das Ziel des Diskriminators ist es, in einer Instanz aus dem echten Datensatz jene Bilder zu erkennen, die authentisch sind. In der Zwischenzeit werden vom Generator neue, synthetische Bilder erstellt, die er dann an den Diskriminator weitergibt. Das geschieht in der Hoffnung, dass auch sie für authentisch gehalten werden, obwohl sie gefälscht sind. Ziel des Generators ist es, passable Bilder zu erzeugen, quasi zu lügen, ohne erwischt zu werden. Ziel des Diskriminators ist es hingegen, die Bilder vom Generator als gefälscht zu identifizieren.

Mit MATLAB® und der Deep Learning Toolbox™ können Sie GAN-Netzwerkarchitekturen mithilfe automatischer Differenzierung, benutzerdefinierten Trainingsschleifen und gemeinsamen Gewichtungen erstellen.

Anwendungen für ein Generative Adversarial Network

Erzeugung von Handschrift: Wie beim Bildbeispiel werden GANs zur Erzeugung synthetischer Daten verwendet. Diese können zur Ergänzung kleinerer Datensätze verwendet werden, die zum Trainieren präziser Deep Learning-Modelle mehr Datenbeispiele benötigen. Ein Beispiel ist die Handschrifterkennung: Um ein tiefes neuronales Netzwerk auf Handschrift zu trainieren, werden Tausende von Trainingsdatenbeispielen benötigt. Es kann sehr zeitintensiv sein, diese Daten manuell zu sammeln.

Mit einem GAN generierte handschriftliche Ziffern von 0 bis 9.

Synthetische Handschriftgenerierung mithilfe von GANs.

Szenengenerierung: Bedingte GANs sind ein spezieller Typ von GANs, der Labels nutzt, während das ursprüngliche GAN nicht davon ausgeht, dass es Labels gibt. Bedingte GANs können in Anwendungen wie z. B. der Szenengenerierung eingesetzt werden, die eine gewisse Organisation der Informationen erfordern. Als Beispiel sei hier die Szenengenerierung für autonomes Fahren genannt. Straßen und Gehwege müssen sich unterhalb von Gebäuden und Himmel befinden. Ein speziell für dieses Beispiel erstelltes synthetisches Bild, das nicht zur Lage der Straße passt, wird sofort als Fälschung erkannt und in einer Anwendung zum autonomen Fahren als unbrauchbar eingestuft.

Bild-zu-Bild-Übersetzung einer Straße und eines Fußwegs für automatisiertes Fahren mithilfe eines konditionalen pix2pix-GAN.

Image-to-image-Übersetzung (pix2pix) mithilfe bedingter GANs.

Audio- und Sprachanwendungen: GANs werden auch für Anwendungen wie Text-zu-Sprache-Synthese, Sprachumwandlung und Sprachoptimierung eingesetzt. GANs haben gegenüber herkömmlichen Audio- und Sprachimplementierungen einen erheblichen Vorteil, da sie neue Samples generieren können, anstatt vorhandene Signale einfach zu verstärken. Ein Beispiel, in dem GANs zur Klangsynthese verwendet werden, ist die Erstellung einer synthetischen Version von Schlagzeugklängen: Trainieren eines Generative Adversarial Network (GAN) für die Klangsynthese

Hinweis: GANs können bei der Generierung neuer synthetischer Daten für die Verwendung in einer Vielzahl von Anwendungen sehr leistungsfähig sein, jedoch ist es oft schwierig, präzise Ergebnisse zu erhalten, da es zu verschiedenen Fehlermodi kommen kann. Mit MATLAB können Sie den GAN-Trainingsfortschritt überwachen und verbreitete Fehlermodi identifizieren.


Generative Adversarial Networks (GANs) — Häufig gestellte Fragen

Generative Adversarial Networks (GANs) sind eine Art von tiefen neuronalen Netzen, die zur Erzeugung synthetischer Daten verwendet werden und aus zwei Netzen — einem Generator und einem Diskriminator — bestehen, die in einem gegnerischen Prozess gegeneinander arbeiten.

Der Generator erzeugt neue synthetische Dateninstanzen, während der Diskriminator bewertet, ob jede Instanz echt oder gefälscht ist. Sie trainieren gegeneinander, bis der Generator realistische Daten produziert, die der Diskriminator nicht mehr als gefälscht identifizieren kann.

Generative Adversarial Networks (GANs) können lernen, neue Instanzen beliebiger Datentypen zu erzeugen, einschließlich synthetischer Bilder von Gesichtern, neuer Lieder in einem bestimmten Stil oder Texts eines bestimmten Genres.

„Adversarial“ bezieht sich auf die Wettbewerbssituation, in der der Generator versucht, überzeugende gefälschte Daten zu erstellen, ohne entdeckt zu werden, während der Diskriminator daran arbeitet, welche Bilder gefälscht sind, zu identifizieren.

Konditionale Generative Adversarial Networks (GANs) sind eine spezielle Art von Generative Adversarial Networks (GANs), die Labels verwendet, um Informationen auf bestimmte Weise zu organisieren und so die Kontrolle über die erzeugten Ausgaben zu ermöglichen — zum Beispiel das Einschränken des Szenenlayouts in Anwendungen für das automatisierte Fahren, um sicherzustellen, dass Straßen bei der Szenengenerierung für automatisiertes Fahren unter Gebäuden erscheinen.

Generative Adversarial Networks (GANs) werden zur Generierung von Handschriften zur Ergänzung von Trainingsdatensätzen, zur Szenengenerierung für automatisiertes Fahren und für Audioanwendungen wie Text-to-Speech-Synthese, Sprachkonversion und Sprachverbesserung verwendet.

Generative Adversarial Networks (GANs) können tausende synthetische Datenbeispiele erzeugen, um kleinere Datensätze zu ergänzen, und ersparen so den zeitaufwändigen Prozess des manuellen Sammelns von Trainingsdaten für Deep Learning-Modelle.

Generative Adversarial Networks (GANs) können aufgrund vieler möglicher Fehlermodi während des Trainings keine genauen Ergebnisse erzielen, was eine sorgfältige Überwachung des Trainingsfortschritts erfordert.