Articles

Generative Modeller

dette innlegget beskriver fire prosjekter som deler et felles tema for å forbedre eller bruke generative modeller, en gren av uovervåkede læringsteknikker i maskinlæring. I tillegg til å beskrive vårt arbeid, vil dette innlegget fortelle deg litt mer om generative modeller: hva de er, hvorfor de er viktige, og hvor de kan gå.En av Våre kjerneoppdrag Hos OpenAI er å utvikle algoritmer og teknikker som gir datamaskiner en forståelse av vår verden.

det er lett å glemme hvor mye du vet om verden: DU forstår AT DET består AV 3d-miljøer, objekter som beveger seg, kolliderer, samhandler; folk som går, snakker og tenker; dyr som beiter, flyr, løper eller bjeffer; skjermer som viser informasjon kodet på språk om været, hvem som vant et basketballspill, eller hva som skjedde i 1970.

denne enorme mengden informasjon er der ute og i stor grad lett tilgjengelig — enten i den fysiske verden av atomer eller den digitale verden av biter. Den eneste vanskelige delen er å utvikle modeller og algoritmer som kan analysere og forstå denne skattekisten av data.

Generative modeller er en av de mest lovende tilnærmingene mot dette målet. For å trene en generativ modell samler vi først en stor mengde data i et domene(f. eks.) og deretter trene en modell for å generere data som det. Intuisjonen bak denne tilnærmingen følger Et berømt sitat Fra Richard Feynman:

«Det Jeg ikke kan skape, forstår jeg ikke.»

—Richard Feynman

trikset er at nevrale nettverk vi bruker som generative modeller har en rekke parametere betydelig mindre enn mengden data vi trener dem på, slik at modellene blir tvunget til å oppdage og effektivt internalisere essensen av dataene for å generere den.

Generative modeller har mange kortsiktige applikasjoner. Men i det lange løp har de potensial til automatisk å lære de naturlige egenskapene til et datasett, enten kategorier eller dimensjoner eller noe helt annet.

Generere bilder

La oss gjøre dette mer konkret med et eksempel. Anta at vi har en stor samling bilder, for eksempel de 1,2 millioner bildene I ImageNet-datasettet (men husk at dette til slutt kan være en stor samling bilder eller videoer fra internett eller roboter). Hvis vi endrer størrelsen på hvert bilde for å ha bredde og høyde på 256 (som det vanligvis gjøres), er datasettet vårt en stor1,200,000x256x256x3 (omtrent 200 GB) blokk med piksler. Her er noen eksempler på bilder fra dette datasettet:

disse bildene er eksempler på hvordan vår visuelle verden ser ut, og vi refererer til disse som «prøver fra den sanne datadistribusjonen». Vi konstruerer nå vår generative modell som vi ønsker å trene for å generere bilder som dette fra bunnen av. Konkret kan en generativ modell i dette tilfellet være et stort nevralt nettverk som sender ut bilder, og vi refererer til disse som «prøver fra modellen».

DCGAN

en slik ny modell ER DCGAN-nettverket Fra Radford et al. (vist nedenfor). Dette nettverket tar som input 100 tilfeldige tall trukket fra en jevn fordeling (vi refererer til disse som en kode, eller latente variabler, i rødt) og sender ut et bilde (i dette tilfellet 64x64x3 bilder til høyre, i grønt). Når koden endres trinnvis, gjør de genererte bildene også — dette viser at modellen har lært funksjoner for å beskrive hvordan verden ser ut, i stedet for bare å huske noen eksempler.nettverket (i gult) består av standard convolutional nevrale nettverkskomponenter, for eksempel dekonvolusjonelle lag( omvendt av convolutional lag), fullt tilkoblede lag, etc.:

DCGAN er initialisert med tilfeldige vekter, så en tilfeldig kode koblet til nettverket vil generere et helt tilfeldig bilde. Men som du kan forestille deg, har nettverket millioner av parametere som vi kan justere, og målet er å finne en innstilling av disse parametrene som gjør at prøver generert fra tilfeldige koder ser ut som treningsdataene. Eller for å si det på en annen måte, vil vi at modellfordelingen skal matche den sanne datadistribusjonen i løpet av bilder.

Trene en generativ modell

Anta at vi brukte et nylig initialisert nettverk for å generere 200 bilder, hver gang du starter med en annen tilfeldig kode. Spørsmålet er: hvordan skal vi justere nettverksparametrene for å oppmuntre det til å produsere litt mer troverdige prøver i fremtiden? Legg merke til at vi ikke er i en enkel overvåket innstilling og ikke har noen eksplisitte ønskede mål for våre 200 genererte bilder; vi vil bare at de skal se ekte ut. En smart tilnærming rundt dette problemet er å følge Generative Adversarial Network (GAN) tilnærming. Her introduserer vi et andre diskrimineringsnettverk (vanligvis et standardkonvolusjonelt nevralt nettverk) som forsøker å klassifisere om et inngangsbilde er ekte eller generert. For eksempel kan vi mate de 200 genererte bildene og 200 virkelige bildene inn i diskriminatoren og trene den som en standard klassifiserer for å skille mellom de to kildene. Men i tillegg til det — og her er trikset — kan vi også gå tilbake gjennom både diskriminatoren og generatoren for å finne ut hvordan vi skal endre generatorens parametere for å gjøre sine 200 prøver litt mer forvirrende for diskriminatoren. Disse to nettverkene er derfor låst i en kamp: diskriminatoren prøver å skille ekte bilder fra falske bilder og generatoren prøver å lage bilder som gjør diskriminatoren tror de er ekte. Til slutt sender generatornettverket ut bilder som ikke skiller seg fra ekte bilder for diskriminatoren.

Det er noen andre tilnærminger til å matche disse fordelingene som vi vil diskutere kort nedenfor. Men før vi kommer dit nedenfor er to animasjoner som viser prøver fra en generativ modell for å gi deg en visuell følelse for treningsprosessen.
i begge tilfeller prøvene fra generatoren starter støyende og kaotisk, og over tid konvergerer til å ha mer plausibel bildestatistikk:

vae lære å generere bilder (loggtid)
gan lære å generere bilder (lineær tid)

dette er spennende — disse nevrale nettverkene lærer hvordan den visuelle verden ser ut! Disse modellene har vanligvis bare rundt 100 millioner parametere, så et nettverk trent På ImageNet må (lossily) komprimere 200 GB pikseldata til 100 MB vekter. Dette incentivizes det å oppdage de mest fremtredende trekk ved data: for eksempel, vil det trolig lære at piksler i nærheten er sannsynlig å ha samme farge, eller at verden består av horisontale eller vertikale kanter, eller blobs av forskjellige farger. Til slutt kan modellen oppdage mange mer komplekse regulariteter: at det er visse typer bakgrunner, objekter,teksturer, at de forekommer i visse sannsynlige ordninger, eller at de forvandler seg på bestemte måter over tid i videoer, etc.

Mer generell formulering

Matematisk tenker Vi på et datasett av eksempler \(x_1, \ldots, x_n\) som prøver fra en sann datadistribusjon \(p (x)\). I eksempelbildet nedenfor viser det blå området den delen av bildeområdet som med stor sannsynlighet (over en viss terskel) inneholder ekte bilder, og svarte prikker angir datapunktene våre (hvert er ett bilde i datasettet). Nå beskriver vår modell også en distribusjon \(\hat{p}_{\theta} (x)\) (grønn) som defineres implisitt ved å ta poeng Fra en enhet Gaussisk distribusjon (rød) og kartlegge dem gjennom et (deterministisk) nevralt nettverk — vår generative modell (gul). Vårt nettverk er en funksjon med parametere \(\theta\), og tweaking disse parametrene vil justere den genererte fordelingen av bilder. Vårt mål er da å finne parametere \(\theta\) som produserer en distribusjon som tett samsvarer med den sanne datafordelingen (for eksempel ved å ha et lite kl-divergenstap). Derfor kan du forestille deg den grønne distribusjonen som starter tilfeldig og deretter treningsprosessen iterativt å endre parametrene \(\theta\) for å strekke og klemme den for å bedre matche den blå fordelingen.

Tre tilnærminger til generative modeller

De fleste generative modeller har dette grunnleggende oppsettet, men varierer i detaljene. Her er tre populære eksempler på generative modell tilnærminger for å gi deg en følelse av variasjon:Generative Adversarial Networks (GANs), som vi allerede diskuterte ovenfor, utgjør treningsprosessen som et spill mellom to separate nettverk: et generatornettverk (som vist ovenfor) og et andre diskriminerende nettverk som forsøker å klassifisere prøver som enten kommer fra den sanne distribusjonen \(p (x)\) eller modellfordelingen \(\hat{p}(x)\). Hver gang diskriminatoren merker en forskjell mellom de to fordelingene, justerer generatoren parametrene litt for å få det til å gå bort, til på slutten (i teorien) reproduserer generatoren nøyaktig den sanne datafordelingen, og diskriminatoren gjetter tilfeldig, ikke i stand til å finne en forskjell.Variational Autoencoders (VAEs) tillater oss å formalisere dette problemet innenfor rammen av probabilistiske grafiske modeller der vi maksimerer en nedre grense på loggens sannsynlighet for dataene.

  • Autoregressive modeller som PixelRNN trener i stedet et nettverk som modellerer den betingede distribusjonen av hver enkelt piksel gitt tidligere piksler (til venstre og til toppen). Dette ligner på å plugge bildepunktene i bildet til en char-rnn, men RNNs kjører både horisontalt og vertikalt over bildet i stedet for bare EN 1d-sekvens av tegn.
  • Alle disse tilnærmingene har sine fordeler og ulemper. For Eksempel Tillater Variational Autoencoders oss å utføre både læring og effektiv Bayesiansk slutning i sofistikerte probabilistiske grafiske modeller med latente variabler (f.eks. Imidlertid har deres genererte prøver en tendens til å være litt uskarpe. GANs genererer for tiden de skarpeste bildene, men de er vanskeligere å optimalisere på grunn av ustabil treningsdynamikk. PixelRNNs har en veldig enkel og stabil treningsprosess (softmax tap) og gir for tiden de beste logglikhetene (det vil si plausibilitet av de genererte dataene). Imidlertid er de relativt ineffektive under prøvetaking og gir ikke lett enkle lavdimensjonale koder for bilder. Alle disse modellene er aktive forskningsområder, og vi er ivrige etter å se hvordan de utvikler seg i fremtiden!

    våre siste bidrag

    Vi er ganske begeistret for generative modeller På OpenAI, Og har nettopp gitt ut fire prosjekter som fremmer toppmoderne. For hvert av disse bidragene slipper vi også en teknisk rapport og kildekode.

    Forbedre GANs (kode). Først, Som nevnt ovenfor GANs Er en svært lovende familie av generative modeller fordi, i motsetning til andre metoder, de produserer svært rene og skarpe bilder og lære koder som inneholder verdifull informasjon om disse teksturer. GANs er imidlertid formulert som et spill mellom to nettverk ,og det er viktig (og vanskelig!) for å holde dem i balanse: for eksempel kan de svinge mellom løsninger, eller generatoren har en tendens til å kollapse. I dette arbeidet Har Tim Salimans, Ian Goodfellow, Wojciech Zaremba og kolleger introdusert noen nye teknikker for Å gjøre GAN trening mer stabil. Disse teknikkene tillater Oss å skalere Opp GANs og få fine 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 tilnærmingen tillater oss å få toppmoderne resultater PÅ MNIST, SVHN og CIFAR-10 i innstillinger med svært få merkede eksempler. PÅ MNIST oppnår vi for eksempel 99,14% nøyaktighet med bare 10 merkede eksempler per klasse med et fullt tilkoblet nevralt nettverk — et resultat som er svært nær de mest kjente resultatene med fullt overvåkede tilnærminger ved hjelp av alle 60 000 merkede eksempler. Dette er svært lovende fordi merkede eksempler kan være ganske dyrt å få i praksis.Generative Adversarial Nettverk Er en relativt ny modell (introdusert for bare to år siden), og vi forventer å se raskere fremgang i ytterligere å forbedre stabiliteten til disse modellene under trening.

    Forbedre VAEs (kode). I dette arbeidet Introduserer Durk Kingma Og Tim Salimans en fleksibel og beregningsmessig skalerbar metode for å forbedre nøyaktigheten av variasjonsavslutning. Spesielt har de fleste VAEs hittil blitt trent ved hjelp av grove omtrentlige posteriors, hvor hver latent variabel er uavhengig. Nylige utvidelser har adressert dette problemet ved å kondisjonere hver latent variabel på de andre før den i en kjede, men dette er beregningsmessig ineffektivt på grunn av de introduserte sekvensielle avhengighetene. Kjernebidraget til dette arbeidet, kalt inverse autoregressive flow (IAF), er en ny tilnærming som, i motsetning til tidligere arbeid, tillater oss å parallellisere beregningen av rike omtrentlige posteriorer, og gjøre dem nesten vilkårlig fleksible.

    vi viser noen eksempler 32x32 bildeprøver fra modellen i bildet nedenfor, til høyre. Til venstre er tidligere prøver FRA DRAW-modellen til sammenligning(vanilje VAE-prøver ville se enda verre ut og mer uskarpe). TREKNINGEN modellen ble publisert bare ett år siden, fremhever igjen den raske fremgangen blir gjort i trening generative modeller.

    Generert FRA EN TEGNEMODELL
    generert fra en vae trent med iaf

    infogan (kode). Peter Chen og kollegaer introduserer InfoGAN-en forlengelse AV GAN som lærer disentangled og tolkbare representasjoner for bilder. En vanlig GAN oppnår målet om å reprodusere datafordelingen i modellen, men utformingen og organisasjonen av kodeplassen er underspesifisert — det er mange mulige løsninger for å kartlegge enheten Gaussisk til bilder, og den vi ender med kan være intrikat og svært innviklet. InfoGAN pålegger ytterligere struktur på dette rommet ved å legge til nye mål som innebærer å maksimere gjensidig informasjon mellom små undergrupper av representasjonsvariablene og observasjonen. Denne tilnærmingen gir ganske bemerkelsesverdige resultater. For eksempel, i bildene AV 3d-ansikter nedenfor, varierer vi en kontinuerlig dimensjon av koden, og holder alle andre faste. Det er klart fra de fem oppgitte eksemplene (langs hver rad)at de resulterende dimensjonene i kodeopptakets tolkbare dimensjoner, og at modellen kanskje har forstått at det er kameravinkler, ansiktsvariasjoner, etc., uten å ha blitt fortalt at disse funksjonene eksisterer og er viktige:

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

    We also note that nice, disentangled representations have been oppnådd før (som MED DC-IGN Av Kulkarni et al.), men disse tilnærmingene er avhengige av ekstra tilsyn, mens vår tilnærming er helt uten tilsyn.

    de neste to siste prosjektene er i en rl-innstilling (et annet fokusområde Ved OpenAI), men de involverer begge en generativ modellkomponent.Nysgjerrighetsdrevet Utforskning i Dyp Forsterkningslæring via Bayesianske Nevrale Nettverk (kode). Effektiv leting i høydimensjonale og kontinuerlige rom er for tiden en uløst utfordring i forsterkningslæring. Uten effektive letemetoder våre agenter thrash rundt før de tilfeldig snuble i givende situasjoner. Dette er tilstrekkelig i mange enkle leketøysoppgaver, men utilstrekkelig hvis vi ønsker å bruke disse algoritmene til komplekse innstillinger med høydimensjonale handlingsrom, som det er vanlig i robotikk. I dette papiret foreslår Rein Houthooft OG kolleger VIME, en praktisk tilnærming til leting ved hjelp av usikkerhet om generative modeller. VIME gjør agenten selvmotivert; den søker aktivt overraskende statshandlinger. VI viser at VIME kan forbedre en rekke politiske søkemetoder og gjør betydelige fremskritt på mer realistiske oppgaver med sparsomme belønninger(f. eks.

    politikk trent med VIME
    politikk trent med naive exploration

    til slutt vil vi gjerne inkludere en bonus femte prosjekt: generativ adversarial imitasjon læring (kode), der jonathan ho og kolleger presentere en ny tilnærming for imitasjon læring. Jonathan Ho er med Oss På OpenAI som sommer intern. Han gjorde det meste av dette arbeidet På Stanford, men vi inkluderer det her som en relatert Og svært kreativ anvendelse Av GANs TIL RL. Standard forsterkningsinnstillingen krever vanligvis at man designer en belønningsfunksjon som beskriver ønsket oppførsel av agenten. Men i praksis kan dette noen ganger innebære dyre prøve-og-feil-prosess for å få detaljene riktig. I kontrast, i imitasjonslæring lærer agenten fra eksempeldemonstrasjoner (for eksempel levert av teleoperasjon i robotikk), eliminerer behovet for å designe en belønningsfunksjon.

    populære imitasjonsmetoder involverer en to-trinns rørledning: først lærer du en belønningsfunksjon, og kjører deretter rl på den belønningen. En slik rørledning kan være treg, og fordi den er indirekte, er det vanskelig å garantere at den resulterende politikken fungerer bra. Dette arbeidet viser hvordan man direkte kan trekke ut retningslinjer fra data via en tilkobling Til GANs. Som et resultat kan denne tilnærmingen brukes til å lære politikk fra ekspertdemonstrasjoner (uten belønning) på harde OpenAI Gym miljøer, som Maur og Humanoid.

    Fremover

    Generative modeller er et raskt fremvoksende forskningsområde. Når vi fortsetter å fremme disse modellene og skalere opp treningen og datasettene, kan vi forvente å til slutt generere prøver som viser helt troverdige bilder eller videoer. Dette kan i seg selv finne bruk i flere applikasjoner, for eksempel on-demand generert kunst, Eller Photoshop++ kommandoer som «make my smile wider». Andre dag kjente applikasjoner inkluderer bilde denoising, inpainting, super-oppløsning, strukturert prediksjon, leting i forsterkning læring, og nevrale nettverk pretraining i tilfeller der merket data er dyrt.

    det dypere løftet om dette arbeidet er imidlertid at i ferd med å trene generative modeller, vil vi gi datamaskinen en forståelse av verden og hva den består av.