Una rete generativa avversaria (in inglesegenerative adversarial network o GAN) è una classe di metodi di apprendimento automatico, introdotta per la prima volta da Ian Goodfellow,[1] in cui due reti neurali vengono addestrate in maniera competitiva nel contesto di un gioco a somma zero. Questo tipo di framework permette alla rete neurale di apprendere come generare nuovi dati aventi la stessa distribuzione dei dati usati in fase di addestramento. Ad esempio, è possibile ottenere una rete neurale in grado di generare volti umani iperrealistici,[2] come dimostrato nel 2018 da NVIDIA, azienda produttrice di GPU.
La rete generativa avversaria è detta anche rete antagonista generativa o rete contraddittoria generativa.
Nella sua versione originale, una rete generativa avversaria è composta da due componenti: un modello generativo, o generatore , e un modello discriminativo, o discriminatore , entrambi realizzati tramite reti neurali. Lo scopo del modello generativo è quello di produrre nuovi dati, mentre il modello discriminativo apprende come distinguere i dati reali da quelli generati artificialmente. In particolare, dato uno spazio latente , avente una distribuzione a priori, il generatore rappresenta una funzione differenziabile che fornisce in output i nuovi dati secondo una certa distribuzione , dove sono i parametri del modello generativo. Il discriminatore rappresenta una funzione differenziabile , dove sono i parametri del modello discriminativo, che produce in output la probabilità che provenga dalla distribuzione dei dati di addestramento . Lo scopo è quello di ottenere un generatore che sia un buono stimatore di . Quando questo avviene, il discriminatore viene "ingannato" e non riesce più a distinguere i campioni provenienti da da quelli provenienti da .
La chiave per raggiungere questa situazione è l'addestramento competitivo. La rete discriminativa viene addestrata in modo da massimizzare la probabilità di classificare correttamente i campioni provenienti dai dati di addestramento e i campioni generati. Allo stesso tempo, la rete generativa viene addestrata minimizzando
,
e massimizzando quindi la probabilità del discriminatore di considerare i campioni prodotti dalla rete generativa, ovvero , come provenienti da .
L'apprendimento consiste quindi nell'ottimizzare un gioco minimax a due giocatori (D e G):
Le due reti vengono addestrate in maniera alternata tramite retropropagazione dell'errore, mantenendo invariati i parametri del modello generativo durante l'addestramento del discriminatore e, viceversa, mantenendo invariati i parametri della rete discriminativa durante l'addestramento del generatore.
Varianti
Negli ultimi anni si è assistito ad un rapido sviluppo di metodi che rappresentano versioni modificate del framework originale.
Rete generativa avversaria condizionata
Una rete generativa avversaria condizionata, o in inglese conditional generative adversarial network (cGAN), è un'estensione della GAN in cui sia il generatore che il discriminatore vengono condizionati tramite l'utilizzo di qualche tipo di informazione aggiuntiva . La funzione obiettivo diventa:
.
Ad esempio, è possibile generare una nuova immagine di una specifica cifra scritta a mano fornendo l'etichetta relativa alla sua classificazione, ovvero uno scalare in , come input addizionale alle due reti,[3] oppure generare automaticamente immagini di ambienti esterni a partire da un layout semantico della scena.[4] In generale, i possibili campi applicativi ricadono nel dominio dei problemi di traduzione di un'immagine in un'altra:[5][6] generazione di foto realistiche a partire da etichette semantiche, generazione di immagini aeree a partire da mappe urbane (ad esempio Google Maps), generazione di immagini realistiche a partire dai contorni della scena o da uno disegno, inpainting, e molti altri.
VAE-GAN
Questa classe di metodi si basa sull'unione di autoencoder variazionali, o in inglese variational autoencoders(VAE), e le GAN. In generale, un discriminatore viene usato per distinguere tra gli esempi forniti in output dal VAE e quelli reali. In questo modo, invece di usare una funzione di errore definita, il discriminatore permette di apprendere una funzione di similarità tra l'esempio ricostruito in uscita dal VAE e quello fornito in input. Questo approccio fa sì che si ottengano ricostruzioni migliori rispetto al singolo VAE.[7]
cycleGAN
Una cycleGAN, dall'inglese cycle-consistent generative adversarial network,[8] è un'evoluzione della rete generativa avversaria in cui l'addestramento avviene in maniera non supervisionata. In questo modo è possibile apprendere un modello capace di tradurre un'immagine da un dominio ad un altro , e viceversa, senza dover utilizzare immagini target, spesso non disponibili, durante la fase di addestramento. Il modello è composto da due generatori e per tradurre, rispettivamente, immagini dal dominio al dominio e viceversa, e da due discriminatori, e , per distinguere tra gli esempi generati e quelli reali per ciascun dominio. Durante l'addestramento, in aggiunta alla classica funzione obiettivo avversaria, viene minimizzata la seguente funzione di consistenza:
.
L'idea è che, date due immagini e , applicando i due generatori in cascata e si ottengono di nuovo le rispettive immagini e .
Questo tipo di modello viene applicato con successo in problemi in cui non esistono dati di addestramento accoppiati, ovvero in cui non è disponibile per ogni elemento di un dominio il suo corrispettivo nel dominio target (es., trasferimento dello stile da un'immagine ad un'altra).
Altre varianti
Sono presenti molte altre varianti del framework principale. In particolare, numerosi metodi si sono specializzati a seconda del dominio applicativo che differiscono sia dal punto di vista dell'architettura della rete che per la funzione obiettivo adottata durante l'addestramento. Lo sviluppo delle reti generative avversarie è avvenuta soprattutto nel campo della visione artificiale, in cui sono state fortemente impiegate sin dalla loro prima apparizione.[9]
Note
^ab Ian Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville e Yoshua Bengio, Generative Adversarial Nets (PDF), in Z. Ghahramani, M. Welling, C. Cortes, N. D. Lawrence, K. Q. Weinberger (a cura di), Advances in Neural Information Processing Systems 27, Curran Associates, Inc., 2014, pp. 2672–2680. URL consultato il 2 luglio 2019.