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
[modifica | modifica wikitesto]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):
- ,
che ha un ottimo globale per .[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
[modifica | modifica wikitesto]Negli ultimi anni si è assistito ad un rapido sviluppo di metodi che rappresentano versioni modificate del framework originale.
Rete generativa avversaria condizionata
[modifica | modifica wikitesto]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
[modifica | modifica wikitesto]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
[modifica | modifica wikitesto]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 | modifica wikitesto]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 | modifica wikitesto]- ^ 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.
- ^ 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.
- ^ Mehdi Mirza e Simon Osindero, Conditional Generative Adversarial Nets, in arXiv:1411.1784 [cs, stat], 6 novembre 2014. URL consultato il 3 luglio 2019.
- ^ 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.
- ^ 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.
- ^ 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 . URL consultato il 4 luglio 2019.
- ^ 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.
- ^ 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.
- ^ 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
[modifica | modifica wikitesto]Altri progetti
[modifica | modifica wikitesto]- Wikimedia Commons contiene immagini o altri file sulla rete generativa avversaria