IA 101

Ce este o Rețea Adversarială Generativă (GAN)?

mm

Rețelele Adversariale Generative (GAN) sunt tipuri de arhitecturi de rețele neuronale capabile de a genera date noi care se conformează modelelor învățate. GAN-urile pot fi utilizate pentru a genera imagini de fețe umane sau alte obiecte, pentru a efectua traducerea de text în imagine, pentru a converti un tip de imagine în altul și pentru a îmbunătăți rezoluția imaginilor (super rezoluție) printre alte aplicații. Deoarece GAN-urile pot genera date complet noi, ele se află la baza multor sisteme, aplicații și cercetări de ultimă generație AI. Dar cum funcționează exact GAN-urile? Să explorăm cum funcționează GAN-urile și să aruncăm o privire asupra unor dintre principalele lor utilizări.

Definirea Modelelor Generative și a GAN-urilor

O GAN este un exemplu de model generativ. Cele mai multe modele AI pot fi împărțite în două categorii: modele supervizate și nesupervizate. Modelele de învățare supervizate sunt utilizate în mod normal pentru a discrimina între diferite categorii de intrări, pentru a clasifica. În contrast, modelele nesupervizate sunt utilizate în mod normal pentru a rezuma distribuția datelor, adesea învățând o distribuție normală a datelor. Deoarece ele învață distribuția unui set de date, pot extrage mostre din această distribuție învățată și genera date noi.

Diferite modele generative au metode diferite de generare a datelor și de calculare a distribuțiilor de probabilitate. De exemplu, modelul Naive Bayes funcționează prin calcularea unei distribuții de probabilitate pentru diferitele caracteristici de intrare și clasa generativă. Când modelul Naive Bayes face o previziune, calculează clasa cea mai probabilă prin combinarea probabilităților diferitelor variabile. Alte modele generative non-deep learning includ modelele de amestec Gaussian și Alocarea Dirichlet Latentă (LDA). Modelele generative bazate pe deep learning includ Mașini Boltzmann Restricționate (RBM), Autoencoderi Variationale (VAE) și, desigur, GAN-urile.

Rețelele Adversariale Generative au fost propuse pentru prima dată de Ian Goodfellow în 2014 și au fost îmbunătățite de Alec Redford și alți cercetători în 2015, ceea ce a condus la o arhitectură standardizată pentru GAN-urile. GAN-urile sunt de fapt două rețele diferite unite. GAN-urile sunt compuse din două jumătăți: un model de generare și un model de discriminare, cunoscute și sub numele de generator și discriminator.

Arhitectura GAN

Rețelele Adversariale Generative sunt construite dintr-un model de generator și un model de discriminator unite. Rolul modelului de generator este de a crea exemple noi de date, pe baza modelelor pe care le-a învățat din datele de antrenare. Rolul modelului de discriminator este de a analiza imagini (presupunând că este antrenat pe imagini) și de a determina dacă imaginile sunt generate/falsificate sau autentice.

Cele două modele sunt puse una împotriva celeilalte, antrenate într-un mod de joc teoretic. Scopul modelului de generator este de a produce imagini care să înșele adversarul său – modelul de discriminator. Între timp, scopul modelului de discriminator este de a învinge adversarul său, modelul de generator, și de a detecta imaginile false produse de generator. Faptul că modelele sunt puse una împotriva celeilalte conduce la o cursă a înarmării, în care ambele modele se îmbunătățesc. Modelul de discriminator primește feedback despre care imagini au fost autentice și care au fost produse de generator, în timp ce modelul de generator primește informații despre care dintre imaginile sale au fost marcate ca false de către modelul de discriminator. Ambele modele se îmbunătățesc în timpul antrenamentului, cu scopul de a antrena un model de generare care să poată produce date false care să fie practic indistinguizabile de datele autentice.

În momentul în care o distribuție Gaussiană a datelor a fost creată în timpul antrenamentului, modelul de generare poate fi utilizat. Modelul de generator este inițial alimentat cu un vector aleator, pe care îl transformă pe baza distribuției Gaussiane. Cu alte cuvinte, vectorul inițializează generarea. Când modelul este antrenat, spațiul vectorial va fi o versiune comprimată, sau reprezentare, a distribuției datelor. Versiunea comprimată a distribuției datelor se numește spațiu latent, sau variabile latente. Mai târziu, modelul GAN poate lua reprezentarea spațiului latent și poate extrage puncte din acesta, care pot fi date modelului de generare și utilizate pentru a genera date noi care sunt foarte asemănătoare cu datele de antrenament.

Modelul de discriminator este alimentat cu exemple din întregul domeniu de antrenament, care este format din exemple de date reale și generate. Exemplele reale sunt conținute în setul de date de antrenament, în timp ce datele false sunt produse de modelul de generare. Procesul de antrenament al modelului de discriminator este exact același ca și antrenamentul unui model de clasificare binară de bază.

Procesul de Antrenament GAN

Să aruncăm o privire asupra întregului proces de antrenament pentru o sarcină ipotetică de generare de imagini.

În primul rând, GAN-ul este antrenat utilizând imagini reale autentice ca parte a setului de date de antrenament. Acest lucru configurează modelul de discriminator pentru a distinge între imagini generate și imagini reale. De asemenea, produce distribuția datelor pe care generatorul o va utiliza pentru a produce date noi.

Generatorul ia un vector de date numerice aleatorii și le transformă pe baza distribuției Gaussiane, returnând o imagine. Imaginea generată, alături de unele imagini autentice din setul de date de antrenament, este alimentată în modelul de discriminator. Modelul de discriminator va face o previziune probabilistică despre natura imaginilor pe care le primește, returnând o valoare între 0 și 1, unde 1 este de obicei imaginea autentică și 0 este imaginea falsă.

Există o buclă de feedback dublă în joc, deoarece modelul de discriminator primește adevărul din spatele imaginilor, în timp ce modelul de generator primește feedback despre performanța sa de la modelul de discriminator.

Modelele generative și de discriminare joacă un joc cu sumă zero una împotriva celeilalte. Un joc cu sumă zero este unul în care câștigurile unei părți vin la costul celeilalte părți (suma este zero). Când modelul de discriminator poate distinge cu succes între exemple reale și false, nu se fac modificări ale parametrilor modelului de discriminator. Cu toate acestea, se fac actualizări mari ale parametrilor modelului când nu reușește să distingă între exemple reale și false. Invers, este adevărat și pentru modelul de generator, care este penalizat (și parametrii săi actualizați) atunci când nu reușește să înșele modelul de discriminator, dar în schimb, parametrii săi rămân neschimbați (sau este recompensat).

Ideale, generatorul poate îmbunătăți performanța sa la un punct în care modelul de discriminator nu poate distinge între imagini false și reale. Acest lucru înseamnă că modelul de discriminator va face previziuni cu probabilitate de 50% pentru imagini reale și false, ceea ce înseamnă că imaginile generate ar trebui să fie practic indistinguizabile de cele autentice. În practică, GAN-urile nu ajung de obicei la acest punct. Cu toate acestea, modelul de generare nu trebuie să creeze imagini perfect similare pentru a fi util pentru multe sarcini pentru care GAN-urile sunt utilizate.

Aplicații GAN

GAN-urile au o varietate de aplicații diferite, majoritatea dintre ele implicând generarea de imagini și componente ale imaginilor. GAN-urile sunt utilizate în mod obișnuit în sarcini în care datele de imagine necesare sunt lipsă sau limitate într-un anumit mod, ca o metodă de generare a datelor necesare. Să examinăm unele dintre cazurile de utilizare comune pentru GAN-urile.

Generarea de Noi Exemple pentru Seturi de Date

GAN-urile pot fi utilizate pentru a genera noi exemple pentru seturi de date simple de imagini. Dacă aveți doar câteva exemple de antrenament și aveți nevoie de mai multe, GAN-urile pot fi utilizate pentru a genera noi date de antrenament pentru un clasificator de imagini, generând noi exemple de antrenament la diferite orientări și unghiuri.

Generarea de Fețe Umane Unice

Femeia din această fotografie nu există. Imaginea a fost generată de StyleGAN. Fotografie: Owlsmcgee prin Wikimedia Commons, Public Domain (https://commons.wikimedia.org/wiki/File:Woman_1.jpg)

Când sunt suficient de antrenate, GAN-urile pot fi utilizate pentru a genera imagini extrem de realiste de fețe umane. Aceste imagini generate pot fi utilizate pentru a ajuta la antrenarea sistemelor de recunoaștere a feței.

Traducerea Imagine-Imagine

GAN-urile excelă în traducerea de imagini. GAN-urile pot fi utilizate pentru a colora imagini alb-negru, pentru a traduce schițe sau desene în imagini fotografice, sau pentru a converti imagini de la zi la noapte.

Traducerea Text-Imagine

Traducerea text-imagină este posibilă prin utilizarea GAN-urilor. Când se furnizează text care descrie o imagine și imaginea însoțitoare, o GAN poate fi antrenată pentru a crea o imagine nouă atunci când se furnizează o descriere a imaginii dorite.

Editarea și Repararea Imaginilor

GAN-urile pot fi utilizate pentru a edita fotografii existente. GAN-urile pot elimina elemente precum ploaia sau zăpada dintr-o imagine, dar pot fi utilizate și pentru a repara imagini vechi, deteriorate sau corupte.

Rezoluție Superioară

Rezoluția superioară este procesul de a lua o imagine cu rezoluție scăzută și de a insera mai multe pixeli în imagine, îmbunătățind rezoluția imaginii. GAN-urile pot fi antrenate pentru a lua o imagine și a genera o versiune cu rezoluție superioară a acelei imagini.

GAN-urile pot fi, de asemenea, utilizate pentru a repara imagini vechi, deteriorate sau corupte. Rezoluția superioară este procesul de a lua o imagine cu rezoluție scăzută și de a insera mai multe pixeli în imagine, îmbunătățind rezoluția acelei imagini. GAN-urile pot fi antrenate pentru a lua o imagine și a genera o versiune cu rezoluție superioară a acelei imagini.

Blogger și programator cu specializări în Machine Learning și Deep Learning subiecte. Daniel speră să ajute pe alții să folosească puterea inteligenței artificiale pentru binele social.