Nel campo dell'apprendimento automatico, si definisce rete generativa avversaria, o in inglese generative adversarial network (GAN), una classe di metodi, introdotta per la prima volta da Ian Goodfellow[1], in cui due reti neurali vengono addestrate in maniera competitiva all'interno di un framework di gioco minimax. 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 Corporation, azienda produttrice di GPU.

Metodo modifica

 
Rete generativa avversaria

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. 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 buon 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

 ,

massimizzando quindi la probabilità del discriminatore di considerare i campioni   come provenienti da  .

L'apprendimento consiste quindi nell'ottimizzare un gioco minimax a due giocatori (D e G):

 ,

che ha un ottimo globale per  [1].

Varianti modifica

Negli ultimi anni si è assistito ad un rapido sviluppo di metodi che rappresentano versioni modificate del framework originale.

Rete generativa avversaria condizionata modifica

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 (es., Google Maps), generazione di immagini realistiche a partire dai contorni della scena o da uno disegno, inpainting, e molti altri.

VAE-GAN modifica

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 si che si ottengano ricostruzioni migliori rispetto al singolo VAE[7].

cycleGAN modifica

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 modifica

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 modifica

  1. ^ a b Generative Adversarial Nets (PDF), in Advances in Neural Information Processing Systems 27, Curran Associates, Inc., 2014, pp. 2672–2680. URL consultato il 2 luglio 2019.
  2. ^ A Style-Based Generator Architecture for Generative Adversarial Networks, in arXiv:1812.04948 [cs, stat], 12 dicembre 2018. URL consultato il 2 luglio 2019.
  3. ^ Conditional Generative Adversarial Nets, in arXiv:1411.1784 [cs, stat], 6 novembre 2014. URL consultato il 3 luglio 2019.
  4. ^ Learning to Generate Images of Outdoor Scenes from Attributes and Semantic Layouts, in arXiv:1612.00215 [cs], 1º dicembre 2016. URL consultato il 4 luglio 2019.
  5. ^ Image-to-Image Translation with Conditional Adversarial Networks, in arXiv:1611.07004 [cs], 21 novembre 2016. URL consultato il 4 luglio 2019.
  6. ^ Perceptual Adversarial Networks for Image-to-Image Transformation, in IEEE Transactions on Image Processing, vol. 27, n. 8, 2018-08, pp. 4066–4079, DOI:10.1109/TIP.2018.2836316. URL consultato il 4 luglio 2019.
  7. ^ Autoencoding beyond pixels using a learned similarity metric, in arXiv:1512.09300 [cs, stat], 31 dicembre 2015. URL consultato il 5 luglio 2019.
  8. ^ Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, in arXiv:1703.10593 [cs], 30 marzo 2017. URL consultato il 4 luglio 2019.
  9. ^ Generative Adversarial Networks: A Survey and Taxonomy, in arXiv:1906.01529 [cs], 4 giugno 2019. URL consultato il 5 luglio 2019.