Die Grundidee einer deterministischen Vielfalt generativer adversarialer Netzwerke (GANs) habe ich 2010 in einem Blogbeitrag (archive.org) selbst veröffentlicht . Ich hatte nach etwas Ähnlichem gesucht, konnte es aber nirgendwo finden und hatte keine Zeit, es umzusetzen. Ich war und bin kein Forscher für neuronale Netze und habe keine Verbindungen vor Ort. Ich werde den Blog-Post hier kopieren und einfügen:
2010-02-24
Eine Methode zum Trainieren künstlicher neuronaler Netze , um fehlende Daten in einem variablen Kontext zu generieren. Da die Idee schwer in einen einzigen Satz zu fassen ist, werde ich ein Beispiel verwenden:
In einem Bild fehlen möglicherweise Pixel (z. B. unter einem Fleck). Wie kann man die fehlenden Pixel wiederherstellen und nur die umliegenden Pixel kennen? Ein Ansatz wäre ein "Generator" -neurales Netzwerk, das unter Berücksichtigung der umgebenden Pixel als Eingabe die fehlenden Pixel erzeugt.
Aber wie trainiert man ein solches Netzwerk? Man kann nicht erwarten, dass das Netzwerk genau die fehlenden Pixel erzeugt. Stellen Sie sich zum Beispiel vor, dass die fehlenden Daten ein Stück Gras sind. Man könnte das Netzwerk mit einer Reihe von Rasenbildern unterrichten, wobei Teile entfernt wurden. Der Lehrer kennt die fehlenden Daten und kann das Netzwerk anhand der mittleren Quadratwurzeldifferenz (RMSD) zwischen dem generierten Grasfeld und den ursprünglichen Daten bewerten. Das Problem ist, dass, wenn der Generator auf ein Bild stößt, das nicht Teil des Trainingssatzes ist, das neuronale Netzwerk unmöglich alle Blätter, insbesondere in der Mitte des Pflasters, genau an den richtigen Stellen platzieren kann. Der niedrigste RMSD-Fehler würde wahrscheinlich dadurch erzielt, dass das Netzwerk den mittleren Bereich des Patches mit einer Volltonfarbe füllt, die dem Durchschnitt der Pixelfarbe in typischen Grasbildern entspricht. Wenn das Netzwerk versucht, Gras zu generieren, das für einen Menschen überzeugend aussieht und somit seinen Zweck erfüllt, würde die RMSD-Metrik eine unglückliche Strafe nach sich ziehen.
Meine Idee ist dies (siehe Abbildung unten): Trainieren Sie gleichzeitig mit dem Generator ein Klassifikator-Netzwerk, das in zufälliger oder alternierender Reihenfolge aus generierten und ursprünglichen Daten besteht. Der Klassifikator muss dann im Kontext des umgebenden Bildkontexts raten, ob die Eingabe original (1) oder generiert (0) ist. Gleichzeitig versucht das Generator-Netzwerk, vom Klassifikator einen Highscore (1) zu erhalten. Das Ergebnis ist hoffentlich, dass beide Netzwerke sehr einfach beginnen und Fortschritte beim Generieren und Erkennen immer weiter fortgeschrittener Funktionen machen, wobei die Fähigkeit des Menschen, zwischen den generierten Daten und dem Original zu unterscheiden, angegangen und möglicherweise beseitigt wird. Wenn für jede Punktzahl mehrere Trainingsmuster berücksichtigt werden, ist RMSD die richtige zu verwendende Fehlermetrik.
Künstliches neuronales Netzwerk-Trainingssetup
Wenn ich RMSD am Ende erwähne, meine ich die Fehlermetrik für die "Wahrscheinlichkeitsschätzung", nicht die Pixelwerte.
Ich habe ursprünglich im Jahr 2000 über die Verwendung neuronaler Netze nachgedacht (comp.dsp post) , um fehlende Hochfrequenzen für digitales Audio mit Aufwärtsabtastung (Aufwärtsabtastung auf eine höhere Abtastfrequenz) auf eine Weise zu erzeugen, die eher überzeugend als genau wäre. Im Jahr 2001 habe ich eine Audiobibliothek für das Training gesammelt. Hier sind Teile eines EFNet-Protokolls #musicdsp Internet Relay Chat (IRC) vom 20. Januar 2006, in dem ich (yehar) mit einem anderen Benutzer (_Beta) über die Idee spreche:
[22:18] <yehar> Das Problem mit Samples ist, dass, wenn Sie nicht schon etwas "da oben" haben, was Sie tun können, wenn Sie ein Upsampling durchführen ...
[22:22] <yehar> Ich habe einmal ein großes gesammelt Bibliothek von Sounds, damit ich ein "intelligentes" Algo entwickeln kann, um genau dieses Problem zu lösen
[22:22] <yehar> Ich hätte neuronale Netze verwendet
[22:22] <yehar>, aber ich habe den Job nicht beendet: - D
[22:23] <_Beta> Problem mit neuronalen Netzen ist, dass Sie eine Möglichkeit haben müssen, die Güte der Ergebnisse zu
messen Gleichzeitig mit der Entwicklung des "Smart Up-There Sound Creator"
[22:26] <yehar> beta: und dieser Zuhörer lernt zu erkennen, wann er ein erstelltes oder ein natürliches Spektrum von oben hört. und der Schöpfer entwickelt sich gleichzeitig, um zu versuchen, diese Entdeckung zu umgehen
Irgendwann zwischen 2006 und 2010 lud ein Freund einen Experten ein, sich meine Idee anzuschauen und mit mir zu diskutieren. Sie hielten es für interessant, sagten jedoch, dass es nicht wirtschaftlich sei, zwei Netzwerke zu trainieren, wenn ein einziges Netzwerk die Aufgabe übernehmen könne. Ich war mir nie sicher, ob sie die Kernidee nicht verstanden haben oder ob sie sofort einen Weg sahen, sie als ein einziges Netzwerk zu formulieren, vielleicht mit einem Engpass in der Topologie, um sie in zwei Teile zu unterteilen. Dies war zu einer Zeit, als ich nicht einmal wusste, dass Backpropagation immer noch die de-facto-Trainingsmethode ist (lernte, dass das Erstellen von Videos in der Deep Dream-Begeisterung von 2015). Im Laufe der Jahre hatte ich mit ein paar Data Scientists und anderen über meine Idee gesprochen, von denen ich dachte, dass sie interessiert wären, aber die Reaktion war mild.
Im Mai 2017 habe ich Ian Goodfellows Tutorial-Präsentation auf YouTube [Mirror] gesehen , die meinen Tag total verschönert hat. Es schien mir die gleiche Grundidee zu sein, mit Unterschieden, wie ich sie derzeit verstehe, und die harte Arbeit war geleistet worden, um gute Ergebnisse zu erzielen. Er gab auch eine Theorie an oder gründete alles auf einer Theorie, warum es funktionieren sollte, während ich nie irgendeine formale Analyse meiner Idee durchführte. Goodfellow's Präsentation beantwortete Fragen, die ich hatte und vieles mehr.
Goodfellows GAN und seine vorgeschlagenen Erweiterungen enthalten eine Geräuschquelle im Generator. Ich habe nie daran gedacht, eine Rauschquelle einzuschließen, sondern stattdessen den Trainingsdatenkontext, um die Idee besser auf eine bedingte GAN (cGAN) ohne Rauschvektoreingabe abzustimmen und das Modell von einem Teil der Daten abhängig zu machen. Mein aktuelles Verständnis basiert auf Mathieu et al. 2016 ist, dass eine Rauschquelle für nützliche Ergebnisse nicht benötigt wird, wenn es genügend Eingangsvariabilität gibt. Der andere Unterschied besteht darin, dass die GAN von Goodfellow die Wahrscheinlichkeit von Logarithmen minimiert. Später wurde ein Least-Squares-GAN (LSGAN) eingeführt ( Mao et al. 2017)), der meinem RMSD-Vorschlag entspricht. Meine Idee würde also der eines generativen adversarischen Netzwerks mit bedingten kleinsten Quadraten (cLSGAN) ohne eine Rauschvektoreingabe in den Generator und mit einem Teil der Daten als Konditioniereingabe entsprechen. Ein generativer Generator tastet eine Approximation der Datenverteilung ab. Ich weiß jetzt, ob und bezweifle, dass reale, verrauschte Eingaben dies mit meiner Idee ermöglichen würden, aber das heißt nicht, dass die Ergebnisse nicht nützlich wären, wenn dies nicht der Fall wäre.
Die oben genannten Unterschiede sind der Hauptgrund, warum Goodfellow meiner Meinung nach weder etwas über meine Idee wusste noch davon hörte. Ein weiterer Grund ist, dass mein Blog keinen anderen maschinellen Lerninhalt hat, sodass er in maschinellen Lernkreisen nur in sehr begrenztem Umfang verwendet wird.
Es liegt ein Interessenkonflikt vor, wenn ein Rezensent Druck auf einen Autor ausübt, die eigene Arbeit des Rezensenten zu zitieren.