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
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:
- Beispiele für zufällige Geräusche.
- Generatorausgabe aus zufälligen Stichproben erstellen.
- Diskriminierende "Real"-Klassifikation für Generatorausgabe abrufen.
- Verlust aus der Diskriminatorklassifizierung berechnen.
- Rückpropagieren durch den Diskriminator und den Generator, um Gradienten zu erhalten
- 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.