Heim > Artikel > Technologie-Peripheriegeräte > Deep Convolutional Generative Adversarial Network in der Praxis
Übersetzer |. Zhu Xianzhong
Rezensent | Dies liegt daran, dass das Unternehmen die meisten der gesammelten Daten niemals analysiert oder in irgendeiner Form verwendet. Genauer gesagt wird dies als „Dark Data“ bezeichnet.
„Dunkle Daten“ beziehen sich auf Daten, die durch verschiedene Computernetzwerkvorgänge gewonnen, aber in keiner Weise zur Ableitung von Erkenntnissen oder zur Entscheidungsfindung verwendet werden. Die Fähigkeit einer Organisation, Daten zu sammeln, übersteigt möglicherweise ihren Analysedurchsatz. In einigen Fällen wissen Organisationen möglicherweise nicht einmal, dass Daten erfasst werden. IBM schätzt, dass etwa 90 % der von Sensoren und der Analog-Digital-Umwandlung generierten Daten nie genutzt werden. – Wikipedia-Definition von „Dark Data“
Aus Sicht des maschinellen Lernens ist einer der Hauptgründe, warum diese Daten für die Gewinnung von Erkenntnissen nicht nützlich sind, das Fehlen von Beschriftungen. Dies macht unüberwachte Lernalgorithmen sehr attraktiv, um das Potenzial dieser Daten auszuschöpfen. Generative Adversarial NetworkIm Jahr 2014 schlugen Ian Goodfello et al. eine neue Methode zur Schätzung generativer Modelle durch einen kontradiktorischen Prozess vor. Dabei werden zwei unabhängige Modelle gleichzeitig trainiert: ein Generatormodell, das versucht, die Datenverteilung zu modellieren, und ein Diskriminator, der versucht, die Eingabe über den Generator als Trainingsdaten oder gefälschte Daten zu klassifizieren. Dieses Papier setzt einen sehr wichtigen Meilenstein im Bereich des modernen maschinellen Lernens und eröffnet einen neuen Weg für unbeaufsichtigtes Lernen. Im Jahr 2015 wurde in dem von Radford et al. veröffentlichten Deep Convolutional GAN-Artikel erfolgreich ein 2D-Bild durch die Anwendung der Prinzipien von Faltungsnetzwerken generiert und somit in dem Artikel weiter auf dieser Idee aufgebaut. Mit diesem Artikel habe ich versucht, die im obigen Dokument besprochenen Schlüsselkomponenten zu erklären und sie mithilfe des PyTorch-Frameworks zu implementieren. Was ist das Besondere an GAN? Um die Bedeutung von GAN oder DCGAN (Deep Convolutional Generative Adversarial Networks) zu verstehen, wollen wir zunächst verstehen, was sie so beliebt macht. 2. Generatoren und Diskriminatoren fungieren als sehr gute Merkmalsextraktoren für Anwendungsfälle mit begrenzten gekennzeichneten Daten oder generieren zusätzliche Daten, um das quadratische Modelltraining zu verbessern, da sie gefälschte Stichproben generieren können, anstatt Erweiterungstechniken zu verwenden. 3. GANs bieten eine Alternative zu Maximum-Likelihood-Techniken. Ihr kontradiktorischer Lernprozess und ihre nicht-heuristische Kostenfunktion machen sie für das verstärkende Lernen sehr attraktiv. 4. Die Forschung zu GAN ist sehr attraktiv und ihre Ergebnisse haben eine breite Debatte über die Auswirkungen von ML/DL ausgelöst. Beispielsweise ist Deepfake eine Anwendung von GAN, die das Gesicht einer Person auf eine Zielperson legt, was sehr umstritten ist, da es das Potenzial hat, für schändliche Zwecke verwendet zu werden. 5. Zu guter Letzt ist die Zusammenarbeit mit einem solchen Netzwerk cool und die ganzen neuen Forschungsergebnisse auf diesem Gebiet sind faszinierend. GesamtarchitekturArchitektur von Deep Convolutional GAN
Wie wir bereits besprochen haben, werden wir mit DCGAN arbeiten, das versucht, die Kernidee von GAN, einem Faltungsnetzwerk zur Erzeugung realistischer Bilder, umzusetzen.
Generator
Generator-Architekturdiagramm
Der Generator ist der Teil, der uns am meisten interessiert, da es sich um einen Generator handelt, der gefälschte Bilder generiert, um den Diskriminator zu täuschen.
Unter diesen bilden Schicht 2 bis Schicht 5 den Kerngeneratorblock, der N-mal wiederholt werden kann, um die gewünschte Ausgabebildform zu erhalten.
Das Folgende ist der Schlüsselcode, wie wir ihn in PyTorch implementieren (den vollständigen Quellcode finden Sie unter der Adresse https://github.com/akash-agni/ReadThePaper/blob/main/DCGAN/dcgan.py).
Verwenden Sie den Generator des PyTorch-Frameworks, um den Schlüsselcode zu implementieren einige kleine Anpassungen vornehmen. Anstatt beispielsweise Pooling-Schichten für das Downsampling zu verwenden, verwendet es eine spezielle Faltungsschicht namens Stride Convolutional Layer, die es ihm ermöglicht, sein eigenes Downsampling zu erlernen.
Concat-Schicht: Diese Schicht kombiniert gefälschte und echte Bilder in einem Stapel, um sie dem Diskriminator zuzuführen. Dies kann jedoch auch separat erfolgen, nur um den Generatorverlust zu ermitteln.
Faltungsschicht: Wir verwenden hier die Schrittfaltung, die es uns ermöglicht, Bilder herunterzurechnen und Filter in einer Trainingssitzung zu lernen.
LeakyReLU-Schicht: Wie im Papier erwähnt, wurde festgestellt, dass Leakyrelus für den Diskriminator sehr nützlich ist, da es im Vergleich zur maximalen Ausgabefunktion des ursprünglichen GAN-Papiers ein einfacheres Training ermöglicht.
Dropout-Schicht: Wird nur für das Training verwendet und hilft, eine Überanpassung zu vermeiden. Das Modell neigt dazu, sich reale Bilddaten zu merken. An diesem Punkt kann das Training abbrechen, da der Diskriminator nicht mehr vom Generator „getäuscht“ werden kann.
Gegnerisches Training
Wir trainieren den Diskriminator (D), um die Wahrscheinlichkeit zu maximieren, Trainingsproben und Proben vom Generator (G), die dies tun, die richtige Bezeichnung zuzuweisen kann durch Minimieren von log(D(x)) erfolgen. Gleichzeitig trainieren wir G, um log(1 − D(G(z))) zu minimieren, wobei z den Rauschvektor darstellt. Mit anderen Worten, sowohl D als auch G verwenden die Wertfunktion V (G, D), um das folgende Minimax-Spiel für zwei Spieler zu spielen:
Berechnungsformel der kontradiktorischen Kostenfunktion
In einer praktischen Anwendungsumgebung bietet die obige Gleichung möglicherweise nicht genügend Gradienten, damit G gut lernen kann. In den frühen Phasen des Lernens, wenn G schlecht ist, kann D Proben mit hoher Sicherheit ablehnen, da sie sich erheblich von den Trainingsdaten unterscheiden. In diesem Fall erreicht die Funktion log(1 − D(G(z))) die Sättigung. Anstatt G zu trainieren, um log(1 − D(G(z))) zu minimieren, trainieren wir G, um logD(G(z)) zu maximieren. Diese Zielfunktion generiert die gleichen Fixpunkte für dynamisches G und D, bietet jedoch zu Beginn des Lernens stärkere Gradientenberechnungen. ——arxiv paper
Da wir zwei Modelle gleichzeitig trainieren, kann dies schwierig sein, und GANs sind bekanntermaßen schwer zu trainieren, das werden wir tun Eines der bekannten Probleme, die später besprochen werden, ist der sogenannte Moduskollaps.
Das Papier empfiehlt die Verwendung des Adam-Optimierers mit einer Lernrate von 0,0002. Eine so niedrige Lernrate weist darauf hin, dass GANs dazu neigen, sehr schnell zu divergieren. Außerdem nutzt es Impulse erster und zweiter Ordnung mit Werten von 0,5 und 0,999, um das Training weiter zu beschleunigen. Das Modell wird auf eine normalgewichtete Verteilung mit einem Mittelwert von Null und einer Standardabweichung von 0,02 initialisiert.
Im Folgenden wird gezeigt, wie wir hierfür eine Trainingsschleife implementieren (siehe https://github.com/akash-agni/ReadThePaper/blob/main/DCGAN/dcgan.py für den vollständigen Quellcode) . #? Vielzahl von Ausgängen. Wenn es beispielsweise Gesichter generiert, sollte es für jede zufällige Eingabe ein neues Gesicht generieren. Wenn der Generator jedoch eine hinreichend gute und plausible Ausgabe erzeugt, um den Diskriminator zu täuschen, kann es sein, dass er immer wieder die gleiche Ausgabe erzeugt.
Irgendwann wird der Generator einen einzelnen Diskriminator überoptimieren und zwischen einem kleinen Satz von Ausgängen wechseln, eine Situation, die als „Moduskollaps“ bezeichnet wird.
Die folgenden Methoden können verwendet werden, um die Situation zu korrigieren.Unrolled GAN-Methode (Unrolled GANs): Unrolled GAN verwendet eine Generatorverlustfunktion, die nicht nur die Klassifizierung des aktuellen Diskriminators, sondern auch die Ausgabe zukünftiger Diskriminatorversionen enthält. Daher kann der Generator nicht für einen einzelnen Diskriminator überoptimiert werden.
APPOriginaltitel:
Implementing Deep Convolutional GAN, Autor: Akash Agnihotri
Das obige ist der detaillierte Inhalt vonDeep Convolutional Generative Adversarial Network in der Praxis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!