Der Diskriminator

Der Discriminator in einer GAN ist einfach ein Klassifikator. Es wird versucht, echte Daten von den vom Generator erstellten Daten zu unterscheiden. Es kann jede Netzwerkarchitektur verwendet werden, die für die zu klassifizierenden Daten geeignet ist.

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“. Um das Discriminator-Feld und das Discriminator-Verlust-Feld herum ist ein gelbes Feld mit einem nach links weisenden Pfeil und dem Wort „Backpropagation“ zu sehen. Damit wird angezeigt, dass die Backpropagation auf den im gelben Feld eingeschlossenen Teil des Systems angewendet wird.

Abbildung 1: Backpropagation beim Training des Discriminators

Trainingsdaten für Diskriminator

Die Trainingsdaten des Diskriminators stammen aus zwei Quellen:

  • Echte Daten, z. B. echte Bilder von Personen. Der Discriminator verwendet diese Instanzen während des Trainings als positive Beispiele.
  • Vom Generator erstellte Instanzen mit Fake-Daten. Der Discriminator verwendet diese Instanzen während des Trainings als negative Beispiele.

In Abbildung 1 stehen die beiden Felder „Beispiel“ für diese beiden Datenquellen, die in den Diskriminator eingespeist werden. Während des Trainings des Discriminators wird der Generator nicht trainiert. Die Gewichte bleiben konstant, während Beispiele für das Training des Discriminators erstellt werden.

Diskriminator trainieren

Der Discriminator ist mit zwei Verlustfunktionen verbunden. Während des Diskriminatortrainings ignoriert der Diskriminator den Generatorverlust und verwendet nur den Diskriminatorverlust. Wir verwenden den Generatorausfall beim Generatortraining, wie im nächsten Abschnitt beschrieben.

Während des Diskriminatortrainings:

  1. Der Diskriminator klassifiziert sowohl echte als auch gefälschte Daten aus dem Generator.
  2. Mit dem Diskriminatorverlust wird der Diskriminator dafür bestraft, dass er eine echte Instanz als Fälschung oder eine gefälschte Instanz als echt eingestuft hat.
  3. Der Diskriminator aktualisiert seine Gewichte durch Backpropagation vom Diskriminatorverlust durch das Diskriminatornetzwerk.

Im nächsten Abschnitt sehen wir uns an, warum der Generatorausfall mit dem Diskriminator zusammenhängt.