Articles

Modèles génératifs

Cet article décrit quatre projets qui partagent un thème commun d’amélioration ou d’utilisation de modèles génératifs, une branche des techniques d’apprentissage non supervisées dans l’apprentissage automatique. En plus de décrire notre travail, cet article vous en dira un peu plus sur les modèles génératifs: ce qu’ils sont, pourquoi ils sont importants et où ils pourraient aller.

L’une de nos principales aspirations chez OpenAI est de développer des algorithmes et des techniques qui dotent les ordinateurs d’une compréhension de notre monde.

Il est facile d’oublier tout ce que vous savez sur le monde: vous comprenez qu’il est composé d’environnements 3D, d’objets qui se déplacent, se heurtent, interagissent; de personnes qui marchent, parlent et pensent; d’animaux qui paissent, volent, courent ou aboient; de moniteurs qui affichent des informations codées dans le langage sur la météo, qui a gagné un match de basket ou ce qui s’est passé en 1970.

Cette énorme quantité d’informations est disponible et dans une large mesure facilement accessible, que ce soit dans le monde physique des atomes ou dans le monde numérique des bits. La seule partie délicate est de développer des modèles et des algorithmes capables d’analyser et de comprendre ce trésor de données.

Les modèles génératifs sont l’une des approches les plus prometteuses pour atteindre cet objectif. Pour former un modèle génératif, nous collectons d’abord une grande quantité de données dans un domaine donné (par exemple, pensez à des millions d’images, de phrases ou de sons, etc.) puis entraînez un modèle pour générer des données comme celle-ci. L’intuition derrière cette approche suit une citation célèbre de Richard Feynman:

« Ce que je ne peux pas créer, je ne comprends pas. »

– Richard Feynman

L’astuce est que les réseaux de neurones que nous utilisons en tant que modèles génératifs ont un nombre de paramètres nettement inférieur à la quantité de données sur lesquelles nous les entraînons, de sorte que les modèles sont obligés de découvrir et d’internaliser efficacement l’essence des données afin de les générer.

Les modèles génératifs ont de nombreuses applications à court terme. Mais à long terme, ils ont le potentiel d’apprendre automatiquement les caractéristiques naturelles d’un ensemble de données, qu’il s’agisse de catégories ou de dimensions ou d’autre chose entièrement.

Génération d’images

Rendons cela plus concret avec un exemple. Supposons que nous ayons une grande collection d’images, telles que les 1,2 million d’images de l’ensemble de données ImageNet (mais gardez à l’esprit que cela pourrait éventuellement être une grande collection d’images ou de vidéos provenant d’Internet ou de robots). Si nous redimensionnons chaque image pour qu’elle ait une largeur et une hauteur de 256 (comme cela est couramment fait), notre jeu de données est un gros bloc de pixels 1,200,000x256x256x3 (environ 200 Go). Voici quelques exemples d’images de cet ensemble de données:

Ces images sont des exemples de ce à quoi ressemble notre monde visuel et nous les appelons « échantillons de la vraie distribution de données ». Nous construisons maintenant notre modèle génératif que nous aimerions entraîner pour générer des images comme celle-ci à partir de zéro. Concrètement, un modèle génératif dans ce cas pourrait être un grand réseau de neurones qui produit des images et nous les appelons des « échantillons du modèle ».

DCGAN

Un de ces modèles récents est le réseau DCGAN de Radford et al. (voir ci-dessous). Ce réseau prend en entrée 100 nombres aléatoires tirés d’une distribution uniforme (on parle de code, ou variables latentes, en rouge) et sort une image (dans ce cas 64x64x3 images à droite, en vert). Comme le code est modifié progressivement, les images générées le font aussi — cela montre que le modèle a appris des fonctionnalités pour décrire l’apparence du monde, plutôt que de simplement mémoriser quelques exemples.

Le réseau (en jaune) est composé de composants de réseau de neurones convolutionnels standard, tels que des couches déconvolutionnelles (inverse des couches convolutionnelles), des couches entièrement connectées, etc.:

DCGAN est initialisé avec des poids aléatoires, de sorte qu’un code aléatoire branché sur le réseau générerait une image complètement aléatoire. Cependant, comme vous pouvez l’imaginer, le réseau a des millions de paramètres que nous pouvons modifier, et l’objectif est de trouver un réglage de ces paramètres qui fait que les échantillons générés à partir de codes aléatoires ressemblent aux données d’entraînement. Ou pour le dire autrement, nous voulons que la distribution du modèle corresponde à la vraie distribution des données dans l’espace des images.

Formation d’un modèle génératif

Supposons que nous utilisions un réseau nouvellement initialisé pour générer 200 images, en commençant à chaque fois par un code aléatoire différent. La question est: comment ajuster les paramètres du réseau pour l’encourager à produire des échantillons un peu plus crédibles à l’avenir? Notez que nous ne sommes pas dans un cadre supervisé simple et que nous n’avons pas de cibles souhaitées explicites pour nos 200 images générées; nous voulons simplement qu’elles aient l’air réelles. Une approche intelligente autour de ce problème consiste à suivre l’approche du Réseau contradictoire génératif (GAN). Nous introduisons ici un deuxième réseau discriminateur (généralement un réseau de neurones convolutifs standard) qui tente de classer si une image d’entrée est réelle ou générée. Par exemple, nous pourrions introduire les 200 images générées et les 200 images réelles dans le discriminateur et l’entraîner en tant que classificateur standard pour distinguer les deux sources. Mais en plus de cela — et voici l’astuce — nous pouvons également rétropropaguer à la fois le discriminateur et le générateur pour trouver comment nous devrions modifier les paramètres du générateur pour rendre ses 200 échantillons un peu plus déroutants pour le discriminateur. Ces deux réseaux sont donc enfermés dans une bataille: le discriminateur essaie de distinguer les images réelles des images fausses et le générateur essaie de créer des images qui font croire au discriminateur qu’elles sont réelles. En fin de compte, le réseau générateur délivre des images indiscernables des images réelles pour le discriminateur.

Il existe quelques autres approches pour faire correspondre ces distributions dont nous discuterons brièvement ci-dessous. Mais avant d’y arriver, voici deux animations qui montrent des échantillons d’un modèle génératif pour vous donner un sens visuel du processus de formation.
Dans les deux cas, les échantillons du générateur commencent bruyants et chaotiques, et au fil du temps convergent pour avoir des statistiques d’image plus plausibles:

VAE apprendre à générer des images (temps de journalisation)
GAN apprend à générer des images (temps linéaire)

C’est excitant — ces réseaux de neurones apprennent à quoi ressemble le monde visuel! Ces modèles n’ont généralement qu’environ 100 millions de paramètres, de sorte qu’un réseau formé sur ImageNet doit compresser (avec perte) 200 Go de données de pixels en 100 Mo de poids. Cela l’incite à découvrir les caractéristiques les plus saillantes des données: par exemple, il apprendra probablement que les pixels à proximité sont susceptibles d’avoir la même couleur, ou que le monde est composé de bords horizontaux ou verticaux, ou de taches de couleurs différentes. Éventuellement, le modèle peut découvrir des régularités beaucoup plus complexes: qu’il existe certains types d’arrière-plans, d’objets, de textures, qu’ils se produisent dans certains arrangements probables, ou qu’ils se transforment de certaines manières au fil du temps en vidéos, etc.

Formulation plus générale

Mathématiquement, nous considérons un ensemble de données d’exemples \(x_1, \ldots, x_n\) comme des échantillons d’une vraie distribution de données \(p(x)\). Dans l’exemple d’image ci-dessous, la région bleue montre la partie de l’espace d’image qui, avec une forte probabilité (au-delà d’un certain seuil) contient des images réelles, et les points noirs indiquent nos points de données (chacun est une image dans notre jeu de données). Maintenant, notre modèle décrit également une distribution \(\hat{p}_{\theta}(x)\) (vert) qui est définie implicitement en prenant des points d’une distribution gaussienne unitaire (rouge) et en les mappant à travers un réseau de neurones (déterministe) — notre modèle génératif (jaune). Notre réseau est une fonction avec des paramètres \(\thêta\), et l’ajustement de ces paramètres modifiera la distribution générée des images. Notre objectif est alors de trouver des paramètres \(\thêta\) qui produisent une distribution qui correspond étroitement à la vraie distribution de données (par exemple, en ayant une petite perte de divergence KL). Par conséquent, vous pouvez imaginer que la distribution verte commence de manière aléatoire, puis que le processus d’entraînement modifie de manière itérative les paramètres \(\thêta\) pour l’étirer et le presser pour mieux correspondre à la distribution bleue.

Trois approches des modèles génératifs

La plupart des modèles génératifs ont cette configuration de base, mais diffèrent dans les détails. Voici trois exemples populaires d’approches de modèles génératifs pour vous donner une idée de la variation:

  • Les réseaux antagonistes génératifs (GAN), dont nous avons déjà parlé ci-dessus, posent le processus d’entraînement comme un jeu entre deux réseaux distincts : un réseau générateur (comme vu ci-dessus) et un deuxième réseau discriminatif qui tente de classer les échantillons comme provenant de la distribution vraie \(p(x)\) ou de la distribution modèle \(\hat{p}(x)\). Chaque fois que le discriminateur remarque une différence entre les deux distributions, le générateur ajuste légèrement ses paramètres pour le faire disparaître, jusqu’à ce qu’à la fin (en théorie) le générateur reproduise exactement la vraie distribution de données et le discriminateur devine au hasard, incapable de trouver une différence.
  • Les autoencodeurs variationnels (VAES) nous permettent de formaliser ce problème dans le cadre de modèles graphiques probabilistes où nous maximisons une limite inférieure sur la probabilité logarithmique des données.
  • Les modèles autorégressifs tels que PixelRNN entraînent à la place un réseau qui modélise la distribution conditionnelle de chaque pixel individuel en fonction des pixels précédents (à gauche et en haut). Ceci est similaire au branchement des pixels de l’image dans un char-rnn, mais les RNN s’exécutent à la fois horizontalement et verticalement sur l’image au lieu d’une séquence de caractères 1D.

Toutes ces approches ont leurs avantages et leurs inconvénients. Par exemple, les Autoencodeurs variationnels nous permettent d’effectuer à la fois un apprentissage et une inférence bayésienne efficace dans des modèles graphiques probabilistes sophistiqués avec des variables latentes (par exemple, voir DESSINER ou Assister à la répétition d’Inférer pour des indices de modèles relativement complexes récents). Cependant, leurs échantillons générés ont tendance à être légèrement flous. Les GAN génèrent actuellement les images les plus nettes, mais elles sont plus difficiles à optimiser en raison de la dynamique d’entraînement instable. Les PIXELRNN ont un processus d’entraînement très simple et stable (perte softmax) et donnent actuellement les meilleures probabilités de log (c’est-à-dire la plausibilité des données générées). Cependant, ils sont relativement inefficaces lors de l’échantillonnage et ne fournissent pas facilement de codes simples à faible dimension pour les images. Tous ces modèles sont des domaines de recherche actifs et nous sommes impatients de voir comment ils se développeront à l’avenir!

Nos récentes contributions

Nous sommes très enthousiastes à propos des modèles génératifs chez OpenAI, et nous venons de publier quatre projets qui font progresser l’état de l’art. Pour chacune de ces contributions, nous publions également un rapport technique et un code source.

Amélioration des GaNS (code). Premièrement, comme mentionné ci-dessus, les GAN constituent une famille de modèles génératifs très prometteuse car, contrairement à d’autres méthodes, ils produisent des images très nettes et nettes et apprennent des codes contenant des informations précieuses sur ces textures. Cependant, les GAN sont formulés comme un jeu entre deux réseaux et c’est important (et délicat !) pour les maintenir en équilibre: par exemple, ils peuvent osciller entre les solutions, ou le générateur a tendance à s’effondrer. Dans ce travail, Tim Salimans, Ian Goodfellow, Wojciech Zaremba et ses collègues ont introduit quelques nouvelles techniques pour rendre l’entraînement au GAN plus stable. Ces techniques nous permettent d’augmenter le GaNS et d’obtenir de jolis échantillons ImageNet 128x128:

Real images (ImageNet)
Generated images

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):

Real images (CIFAR-10)
Generated images

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. Cette approche nous permet d’obtenir des résultats de pointe sur MNIST, SVHN et CIFAR-10 dans des contextes avec très peu d’exemples étiquetés. Sur MNIST, par exemple, nous obtenons une précision de 99,14% avec seulement 10 exemples étiquetés par classe avec un réseau neuronal entièrement connecté — un résultat très proche des résultats les plus connus avec des approches entièrement supervisées utilisant les 60 000 exemples étiquetés. Ceci est très prometteur car les exemples étiquetés peuvent être assez coûteux à obtenir en pratique.

Les réseaux antagonistes génératifs sont un modèle relativement nouveau (introduit il y a seulement deux ans) et nous nous attendons à des progrès plus rapides dans l’amélioration de la stabilité de ces modèles pendant la formation.

Amélioration des VAEs (code). Dans ce travail, Durk Kingma et Tim Salimans présentent une méthode flexible et évolutive pour améliorer la précision de l’inférence variationnelle. En particulier, la plupart des EV ont jusqu’à présent été formés à l’aide de postérioriaux approximatifs bruts, où chaque variable latente est indépendante. Les extensions récentes ont résolu ce problème en conditionnant chaque variable latente sur les autres avant elle dans une chaîne, mais cela est inefficace sur le plan informatique en raison des dépendances séquentielles introduites. La contribution essentielle de ce travail, appelé flux autorégressif inverse (IAF), est une nouvelle approche qui, contrairement aux travaux précédents, nous permet de paralléliser le calcul des postérieurs approximatifs riches et de les rendre presque arbitrairement flexibles.

Nous montrons un exemple 32x32exemples d’images du modèle dans l’image ci-dessous, à droite. Sur la gauche se trouvent des échantillons antérieurs du modèle de TIRAGE à des fins de comparaison (les échantillons vanilla VAE seraient encore pires et plus flous). Le modèle DRAW a été publié il y a seulement un an, soulignant à nouveau les progrès rapides réalisés dans la formation des modèles génératifs.

Généré à partir d’un modèle de DESSIN
Généré à partir d’une VAE entraînée avec IAF

InfoGAN (code). Peter Chen et ses collègues présentent InfoGAN — une extension du GAN qui apprend des représentations démêlées et interprétables pour les images. Un GAN régulier atteint l’objectif de reproduire la distribution des données dans le modèle, mais la disposition et l’organisation de l’espace de code sont sous—spécifiées – il existe de nombreuses solutions possibles pour mapper l’unité Gaussienne aux images et celle avec laquelle nous nous retrouvons peut être complexe et fortement enchevêtrée. L’InfoGAN impose une structure supplémentaire à cet espace en ajoutant de nouveaux objectifs qui impliquent de maximiser l’information mutuelle entre les petits sous-ensembles des variables de représentation et l’observation. Cette approche donne des résultats tout à fait remarquables. Par exemple, dans les images des faces 3D ci-dessous, nous faisons varier une dimension continue du code, en gardant toutes les autres fixes. Il ressort clairement des cinq exemples fournis (le long de chaque ligne) que les dimensions résultantes dans le code capturent des dimensions interprétables, et que le modèle a peut-être compris qu’il existe des angles de caméra, des variations faciales, etc., sans avoir été informé que ces caractéristiques existent et sont importantes:

(a) Azimuth (pose)
(b) Elevation
(c) Lighting
(d) Wide or Narrow

We also note that nice, disentangled representations have been réalisé auparavant (comme avec DC-IGN par Kulkarni et al.), mais ces approches reposent sur une supervision supplémentaire, alors que notre approche est entièrement non supervisée.

Les deux projets récents suivants sont dans un cadre d’apprentissage par renforcement (RL) (un autre domaine d’intérêt chez OpenAI), mais ils impliquent tous deux une composante de modèle génératif.

Exploration guidée par la Curiosité dans l’Apprentissage par Renforcement Profond via des Réseaux de Neurones Bayésiens (code). L’exploration efficace dans des espaces continus et de grande dimension est actuellement un défi non résolu dans l’apprentissage par renforcement. Sans méthodes d’exploration efficaces, nos agents se bousculent jusqu’à ce qu’ils tombent au hasard dans des situations enrichissantes. Cela est suffisant dans de nombreuses tâches de jouets simples mais insuffisant si nous souhaitons appliquer ces algorithmes à des paramètres complexes avec des espaces d’action de haute dimension, comme cela est courant en robotique. Dans cet article, Rein Houthooft et ses collègues proposent VIME, une approche pratique de l’exploration utilisant l’incertitude sur les modèles génératifs. VIME rend l’agent auto-motivé; il recherche activement des actions étatiques surprenantes. Nous montrons que VIME peut améliorer une gamme de méthodes de recherche de politiques et faire des progrès significatifs sur des tâches plus réalistes avec des récompenses clairsemées (par exemple, des scénarios dans lesquels l’agent doit apprendre des primitives de locomotion sans aucune orientation).

Politique entraînée avec VIME
Politique entraînée à l’exploration naïve

Enfin, nous aimerions inclure un cinquième projet bonus: l’Apprentissage par Imitation Contradictoire Génératif (code), dans lequel Jonathan Ho et ses collègues présentent une nouvelle approche pour l’apprentissage par imitation. Jonathan Ho nous rejoint chez OpenAI en tant que stagiaire d’été. Il a fait la majeure partie de ce travail à Stanford, mais nous l’incluons ici comme une application connexe et très créative du GaNS à la RL. Le paramètre d’apprentissage par renforcement standard nécessite généralement de concevoir une fonction de récompense qui décrit le comportement souhaité de l’agent. Cependant, dans la pratique, cela peut parfois impliquer un processus d’essais et d’erreurs coûteux pour obtenir les détails correctement. En revanche, dans l’apprentissage par imitation, l’agent apprend à partir d’exemples de démonstrations (par exemple fournies par la téléopération en robotique), éliminant ainsi la nécessité de concevoir une fonction de récompense.

Les approches d’imitation populaires impliquent un pipeline en deux étapes: d’abord apprendre une fonction de récompense, puis exécuter RL sur cette récompense. Un tel pipeline peut être lent et, comme il est indirect, il est difficile de garantir que la politique qui en résulte fonctionne bien. Ce travail montre comment on peut extraire directement les stratégies des données via une connexion à GaNS. En conséquence, cette approche peut être utilisée pour apprendre des politiques à partir de démonstrations d’experts (sans récompenses) sur des environnements de gymnase OpenAI durs, tels que la fourmi et l’Humanoïde.

À l’avenir

Les modèles génératifs sont un domaine de recherche qui progresse rapidement. Alors que nous continuons à faire progresser ces modèles et à étendre la formation et les ensembles de données, nous pouvons nous attendre à générer éventuellement des échantillons représentant des images ou des vidéos entièrement plausibles. Cela peut en soi trouver une utilisation dans plusieurs applications, telles que l’art généré à la demande, ou des commandes Photoshop ++ telles que « élargissez mon sourire ». D’autres applications actuellement connues incluent le débruitage d’images, l’inpainting, la super-résolution, la prédiction structurée, l’exploration dans l’apprentissage par renforcement et le préformation de réseau neuronal dans les cas où les données étiquetées sont coûteuses.

Cependant, la promesse la plus profonde de ce travail est que, dans le processus de formation des modèles génératifs, nous doterons l’ordinateur d’une compréhension du monde et de ce dont il est composé.