Articles

Generative modeller

dette indlæg beskriver fire projekter, der deler et fælles tema for forbedring eller brug af generative modeller, en gren af uovervåget læringsteknikker i maskinindlæring. Ud over at beskrive vores arbejde vil dette indlæg fortælle dig lidt mere om generative modeller: hvad de er, hvorfor de er vigtige, og hvor de måske skal hen.

en af vores kerneambitioner hos OpenAI er at udvikle algoritmer og teknikker, der giver computere en forståelse af vores verden.

det er nemt at glemme, hvor meget du ved om verden: du forstår, at det består af 3D-miljøer, objekter, der bevæger sig, kolliderer, interagerer; mennesker, der går, taler og tænker; dyr, der græsser, flyver, løber eller gøer; skærme, der viser information kodet på sprog om vejret, der vandt et basketballkamp, eller hvad der skete i 1970.

denne enorme mængde information er derude og i vid udstrækning let tilgængelig — enten i den fysiske verden af atomer eller den digitale verden af bits. Den eneste vanskelige del er at udvikle modeller og algoritmer, der kan analysere og forstå denne skattekiste af data.

Generative modeller er en af de mest lovende tilgange til dette mål. For at træne en generativ model indsamler vi først en stor mængde data i et eller andet domæne (f.eks.) og derefter træne en model til at generere data som det. Intuitionen bag denne tilgang følger et berømt citat fra Richard Feynman:

“hvad jeg ikke kan oprette, forstår jeg ikke.”

—Richard Feynman

tricket er, at de neurale netværk, vi bruger som generative modeller, har et antal parametre, der er betydeligt mindre end mængden af data, vi træner dem på, så modellerne er tvunget til at opdage og effektivt internalisere essensen af dataene for at generere dem.

Generative modeller har mange kortsigtede applikationer. Men i det lange løb har de potentialet til automatisk at lære de naturlige træk ved et datasæt, hvad enten det er kategorier eller dimensioner eller noget helt andet.

generering af billeder

lad os gøre dette mere konkret med et eksempel. Antag, at vi har en stor samling af billeder, såsom de 1, 2 millioner billeder i ImageNet-datasættet (men husk, at dette i sidste ende kan være en stor samling af billeder eller videoer fra internettet eller robotter). Hvis vi ændrer størrelsen på hvert billede for at have bredde og højde på 256 (som det ofte gøres), er vores datasæt en stor 1,200,000x256x256x3 (ca.200 GB) billedblok. Her er et par eksempler på billeder fra dette datasæt:

disse billeder er eksempler på, hvordan vores visuelle verden ser ud, og vi henviser til disse som”prøver fra den sande datadistribution”. Vi konstruerer nu vores generative model, som vi gerne vil træne for at generere billeder som dette fra bunden. Konkret kan en generativ model i dette tilfælde være et stort neuralt netværk, der udsender billeder, og vi henviser til disse som “prøver fra modellen”.

DCGAN

en sådan nylig model er dcgan-netværket fra Radford et al. (vist nedenfor). Dette netværk tager som input 100 tilfældige tal trukket fra en ensartet fordeling (vi henviser til disse som en kode eller latente variabler i rødt) og udsender et billede (i dette tilfælde 64x64x3 billeder til højre, i grønt). Da koden ændres trinvist, gør de genererede billeder også — dette viser, at modellen har lært funktioner til at beskrive, hvordan verden ser ud, snarere end blot at huske nogle eksempler.

netværket (i gult) består af standardkonvolutionære neurale netværkskomponenter, såsom dekonvolutionære lag (omvendt af konvolutionære lag), fuldt tilsluttede lag osv.:

DCGAN initialiseres med tilfældige vægte, så en tilfældig kode tilsluttet netværket ville generere et helt tilfældigt billede. Som du måske forestiller dig, har netværket millioner af parametre, som vi kan tilpasse, og målet er at finde en indstilling af disse parametre, der får prøver genereret fra tilfældige koder til at ligne træningsdataene. Eller for at sige det på en anden måde, ønsker vi, at modelfordelingen skal matche den sande datadistribution i billedrummet.

træning af en generativ model

Antag, at vi brugte et nyligt initialiseret netværk til at generere 200 billeder, hver gang vi startede med en anden tilfældig kode. Spørgsmålet er: hvordan skal vi justere netværkets parametre for at tilskynde det til at producere lidt mere troværdige prøver i fremtiden? Bemærk, at vi ikke er i en simpel overvåget indstilling og ikke har nogen eksplicit ønskede mål for vores 200 genererede billeder; vi vil blot have dem til at se ægte ud. En smart tilgang omkring dette problem er at følge den Generative Adversarial netværk (GAN) tilgang. Her introducerer vi et andet diskriminatornetværk (normalt et standardkonvolutionært neuralt netværk), der forsøger at klassificere, om et inputbillede er ægte eller genereret. For eksempel kunne vi fodre de 200 genererede billeder og 200 rigtige billeder ind i diskriminatoren og træne det som en standardklassifikator for at skelne mellem de to kilder. Men ud over det — og her er tricket — kan vi også backpropagate gennem både diskriminatoren og generatoren for at finde ud af, hvordan vi skal ændre generatorens parametre for at gøre sine 200 prøver lidt mere forvirrende for diskriminatoren. Disse to netværk er derfor låst i en kamp: diskriminatoren forsøger at skelne rigtige billeder fra falske billeder, og generatoren forsøger at skabe billeder, der får diskriminatoren til at tro, at de er virkelige. I sidste ende udsender generatornetværket billeder, der ikke kan skelnes fra virkelige billeder til diskriminatoren.

der er et par andre tilgange til at matche disse distributioner, som vi vil diskutere kort nedenfor. Men før vi kommer der nedenfor er to animationer, der viser prøver fra en generativ model for at give dig en visuel fornemmelse for træningsprocessen.
I begge tilfælde starter prøverne fra generatoren støjende og kaotisk og konvergerer over tid for at have mere plausibel billedstatistik:

VAE learning to generate images (log time)
gan learning to generate images (linear time)

dette er spændende — disse neurale netværk lærer, hvordan den visuelle verden ser ud! Disse modeller har normalt kun omkring 100 millioner parametre, så et netværk, der er trænet på ImageNet, skal (Tab) komprimere 200 GB billeddata til 100 MB vægte. Dette tilskynder det til at opdage de mest fremtrædende træk ved dataene: for eksempel vil det sandsynligvis lære, at billedpunkter i nærheden sandsynligvis har samme farve, eller at verden består af vandrette eller lodrette kanter eller klatter i forskellige farver. Til sidst kan Modellen opdage mange mere komplekse regelmæssigheder: at der er visse typer baggrunde, objekter, teksturer, at de forekommer i visse sandsynlige arrangementer, eller at de transformerer på bestemte måder over tid i videoer osv.

mere generel formulering

matematisk tænker vi på et datasæt med eksempler \(H_1, \ldots, h_n\) som prøver fra en ægte datadistribution \(p(h)\). I eksemplet nedenfor viser det blå område den del af billedrummet, der med stor sandsynlighed (over en tærskel) indeholder rigtige billeder, og sorte prikker angiver vores datapunkter (hvert er et billede i vores datasæt). Nu beskriver vores model også en distribution \(\hat{p}_{\theta}(h)\) (grøn), der defineres implicit ved at tage punkter fra en enhed Gaussisk distribution (rød) og kortlægge dem gennem et (deterministisk) neuralt netværk — vores generative model (gul). Vores netværk er en funktion med parametre \(\theta\), og finjustering af disse parametre vil finjustere den genererede distribution af billeder. Vores mål er derefter at finde parametre \(\theta\), der producerer en distribution, der nøje matcher den sande datadistribution (for eksempel ved at have et lille kl-divergenstab). Derfor kan du forestille dig, at den grønne fordeling starter tilfældigt og derefter træningsprocessen iterativt ændrer parametrene \(\theta\) for at strække og klemme den for bedre at matche den blå fordeling.

tre tilgange til generative modeller

de fleste generative modeller har denne grundlæggende opsætning, men adskiller sig i detaljerne. Her er tre populære eksempler på generative modeltilgange for at give dig en fornemmelse af variationen:Generative kontradiktoriske netværk (GANs), som vi allerede har diskuteret ovenfor, udgør træningsprocessen som et spil mellem to separate netværk: et generatornetværk(som set ovenfor) og et andet diskriminerende netværk, der forsøger at klassificere prøver som enten kommer fra den sande distribution \(p (H)\) eller modelfordelingen \(\hat{p} (h)\). Hver gang diskriminatoren bemærker en forskel mellem de to distributioner, justerer generatoren sine parametre lidt for at få den til at forsvinde, indtil i slutningen (i teorien) gengiver generatoren nøjagtigt den sande datafordeling, og diskriminatoren gætter tilfældigt og ikke kan finde en forskel.Variational Autoencoders (VAEs) giver os mulighed for at formalisere dette problem inden for rammerne af probabilistiske grafiske modeller, hvor vi maksimerer en nedre grænse for log sandsynligheden for dataene.

  • Autoregressive modeller som f.eks. Dette svarer til at tilslutte billedets billedpunkter til en char-rnn, men RNN ‘ erne løber både vandret og lodret over billedet i stedet for kun en 1D-sekvens af tegn.
  • alle disse tilgange har deres fordele og ulemper. For eksempel Variational Autoencoders tillader os at udføre både læring og effektiv bayesisk slutning i sofistikerede probabilistiske grafiske modeller med latente variabler (f.eks. Imidlertid har deres genererede prøver tendens til at være lidt slørede. GANs genererer i øjeblikket de skarpeste billeder, men de er sværere at optimere på grund af ustabil træningsdynamik. De har en meget enkel og stabil træningsproces (softmaks tab) og giver i øjeblikket de bedste log sandsynligheder (det vil sige plausibilitet af de genererede data). De er dog relativt ineffektive under prøveudtagning og giver ikke let enkle lavdimensionelle koder til billeder. Alle disse modeller er aktive forskningsområder, og vi er ivrige efter at se, hvordan de udvikler sig i fremtiden!

    vores seneste bidrag

    Vi er ret begejstrede for generative modeller på OpenAI, og har netop udgivet fire projekter, der fremmer den nyeste teknik. For hvert af disse bidrag frigiver vi også en teknisk rapport og kildekode.

    forbedring af GANs (kode). For det første er GANs som nævnt ovenfor en meget lovende familie af generative modeller, fordi de i modsætning til andre metoder producerer meget rene og skarpe billeder og lærer koder, der indeholder værdifuld information om disse teksturer. GANs er dog formuleret som et spil mellem to netværk, og det er vigtigt (og vanskeligt!) for at holde dem i balance: for eksempel kan de svinge mellem løsninger, eller generatoren har en tendens til at kollapse. I dette arbejde har Tim Salimans, Ian Godmedarbejder, Jjciech Saremba og kolleger introduceret et par nye teknikker til at gøre GAN-træning mere stabil. Disse teknikker giver os mulighed for at skalere op GANs og opnå nice 128x128 ImageNet prøver:

    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. Denne tilgang giver os mulighed for at opnå avancerede resultater på MNIST, SVHN og CIFAR-10 i Indstillinger med meget få mærkede eksempler. På MNIST opnår vi for eksempel 99,14% nøjagtighed med kun 10 mærkede eksempler pr.klasse med et fuldt tilsluttet neuralt netværk — et resultat, der er meget tæt på de bedst kendte resultater med fuldt overvågede tilgange ved hjælp af alle 60.000 mærkede eksempler. Dette er meget lovende, fordi mærkede eksempler kan være ret dyre at opnå i praksis.

    Generative kontradiktoriske netværk er en relativt ny model (introduceret for kun to år siden), og vi forventer at se hurtigere fremskridt med yderligere at forbedre stabiliteten af disse modeller under træning.

    forbedring af VAEs (kode). I dette arbejde introducerer Durk Kingma og Tim Salimans en fleksibel og beregningsmæssigt skalerbar metode til forbedring af nøjagtigheden af variationsinferens. I særdeleshed, de fleste VAEs er hidtil blevet trænet ved hjælp af rå omtrentlige posteriors, hvor hver latent variabel er uafhængig. Nylige udvidelser har løst dette problem ved at konditionere hver latent variabel på de andre før den i en kæde, men dette er beregningsmæssigt ineffektivt på grund af de indførte sekventielle afhængigheder. Kernebidraget i dette arbejde, betegnet invers autoregressiv strømning (iaf), er en ny tilgang, der i modsætning til tidligere arbejde giver os mulighed for at parallelisere beregningen af rige omtrentlige posteriorer og gøre dem næsten vilkårligt fleksible.

    Vi viser nogle eksempler 32x32 billedeksempler fra modellen i billedet nedenfor til højre. Til venstre er tidligere prøver fra LODTRÆKNINGSMODELLEN til sammenligning (vanilla VAE-prøver ville se endnu værre og mere sløret ud). LODTRÆKNINGSMODELLEN blev offentliggjort for kun et år siden og fremhævede igen de hurtige fremskridt, der gøres inden for uddannelse af generative modeller.

    genereret fra en LODTRÆKNINGSMODEL
    genereret fra en VAE trænet med iaf

    infogan (kode). Peter Chen og kolleger introducerer InfoGAN – en udvidelse af GAN, der lærer løsrevne og fortolkelige repræsentationer for billeder. En regelmæssig GAN opnår målet om at gengive datafordelingen i modellen, men layout og organisering af koderummet er underspecificeret — der er mange mulige løsninger til at kortlægge enheden Gaussisk til billeder, og den, vi ender med, kan være indviklet og meget indviklet. InfoGAN pålægger dette rum yderligere struktur ved at tilføje nye mål, der involverer maksimering af den gensidige information mellem små undergrupper af repræsentationsvariablerne og observationen. Denne tilgang giver ganske bemærkelsesværdige resultater. For eksempel varierer vi i billederne af 3D-ansigter nedenfor en kontinuerlig dimension af koden og holder alle andre faste. Det fremgår klart af de fem givne eksempler (langs hver række), at de resulterende dimensioner i koden fanger fortolkelige dimensioner, og at modellen måske har forstået, at der er kameravinkler, ansigtsvariationer osv., uden at have fået at vide, at disse funktioner findes og er vigtige:

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

    We also note that nice, disentangled representations have been opnået før (såsom med DC-IGN af Kulkarni et al.), men disse tilgange er afhængige af yderligere tilsyn, mens vores tilgang er helt uden tilsyn.

    de næste to nylige projekter er i en reinforcement learning (RL) indstilling (et andet fokusområde på OpenAI), men de involverer begge en generativ modelkomponent.

    Nysgerrighedsdrevet udforskning i dyb Forstærkningslæring via bayesiske neurale netværk (kode). Effektiv udforskning i højdimensionelle og kontinuerlige rum er i øjeblikket en uløst udfordring i forstærkningsindlæring. Uden effektive efterforskningsmetoder slår vores agenter rundt, indtil de tilfældigt snubler ind i givende situationer. Dette er tilstrækkeligt i mange enkle legetøjsopgaver, men utilstrækkeligt, hvis vi ønsker at anvende disse algoritmer på komplekse indstillinger med højdimensionelle handlingsrum, som det er almindeligt inden for robotik. I dette papir foreslår Rein Houthooft og kolleger VIME, en praktisk tilgang til udforskning ved hjælp af usikkerhed om generative modeller. Vime gør agenten selvmotiveret; det søger aktivt overraskende statshandlinger. Vi viser, at Vime kan forbedre en række politiske søgemetoder og gør betydelige fremskridt med mere realistiske opgaver med sparsomme belønninger (f.eks. scenarier, hvor agenten skal lære bevægelsesprimitiver uden vejledning).

    politik uddannet med VIME
    politik uddannet med naiv udforskning

    endelig vil vi gerne inkludere et bonus femte projekt: generativ adversarial imitation learning (code), hvor Jonathan Ho og kolleger præsenterer en ny tilgang til imitation learning. Jonathan Ho slutter sig til os på OpenAI som sommerpraktikant. Han gjorde det meste af dette arbejde på Stanford, men vi inkluderer det her som en relateret og meget kreativ anvendelse af GANs til RL. Standardforstærkningsindlæringsindstillingen kræver normalt en til at designe en belønningsfunktion, der beskriver agentens ønskede opførsel. Imidlertid, i praksis kan dette undertiden involvere dyre prøve-og-fejl-proces for at få detaljerne rigtige. I modsætning hertil lærer agenten i imiteret læring fra eksempeldemonstrationer (for eksempel leveret af teleoperation i robotik), hvilket eliminerer behovet for at designe en belønningsfunktion.

    populære imitationsmetoder involverer en to-trins pipeline: først at lære en belønningsfunktion og derefter køre rl på den belønning. En sådan rørledning kan være langsom, og fordi den er indirekte, er det svært at garantere, at den resulterende politik fungerer godt. Dette arbejde viser, hvordan man direkte kan udtrække politikker fra data via en forbindelse til GANs. Som et resultat kan denne tilgang bruges til at lære politikker fra ekspertdemonstrationer (uden belønninger) på hårde OpenAI-Gymmiljøer, såsom Ant og Humanoid.

    fremad

    Generative modeller er et hurtigt fremrykkende forskningsområde. Når vi fortsætter med at fremme disse modeller og skalere træningen og datasættene, vi kan forvente at til sidst generere prøver, der viser helt plausible billeder eller videoer. Dette kan i sig selv finde anvendelse i flere applikationer, såsom On-demand genereret kunst eller Photoshop++ kommandoer som “gør Mit smil bredere”. Yderligere i øjeblikket kendte applikationer inkluderer billeddenoisering, inpainting, superopløsning, struktureret forudsigelse, udforskning i forstærkningsindlæring og neuralt netværksforløb i tilfælde, hvor mærkede data er dyre.

    det dybere løfte om dette arbejde er imidlertid, at vi i processen med at træne generative modeller vil give computeren en forståelse af verden og hvad den består af.