mozzicone Cos'è un Generative Adversarial Network (GAN)? - Unite.AI
Seguici sui social
Corso di perfezionamento sull'intelligenza artificiale:

AI 101

Cos'è un Generative Adversarial Network (GAN)?

mm
aggiornato on

Generative Adversarial Networks (GAN) sono tipi di architetture di reti neurali in grado di generare nuovi dati che si conforma ai modelli appresi. I GAN possono essere utilizzati per generare immagini di volti umani o altri oggetti, per eseguire la traduzione da testo a immagine, per convertire un tipo di immagine in un altro e per migliorare la risoluzione delle immagini (super risoluzione) tra le altre applicazioni. Poiché i GAN possono generare dati completamente nuovi, sono a capo di molti sistemi, applicazioni e ricerche di intelligenza artificiale all'avanguardia. Ma come funzionano esattamente i GAN? Esploriamo come funzionano i GAN e diamo un'occhiata ad alcuni dei loro usi principali.

Definizione di modelli generativi e GAN

Un GAN è un esempio di modello generativo. La maggior parte dei modelli di intelligenza artificiale può essere suddivisa in una delle due categorie: modelli supervisionati e non supervisionati. I modelli di apprendimento supervisionato vengono tipicamente utilizzati per discriminare tra diverse categorie di input, per classificare. Al contrario, i modelli non supervisionati vengono generalmente utilizzati per riassumere la distribuzione dei dati, spesso apprendendo una distribuzione gaussiana dei dati. Poiché apprendono la distribuzione di un set di dati, possono estrarre campioni da questa distribuzione appresa e generare nuovi dati.

Diversi modelli generativi hanno metodi diversi per generare dati e calcolare distribuzioni di probabilità. Ad esempio, il Modello ingenuo di Bayes opera calcolando una distribuzione di probabilità per le varie caratteristiche di input e la classe generativa. Quando il modello Naive Bayes esegue il rendering di una previsione, calcola la classe più probabile prendendo la probabilità delle diverse variabili e combinandole insieme. Altri modelli generativi non di deep learning includono i modelli di miscela gaussiana e l'allocazione di Dirichlet latente (LDA). Modelli generativi basati sul deep leaning includere Macchine Boltzmann limitate (RBM), Autoencoder variabili (VAE)e, naturalmente, GAN.

Generative Adversarial Network lo erano proposto per la prima volta da Ian Goodfellow nel 2014, e sono stati migliorati da Alec Redford e altri ricercatori nel 2015, portando a un'architettura standardizzata per i GAN. I GAN sono in realtà due reti diverse unite insieme. I GAN lo sono composto da due metà: un modello di generazione e un modello di discriminazione, detto anche generatore e discriminatore.

L'architettura GAN

Le reti antagoniste generative lo sono costruito da un modello di generatore e un modello di discriminatore messi insieme. Il compito del modello generatore è creare nuovi esempi di dati, basati sui modelli che il modello ha appreso dai dati di addestramento. Il compito del modello discriminatore è analizzare le immagini (supponendo che sia addestrato sulle immagini) e determinare se le immagini sono generate/false o autentiche.

I due modelli sono messi l'uno contro l'altro, addestrati in modo teorico del gioco. L'obiettivo del modello generatore è quello di produrre immagini che ingannino il suo avversario, il modello discriminatore. Nel frattempo, il compito del modello discriminatore è superare il suo avversario, il modello generatore, e catturare le immagini false che il generatore produce. Il fatto che i modelli siano messi l'uno contro l'altro si traduce in una corsa agli armamenti in cui entrambi i modelli migliorano. Il discriminatore riceve un feedback su quali immagini erano autentiche e quali immagini sono state prodotte dal generatore, mentre il generatore riceve informazioni su quali delle sue immagini sono state contrassegnate come false dal discriminatore. Entrambi i modelli migliorano durante l'addestramento, con l'obiettivo di addestrare un modello di generazione in grado di produrre dati falsi sostanzialmente indistinguibili da dati reali e genuini.

Una volta creata una distribuzione gaussiana dei dati durante l'addestramento, è possibile utilizzare il modello generativo. Il modello del generatore viene inizialmente alimentato con un vettore casuale, che trasforma in base alla distribuzione gaussiana. In altre parole, il vettore semina la generazione. Quando il modello viene addestrato, lo spazio vettoriale sarà una versione compressa, o rappresentazione, della distribuzione gaussiana dei dati. La versione compressa della distribuzione dei dati viene definita spazio latente o variabili latenti. Successivamente, il modello GAN può quindi prendere la rappresentazione dello spazio latente e ricavarne punti, che possono essere dati al modello di generazione e utilizzati per generare nuovi dati molto simili ai dati di addestramento.

Il modello discriminatore viene alimentato con esempi dall'intero dominio di addestramento, che è costituito da esempi di dati reali e generati. Gli esempi reali sono contenuti nel set di dati di addestramento, mentre i dati falsi sono prodotti dal modello generativo. Il processo di addestramento del modello discriminatore è esattamente lo stesso dell'addestramento di base del modello di classificazione binaria.

Processo di formazione GAN

Diamo un'occhiata all'intero formazione processi per un ipotetico compito di generazione di immagini.

Per cominciare, il GAN ​​viene addestrato utilizzando immagini autentiche e reali come parte del set di dati di addestramento. Questo imposta il modello del discriminatore per distinguere tra immagini generate e immagini reali. Produce anche la distribuzione dei dati che il generatore utilizzerà per produrre nuovi dati.

Il generatore acquisisce un vettore di dati numerici casuali e li trasforma in base alla distribuzione gaussiana, restituendo un'immagine. Queste immagini generate, insieme ad alcune immagini autentiche del set di dati di addestramento, vengono inserite nel modello discriminatore. Il discriminatore renderà una previsione probabilistica sulla natura delle immagini che riceve, emettendo un valore compreso tra 0 e 1, dove 1 è tipicamente immagini autentiche e 0 è un'immagine falsa.

C'è un doppio ciclo di feedback in gioco, poiché il discriminatore di base riceve la verità di base delle immagini, mentre il generatore riceve un feedback sulla sua performance dal discriminatore.

I modelli generativi e di discriminazione stanno giocando un gioco a somma zero l'uno con l'altro. Un gioco a somma zero è quello in cui i guadagni di una parte vanno a scapito dell'altra parte (la somma è che entrambe le azioni sono zero ex). Quando il modello discriminatore è in grado di distinguere correttamente tra esempi reali e falsi, non vengono apportate modifiche ai parametri del discriminatore. Tuttavia, vengono apportati grandi aggiornamenti ai parametri del modello quando non riesce a distinguere tra immagini reali e false. L'inverso è vero per il modello generativo, viene penalizzato (e i suoi parametri aggiornati) quando non riesce a ingannare il modello discriminativo, ma altrimenti i suoi parametri rimangono invariati (o viene premiato).

Idealmente, il generatore è in grado di migliorare le sue prestazioni fino al punto in cui il discriminatore non è in grado di distinguere tra immagini false e reali. Ciò significa che il discriminatore restituirà sempre probabilità del 50% per immagini reali e false, il che significa che le immagini generate dovrebbero essere indistinguibili dalle immagini autentiche. In pratica, i GAN in genere non raggiungono questo punto. Tuttavia, il modello generativo non ha bisogno di creare immagini perfettamente simili per essere ancora utile per le numerose attività per le quali vengono utilizzate le GAN.

Applicazioni GAN

I GAN hanno una serie di applicazioni diverse, la maggior parte delle quali ruota attorno alla generazione di immagini e componenti di immagini. I GAN sono comunemente utilizzati in attività in cui i dati dell'immagine richiesti mancano o sono limitati in una certa capacità, come metodo per generare i dati richiesti. Esaminiamo alcuni dei casi d'uso comuni per i GAN.

Generazione di nuovi esempi per set di dati

I GAN possono essere utilizzati per generare nuovi esempi per semplici set di dati di immagini. Se hai solo una manciata di esempi di addestramento e ne hai bisogno di più, i GAN potrebbero essere utilizzati per generare nuovi dati di addestramento per un classificatore di immagini, generando nuovi esempi di addestramento con diversi orientamenti e angolazioni.

Generazione di volti umani unici

La donna in questa foto non esiste. L'immagine è stata generata da StyleGAN. Foto: Owlsmcgee tramite Wikimedia Commons, dominio pubblico (https://commons.wikimedia.org/wiki/File:Woman_1.jpg)

Se sufficientemente addestrati, i GAN possono essere utilizzati per generare immagini estremamente realistiche di volti umani. Queste immagini generate possono essere utilizzate per addestrare i sistemi di riconoscimento facciale.

Traduzione da immagine a immagine

GANS eccellere nella traduzione delle immagini. I GAN possono essere utilizzati per colorare immagini in bianco e nero, tradurre schizzi o disegni in immagini fotografiche o convertire immagini dal giorno alla notte.

Traduzione testo-immagine

La traduzione da testo a immagine è possibile attraverso l'uso di GAN. Quando viene fornito un testo che descrive un'immagine e l'immagine di accompagnamento, un GAN può essere addestrato a creare una nuova immagine quando viene fornita una descrizione dell'immagine desiderata.

Modifica e riparazione di immagini

I GAN possono essere utilizzati per modificare fotografie esistenti. GAN rimuovere elementi come pioggia o neve da un'immagine, ma possono anche essere usati per riparare immagini vecchie e danneggiate o immagini corrotte. 

Super risoluzione

La super risoluzione è il processo di acquisizione di un'immagine a bassa risoluzione e l'inserimento di più pixel nell'immagine, migliorando la risoluzione di quell'immagine. I GAN possono essere addestrati a scattare un'immagine an generare una versione ad alta risoluzione di quell'immagine. 

Blogger e programmatore con specialità in machine Learning ed Deep Learning temi. Daniel spera di aiutare gli altri a usare il potere dell'intelligenza artificiale per il bene sociale.