Der Generator

Der Generatorteil eines GAN lernt durch das Einbinden von Feedback des Diskriminators, gefälschte Daten zu erstellen. Sie lernt, wie der Diskriminator seine Ausgabe als echt klassifizieren kann.

Das Generatortraining erfordert eine engere Integration zwischen Generator und Diskriminator als das Training mit Diskriminator. Der Teil des GAN, der den Generator trainiert, enthält Folgendes:

  • Zufallseingabe
  • Generatornetzwerk, das die Zufallseingabe in eine Dateninstanz umwandelt
  • Diskriminierendes Netzwerk, das die generierten Daten klassifiziert
  • Ausgabe des Diskriminators
  • Generatorverlust, der den Generator bestraft, weil er den Diskriminator nicht täuschen kann

Ein Diagramm eines generativen kontradiktorischen Netzwerks. In der Mitte des Diagramms befindet sich ein Feld mit der Beschriftung „#disk9tor“'. In dieses Feld fließen von links zwei Zweige ein.  Der obere Zweig beginnt oben links im Diagramm mit einem Feld mit der Bezeichnung „reale Bilder“. Von diesem Zylinder führt ein Pfeil zu einem Kästchen mit der Bezeichnung 'Sample'. Ein Pfeil aus dem Feld mit der Bezeichnung „Beispiel“ wird in das Feld „Diskrepanz“ eingefügt. Der untere Zweig wird in das Feld „Discriminator“ eingefügt, das mit einem Feld namens „Zufällige Eingabe“ beginnt. Ein Pfeil führt vom Feld „Zufällige Eingabe“ zu einem Feld mit der Bezeichnung &Generator ' Ein Pfeil führt vom Feld „Generator“ zu einem zweiten Feld „Sample“. Ein Pfeil führt vom Feld „Beispiel“ zum Feld „Discriminator“. Auf der rechten Seite des Felds „Discriminator“ führen zwei Pfeile zu zwei Kästchen auf der rechten Seite des Diagramms. Ein Pfeil führt zu einem Feld mit der Bezeichnung „Discriminator Loss'“. Der andere Pfeil führt zu einem Feld mit der Bezeichnung 'Generatorverlust'. Ein gelbes Feld mit einem nach links zeigenden Pfeil und dem Wort „Backpropagation“ um das Feld „Generator Input“ unten, das Feld „#Generator“, „#39“

Abbildung 1: Rückpropagierung im Generatortraining

Zufällige Eingabe

Für neuronale Netzwerke ist eine Form der Eingabe erforderlich. 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 komplett neue Dateninstanzen ausgibt?

In ihrer einfachsten Form nimmt ein GAN zufälliges Rauschen als Eingabe auf. Der Generator wandelt dieses Rauschen dann in eine sinnvolle Ausgabe um. Durch die Einführung von Rauschen kann das GAN eine Vielzahl von Daten generieren, die von verschiedenen Stellen der Zielverteilung entfernt werden.

Tests deuten darauf hin, dass die Verteilung des Rauschens nicht so wichtig ist. Daher können wir etwas auswählen, das einfach analysiert werden kann, z. B. eine gleichmäßige Verteilung. Der Einfachheit halber ist der Raum, von dem ein Rauschen erfasst wird, in der Regel kleiner als die Dimensionalität des Ausgabebereichs.

Den Generator mit dem Diskriminator trainieren

Zum Trainieren eines neuronalen Netzes ändern wir die Gewichtung 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 zu beeinflussen versuchen. Der Generator bezieht das Diskriminatornetz und der Diskriminierungspartner liefert das Ergebnis, das wir beeinflussen möchten. Der Generator verliert den Generator, der eine Stichprobe erzeugt, die vom Diskriminatorennetzwerk als Fälschung eingestuft wird.

Dieser zusätzliche Netzwerkbereich muss bei der Rückpropagierung berücksichtigt werden. Bei der Rückpropagierung wird jede Gewichtung in die richtige Richtung angepasst. Dazu wird der Einfluss der Gewichtung auf die Ausgabe berechnet – wie sich die Ausgabe bei einer Änderung der Gewichtung ändern würde. Die Auswirkungen der Gewichtung eines Generators hängen jedoch von der Gewichtung der Diskriminatoren ab, die in das System eingespeist werden. Die Rückpropagierung beginnt also an der Ausgabe und fließt zurück durch den Diskriminator in den Generator.

Gleichzeitig soll der Diskriminator während des Generatortrainings nicht geändert werden. Wenn Sie versuchen, ein bewegliches Ziel zu erreichen, würde ein hartes Problem für den Generator noch schwieriger werden.

Daher trainieren wir den Generator so:

  1. Beispiele für zufällige Geräusche.
  2. Generatorausgabe aus zufälligen Stichproben erstellen.
  3. Diskriminierende "Real"-Klassifikation für Generatorausgabe abrufen.
  4. Verlust aus der Diskriminatorklassifizierung berechnen.
  5. Rückpropagieren durch den Diskriminator und den Generator, um Gradienten zu erhalten
  6. Mit Gradienten können Sie nur die Generatorgewichtungen ändern.

Dies ist eine Iteration des Generatortrainings. Im nächsten Abschnitt geht es darum, das Training des Generators und des Diskriminators genau zu betrachten.