Der Generator

Der Generatorteil eines GAN lernt, gefälschte Daten zu erstellen, indem er Feedback vom Diskriminator einbezieht. Es lernt, den Discriminator dazu zu bringen, seine Ausgabe als echt zu klassifizieren.

Das Training des Generators erfordert eine engere Integration zwischen dem Generator und dem Discriminator als das Training des Discriminators. Der Teil des GAN, der den Generator trainiert, umfasst:

  • Zufallseingabe
  • Generatornetzwerk, das die zufällige Eingabe in eine Dateninstanz umwandelt
  • Discriminator-Netzwerk, das die generierten Daten klassifiziert
  • Diskriminatorausgang
  • Generatorverlust, der den Generator dafür bestraft, dass er den Discriminator nicht täuschen konnte

Ein Diagramm eines generativen Adversarial Networks. In der Mitte des Diagramms befindet sich ein Feld mit der Bezeichnung „Diskriminator“. Zwei Äste münden von links in dieses Feld.  Der oberste Zweig beginnt links oben im Diagramm mit einem Feld mit der Bezeichnung „Realistische Bilder“. Ein Pfeil führt von diesem Zylinder zu einem Feld mit der Bezeichnung „Beispiel“. Ein Pfeil vom Feld „Sample“ (Beispiel) führt in das Feld „Discriminator“ (Diskriminator). Der untere Zweig fließt in das Feld „Diskriminator“ ein, beginnend mit einem Feld mit der Bezeichnung „Zufallseingabe“. Ein Pfeil führt vom Feld „Zufallseingabe“ zu einem Feld mit der Bezeichnung „Generator“. Ein Pfeil führt vom Feld „Generator“ zu einem zweiten Feld „Beispiel“. Ein Pfeil führt vom Feld „Beispiel“ zum Feld „Diskriminator“. Rechts neben dem Feld „Diskriminator“ führen zwei Pfeile zu zwei Feldern auf der rechten Seite des Diagramms. Ein Pfeil führt zu einem Feld mit der Bezeichnung „Diskriminatorverlust“. Der andere Pfeil führt zu einem Feld mit der Bezeichnung „Generatorausfall“. Ein gelbes Feld mit einem nach links weisenden Pfeil und der Bezeichnung „Backpropagation“ ist um das Feld „Zufallseingabe“, das Feld „Generator“, das untere Feld „Beispiel“, das Feld „Diskriminator“, das Feld mit der Beschriftung „Echt“ und „Fake“ und das Feld „Generatorverlust“ gezogen, um anzugeben, dass die Backpropagation auf den im gelben Feld eingeschlossenen Teil des Systems angewendet wird.

Abbildung 1: Backpropagation beim Generatortraining

Zufallseingabe

Neurale Netze benötigen eine Art von Eingabe. Normalerweise geben wir Daten ein, mit denen wir etwas tun möchten, z. B. eine Instanz, die wir klassifizieren oder für die wir eine Vorhersage treffen möchten. Aber was verwenden wir als Eingabe für ein Netzwerk, das völlig neue Dateninstanzen ausgibt?

In seiner einfachsten Form nimmt ein GAN zufälligen Rauschen als Eingabe. Der Generator wandelt diesen Rausch dann in eine sinnvolle Ausgabe um. Durch die Einführung von Rauschen können wir den GAN dazu bringen, eine Vielzahl von Daten zu generieren, indem an verschiedenen Stellen in der Zielverteilung Stichproben genommen werden.

Tests deuten darauf hin, dass die Verteilung des Rauschens nicht so wichtig ist. Wir können also etwas auswählen, aus dem sich leicht Stichproben ziehen lassen, z. B. eine gleichmäßige Verteilung. Der Raum, aus dem das Rauschen abgetastet wird, hat aus praktischen Gründen in der Regel eine kleinere Dimension als der Ausgaberaum.

Discriminator zum Trainieren des Generators verwenden

Um ein neuronales Netz zu trainieren, ändern wir die Gewichte des Netzes, um den Fehler oder Verlust der Ausgabe zu reduzieren. In unserem GAN ist der Generator jedoch nicht direkt mit dem Verlust verbunden, den wir beeinflussen möchten. Der Generator speist das Diskriminator-Netzwerk und der Diskriminator erzeugt die Ausgabe, auf die wir Einfluss nehmen möchten. Mit dem Generatorverlust wird der Generator dafür bestraft, dass er ein Beispiel erstellt, das vom Diskriminatornetzwerk als Fälschung eingestuft wird.

Dieser zusätzliche Teil des Netzwerks muss in die Backpropagation einbezogen werden. Bei der Backpropagation wird jedes Gewicht in die richtige Richtung angepasst, indem die Auswirkungen des Gewichts auf die Ausgabe berechnet werden – also wie sich die Ausgabe ändern würde, wenn Sie das Gewicht ändern. Die Auswirkungen eines Generatorgewichts hängen jedoch von den Auswirkungen der Discriminatorgewichte ab, in die es eingespeist wird. Die Rückwärtsausbreitung beginnt also an der Ausgabe und fließt über den Discriminator zurück in den Generator.

Gleichzeitig soll sich der Discriminator während des Generatortrainings nicht ändern. Der Versuch, ein sich bewegendes Ziel zu treffen, würde ein schwieriges Problem für den Generator noch schwieriger machen.

Wir trainieren den Generator daher mit dem folgenden Verfahren:

  1. Zufallsrauschen erfassen
  2. Generatorausgang aus gesampletem Zufallsrauschen erzeugen.
  3. Klassifizierung „Echt“ oder „Fake“ für den Generatorausgang vom Diskriminator abrufen
  4. Verlust aus der Discriminator-Klassifizierung berechnen
  5. Backpropagation sowohl durch den Diskriminator als auch durch den Generator, um Gradienten zu erhalten.
  6. Mithilfe von Farbverläufen können Sie nur die Generatorgewichte ändern.

Dies ist eine Iteration des Generatortrainings. Im nächsten Abschnitt sehen wir uns an, wie Sie das Training sowohl des Generators als auch des Discriminators koordinieren.