Generative Modelle
Dieser Beitrag beschreibt vier Projekte, die ein gemeinsames Thema haben: Die Verbesserung oder Verwendung generativer Modelle, einem Zweig unbeaufsichtigter Lerntechniken im maschinellen Lernen. Neben der Beschreibung unserer Arbeit wird Ihnen dieser Beitrag etwas mehr über generative Modelle erzählen: Was sie sind, warum sie wichtig sind und wohin sie gehen könnten.
Eines unserer Kernanliegen bei OpenAI ist es, Algorithmen und Techniken zu entwickeln, die Computern ein Verständnis unserer Welt vermitteln.
Es ist leicht zu vergessen, wie viel Sie über die Welt wissen: sie verstehen, dass es aus 3D-Umgebungen besteht, Objekten, die sich bewegen, kollidieren, interagieren; Menschen, die gehen, sprechen und denken; Tiere, die grasen, fliegen, rennen oder bellen; Monitore, die in Sprache codierte Informationen über das Wetter anzeigen, wer ein Basketballspiel gewonnen hat oder was 1970 passiert ist.
Diese enorme Menge an Informationen ist da draußen und zu einem großen Teil leicht zugänglich — entweder in der physischen Welt der Atome oder in der digitalen Welt der Bits. Der einzige knifflige Teil besteht darin, Modelle und Algorithmen zu entwickeln, die diesen Datenschatz analysieren und verstehen können.
Generative Modelle sind einer der vielversprechendsten Ansätze für dieses Ziel. Um ein generatives Modell zu trainieren, sammeln wir zunächst eine große Datenmenge in einem bestimmten Bereich (z. B. Millionen von Bildern, Sätzen oder Tönen usw.) und trainieren Sie dann ein Modell, um solche Daten zu generieren. Die Intuition hinter diesem Ansatz folgt einem berühmten Zitat von Richard Feynman:
„Was ich nicht erschaffen kann, verstehe ich nicht.“
—Richard Feynman
Der Trick ist, dass die neuronalen Netze, die wir als generative Modelle verwenden, eine Reihe von Parametern haben, die signifikant kleiner sind als die Datenmenge, mit der wir sie trainieren, sodass die Modelle gezwungen sind, die Essenz der Daten zu entdecken und effizient zu verinnerlichen, um sie zu generieren.
Generative Modelle haben viele kurzfristige Anwendungen. Auf lange Sicht haben sie jedoch das Potenzial, die natürlichen Merkmale eines Datensatzes automatisch zu lernen, ob Kategorien oder Dimensionen oder etwas ganz anderes.
Bilder erzeugen
Lassen Sie uns dies anhand eines Beispiels konkreter machen. Angenommen, wir haben eine große Sammlung von Bildern, z. B. die 1,2 Millionen Bilder im ImageNet-Datensatz (denken Sie jedoch daran, dass dies möglicherweise eine große Sammlung von Bildern oder Videos aus dem Internet oder Robotern sein könnte). Wenn wir die Größe jedes Bildes auf eine Breite und Höhe von 256 (wie üblich) ändern, ist unser Datensatz ein großer 1,200,000x256x256x3
(etwa 200 GB) Pixelblock. Hier sind einige Beispielbilder aus diesem Datensatz:
Diese Bilder sind Beispiele dafür, wie unsere visuelle Welt aussieht, und wir bezeichnen sie als „Beispiele aus der wahren Datenverteilung“. Wir konstruieren jetzt unser generatives Modell, das wir trainieren möchten, um solche Bilder von Grund auf neu zu generieren. Konkret könnte ein generatives Modell in diesem Fall eins sein großes neuronales Netzwerk Das gibt Bilder aus und wir bezeichnen diese als „Beispiele aus dem Modell“.
DCGAN
Ein solches aktuelles Modell ist das DCGAN-Netzwerk von Radford et al. (siehe unten). Dieses Netzwerk nimmt als Eingabe 100 Zufallszahlen aus einer gleichmäßigen Verteilung (wir bezeichnen diese als Code oder latente Variablen in rot) und gibt ein Bild aus (in diesem Fall 64x64x3
Bilder rechts in grün). Wenn der Code schrittweise geändert wird, tun dies auch die generierten Bilder — dies zeigt, dass das Modell Funktionen gelernt hat, um zu beschreiben, wie die Welt aussieht, anstatt sich nur einige Beispiele zu merken.
Das Netzwerk (in gelb) besteht aus Standardkomponenten des faltungsneuralen Netzwerks, wie dekonvolutionellen Schichten (Umkehrung der Faltungsschichten), vollständig verbundenen Schichten usw.:
DCGAN wird mit zufälligen Gewichtungen initialisiert, sodass ein zufälliger Code, der an das Netzwerk angeschlossen ist, ein völlig zufälliges Bild erzeugt. Wie Sie sich jedoch vorstellen können, verfügt das Netzwerk über Millionen von Parametern, die wir optimieren können, und das Ziel ist es, eine Einstellung dieser Parameter zu finden, mit der aus Zufallscodes generierte Stichproben wie die Trainingsdaten aussehen. Oder anders ausgedrückt, wir möchten, dass die Modellverteilung der wahren Datenverteilung im Raum der Bilder entspricht.
Ein generatives Modell trainieren
Angenommen, wir haben ein neu initialisiertes Netzwerk verwendet, um 200 Bilder zu generieren, jedes Mal beginnend mit einem anderen Zufallscode. Die Frage ist: Wie sollten wir die Parameter des Netzwerks anpassen, um es zu ermutigen, in Zukunft etwas glaubwürdigere Proben zu produzieren? Beachten Sie, dass wir uns nicht in einer einfachen überwachten Umgebung befinden und keine expliziten gewünschten Ziele für unsere 200 generierten Bilder haben. Ein cleverer Ansatz für dieses Problem besteht darin, dem Generative Adversarial Network (GAN) -Ansatz zu folgen. Hier stellen wir ein zweites Diskriminatornetzwerk vor (normalerweise ein standardmäßiges faltungsneurales Netzwerk), das versucht zu klassifizieren, ob ein Eingabebild real oder erzeugt ist. Zum Beispiel könnten wir die 200 generierten Bilder und 200 realen Bilder in den Diskriminator einspeisen und ihn als Standardklassifikator trainieren, um zwischen den beiden Quellen zu unterscheiden. Aber zusätzlich dazu — und hier ist der Trick – können wir auch sowohl den Diskriminator als auch den Generator backpropagieren, um herauszufinden, wie wir die Parameter des Generators ändern sollten, um seine 200 Samples für den Diskriminator etwas verwirrender zu machen. Diese beiden Netzwerke sind daher in einen Kampf verwickelt: Der Diskriminator versucht, echte Bilder von gefälschten Bildern zu unterscheiden, und der Generator versucht, Bilder zu erstellen, die den Diskriminator für real halten. Am Ende gibt das Generatornetzwerk Bilder aus, die für den Diskriminator nicht von realen Bildern zu unterscheiden sind.
Es gibt ein paar andere Ansätze, um diese Verteilungen anzupassen, die wir im Folgenden kurz diskutieren werden. Aber bevor wir dort ankommen, sind unten zwei Animationen, die Beispiele aus einem generativen Modell zeigen, um Ihnen ein visuelles Gefühl für den Trainingsprozess zu geben.
In beiden Fällen beginnen die Proben aus dem Generator verrauscht und chaotisch, und im Laufe der Zeit konvergieren plausiblere Bildstatistik zu haben:
Das ist aufregend — diese neuronalen Netze lernen, wie die visuelle Welt aussieht! Diese Modelle haben normalerweise nur etwa 100 Millionen Parameter, sodass ein auf ImageNet trainiertes Netzwerk 200 GB Pixeldaten (verlustfrei) in 100 MB Gewichte komprimieren muss. Dies ist ein Anreiz, die hervorstechendsten Merkmale der Daten zu entdecken: Zum Beispiel wird es wahrscheinlich erfahren, dass Pixel in der Nähe wahrscheinlich die gleiche Farbe haben oder dass die Welt aus horizontalen oder vertikalen Kanten oder Blobs unterschiedlicher Farben besteht. Schließlich kann das Modell viele komplexere Gesetzmäßigkeiten entdecken: dass es bestimmte Arten von Hintergründen, Objekten, Texturen gibt, dass sie in bestimmten wahrscheinlichen Anordnungen auftreten oder dass sie sich im Laufe der Zeit in Videos auf bestimmte Weise verändern usw.
Allgemeinere Formulierung
Mathematisch betrachten wir einen Datensatz von Beispielen \(x_1, \ldots, x_n\) als Beispiele aus einer echten Datenverteilung \(p(x)\). Im Beispielbild unten zeigt der blaue Bereich den Teil des Bildraums, der mit hoher Wahrscheinlichkeit (über einem bestimmten Schwellenwert) echte Bilder enthält, und schwarze Punkte zeigen unsere Datenpunkte an (jeder ist ein Bild in unserem Datensatz). Nun beschreibt unser Modell auch eine Verteilung \(\hat{p}_{\theta} (x)\) (grün), die implizit definiert wird, indem Punkte aus einer gaußschen Einheitsverteilung (rot) genommen und durch ein (deterministisches) neuronales Netzwerk abgebildet werden — unser generatives Modell (gelb). Unser Netzwerk ist eine Funktion mit den Parametern \ (\ theta\), und das Optimieren dieser Parameter optimiert die generierte Verteilung von Bildern. Unser Ziel ist es dann, Parameter \ (\theta\) zu finden, die eine Verteilung erzeugen, die der tatsächlichen Datenverteilung sehr nahe kommt (z. B. durch einen kleinen KL-Divergenzverlust). Daher können Sie sich vorstellen, dass die grüne Verteilung zufällig beginnt und dann der Trainingsprozess die Parameter \ (\ theta \) iterativ ändert, um sie zu dehnen und zu quetschen, um sie besser an die blaue Verteilung anzupassen.
Drei Ansätze für generative Modelle
Die meisten generativen Modelle haben diese Grundeinstellung, unterscheiden sich jedoch in den Details. Hier sind drei beliebte Beispiele für generative Modellansätze, um Ihnen ein Gefühl für die Variation zu geben:Generative Adversarial Networks (GANs), die wir bereits oben besprochen haben, stellen den Trainingsprozess als ein Spiel zwischen zwei getrennten Netzwerken dar: einem Generatornetzwerk (wie oben gesehen) und einem zweiten diskriminativen Netzwerk, das versucht, Proben entweder als von der wahren Verteilung \(p (x) \) oder der Modellverteilung \(\hat{p}(x) \) kommend zu klassifizieren. Jedes Mal, wenn der Diskriminator einen Unterschied zwischen den beiden Verteilungen bemerkt, passt der Generator seine Parameter leicht an, um ihn verschwinden zu lassen, bis der Generator am Ende (theoretisch) genau die wahre Datenverteilung reproduziert und der Diskriminator zufällig rät, nicht in der Lage, einen Unterschied zu finden.Variational Autoencoder (VAEs) erlauben es uns, dieses Problem im Rahmen probabilistischer grafischer Modelle zu formalisieren, bei denen wir eine untere Grenze für die Log-Wahrscheinlichkeit der Daten maximieren.Autoregressive Modelle wie PixelRNN trainieren stattdessen ein Netzwerk, das die bedingte Verteilung jedes einzelnen Pixels bei vorherigen Pixeln (nach links und nach oben) modelliert. Dies ähnelt dem Einstecken der Pixel des Bildes in ein char-rnn , aber die RNNs verlaufen sowohl horizontal als auch vertikal über das Bild anstelle nur einer 1D-Zeichenfolge.
Alle diese Ansätze haben ihre Vor- und Nachteile. Zum Beispiel erlauben uns Variations-Autoencoder, sowohl Lern- als auch effiziente Bayes-Inferenz in ausgeklügelten probabilistischen grafischen Modellen mit latenten Variablen durchzuführen (z. B. siehe DRAW oder Siehe Infer Repeat für Hinweise auf neuere relativ komplexe Modelle). Ihre erzeugten Samples neigen jedoch dazu, etwas verschwommen zu sein. GANs erzeugen derzeit die schärfsten Bilder, sind jedoch aufgrund der instabilen Trainingsdynamik schwieriger zu optimieren. PixelRNNs haben einen sehr einfachen und stabilen Trainingsprozess (Softmax-Verlust) und bieten derzeit die besten Log-Wahrscheinlichkeiten (dh Plausibilität der generierten Daten). Sie sind jedoch während der Abtastung relativ ineffizient und liefern nicht einfach einfache niedrigdimensionale Codes für Bilder. Alle diese Modelle sind aktive Forschungsbereiche und wir sind gespannt, wie sie sich in Zukunft entwickeln werden!
Unsere jüngsten Beiträge
Wir freuen uns sehr über generative Modelle bei OpenAI und haben gerade vier Projekte veröffentlicht, die den Stand der Technik vorantreiben. Für jeden dieser Beiträge veröffentlichen wir auch einen technischen Bericht und Quellcode.
Verbesserung von GANs (Code). Erstens sind GANs, wie oben erwähnt, eine vielversprechende Familie generativer Modelle, da sie im Gegensatz zu anderen Methoden sehr saubere und scharfe Bilder erzeugen und Codes lernen, die wertvolle Informationen über diese Texturen enthalten. GANs sind jedoch als Spiel zwischen zwei Netzwerken formuliert und es ist wichtig (und knifflig!), um sie im Gleichgewicht zu halten: Zum Beispiel können sie zwischen Lösungen oszillieren, oder der Generator neigt zum Kollabieren. In dieser Arbeit haben Tim Salimans, Ian Goodfellow, Wojciech Zaremba und Kollegen einige neue Techniken eingeführt, um das GAN-Training stabiler zu machen. Mit diesen Techniken können wir GANs skalieren und schöne 128x128
ImageNet-Beispiele erhalten:
Our CIFAR-10 samples also look very sharp – Amazon Mechanical Turk workers can distinguish our samples from real data with an error rate of 21.3% (50% would be random guessing):
In addition to generating pretty pictures, we introduce an approach for semi-supervised learning with GANs that involves the discriminator producing an additional output indicating the label of the input. Dieser Ansatz ermöglicht es uns, Stand der Technik Ergebnisse auf MNIST, SVHN und CIFAR-10 in Einstellungen mit sehr wenigen markierten Beispielen zu erhalten. Auf MNIST zum Beispiel erreichen wir eine Genauigkeit von 99,14% mit nur 10 markierten Beispielen pro Klasse mit einem vollständig verbundenen neuronalen Netzwerk — ein Ergebnis, das den bekanntesten Ergebnissen mit vollständig überwachten Ansätzen mit allen 60.000 markierten Beispielen sehr nahe kommt. Dies ist sehr vielversprechend, da beschriftete Beispiele in der Praxis recht teuer sein können.
Generative kontradiktorische Netzwerke sind ein relativ neues Modell (erst vor zwei Jahren eingeführt), und wir erwarten schnellere Fortschritte bei der weiteren Verbesserung der Stabilität dieser Modelle während des Trainings.
Verbesserung von VAEs (Code). In dieser Arbeit stellen Durk Kingma und Tim Salimans eine flexible und rechnerisch skalierbare Methode zur Verbesserung der Genauigkeit der Variationsinferenz vor. Insbesondere wurden die meisten VAEs bisher mit groben approximativen Posterioren trainiert, wobei jede latente Variable unabhängig ist. Neuere Erweiterungen haben dieses Problem behoben, indem sie jede latente Variable auf die anderen vorher in einer Kette konditioniert haben, aber dies ist aufgrund der eingeführten sequentiellen Abhängigkeiten rechnerisch ineffizient. Der Kernbeitrag dieser Arbeit, der als inverse autoregressive Strömung (IAF) bezeichnet wird, ist ein neuer Ansatz, der es uns im Gegensatz zu früheren Arbeiten ermöglicht, die Berechnung reicher ungefährer Posterioren zu parallelisieren und sie nahezu beliebig flexibel zu machen.
Wir zeigen ein Beispiel 32x32
Bildbeispiele aus dem Modell im Bild unten rechts. Auf der linken Seite befinden sich frühere Beispiele aus dem DRAW-Modell zum Vergleich (Vanilla VAE-Beispiele würden noch schlechter und verschwommener aussehen). Das DRAW-Modell wurde erst vor einem Jahr veröffentlicht und unterstreicht erneut die raschen Fortschritte bei der Ausbildung generativer Modelle.
Infografik (Code). Peter Chen und Kollegen stellen InfoGAN vor – eine Erweiterung von GAN, die entwirrte und interpretierbare Darstellungen für Bilder lernt. Ein regulärer GAN erreicht das Ziel, die Datenverteilung im Modell zu reproduzieren, aber das Layout und die Organisation des Coderaums sind unterspezifiziert — es gibt viele mögliche Lösungen, um die Einheit Gauß auf Bilder abzubilden, und die, die wir am Ende haben, könnte kompliziert und stark verstrickt sein. Die Infografik fügt diesem Raum zusätzliche Struktur hinzu, indem sie neue Ziele hinzufügt, die die Maximierung der gegenseitigen Information zwischen kleinen Teilmengen der Repräsentationsvariablen und der Beobachtung beinhalten. Dieser Ansatz liefert bemerkenswerte Ergebnisse. Zum Beispiel variieren wir in den Bildern von 3D-Gesichtern unten eine kontinuierliche Dimension des Codes und halten alle anderen fest. Aus den fünf bereitgestellten Beispielen (entlang jeder Zeile) geht hervor, dass die resultierenden Dimensionen im Code interpretierbare Dimensionen erfassen und dass das Modell möglicherweise verstanden hat, dass es Kamerawinkel, Gesichtsvariationen usw. gibt., ohne gesagt worden zu sein, dass diese Eigenschaften existieren und wichtig sind:
We also note that nice, disentangled representations have been erreicht (wie mit DC-IGN von Kulkarni et al.), aber diese Ansätze beruhen auf zusätzlicher Überwachung, während unser Ansatz völlig unbeaufsichtigt ist.
Die nächsten beiden aktuellen Projekte sind in einem Reinforcement Learning (RL) -Setting (ein weiterer Schwerpunkt bei OpenAI), aber beide beinhalten eine generative Modellkomponente.Curiosity-driven Exploration in Deep Reinforcement Learning über Bayes’Sche Neuronale Netze (Code). Effiziente Exploration in hochdimensionalen und kontinuierlichen Räumen ist derzeit eine ungelöste Herausforderung im Reinforcement Learning. Ohne effektive Erkundungsmethoden schlagen unsere Agenten herum, bis sie zufällig in lohnende Situationen geraten. Dies ist bei vielen einfachen Spielzeugaufgaben ausreichend, aber unzureichend, wenn wir diese Algorithmen auf komplexe Settings mit hochdimensionalen Aktionsräumen anwenden wollen, wie es in der Robotik üblich ist. In diesem Papier schlagen Rein Houthooft und Kollegen VIME vor, einen praktischen Ansatz zur Exploration unter Verwendung von Unsicherheit in generativen Modellen. VIME macht den Agenten selbstmotiviert; es sucht aktiv nach überraschenden Zustandsaktionen. Wir zeigen, dass VIME eine Reihe von Richtliniensuchmethoden verbessern kann und bei realistischeren Aufgaben mit geringen Belohnungen erhebliche Fortschritte erzielt (z. B. Szenarien, in denen der Agent Locomotion Primitives ohne Anleitung lernen muss).
Schließlich möchten wir ein fünftes Bonusprojekt aufnehmen: Generative Adversarial Imitation Learning (code), in dem Jonathan Ho und Kollegen einen neuen Ansatz für das Imitationslernen vorstellen. Jonathan Ho kommt als Sommerpraktikant zu uns bei OpenAI. Er hat den größten Teil dieser Arbeit in Stanford geleistet, aber wir beziehen sie hier als verwandte und sehr kreative Anwendung von GANs auf RL ein. Bei der Standardeinstellung für Verstärkungslernen muss normalerweise eine Belohnungsfunktion entworfen werden, die das gewünschte Verhalten des Agenten beschreibt. In der Praxis kann dies jedoch manchmal einen teuren Trial-and-Error-Prozess beinhalten, um die Details richtig zu machen. Im Gegensatz dazu lernt der Agent beim Imitationslernen aus Beispieldemonstrationen (zum Beispiel durch Teleoperation in der Robotik), wodurch die Notwendigkeit entfällt, eine Belohnungsfunktion zu entwerfen.
Beliebte Imitationsansätze beinhalten eine zweistufige Pipeline: Zuerst wird eine Belohnungsfunktion gelernt und dann RL für diese Belohnung ausgeführt. Eine solche Pipeline kann langsam sein, und da sie indirekt ist, ist es schwierig zu garantieren, dass die resultierende Richtlinie gut funktioniert. Diese Arbeit zeigt, wie man Richtlinien direkt aus Daten über eine Verbindung zu GANs extrahieren kann. Infolgedessen kann dieser Ansatz verwendet werden, um Richtlinien aus Expertendemonstrationen (ohne Belohnungen) in harten OpenAI-Fitnessumgebungen wie Ant und Humanoid zu lernen.
In Zukunft
Generative Modelle sind ein schnell voranschreitendes Forschungsgebiet. Wenn wir diese Modelle weiterentwickeln und das Training und die Datensätze skalieren, können wir erwarten, dass wir schließlich Stichproben generieren, die völlig plausible Bilder oder Videos darstellen. Dies kann von sich aus in mehreren Anwendungen verwendet werden, z. B. in On-Demand-generierten Grafiken oder Photoshop ++ – Befehlen wie „make my smile widder“. Weitere derzeit bekannte Anwendungen umfassen Bildrauschen, Inpainting, Superauflösung, strukturierte Vorhersage, Exploration beim Verstärkungslernen und neuronales Netzwerk-Pretraining in Fällen, in denen markierte Daten teuer sind.
Das tiefere Versprechen dieser Arbeit ist jedoch, dass wir dem Computer beim Training generativer Modelle ein Verständnis der Welt und ihrer Zusammensetzung vermitteln werden.
Leave a Reply