
Autor: Steven Wang
„Ceea ce nu pot crea, nu înțeleg.” -
Richard Feynman
Prefaţă
Creați imagini frumoase cu Stable Diffusion și MidJourney de partea dvs.
Sunteți abil în utilizarea ChatGPT și LLaMa pentru a crea text elegant.
Comutați înainte și înapoi între MuseNet și MuseGAN pentru a crea muzica munților și a apei curgătoare.
Nu există nicio îndoială că cea mai unică abilitate a ființelor umane este creația, dar astăzi, odată cu dezvoltarea rapidă a tehnologiei, creăm prin crearea de mașini! Aparatele pot desena lucrări de artă originale într-un stil dat (desenă), pot scrie un articol lung și coerent (scrie), pot crea muzică frumoasă (compune) și pot dezvolta strategii câștigătoare pentru jocuri complexe (joc). Această tehnologie este Inteligența Artificială Generativă (GenAI). Acum este doar începutul revoluției GenAI.
1. Modele generative și discriminatoare
GenAI este un cuvânt la modă, iar esența sa este modelul generativ, care este o ramură a învățării automate, având ca scop antrenarea unui model pentru a genera date noi, similare cu un set de date dat.
Să presupunem că avem un set de date despre cai. Mai întâi, putem antrena un model generativ pe acest set de date pentru a capta regulile care controlează relațiile complexe dintre pixeli în imaginile cu cai. Apoi, putem eșantiona din acest model pentru a crea imagini realiste cu cai care nu se află în setul de date original, procesul fiind ilustrat în imaginea de mai jos.

Pentru a înțelege cu adevărat obiectivul și importanța modelului generativ, este necesar să-l comparăm cu modelul discriminator. De fapt, majoritatea problemelor din învățarea automată sunt rezolvate de modele discriminatoare, vezi exemplele de mai jos.
Să presupunem că avem un set de date despre picturi, unele fiind lucrări de Van Gogh, iar altele de alți artiști. Cu suficiente date, putem antrena un model discriminator pentru a prezice dacă o anumită pictură a fost creată de Van Gogh, procesul fiind ilustrat în imaginea de mai jos.

Când se folosește un model discriminator, fiecare exemplu din setul de antrenament are o etichetă (label); pentru problema de clasificare binară de mai sus, eticheta pentru picturile lui Van Gogh este de obicei 1, iar eticheta pentru picturile non-Van Gogh este 0. Probabilitatea prezisă de modelul din imaginea de mai sus este 0.83, ceea ce sugerează că este foarte probabil să fie creată de Van Gogh. Spre deosebire de modelul discriminator, modelul generativ nu necesită ca exemplele să conțină etichete, deoarece obiectivul său este de a genera date noi, nu de a prezice etichete pentru date.
După ce am parcurs exemplele, să definim precis modelul generativ și modelul discriminator folosind simboluri matematice:
Modelul discriminator modelează P(y|x), estimând probabilitatea condiționată a etichetei y, dată caracteristica x.
Modelul generativ modelează P(x), estimând direct probabilitatea caracteristicii x, iar din această distribuție de probabilitate putem genera noi caracteristici prin eșantionare.
Este important de menționat că, chiar dacă am putea construi un model discriminator perfect pentru a identifica picturile lui Van Gogh, acesta nu ar ști cum să creeze o pictură care să arate ca una de Van Gogh, ci doar ar putea să emită o probabilitate, adică probabilitatea ca imaginea să provină din mâna lui Van Gogh. Prin urmare, modelul generativ este mult mai dificil decât modelul discriminator.
2. Cadrul modelului generativ
Înainte de a înțelege cadrul modelului generativ, hai să jucăm un joc. Să presupunem că punctele din imaginea de mai jos sunt generate de o anumită regulă, pe care o numim Pdata, iar acum trebuie să generezi un x diferit = (x1, x2) astfel încât acest punct să pară că a fost generat de aceeași regulă Pdata.

Cum ai genera acest punct? Probabil că ai folosi punctele date pentru a imagina un model Pmodel, iar acest model ar putea genera punctele dorite. Astfel, modelul Pmodel este o estimare a Pdata. Un model Pmodel foarte simplu este căsuța portocalie din imaginea de mai jos, unde punctele pot fi generate doar în interiorul căsuței, nu și în afara acesteia.

Pentru a genera puncte noi, putem selecta aleator un punct din cadrul căsuței, mai precis, putem eșantiona din distribuția modelului Pmodel. Acesta este un model generativ minimalist. Creati un model (cadrul portocal) din datele de antrenament (puncte negre) și apoi puteți eșantiona din model, sperând că punctele generate vor semăna cu cele din setul de antrenament.
Acum putem propune oficial cadrul învățării generative.

Acum să dezvăluim distribuția reală de generare a datelor Pdata și să învățăm cum să aplicăm cadrul de mai sus acestui exemplu. Din imaginea de mai jos putem observa că regula de generare a datelor Pdata este că punctele sunt distribuite uniform pe uscat, fără a apărea în ocean.

Este evident că modelul nostru Pmodel este o simplificare a regulii Pdata. Examinând punctele A, B și C din imaginea de mai sus, putem înțelege dacă modelul Pmodel a reușit să imite regula Pdata.
Punctul A nu respectă regula Pdata, deoarece apare în mare, dar ar putea fi generat de modelul Pmodel, deoarece apare în cadrul căsuței portocalii.
Punctul B nu poate fi generat de modelul Pmodel, deoarece apare în afara căsuței portocalii, dar respectă regula Pdata, deoarece apare pe uscat.
Punctul C este generat de modelul Pmodel și respectă regula Pdata.
Acest exemplu ilustrează conceptele fundamentale din spatele modelării generative; deși în realitate utilizarea modelului generativ este mult mai complexă, cadrul său de bază rămâne același.
3. Primul model generativ
Să presupunem că ești directorul de modă al unei companii (Chief Fashion Officer, CFO), responsabil cu crearea de haine noi și elegante. Anul acesta ai primit 50 de seturi de date despre combinații de modă (așa cum se arată în imaginea de mai jos) și trebuie să creezi 10 combinații de modă noi.

Deși ești director de modă, ești și un om de știință în domeniul datelor, așa că ai decis să folosești un model generativ pentru a aborda această problemă. După ce ai analizat cele 50 de imagini de mai sus, ai decis să folosești cinci caracteristici: tipul accesoriilor (accessies type), culoarea îmbrăcămintei (clothing color), tipul de îmbrăcăminte (clothing type), culoarea părului (hair color) și tipul de păr (hair type) pentru a descrie combinațiile de modă.
Primele 10 caracteristici ale datelor imaginii sunt următoarele.

Fiecare caracteristică are, de asemenea, un număr diferit de valori:
3 tipuri de accesorii (accessies type):
Gol, Rotund, Ochelari de soare
8 culori de îmbrăcăminte (clothing color):
Negru, Albastru01, Gri01, VerdePastel, PortocaliuPastel, Roz, Roșu, Alb
4 tipuri de îmbrăcăminte (clothing type):
Hanorac, Salopetă, Cămașă cu gât rotund, Cămașă cu gât în V
6 culori de păr (hair color):
Negru, Blond, Căprui, RozPastel, Roșu, GriArgintiu
7 tipuri de păr (hair type):
Fără păr, Coc lung, Păr lung și ondulat, Păr lung și drept, Păr scurt și ondulat, Păr scurt și plat, Păr scurt și creț
Astfel, există 3 * 8 * 4 * 6 * 7 = 4032 de combinații de caracteristici, deci poate fi considerat că spațiul de eșantionare conține 4032 de puncte. Din cele 50 de puncte de date furnizate, putem observa că Pdata preferă anumite valori pentru caracteristici diferite. Din tabelul de mai sus, se observă că culoarea îmbrăcămintei albe și culoarea părului gri sunt mai frecvente. Deoarece nu știm adevăratul Pdata, putem construi un Pmodel pe baza acestor 50 de date, astfel încât să fie aproape de Pdata.
3.1 Model minimalist
O metodă foarte simplă este de a atribui un parametru de probabilitate fiecărui punct din cele 4032 de combinații de caracteristici, astfel încât modelul să conțină 4031 de parametri, deoarece suma tuturor parametrilor de probabilitate este egală cu 1. Acum vom verifica unul câte unul cele 50 de date și vom actualiza parametrii modelului (θ1, θ2, …, θ4031), fiecare expresie a parametrului fiind:

Între care N este numărul de date observate, adică 50, nj este numărul de apariții ale combinației j în cele 50 de date.
De exemplu, combinația de caracteristici (LongHairStraight, Red, Round, ShirtScoopNeck, White) (numită combinația 1) a apărut de două ori, astfel încât

De exemplu, combinația de caracteristici (LongHairStraight, Red, Round, ShirtScoopNeck, Blue01) (numită combinația 2) nu a apărut, așadar

Conform regulilor de mai sus, am calculat un θ pentru cele 4031 de combinații; nu este greu de observat că multe dintre aceste θ-uri sunt 0, iar mai grav este că nu putem genera imagini noi, necunoscute (θ = 0 înseamnă că nu a fost observată niciodată o imagine cu acea combinație de caracteristici). Pentru a rezolva această problemă, este suficient să adăugăm suma totală a numărului de caracteristici d la numitor și să adăugăm 1 la numărător; această tehnică se numește netezire Laplace.

Acum, fiecare combinație (inclusiv cele care nu se află în setul de date original) are o probabilitate de eșantionare diferită de 0, totuși acesta nu este un model generativ satisfăcător, deoarece probabilitatea punctelor care nu se află în setul de date original este o constantă. Dacă încercăm să folosim un astfel de model pentru a genera picturi de Van Gogh, acesta va opera cu aceeași probabilitate asupra celor două tipuri de picturi:
O copie a lucrării originale de Van Gogh (care nu este în setul de date original)
O pictură realizată din pixeli aleatori (care nu este în setul de date original)
Acesta nu este evident modelul generativ pe care ni-l dorim; ne dorim ca acesta să învețe din date o structură inerentă, astfel încât să poată crește probabilitățile pentru regiunile pe care le consideră mai probabile în spațiul de eșantionare, în loc să pună toate greutățile probabilității pe punctele existente în setul de date.
3.2 Modelul de ordin secundar
Modelul Naive Bayes (Naive Bayes) poate reduce semnificativ numărul combinațiilor de caracteristici de mai sus, deoarece modelul său presupune că fiecare caracteristică este independentă de celelalte. Revenind la datele de mai sus, culoarea părului unei persoane (caracteristica xj) și culoarea îmbrăcămintei sale (caracteristica xk) nu au legătură, ceea ce se poate exprima matematic prin:
p(xj | xk) = p(xk)
Cu această ipoteză, putem calcula

Modelul Naive Bayes simplifică problema inițială „de a face estimări de probabilitate pentru fiecare combinație de caracteristici” la „a face estimări de probabilitate pentru fiecare caracteristică”, astfel încât, în loc să avem nevoie de 4031 (3 * 8 * 4 * 6 * 7) parametri, acum avem nevoie doar de 23 (3 + 8 + 4 + 6 + 7) parametri, fiecare expresie a parametrului fiind:

Între care N este numărul de date observate, adică 50, nkl este numărul de valori ale caracteristicii k care iau valoarea l.
Prin statisticile pe cele 50 de date, tabelul de mai jos oferă valorile parametrilor pentru modelul Naive Bayes.

Pentru a calcula probabilitatea ca un model să genereze o anumită caracteristică a datelor, este suficient să înmulțim probabilitățile din tabelul de mai sus, de exemplu:

Această combinație nu a apărut în setul de date original, dar modelul îi alocă totuși o probabilitate diferită de 0, deci poate fi generat de model. Astfel, modelul Naive Bayes poate învăța din date unele structuri și le poate folosi pentru a genera exemple noi care nu au fost văzute în setul de date original. Imaginea de mai jos arată 10 noi imagini cu combinații de modă generate de model.

În această problemă, caracteristicile sunt doar 5, deci aparține unui set de date de dimensiuni reduse; modelul Naive Bayes presupune că acestea sunt independente, ceea ce este rezonabil, astfel încât rezultatele generate de model sunt decente. Acum să vedem un exemplu de model care se prăbușește.
4. Dificultățile modelului generativ
4.1 Datele de înaltă dimensiune
Ca director de modă, ai reușit să generezi 10 combinații de modă complet noi folosind Naive Bayes, având o mare încredere în modelul tău, până când te-ai confruntat cu setul de date de mai jos.

Acest set de date nu mai este reprezentat prin cinci caracteristici, ci prin 32*32 = 1024 de pixeli, fiecare valoare de pixel putând lua valori de la 0 la 255, unde 0 reprezintă alb, iar 255 reprezintă negru. Tabelul de mai jos listează valorile pixelilor 1 până la 5 pentru primele 10 imagini.

Folosind același model pentru a genera 10 combinații de modă complet noi, iată rezultatele generate de model; fiecare este foarte similar și niciuna nu reușește să diferențieze caracteristicile, de ce se întâmplă asta?

În primul rând, deoarece modelul Naive Bayes face eșantionare independentă a pixelilor, dar pixelii adiacenți sunt, de fapt, foarte asemănători. Pentru îmbrăcăminte, pixelii ar trebui să fie aproximativ la fel, dar modelul eșantionează aleator, astfel încât îmbrăcămintea din imaginea de mai sus este colorată în mod variat. În plus, posibilitățile din spațiul de eșantionare de dimensiuni mari sunt prea multe, dintre care doar o mică parte sunt recognoscibile. Dacă modelul Naive Bayes ar trata direct aceste valori de pixel foarte corelate, ar avea șanse foarte mici să găsească combinații de valori satisfăcătoare.
În concluzie, pentru un spațiu de eșantionare de dimensiuni reduse și caracteristici puțin corelate, Naive Bayes funcționează foarte bine prin generarea de eșantioane independente; dar pentru un spațiu de eșantionare de dimensiuni mari și caracteristici foarte corelate, este aproape imposibil să găsești fețe valide prin eșantionarea independentă a pixelilor.
Aceast exemplu subliniază cele două dificultăți pe care modelul generativ trebuie să le depășească pentru a avea succes:
Cum gestionează modelul relațiile de dependență condiționată între caracteristicile de înaltă dimensiune?
Cum găsește modelul observațiile care satisfac condițiile în spațiul de eșantionare de dimensiuni mari?
Pentru ca un model generativ să aibă succes în spațiul de eșantionare de dimensiuni mari și cu caracteristici foarte corelate, trebuie să utilizeze modele de învățare profundă. Avem nevoie de un model care poate deduce structuri relevante din date, în loc să ni se spună dinainte ce ipoteze trebuie să facem. Învățarea profundă poate forma propriile caracteristici în spații de dimensiuni reduse, iar aceasta este o formă de învățare a reprezentărilor (representation learning).
4.2 Învățarea reprezentărilor
Învățarea reprezentărilor înseamnă a învăța semnificația reprezentării datelor de înaltă dimensiune.
Imaginați-vă că mergeți să întâlniți un cunoscut întâlnit online, dar ajungând la locul stabilit, sunt foarte mulți oameni și nu o găsiți deloc. Îi sunați și îi descrieți cum arătați. Cu siguranță, nu veți spune că pixelul 1 din imaginea dvs. are culoarea neagră, pixelul 2 are culoarea gri deschis, pixelul 3 are culoarea gri etc. În schimb, veți considera că cunoscutul are o idee generală despre aspectul oamenilor normali, iar apoi, având în vedere această înțelegere, veți descrie caracteristicile grupului de pixeli, de exemplu, aveți părul scurt, negru și strălucitor, purtați o pereche de ochelari strălucitori etc. De obicei, nu mai mult de 10 astfel de descrieri, cunoscutul va putea să își imagineze imaginea dvs., care poate fi foarte brută, dar nu împiedică cunoscutul să vă găsească dintre sute de oameni, chiar dacă nu v-a văzut niciodată.
Aceasta este ideea centrală din spatele învățării reprezentărilor, care nu încearcă să modeleze direct spațiul de eșantionare de înaltă dimensiune, ci folosește un spațiu latent de dimensiuni reduse pentru a descrie fiecare observație din setul de antrenament, apoi învață o funcție de mapare (mapping function) care poate lua un punct din spațiul latent și să-l mapeze în spațiul de eșantionare original. Cu alte cuvinte, fiecare punct din spațiul latent reprezintă caracteristicile datelor de înaltă dimensiune.
Dacă ceea ce a fost spus anterior nu este clar, vă rugăm să consultați imaginea de mai jos, care constă dintr-un set de antrenament format din imagini cu borcane în nuanțe de gri.

Nu este greu de observat că aceste borcane pot fi descrise doar cu două caracteristici: înălțimea și lățimea. Prin urmare, putem transforma spațiul de pixeli de înaltă dimensiune al imaginii într-un spațiu latent bidimensional, așa cum se ilustrează în imaginea de mai jos. Astfel, putem eșantiona din spațiul latent (puncte albastre), apoi folosind funcția de mapare f, să le transformăm în imagini.

Realizarea că setul de date original poate fi reprezentat cu un spațiu latent mai simplu nu este ușor pentru mașină; mai întâi, mașina trebuie să determine care sunt cele două dimensiuni latente care descriu cel mai bine acest set de date: înălțimea și lățimea, apoi învață funcția de mapare $$f$$ care poate lua un punct în acest spațiu și să-l mapeze în imaginea cu borcane în nuanțe de gri. Învățarea profundă ne permite să antrenăm mașina astfel încât să găsească aceste relații complexe fără a necesita îndrumarea umană.
5. Clasificarea modelului generativ
Toate tipurile de modele generative au ca scop final rezolvarea aceleași sarcini, dar metodele lor de modelare a funcției de densitate sunt ușor diferite; în general, există două tipuri:
Modelarea explicita a funcției de densitate (explicitly modeling),
Dar restricționează modelul într-un mod care să permită calcularea funcției de densitate, cum ar fi modelul de flux normalizat (normalizing FLOW model)
Dar aproximează funcția de densitate, cum ar fi autoencoderul variational (variational autoencoder, VAE) și modelul de difuziune (diffusion model)
Modelarea implicită a funcției de densitate (implicitly modeling), printr-un proces aleator de generare a datelor. De exemplu, rețelele generative adversariale (generative adversarial network, GAN)

Rezumat
Inteligența artificială generativă (GenAI) este un tip de inteligență artificială care poate fi utilizată pentru a crea conținut și idei noi (inclusiv texte, imagini, videoclipuri și muzică). Ca toate inteligențele artificiale, GenAI este un model de mari dimensiuni pre-antrenat pe baza unui volum mare de date, cunoscut de obicei sub numele de model fundamental (foundation model, FM). Cu GenAI, putem crea imagini mai atrăgătoare, scrie texte mai frumoase și compune muzică mai emoționantă, dar primul pas este să înțelegem cum creează GenAI lucruri noi, așa cum a spus Richard Feynman la început: „Nu voi înțelege lucrurile pe care nu pot să le creez.”

