Generative Adversarial Networks (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.
  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.
  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.

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.

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.

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.