Technologische Neuigkeiten, Bewertungen und Tipps!

Die Intuition hinter GANs für Anfänger – Auf dem Weg zur KI

Hinweis: Der folgende Artikel hilft Ihnen dabei: Die Intuition hinter GANs für Anfänger – Auf dem Weg zur KI

Ursprünglich veröffentlicht auf Towards AI, dem weltweit führenden Nachrichten- und Medienunternehmen für KI und Technologie. Wenn Sie ein KI-bezogenes Produkt oder eine KI-bezogene Dienstleistung entwickeln, laden wir Sie ein, darüber nachzudenken, KI-Sponsor zu werden. Bei Towards AI helfen wir bei der Skalierung von KI- und Technologie-Startups. Wir helfen Ihnen dabei, Ihre Technologie der breiten Masse zugänglich zu machen.

Tiefes Lernen

Sie haben wahrscheinlich schon von Deep-Fake-Videos gehört oder besuchen diesen Persondoesnotexit, wo GAN zur Erstellung dieser Videos verwendet wird. Ist das nicht interessant? In diesem Beitrag werden wir die grundlegende Intuition hinter GAN und seine Implementierung in Tensorflow ausführlich besprechen. Lass uns anfangen.

Generative Adversarial Networks, kurz GAN, sind ein Ansatz zur generativen Modellierung unter Verwendung von Deep-Learning-Methoden wie Convolutional Neural Networks. Generative Modellierung ist eine unbeaufsichtigte Lernaufgabe beim maschinellen Lernen, deren Ziel darin besteht, die verborgenen Muster in den Eingabedaten zu finden und plausible Bilder mit ähnlichen Eigenschaften wie die Eingabedaten zu erzeugen.

GAN kann lernen, die Eingabeverteilung zu modellieren, indem es zwei konkurrierende (und kooperierende) Netzwerke trainiert, die als bezeichnet werden Generator Und Diskriminator(auch bekannt als a Kritiker). Die Aufgabe des Generators besteht darin, immer wieder herauszufinden, wie gefälschte Daten oder Signale erzeugt werden können, die den Diskriminator täuschen können. Zunächst wird dem Generator etwas Rauschen zugeführt, um daran zu arbeiten. Andererseits wird ein Diskriminator darauf trainiert, zwischen gefälschten und echten Signalen zu unterscheiden.

Das Hauptkonzept von GAN ist unkompliziert. Die GAN-Modellarchitektur umfasst zwei Untermodelle: ein Generatormodell zum Generieren neuer Beispiele und ein Diskriminatormodell zum Klassifizieren, ob generierte Beispiele echt (aus der Domäne) oder gefälscht (vom Generatormodell generiert) sind. Schauen wir es uns einmal so an:

  • Diskriminator: Modell, das lernt, Eingaben als echt (aus der Domäne) oder gefälscht (generiert) zu klassifizieren.
  • Generator: Modell, das neue ähnliche Bilder aus der Problemdomäne generiert.

Wie funktioniert GAN?

Die beiden neuronalen Netze, aus denen das GAN besteht, werden Generator und Diskriminator genannt. Der GAN-Generator generiert neue Dateninstanzen und der Diskriminator validiert, ob sie zum Datensatz gehören (echt) oder generiert (gefälscht). Der Diskriminator ist ein vollständig verbundenes neuronales Netzwerk, das das Eingabebeispiel als echt (1,0) oder falsch (0,0) klassifiziert. In regelmäßigen Abständen gibt der Generator vor, dass es sich bei seiner Ausgabe um echte Daten handelt, und fordert den Diskriminator auf, diese als 1,0 zu kennzeichnen. Wenn die gefälschten Daten dann dem Diskriminator vorgelegt werden, werden sie natürlich als gefälscht mit einem Label nahe 0,0 klassifiziert.

Insgesamt besteht der gesamte Prozess darin, dass zwei Netzwerke miteinander konkurrieren und dennoch miteinander kooperieren. Wenn das GAN-Training schließlich konvergiert, ist das Endergebnis ein Generator, der plausible Daten generieren kann, die real erscheinen. Der Diskriminator hält diese synthetisierten Daten für real und bezeichnet sie als 1,0.

Die Eingabe in den Generator ist Rauschen und die Ausgabe sind synthetisierte Daten. In der Zwischenzeit werden die Eingaben des Diskriminators entweder reale oder synthetisierte Daten sein. Echte Daten stammen aus den echten Stichprobendaten, während die gefälschten Daten vom Generator stammen. Alle realen Daten werden mit 1,0 gekennzeichnet (dh 100 % Wahrscheinlichkeit, echt zu sein), während alle synthetisierten Daten (gefälschte Daten) mit 0,0 gekennzeichnet werden (dh 0 % Wahrscheinlichkeit, echt zu sein). Hier ist ein Algorithmus der Autoren von GAN:

Wie Sie sehen können, wird der Diskriminator für k Schritte aktualisiert und erst dann wird der Generator aktualisiert. Dieser Vorgang wird fortlaufend wiederholt. k kann auf 1 gesetzt werden, aber normalerweise sind größere Werte besser (Goodfellow et al., 2014). Zur Optimierung kann jede Gradienten-basierte Lernregel verwendet werden.

Die im obigen Algorithmus gezeigte Verlustfunktion wird als Minmax-Verlust bezeichnet. Da der Generator versucht, die Funktion zu minimieren, während der Diskriminator versucht, sie zu maximieren. Es kann wie folgt geschrieben werden:

Einige Notationen sind:

D(x) → Wahrscheinlichkeit, dass die gegebene reale Dateninstanz x vom Diskriminator real ist.

Eₓ → Erwarteter Wert Gesamtinstanzen.

G(z) → Generatorausgang ergab den Rauschvektor z.

D(G(z)) → Wahrscheinlichkeit, dass die gegebene gefälschte Dateninstanz z vom Diskriminator real ist.

E? → Erwarteter Wert insgesamt generierte Fake-Instanzen.

Der Generator kann den log(D(x))-Term in der Funktion nicht direkt beeinflussen, daher ist die Minimierung des Verlusts für den Generator gleichbedeutend mit der Minimierung von log(1 – D(G(z))) .

Zusammenfassend der Unterschied zwischen generativen und diskriminativen Modellen:

  • A diskriminierend Das Modell lernt eine Funktion, die die Eingabedaten () einer gewünschten Ausgabeklassenbezeichnung () zuordnet. In probabilistischer Hinsicht lernen sie direkt die bedingte Verteilung.
  • A generativ Das Modell versucht, die gemeinsame Wahrscheinlichkeit der Eingabedaten und Beschriftungen gleichzeitig zu lernen, d. h. Dies kann zur Klassifizierung über die Bayes-Regel umgewandelt werden, aber die generative Fähigkeit könnte auch für etwas anderes genutzt werden, beispielsweise für die Erstellung wahrscheinlich neuer Proben.

Ausbildung zum Diskriminator

Der Diskriminator verbindet sich mit zwei Verlustfunktionen. Während des Diskriminatortrainings ignoriert der Diskriminator den Generatorverlust und verwendet nur den Diskriminatorverlust. Den Generatorverlust nutzen wir beim Generatortraining.

Die Trainingsdaten des Diskriminators stammen aus zwei Quellen:

  • Echte Daten Beispiele, wie zum Beispiel reale Bilder von Menschen. Der Diskriminator verwendet diese Fälle als positive Beispiele während des Trainings.
  • Gefälschte Daten vom Generator erstellte Instanzen. Der Diskriminator verwendet diese Fälle während des Trainings als negative Beispiele.

In der obigen Abbildung stellen die beiden „Sample“-Kästchen diese beiden Datenquellen dar, die in den Diskriminator eingespeist werden. Während des Diskriminatortrainings wird der Generator nicht trainiert. Seine Gewichte bleiben unverändert, während Beispiele erzeugt werden, an denen der Diskriminator trainieren kann.

Während des Diskriminatortrainings:

  1. Der Diskriminator klassifiziert sowohl echte als auch gefälschte Daten vom Generator.
  2. Der Diskriminatorverlust bestraft den Diskriminator dafür, dass er eine reale Instanz fälschlicherweise als Fälschung oder eine gefälschte Instanz als real klassifiziert.
  3. Der Diskriminator aktualisiert seine Gewichte durch Backpropagation vom Diskriminatorverlust durch das Diskriminatornetzwerk.

Trainingsgenerator

Der Generatorteil eines GAN lernt, gefälschte Daten zu erstellen, indem er Feedback vom Diskriminator erhält. Das Feedback des Diskriminators hilft dem Generator, seine Leistung im Laufe der Zeit zu verbessern. Es lernt, den Diskriminator dazu zu bringen, seine Ausgabe als real zu klassifizieren.

Die obige Abbildung zeigt das Training des Generators. Dabei handelt es sich um eine Kombination aus Diskriminator und Generator. Die Ausgabe des Generators wird an das Diskriminatornetz weitergeleitet, und der Diskriminator vergleicht die tatsächliche Ausgabe und den Ausgabeverlust. Der Generatorverlust bestraft den Generator für die Produktion einer Probe, die das Diskriminatornetzwerk als Fälschung klassifiziert.

Backpropagation passt jede Gewichtung in die richtige Richtung an, indem die Auswirkung der Gewichtung auf die Ausgabe berechnet wird. Diskriminatorparameter werden eingefroren, aber Gradienten werden an den Generator weitergegeben. Die Rückausbreitung beginnt also am Ausgang und fließt durch den Diskriminator zurück in den Generator.

Das Generatortraining erfordert eine engere Integration zwischen dem Generator und dem Diskriminator als das Diskriminatortraining. Eine Iteration des Trainings des Generators umfasst das folgende Verfahren:

  1. Beispiel für zufälliges Rauschen.
  2. Erzeugen Sie einen Generatorausgang aus abgetastetem Zufallsrauschen.
  3. Erhalten Sie die Unterscheidungsklassifizierung „echt“ oder „gefälscht“ für den Generatorausgang.
  4. Berechnen Sie den Verlust aus der Diskriminatorklassifizierung.
  5. Führen Sie eine Rückwärtsausbreitung durch den Diskriminator und den Generator durch, um Gradienten zu erhalten.
  6. Verwenden Sie Farbverläufe, um nur die Generatorgewichte zu ändern. (Diskriminatorgewichte sind eingefroren)

Pseudocode des Trainings-GAN:

Jetzt verstehen Sie die grundlegende Intuition von GAN. Versuchen wir, ein DCGAN in Tensorflow 2 zu implementieren.

Einfaches DC-GAN in Tensorflow 2

Der Generator akzeptiert 100-Dim-Z-Vektorrauschen, das aus einer gleichmäßigen Verteilung abgetastet wird. Dann werden viele Ebenen von Conv2DTranspose mit Batch-Normalisierung und RELU-Aktivierungsfunktion verwendet. Grundsätzlich transponiert Conv2D ein Beispielbild aus 100 Dimmvektoren in die angegebene Form. Die Batch-Normalisierung wird für Konvergenz und schnelles Training verwendet. Die letzte Schicht verfügt über eine Sigmoid-Aktivierung, die die 28 x 28 x 1 gefälschten MNIST-Bilder erzeugt.

CODE:

Den vollständigen Code finden Sie in diesem Collab-Notebook-Link.

Der Diskriminator ähnelt den CNN-Bildklassifikatoren. Es wird ein Bild im Format 28x28x1 benötigt. Es nimmt sowohl echte als auch gefälschte Bilder auf und verkettet sie. Es besteht aus Schichten von CONV2D mit einer LeakyRELU-Aktivierungsfunktion. Die letzte Schicht ist das Sigmoid, das 1 (REAL) von 0 (FAKE) ausgibt.

Zunächst wird das Diskriminatormodell erstellt und anschließend das Generatormodell instanziiert. Schließlich kombinieren wir sowohl Diskriminator als auch Generator als kontradiktorische Modelle und trainieren sie.

Ausgang:

Verweise

[1]

[2] Atienza, Rowel. . Packt Publishing Ltd., 2020.


Die Intuition hinter GANs für Anfänger wurde ursprünglich in Towards AI auf Medium veröffentlicht, wo die Leute das Gespräch fortsetzen, indem sie diese Geschichte hervorheben und darauf reagieren.

Veröffentlicht über Towards AI