Articles

Modele Generative

această postare descrie patru proiecte care împărtășesc o temă comună de îmbunătățire sau utilizare a modelelor generative, o ramură a tehnicilor de învățare nesupravegheate în învățarea automată. Pe lângă descrierea muncii noastre, această postare vă va spune un pic mai multe despre modelele generative: ce sunt, de ce sunt importante și unde ar putea merge.una dintre aspirațiile noastre de bază la OpenAI este de a dezvolta algoritmi și tehnici care să înzestreze computerele cu o înțelegere a lumii noastre.

este ușor să uiți cât de multe știi despre lume: înțelegeți că este alcătuit din medii 3D, obiecte care se mișcă, se ciocnesc, interacționează; oameni care merg, vorbesc și gândesc; animale care pasc, zboară, aleargă sau latră; monitoare care afișează informații codificate în limbaj despre vreme, cine a câștigat un meci de baschet sau ce s-a întâmplat în 1970.

această cantitate imensă de informații este acolo și într — o mare măsură ușor accesibilă-fie în lumea fizică a atomilor, fie în lumea digitală a biților. Singura parte dificilă este de a dezvolta modele și algoritmi care pot analiza și înțelege această comoară de date.

modelele Generative sunt una dintre cele mai promițătoare abordări ale acestui obiectiv. Pentru a instrui un model generativ, colectăm mai întâi o cantitate mare de date într-un anumit domeniu (de exemplu, gândiți-vă la milioane de imagini, propoziții sau sunete etc.) și apoi antrenează un model pentru a genera date ca acesta. Intuiția din spatele acestei abordări urmează un citat celebru de la Richard Feynman:

„ceea ce nu pot crea, nu înțeleg.”

—Richard Feynman

trucul este că rețelele neuronale pe care le folosim ca modele generative au un număr de parametri semnificativ mai mic decât cantitatea de date pe care le instruim, astfel încât modelele sunt forțate să descopere și să internalizeze eficient esența datelor pentru a le genera.

modelele Generative au multe aplicații pe termen scurt. Dar pe termen lung, ei dețin potențialul de a învăța automat caracteristicile naturale ale unui set de date, indiferent dacă sunt categorii sau dimensiuni sau altceva în întregime.

generarea de imagini

să facem acest lucru mai concret cu un exemplu. Să presupunem că avem o colecție mare de imagini, cum ar fi cele 1, 2 milioane de imagini din setul de date ImageNet (dar rețineți că aceasta ar putea fi în cele din urmă o colecție mare de imagini sau videoclipuri de pe internet sau roboți). Dacă redimensionăm fiecare imagine pentru a avea lățimea și înălțimea de 256 (așa cum se face de obicei), setul nostru de date este unul mare 1,200,000x256x256x3 (aproximativ 200 GB) bloc de pixeli. Iată câteva exemple de imagini din acest set de date:

aceste imagini sunt exemple de cum arată lumea noastră vizuală și ne referim la acestea ca „eșantioane din distribuția adevărată a datelor”. Acum construim modelul nostru generativ pe care am dori să-l antrenăm pentru a genera imagini de genul acesta de la zero. Concret, un model generativ în acest caz ar putea fi unul rețea neuronală mare care emite imagini și ne referim la acestea ca „eșantioane din model”.

DCGAN

un astfel de model recent este rețeaua Dcgan de la Radford și colab. (prezentat mai jos). Această rețea ia ca intrare 100 de numere aleatorii extrase dintr-o distribuție uniformă (ne referim la acestea ca un cod sau variabile latente, în roșu) și emite o imagine (în acest caz 64x64x3 imagini din dreapta, în verde). Pe măsură ce codul este modificat treptat, imaginile generate o fac și ele — acest lucru arată că modelul a învățat caracteristici pentru a descrie cum arată lumea, mai degrabă decât să memoreze doar câteva exemple.

rețeaua (în galben) este alcătuită din componente standard ale rețelei neuronale convoluționale, cum ar fi straturi deconvolutionale (inversarea straturilor convoluționale), straturi complet conectate etc.:

DCGAN este inițializat cu greutăți aleatorii, astfel încât un cod aleatoriu conectat la rețea ar genera o imagine complet aleatorie. Cu toate acestea, după cum vă puteți imagina, rețeaua are milioane de parametri pe care îi putem modifica, iar scopul este să găsim o setare a acestor parametri care să facă ca eșantioanele generate din coduri aleatorii să arate ca datele de antrenament. Sau altfel spus, Vrem ca distribuția modelului să se potrivească cu distribuția adevărată a datelor în spațiul imaginilor.

formarea unui model generativ

Să presupunem că am folosit o rețea nou inițializată pentru a genera 200 de imagini, de fiecare dată începând cu un cod aleatoriu diferit. Întrebarea este: cum ar trebui să ajustăm parametrii rețelei pentru a o încuraja să producă eșantioane puțin mai credibile în viitor? Observați că nu ne aflăm într-un cadru simplu supravegheat și nu avem ținte explicite dorite pentru cele 200 de imagini generate; vrem doar să pară reale. O abordare inteligentă în jurul acestei probleme este de a urma rețeaua adversară generativă (GAN) abordare. Aici introducem o a doua rețea discriminatoare (de obicei o rețea neuronală convoluțională standard) care încearcă să clasifice dacă o imagine de intrare este reală sau generată. De exemplu, am putea alimenta cele 200 de imagini generate și 200 de imagini reale în discriminator și să-l instruim ca un clasificator standard pentru a distinge între cele două surse. Dar, în plus față de asta — și aici e truc — putem, de asemenea, backpropagate prin ambele discriminator și generatorul pentru a găsi cum ar trebui să schimbăm parametrii generatorului pentru a face 200 de probe ușor mai confuz pentru discriminator. Prin urmare, aceste două rețele sunt blocate într-o luptă: discriminatorul încearcă să distingă imaginile reale de imaginile false, iar generatorul încearcă să creeze imagini care să-l facă pe discriminator să creadă că sunt reale. În cele din urmă, rețeaua generatorului emite imagini care nu pot fi deosebite de imaginile reale pentru discriminator.

există câteva alte abordări pentru potrivirea acestor distribuții pe care le vom discuta pe scurt mai jos. Dar înainte de a ajunge acolo mai jos sunt două animații care arată mostre dintr-un model generativ pentru a vă oferi un sens vizual pentru procesul de antrenament.
în ambele cazuri, eșantioanele de la generator încep zgomotoase și haotice și, în timp, converg pentru a avea statistici de imagine mai plauzibile:

VAE de învățare pentru a genera imagini (timp jurnal)
gan învățare pentru a genera imagini (timp liniar)

acest lucru este interesant — aceste rețele neuronale învață cum arată lumea vizuală! Aceste modele au de obicei doar aproximativ 100 de milioane de parametri, astfel încât o rețea instruită pe ImageNet trebuie să comprime (cu pierderi) 200 GB de date pixel în 100 MB de greutăți. Acest lucru îl stimulează să descopere cele mai importante caracteristici ale datelor: de exemplu, va afla probabil că pixelii din apropiere au probabil aceeași culoare sau că lumea este formată din margini orizontale sau verticale sau pete de culori diferite. În cele din urmă, modelul poate descoperi multe regularități mai complexe: că există anumite tipuri de fundaluri, obiecte, texturi, că apar în anumite aranjamente probabile sau că se transformă în anumite moduri în timp în videoclipuri etc.

formulare mai generală

matematic, ne gândim la un set de date de exemple \(x_1, \ldots, x_n\) ca mostre dintr-o distribuție de date adevărată \(p(x)\). În exemplul de imagine de mai jos, Regiunea albastră arată partea din spațiul imaginii care, cu o probabilitate mare (peste un anumit prag) conține imagini reale, iar punctele negre indică punctele noastre de date (fiecare este o imagine în setul nostru de date). Acum, modelul nostru descrie, de asemenea, o distribuție \(\hat{p}_{\theta}(x)\) (verde) care este definită implicit prin luarea de puncte dintr — o distribuție Gaussiană unitate (roșu) și cartografierea lor printr-o rețea neuronală (deterministă) – modelul nostru generativ (galben). Rețeaua noastră este o funcție cu parametrii \(\theta\), și tweaking acești parametri vor tweak distribuția generată de imagini. Scopul nostru este atunci să găsim parametrii \(\theta\) care produc o distribuție care se potrivește îndeaproape cu distribuția adevărată a datelor (de exemplu, având o mică pierdere de divergență KL). Prin urmare, vă puteți imagina distribuția Verde începând aleatoriu și apoi procesul de instruire schimbând iterativ parametrii \(\theta\) pentru a-l întinde și stoarce pentru a se potrivi mai bine distribuției albastre.

trei abordări ale modelelor generative

majoritatea modelelor generative au această configurație de bază, dar diferă în detalii. Iată trei exemple populare de abordări ale modelului generativ pentru a vă oferi un sentiment al variației:

  • Generative Adversarial Networks (GANs), despre care am discutat deja mai sus, prezintă procesul de instruire ca un joc între două rețele separate: o rețea generatoare (așa cum s-a văzut mai sus) și o a doua rețea discriminativă care încearcă să clasifice eșantioanele ca provenind fie din distribuția adevărată \(p(X)\) sau distribuția modelului \(\hat{P}(x)\). De fiecare dată când discriminatorul observă o diferență între cele două distribuții, generatorul își ajustează ușor parametrii pentru a-l face să dispară, până când la sfârșit (teoretic) generatorul reproduce exact distribuția adevărată a datelor, iar discriminatorul ghicește la întâmplare, incapabil să găsească o diferență.
  • Autoencoderele variaționale (VAEs) ne permit să formalizăm această problemă în cadrul modelelor grafice probabilistice în care maximizăm o limită inferioară a probabilității jurnalului datelor.
  • modele Autoregresive, cum ar fi PixelRNN, antrenează în schimb o rețea care modelează distribuția condiționată a fiecărui pixel individual dat pixelilor anteriori (spre stânga și spre partea de sus). Acest lucru este similar cu conectarea pixelilor imaginii într-un char-rnn, dar RNN-urile rulează atât pe orizontală, cât și pe verticală peste imagine, în loc de doar o secvență 1d de caractere.

toate aceste abordări au argumente pro și contra. De exemplu, Autoencoderele variaționale ne permit să efectuăm atât învățarea, cât și inferența Bayesiană eficientă în modele grafice probabilistice sofisticate cu variabile latente (de exemplu, a se vedea desenați, sau participați la repetarea inferenței pentru indicii ale modelelor relativ complexe recente). Cu toate acestea, eșantioanele lor generate tind să fie ușor neclare. GANs generează în prezent cele mai clare imagini, dar sunt mai dificil de optimizat din cauza dinamicii instabile de antrenament. Pixelrnn-urile au un proces de antrenament foarte simplu și stabil (pierdere softmax) și oferă în prezent cele mai bune probabilități de jurnal (adică plauzibilitatea datelor generate). Cu toate acestea, ele sunt relativ ineficiente în timpul eșantionării și nu oferă cu ușurință coduri simple de dimensiuni reduse pentru imagini. Toate aceste modele sunt domenii active de cercetare și suntem dornici să vedem cum se dezvoltă în viitor!

contribuțiile noastre recente

suntem destul de entuziasmați de modelele generative de la OpenAI și tocmai am lansat patru proiecte care avansează stadiul tehnicii. Pentru fiecare dintre aceste contribuții lansăm, de asemenea, un raport tehnic și un cod sursă.

îmbunătățirea GANs (Cod). În primul rând, așa cum am menționat mai sus, GANs sunt o familie foarte promițătoare de modele generative, deoarece, spre deosebire de alte metode, ele produc imagini foarte curate și clare și învață coduri care conțin informații valoroase despre aceste texturi. Cu toate acestea, GANs sunt formulate ca un joc între două rețele și este important (și complicat!) pentru a le menține în echilibru: de exemplu, pot oscila între soluții sau generatorul are tendința de a se prăbuși. În această lucrare, Tim Salimans, Ian Goodfellow, Wojciech Zaremba și colegii au introdus câteva tehnici noi pentru a face formarea GAN mai stabilă. Aceste tehnici ne permit să scalăm GANs și să obținem frumos128x128 probe ImageNet:

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. Această abordare ne permite să obținem rezultate de ultimă generație pe MNIST, SVHN și CIFAR-10 în Setări cu foarte puține exemple etichetate. Pe MNIST, de exemplu, obținem o precizie de 99,14% cu doar 10 Exemple etichetate pe clasă cu o rețea neuronală complet conectată — un rezultat care este foarte apropiat de cele mai cunoscute rezultate cu abordări complet supravegheate folosind toate cele 60.000 de exemple etichetate. Acest lucru este foarte promițător, deoarece exemplele etichetate pot fi destul de costisitoare de obținut în practică.

rețelele contradictorii Generative sunt un model relativ nou (introdus acum doi ani) și ne așteptăm să vedem progrese mai rapide în îmbunătățirea în continuare a stabilității acestor modele în timpul instruirii.

îmbunătățirea VAEs (Cod). În această lucrare Durk Kingma și Tim Salimans introduc o metodă flexibilă și scalabilă din punct de vedere computațional pentru îmbunătățirea acurateței inferenței variaționale. În special, majoritatea va – urilor au fost instruite până acum folosind posterioare aproximative brute, unde fiecare variabilă latentă este independentă. Extensiile recente au abordat această problemă condiționând fiecare variabilă latentă de celelalte dinaintea ei într-un lanț, dar acest lucru este ineficient din punct de vedere computațional datorită dependențelor secvențiale introduse. Contribuția de bază a acestei lucrări, denumită flux autoregresiv invers (IAF), este o nouă abordare care, spre deosebire de lucrările anterioare, ne permite să paralelizăm calculul posterioarelor aproximative bogate și să le facem aproape arbitrar flexibile.

vă prezentăm câteva exemple32x32 mostre de imagine din modelul din imaginea de mai jos, din dreapta. În stânga sunt eșantioane anterioare din modelul DRAW pentru comparație (eșantioanele vanilla VAE ar arăta și mai rău și mai neclare). Modelul DRAW a fost publicat în urmă cu doar un an, evidențiind din nou progresul rapid înregistrat în formarea modelelor generative.

generat dintr-un model de extragere
generat dintr-un VAE instruit cu IAF

infogan (Cod). Peter Chen și colegii săi introduc InfoGAN — o extensie a GAN care învață reprezentări disentangled și interpretabile pentru imagini. Un Gan obișnuit atinge obiectivul de a reproduce distribuția datelor în model, dar aspectul și organizarea spațiului de cod sunt nespecificate — există multe soluții posibile pentru maparea unității Gaussian la imagini, iar cea cu care ajungem ar putea fi complicată și foarte încurcată. InfoGAN impune o structură suplimentară acestui spațiu prin adăugarea de noi obiective care implică maximizarea informațiilor reciproce între subseturile mici ale variabilelor de reprezentare și observație. Această abordare oferă rezultate destul de remarcabile. De exemplu, în imaginile fețelor 3D de mai jos variem o dimensiune continuă a codului, păstrând toate celelalte fixe. Este clar din cele cinci exemple furnizate (de-a lungul fiecărui rând) că dimensiunile rezultate din Codul captează dimensiuni interpretabile și că modelul a înțeles probabil că există unghiuri ale camerei, variații faciale etc., fără a fi spus că aceste caracteristici există și sunt importante:

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

We also note that nice, disentangled representations have been realizat înainte (cum ar fi cu DC-IGN de Kulkarni și colab.), dar aceste abordări se bazează pe supraveghere suplimentară, în timp ce abordarea noastră este în întregime nesupravegheată.

următoarele două proiecte recente se află într-un cadru de învățare a consolidării (rl) (un alt domeniu de interes la OpenAI), dar ambele implică o componentă model generativ.

explorare bazată pe curiozitate în învățarea de întărire profundă prin intermediul rețelelor neuronale Bayesiene (code). Explorarea eficientă în spații de înaltă dimensiune și continuă este în prezent o provocare nerezolvată în învățarea de întărire. Fără metode eficiente de explorare agenții noștri thrash în jurul până când se împiedică în mod aleatoriu în situații plină de satisfacții. Acest lucru este suficient în multe sarcini simple de jucărie, dar inadecvat dacă dorim să aplicăm acești algoritmi la Setări complexe cu spații de acțiune de înaltă dimensiune, așa cum este obișnuit în robotică. În această lucrare, Rein Houthooft și colegii propun VIME, o abordare practică a explorării folosind incertitudinea pe modele generative. VIME îl face pe agent să se auto-motiveze; caută în mod activ acțiuni surprinzătoare de stat. Arătăm că VIME poate îmbunătăți o serie de metode de căutare a politicilor și face progrese semnificative în ceea ce privește sarcini mai realiste, cu recompense rare (de exemplu, scenarii în care agentul trebuie să învețe primitive de locomoție fără nicio îndrumare).

politică instruită cu VIME
politică instruită cu explorare naivă

în cele din urmă, am dori să includem un al cincilea proiect bonus: generative adversarial imitation learning (Code), în care Jonathan ho și colegii prezintă o nouă abordare pentru învățarea imitației. Jonathan Ho ni se alătură la OpenAI ca stagiar de vară. El a făcut cea mai mare parte a acestei lucrări la Stanford, dar o includem aici ca o aplicație înrudită și extrem de creativă a GANs la RL. Setarea standard de învățare a întăririi necesită de obicei proiectarea unei funcții de recompensă care descrie comportamentul dorit al agentului. Cu toate acestea, în practică, acest lucru poate implica uneori un proces costisitor de încercare și eroare pentru a obține detaliile corecte. În schimb, în învățarea imitației, agentul învață din demonstrații de exemplu (de exemplu furnizate de teleoperarea în robotică), eliminând necesitatea proiectării unei funcții de recompensă.

abordările de imitație populară implică o conductă în două etape: mai întâi învățarea unei funcții de recompensă, apoi rularea RL pe acea recompensă. O astfel de conductă poate fi lentă și, deoarece este indirectă, este greu de garantat că Politica rezultată funcționează bine. Această lucrare arată cum se pot extrage direct politicile din date printr-o conexiune la GANs. Drept urmare, această abordare poate fi utilizată pentru a învăța politici din demonstrații de experți (fără recompense) în medii de gimnastică deschise, cum ar fi Furnica și umanoidul.

mergând înainte

modelele Generative sunt un domeniu de cercetare care avansează rapid. Pe măsură ce continuăm să avansăm aceste modele și să extindem instruirea și seturile de date, ne putem aștepta să generăm în cele din urmă eșantioane care descriu imagini sau videoclipuri complet plauzibile. Acest lucru poate fi folosit de la sine în mai multe aplicații, cum ar fi arta generată la cerere sau comenzile Photoshop++, cum ar fi „faceți zâmbetul meu mai larg”. Aplicațiile suplimentare cunoscute în prezent includ denoising de imagine, inpainting, super-rezoluție, predicție structurată, explorare în învățarea întăririi și pre-formarea rețelei neuronale în cazurile în care datele etichetate sunt scumpe.

cu toate acestea, promisiunea mai profundă a acestei lucrări este că, în procesul de formare a modelelor generative, vom înzestra computerul cu o înțelegere a lumii și din ce este alcătuit.