Articles

Generatiiviset mallit

tässä postauksessa kuvataan neljä projektia, joilla on yhteinen teema generatiivisten mallien tehostaminen tai käyttäminen, koneoppimisen valvomattomien oppimistekniikoiden haara. Sen lisäksi, että kuvailisimme työtämme, tämä viesti kertoo hieman lisää generatiivisista malleista: mitä ne ovat, miksi ne ovat tärkeitä ja mihin ne saattavat olla menossa.

yksi openain keskeisistä pyrkimyksistämme on kehittää algoritmeja ja tekniikoita, jotka antavat tietokoneille ymmärrystä maailmastamme.

on helppo unohtaa, kuinka paljon maailmasta tietää: ymmärrät, että se koostuu 3D-ympäristöistä, esineistä, jotka liikkuvat, törmäävät, ovat vuorovaikutuksessa; ihmisistä, jotka kävelevät, puhuvat ja ajattelevat; eläimistä, jotka laiduntavat, lentävät, juoksevat tai haukkuvat; monitoreista, jotka näyttävät kielellä koodattuja tietoja säästä, kuka voitti koripallopelin tai mitä tapahtui vuonna 1970.

tämä valtava määrä tietoa on olemassa ja suurelta osin helposti saatavilla — joko atomien fyysisessä maailmassa tai bittien digitaalisessa maailmassa. Ainoa hankala osa on kehittää malleja ja algoritmeja, jotka voivat analysoida ja ymmärtää tätä tiedon aarreaittaa.

generatiiviset mallit ovat yksi lupaavimmista lähestymistavoista tähän tavoitteeseen. Generatiivisen mallin kouluttamiseksi keräämme ensin suuren määrän dataa joillakin aloilla (esim.ajattele miljoonia kuvia, lauseita tai ääniä jne.) ja sitten kouluttaa malli tuottaa dataa kuin se. Intuitio tämän lähestymistavan takana seuraa kuuluisaa lainausta Richard Feynmanilta:

”Mitä en voi luoda, en ymmärrä.”

—Richard Feynman

juju on siinä, että generatiivisina malleina käyttämissämme neuroverkoissa on useita parametrejä, jotka ovat huomattavasti pienempiä kuin niiden kouluttama datamäärä, joten mallien on pakko löytää ja tehokkaasti sisäistää datan ydin sen tuottamiseksi.

Generatiivisilla malleilla on monia lyhytaikaisia sovelluksia. Mutta pitkällä aikavälillä niillä on mahdollisuus oppia automaattisesti datajoukon luonnolliset ominaisuudet, olivat ne sitten luokkia tai ulottuvuuksia tai jotain aivan muuta.

kuvien luominen

konkretisoidaan tämä esimerkillä. Oletetaan, että meillä on jokin suuri kokoelma kuvia, kuten 1,2 miljoonaa kuvaa ImageNet-aineistossa (mutta pidä mielessä, että tämä voi lopulta olla suuri kokoelma kuvia tai videoita Internetistä tai roboteista). Jos muutamme jokaisen kuvan kokoa siten, että sen leveys ja korkeus on 256 (kuten yleensä tehdään), tietojoukkomme on yksi suuri 1,200,000x256x256x3 (noin 200GB) pikselilohko. Tässä muutamia esimerkkikuvia tästä aineistosta:

nämä kuvat ovat esimerkkejä siitä, miltä visuaalinen maailmamme näyttää, ja kutsumme niitä ”otoksiksi todellisesta tiedonjakautumisesta”. Nyt rakennamme generatiivisen mallimme, jonka haluamme kouluttaa tuottamaan tällaisia kuvia tyhjästä. Konkreettisesti generatiivinen malli tässä tapauksessa voisi olla yksi suuri neuroverkko, joka tuottaa kuvia ja me kutsumme näitä ”mallinäytteiksi”.

DCGAN

yksi tällainen tuore malli on Radford et al-yhtiön dcgan-verkko. (alla). Tämä verkko ottaa tulona 100 satunnaislukua, jotka on piirretty yhtenäisestä jakaumasta (viittaamme näihin koodina eli latentteina muuttujina punaisella) ja tuottaa kuvan (tässä tapauksessa 64x64x3 kuvat oikealla, vihreänä). Koska koodi on muuttunut vähitellen, luodut kuvat eivät liian — Tämä osoittaa malli on oppinut ominaisuuksia kuvaamaan, miten maailma näyttää, sen sijaan, että vain ulkoa joitakin esimerkkejä.

verkko (keltaisena) koostuu tavallisista convolutionaalisista neuroverkkokomponenteista, kuten dekonvolutionaalisista kerroksista (convolutionaalisten kerrosten kääntöpuoli), täysin Yhdistyneistä kerroksista jne.:

DCGAN alustetaan satunnaispainoilla, joten verkkoon kytketty satunnaiskoodi tuottaisi täysin satunnaisen kuvan. Kuten arvata saattaa, verkossa on kuitenkin miljoonia parametreja, joita voimme muokata, ja tavoitteena on löytää näiden parametrien asetus, joka saa satunnaiskoodeista tuotetut näytteet näyttämään harjoitustiedoilta. Tai toisin sanoen haluamme mallijakauman vastaavan todellista tietojen jakautumista kuvien tilassa.

generatiivisen mallin koulutus

Oletetaan, että käytämme vasta-alustettua verkkoa luodaksemme 200 kuvaa, joka kerta alkaen eri satunnaiskoodilla. Kysymys kuuluu: miten meidän pitäisi säätää verkoston parametreja, jotta se voisi tulevaisuudessa tuottaa hieman uskottavampia otoksia? Huomaa, että emme ole yksinkertaisessa valvotussa ympäristössä eikä meillä ole mitään nimenomaisia haluttuja tavoitteita 200 luodulle kuvalle; haluamme vain niiden näyttävän aidoilta. Yksi näppärä lähestymistapa tämän ongelman ympärille on noudattaa Generative Adversarial Network (GAN) – lähestymistapaa. Tässä esitellään toinen erotteluverkosto (yleensä standardi convolutionaalinen neuroverkko), joka yrittää luokitella, jos syötekuva on todellinen tai luotu. Voisimme esimerkiksi syöttää 200 tuotettua kuvaa ja 200 oikeaa kuvaa erottelijaan ja kouluttaa sen vakioluokittajaksi erottamaan nämä kaksi lähdettä toisistaan. Mutta sen lisäksi — ja tässä on temppu-voimme myös backpropagate läpi sekä syrjivä ja generaattori löytää, miten meidän pitäisi muuttaa generaattorin parametrit tehdä sen 200 näytettä hieman sekava syrjivä. Nämä kaksi verkkoa ovat siis lukkiutuneet taisteluun: syrjijä yrittää erottaa aidot kuvat väärennetyistä kuvista ja generaattori yrittää luoda kuvia, jotka saavat syrjijän luulemaan niitä aidoiksi. Lopulta generaattoriverkosto lähettää kuvia, joita ei voi erottaa todellisista kuvista erottelijalle.

on olemassa muutamia muita lähestymistapoja näiden jakaumien sovittamiseksi, joita käsittelemme lyhyesti alla. Mutta ennen kuin pääsemme sinne alla on kaksi animaatiota, jotka näyttävät näytteitä generatiivisesta mallista, joka antaa sinulle visuaalisen tunteen koulutusprosessia varten.
molemmissa tapauksissa generaattorin otokset alkavat meluisina ja kaoottisina, ja ajan myötä ne yhtyvät uskottavampiin kuvatilastoihin:

VAE learning to generate images (log time)
gan learning to generate images (Linear Time)

Tämä on jännittävää — nämä hermoverkot oppivat miltä visuaalinen maailma näyttää! Näissä malleissa on yleensä vain noin 100 miljoonaa parametria, joten Imagenetissä koulutettu verkko joutuu (häviöllisesti) pakkaamaan 200 Gt pikselitietoa 100MB painoihin. Tämä kannustaa sitä löytämään tiedon tärkeimmät ominaisuudet: esimerkiksi se todennäköisesti oppii, että lähellä olevilla pikseleillä on todennäköisesti sama väri, tai että maailma koostuu vaaka-tai pystysuuntaisista reunoista tai erivärisistä möykyistä. Lopulta malli voi löytää monia monimutkaisempia säännönmukaisuuksia: että on olemassa tietyntyyppisiä taustoja, esineitä, tekstuureja, että ne esiintyvät tietyissä todennäköisissä asetelmissa, tai että ne muuttuvat tietyllä tavalla ajan mittaan videoissa jne.

yleisempi muotoilu

matemaattisesti ajattelemme aineistoa esimerkeistä \(x_1, \ldots, x_n\) otoksina todellisesta datajakaumasta \(p(x)\). Alla olevassa esimerkkikuvassa sininen alue näyttää sen osan kuva-avaruudesta, joka suurella todennäköisyydellä (jonkin kynnyksen yli) sisältää todellisia kuvia, ja mustat pisteet osoittavat datapisteemme (jokainen on yksi kuva aineistossamme). Nyt mallimme kuvaa myös jakaumaa \(\hat{p}_{\theta} (x)\) (Vihreä), joka määritellään implisiittisesti ottamalla pisteitä yksiköstä Gaussin jakauma (punainen) ja kartoittamalla ne (deterministinen) neuroverkko — generatiivinen mallimme (keltainen). Verkkomme on toiminto parametreilla \(\theta\), ja näiden parametrien säätäminen nipistää kuvien generoitua jakelua. Tavoitteemme on sitten löytää parametrit \(\theta\), jotka tuottavat jakauman, joka vastaa läheisesti todellista tietojen jakautumista (esimerkiksi ottamalla pieni KL eroavaisuus menetys). Siksi voit kuvitella vihreän jakauman alkavan sattumanvaraisesti ja sitten koulutusprosessin iteratiivisesti muuttavan parametreja \(\theta\) venyttämään ja puristamaan sitä vastaamaan paremmin sinistä jakaumaa.

kolmessa generatiivisessa mallissa

useimmissa generatiivisissa malleissa on tämä perusasetelma, mutta ne eroavat yksityiskohdiltaan. Tässä on kolme suosittua esimerkkiä generatiivisesta mallista, joka antaa sinulle käsityksen muunnelmasta:

  • generatiiviset Kontradiktoriset verkot (Gans), joista olemme jo keskustelleet edellä, aiheuttavat koulutusprosessin kahden erillisen verkon välisenä pelinä: generaattoriverkon (kuten yllä) ja toisen diskriminatiivisen verkon, joka pyrkii luokittelemaan näytteet joko lähtöisin todellisesta jakaumasta \(p(x)\) tai mallijakaumasta \(\hat{p}(x)\). Joka kerta, kun erottelija huomaa eron kahden jakauman välillä, generaattori säätää parametrejaan hieman, jotta se menisi pois, kunnes lopussa (teoriassa) generaattori täsmälleen toistaa todellisen tiedon jakautumisen ja erottelija arvailee sattumanvaraisesti, kykenemättä löytämään eroa.
  • Variational Autoencoders (VAEs) mahdollistaa tämän ongelman virallistamisen probabilististen graafisten mallien puitteissa, joissa maksimoimme datan lokitodennäköisyyden alarajan.
  • Autoregressiiviset mallit, kuten PixelRNN, kouluttavat sen sijaan verkkoa, joka mallintaa jokaisen aiemmin annetun pikselin ehdollisen jakauman (vasemmalla ja ylhäällä). Tämä muistuttaa kuvan pikselien liittämistä char-rnn: ään, mutta rnns toimii sekä vaaka-että pystysuunnassa kuvan päällä pelkän 1D-merkkisarjan sijaan.

kaikilla näillä lähestymistavoilla on hyvät ja huonot puolensa. Esimerkiksi Variational Autoencoders avulla voimme suorittaa sekä oppimisen ja tehokas Bayesilainen päättely hienostunut probabilistic graafisia malleja latentti muuttujia (esim katso piirtää, tai osallistua päättely toistaa vihjeitä viime suhteellisen monimutkaisia malleja). Niiden tuottamat näytteet ovat kuitenkin yleensä hieman epäselviä. GANs tuottaa tällä hetkellä terävimmät kuvat, mutta niitä on vaikeampi optimoida epävakaan harjoitusdynamiikan vuoksi. PixelRNNs on hyvin yksinkertainen ja vakaa koulutus prosessi (softmax menetys) ja tällä hetkellä antaa parhaan lokin likeliows (eli uskottavuus tuotetun datan). Ne ovat kuitenkin suhteellisen tehottomia näytteenoton aikana, eivätkä ne tarjoa helposti yksinkertaisia pieniulotteisia koodeja kuville. Kaikki nämä mallit ovat aktiivisia tutkimusalueita ja odotamme innolla, miten ne kehittyvät tulevaisuudessa!

tuoreimmat panoksemme

olemme varsin innoissamme generatiivisista malleista Openaissa, ja olemme juuri julkaisseet neljä projektia, jotka edistävät huipputasoa. Julkaisemme jokaisesta osuudesta myös teknisen raportin ja lähdekoodin.

GANs: in parantaminen (koodi). Ensinnäkin, kuten edellä mainittiin GANs ovat erittäin lupaava perhe generatiivisten mallien, koska, toisin kuin muut menetelmät, ne tuottavat erittäin puhtaita ja teräviä kuvia ja oppia koodeja, jotka sisältävät arvokasta tietoa näistä tekstuureista. GANs on kuitenkin muotoiltu kahden verkon väliseksi peliksi ja se on tärkeää (ja hankalaa!) pitää ne tasapainossa: ne voivat esimerkiksi värähtellä liuosten välillä tai generaattorilla on taipumus romahtaa. Tässä työssä Tim Salimans, Ian Goodfellow, Wojciech Zaremba ja kollegat ovat ottaneet käyttöön muutamia uusia tekniikoita, joilla gan-harjoittelu saadaan vakaammaksi. Näiden tekniikoiden avulla voimme skaalata Ganeja ja saada Nizzan 128x128 ImageNet samples:

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. Tämän lähestymistavan avulla voimme saada uusinta tuloksia MNIST, SVHN, ja CIFAR-10 asetukset hyvin vähän merkitty esimerkkejä. On MNIST, esimerkiksi, saavutamme 99.14% tarkkuus vain 10 merkitty esimerkkejä per luokka täysin kytketty neuroverkko-tulos, joka on hyvin lähellä tunnetuimpia tuloksia täysin valvottu lähestymistapoja käyttäen kaikkia 60,000 merkitty esimerkkejä. Tämä on erittäin lupaava, koska merkitty esimerkkejä voi olla melko kallista saada käytännössä.

generatiiviset Kontradiktoriset verkostot ovat suhteellisen uusi malli (otettiin käyttöön vasta kaksi vuotta sitten), ja odotamme näkevämme nopeammin edistystä näiden mallien vakauden lisäämisessä koulutuksen aikana.

VAEs: n parantaminen (koodi). Tässä työssä Durk Kingma ja Tim Salimans käyttöön joustava ja laskennallisesti skaalautuva menetelmä tarkkuuden parantamiseksi variational päättely. Erityisesti, useimmat VAEs on tähän mennessä koulutettu käyttäen karkea likimääräisiä posteriors, jossa jokainen piilevä muuttuja on riippumaton. Viimeaikaiset laajennukset ovat käsitelleet tätä ongelmaa ehdollistamalla kunkin piilevän muuttujan muut ennen sitä ketjussa, mutta tämä on laskennallisesti tehoton, koska käyttöön peräkkäiset riippuvuudet. Ydin panos tämän työn, kutsutaan inverse autoregressive flow (IAF), on uusi lähestymistapa, joka, toisin kuin edellinen työ, voimme parallelize laskenta rikas likimääräisiä posteriors, ja tehdä niistä lähes mielivaltaisesti joustava.

näytämme joitakin esimerkkejä 32x32 kuvan otoksia mallista alla olevassa kuvassa oikealla. Vasemmalla on vertailtavaksi aiempia näytteitä VETOMALLISTA (vanilla VAE-näytteet näyttäisivät vielä huonommilta ja sumeammilta). Vasta vuosi sitten julkaistu ARVONTAMALLI korostaa jälleen sitä, että generatiivisten mallien koulutuksessa on edistytty nopeasti.

Arvontamallista syntynyt
generated from a Vae trained with IAF

infogan (Code). Peter Chen ja kollegat esittelevät Infoganin-Ganin laajennuksen, joka oppii disentangled and interpretable representations for images. Säännöllinen GAN saavuttaa tavoitteen toistaa tiedonjakauma mallissa, mutta asettelu ja organisointi koodiavaruuden on alimääritelty — on olemassa monia mahdollisia ratkaisuja kartoittaa yksikkö Gaussin kuvia ja yksi päädymme saattaa olla monimutkainen ja erittäin sotkeutunut. InfoGAN asettaa lisärakenteita tähän tilaan lisäämällä uusia tavoitteita, joissa maksimoidaan edustusmuuttujien ja havainnon pienten osajoukkojen keskinäinen informaatio. Tämä lähestymistapa tarjoaa varsin merkittäviä tuloksia. Esimerkiksi alla olevissa 3D-kasvojen kuvissa vaihtelemme koodin yhtä jatkuvaa ulottuvuutta, pitäen kaikki muut kiinteinä. On selvää viidestä annetuista esimerkeistä (jokaisen rivin varrella), että tuloksena olevat mitat koodissa kaappaavat tulkittavia ulottuvuuksia, ja että malli on ehkä ymmärtänyt, että on olemassa kamerakulmia, kasvojen muunnelmia jne., ilman että on kerrottu, että nämä ominaisuudet ovat olemassa ja ovat tärkeitä:

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

We also note that nice, disentangled representations have been saavutettu ennen (kuten DC-IGN: n kanssa Kulkarni et al.), mutta nämä lähestymistavat perustuvat lisävalvontaan, kun taas lähestymistapamme on täysin valvomaton.

seuraavat kaksi viimeaikaista projektia ovat strengthening learning (RL) – ympäristössä (toinen painopiste Openaissa), mutta molemmissa on generatiivinen malliosa.

Curiosity-driven Exploration in Deep vahvistaminen Learning via Bayesian Neural Networks (code). Tehokas tutkiminen suuriulotteisissa ja jatkuvissa tiloissa on tällä hetkellä ratkaisematon haaste vahvistusoppimisessa. Ilman tehokkaita tutkimusmenetelmiä agenttimme kiertelevät ympäriinsä, kunnes he sattumanvaraisesti törmäävät palkitseviin tilanteisiin. Tämä riittää monissa yksinkertaisissa lelutehtävissä, mutta riittämätön, jos haluamme soveltaa näitä algoritmeja monimutkaisiin asetuksiin, joissa on suuriulotteiset toimintatilat, kuten robotiikassa on yleistä. Tässä asiakirjassa, Rein Houthooft ja kollegat ehdottavat Vime, käytännön lähestymistapa etsintä käyttäen epävarmuutta generative malleja. Vime tekee agentista omatoimisen; se etsii aktiivisesti yllättäviä valtion toimia. Osoitamme, että VIME pystyy parantamaan useita politiikan hakumenetelmiä ja edistyy merkittävästi realistisemmissa tehtävissä niukkojen palkkioiden avulla (esim.skenaariot, joissa agentin on opittava locomotion primitives ilman opastusta).

Policy trained with vime
Policy trained with naivic exploration

lopuksi haluaisimme sisällyttää bonuksena viidennen projektin: generative contradarial Imitation learning (code), jossa Jonathan ho ja kollegat esittelevät uuden lähestymistavan jäljitelmäoppimiseen. Jonathan Ho on mukana openaissa kesäharjoittelijana. Hän teki suurimman osan tästä työstä Stanfordissa, mutta sisällytämme sen täällä liittyvät ja erittäin luova soveltaminen GANs RL. Vakiovahvistusoppimisasetus vaatii yleensä suunnittelemaan palkitsemisfunktion, joka kuvaa agentin toivottua käyttäytymistä. Käytännössä tähän voi kuitenkin joskus liittyä kallis yritys-ja erehdysprosessi, jotta yksityiskohdat saadaan kuntoon. Sen sijaan jäljitelmäoppimisessa agentti oppii esimerkkinäytöksistä (esimerkiksi etäoperaatio robotiikassa), jolloin palkitsemisfunktion suunnittelutarve poistuu.

suosituissa imitaatiomalleissa on kaksivaiheinen putki: ensin opetellaan palkitsemisfunktio, sitten ajetaan RL kyseisellä palkinnolla. Tällainen putki voi olla hidas, ja koska se on epäsuora, on vaikea taata, että tuloksena oleva politiikka toimii hyvin. Tämä työ osoittaa, miten voidaan suoraan poimia politiikkoja datasta yhteyden kautta GANs. Tämän seurauksena tätä lähestymistapaa voidaan käyttää oppimaan politiikkaa asiantuntijanäytöksistä (ilman palkintoja) kovissa OpenAI Kuntosaliympäristöissä, kuten Ant ja Humanoid.

eteenpäin menevä

generatiiviset mallit ovat nopeasti etenevä tutkimusalue. Kun jatkamme näiden mallien edistämistä ja koulutuksen ja aineiston skaalaamista, voimme odottaa tuottavamme lopulta näytteitä, jotka kuvaavat täysin uskottavia kuvia tai videoita. Tämä voi itsessään löytää käyttöä useissa sovelluksissa, kuten on-demand generated art, tai Photoshop++ komentoja, kuten ”make my smile wider”. Muita tällä hetkellä tunnettuja sovelluksia ovat kuvan denoising, inpainting, super-resoluutio, jäsennelty ennustaminen, etsintä vahvistaminen oppiminen, ja neuroverkko esikasvatus tapauksissa, joissa merkitty data on kallista.

tämän teoksen syvempi lupaus on kuitenkin se, että generatiivisten mallien koulutuksen yhteydessä annamme tietokoneelle käsityksen maailmasta ja siitä, mistä se koostuu.