Rete generativa avversaria

Una rete generativa avversaria (in inglese generative 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.

Metodo

Rete generativa avversaria

Nella sua versione originale, una rete generativa avversaria è composta da due componenti: un modello generativo, o generatore G {\displaystyle G} , e un modello discriminativo, o discriminatore D {\displaystyle D} , 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 z {\displaystyle {\boldsymbol {z}}} , avente una distribuzione a priori p z ( z ) {\displaystyle p_{\boldsymbol {z}}({\boldsymbol {z}})} , il generatore rappresenta una funzione differenziabile G ( z ; θ g ) {\displaystyle G({\boldsymbol {z}};\theta _{g})} che fornisce in output i nuovi dati secondo una certa distribuzione p g {\displaystyle p_{g}} , dove θ g {\displaystyle \theta _{g}} sono i parametri del modello generativo. Il discriminatore rappresenta una funzione differenziabile D ( x ; θ d ) {\displaystyle D({\boldsymbol {x}};\theta _{d})} , dove θ d {\displaystyle \theta _{d}} sono i parametri del modello discriminativo, che produce in output la probabilità che x {\displaystyle {\boldsymbol {x}}} provenga dalla distribuzione dei dati di addestramento p d a t a {\displaystyle p_{data}} . Lo scopo è quello di ottenere un generatore che sia un buono stimatore di p d a t a {\displaystyle p_{data}} . Quando questo avviene, il discriminatore viene "ingannato" e non riesce più a distinguere i campioni provenienti da p d a t a {\displaystyle p_{data}} da quelli provenienti da p g {\displaystyle p_{g}} .

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

log ( 1 D ( G ( z ) ) {\displaystyle \log(1-D(G({\boldsymbol {z}}))} ,

e massimizzando quindi la probabilità del discriminatore di considerare i campioni prodotti dalla rete generativa, ovvero x p g {\displaystyle {\boldsymbol {x}}\sim p_{g}} , come provenienti da p d a t a {\displaystyle p_{data}} .

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

min G max D E x p d a t a ( x ) [ log D ( x ) ] + E z p z ( z ) [ log ( 1 D ( G ( z ) ) ) ] {\displaystyle \min _{G}\max _{D}\mathbb {E} _{{\boldsymbol {x}}\sim p_{data}({\boldsymbol {x}})}[\log D({\boldsymbol {x}})]+\mathbb {E} _{{\boldsymbol {z}}\sim p_{\boldsymbol {z}}({\boldsymbol {z}})}[\log(1-D(G({\boldsymbol {z}})))]} ,

che ha un ottimo globale per p g = p d a t a {\displaystyle p_{g}=p_{data}} .[1]

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 y {\displaystyle {\boldsymbol {y}}} . La funzione obiettivo diventa:

min G max D E x p d a t a ( x ) [ log D ( x | y ) ] + E z p z ( z ) [ log ( 1 D ( G ( z | y ) ) ) ] {\displaystyle \min _{G}\max _{D}\mathbb {E} _{{\boldsymbol {x}}\sim p_{data}({\boldsymbol {x}})}[\log D({\boldsymbol {x}}|{\boldsymbol {y}})]+\mathbb {E} _{{\boldsymbol {z}}\sim p_{\boldsymbol {z}}({\boldsymbol {z}})}[\log(1-D(G({\boldsymbol {z}}|{\boldsymbol {y}})))]} .

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 [ 0 , 9 ] {\displaystyle [0,9]} , 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 X {\displaystyle X} ad un altro Y {\displaystyle Y} , e viceversa, senza dover utilizzare immagini target, spesso non disponibili, durante la fase di addestramento. Il modello è composto da due generatori G : X Y {\displaystyle G:X\rightarrow Y} e F : Y X {\displaystyle F:Y\rightarrow X} per tradurre, rispettivamente, immagini dal dominio X {\displaystyle X} al dominio Y {\displaystyle Y} e viceversa, e da due discriminatori, D X {\displaystyle D_{X}} e D Y {\displaystyle D_{Y}} , 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 ( G , F ) = E x p data ( x ) [ F ( G ( x ) ) x 1 ] + E y p data ( y ) [ G ( F ( y ) ) y 1 ] {\displaystyle {\mathcal {L}}(G,F)=\mathbb {E} _{x\sim p_{\text{data}}(x)}\left[\|F(G(x))-x\|_{1}\right]+\mathbb {E} _{y\sim p_{\text{data}}(y)}\left[\|G(F(y))-y\|_{1}\right]} .

L'idea è che, date due immagini x X {\displaystyle x\in X} e y Y {\displaystyle y\in Y} , applicando i due generatori in cascata F ( G ( x ) ) {\displaystyle F(G(x))} e G ( F ( y ) ) {\displaystyle G(F(y))} si ottengono di nuovo le rispettive immagini x {\displaystyle x} e y {\displaystyle y} . 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 X {\displaystyle X} il suo corrispettivo nel dominio target Y {\displaystyle Y} (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

  1. ^ a b 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.
  2. ^ Tero Karras, Samuli Laine e Timo Aila, 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. ^ Mehdi Mirza e Simon Osindero, Conditional Generative Adversarial Nets, in arXiv:1411.1784 [cs, stat], 6 novembre 2014. URL consultato il 3 luglio 2019.
  4. ^ Levent Karacan, Zeynep Akata, Aykut Erdem e Erkut Erdem, 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. ^ Phillip Isola, Jun-Yan Zhu, Tinghui Zhou e Alexei A. Efros, Image-to-Image Translation with Conditional Adversarial Networks, in arXiv:1611.07004 [cs], 21 novembre 2016. URL consultato il 4 luglio 2019.
  6. ^ Chaoyue Wang, Chang Xu, Chaohui Wang e Dacheng Tao, 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, ISSN 1057-7149 (WC · ACNP). URL consultato il 4 luglio 2019.
  7. ^ Anders Boesen Lindbo Larsen, Søren Kaae Sønderby, Hugo Larochelle e Ole Winther, Autoencoding beyond pixels using a learned similarity metric, in arXiv:1512.09300 [cs, stat], 31 dicembre 2015. URL consultato il 5 luglio 2019.
  8. ^ Jun-Yan Zhu, Taesung Park, Phillip Isola e Alexei A. Efros, 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. ^ Zhengwei Wang, Qi She e Tomas E. Ward, Generative Adversarial Networks: A Survey and Taxonomy, in arXiv:1906.01529 [cs], 4 giugno 2019. URL consultato il 5 luglio 2019.

Voci correlate

Altri progetti

Altri progetti

  • Wikimedia Commons
  • Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file sulla rete generativa avversaria
  Portale Informatica
  Portale Statistica