Due reti neurali in lotta tra loro in un gioco a somma zero. La rete antagonista generativa è tra le novità più interessanti nel campo del machine learning.
Una rete antagonista generativa, in inglese generative adversarial network (GAN), è un algoritmo di intelligenza artificiale usato nell’apprendimento automatico non supervisionato. La sua caratteristica peculiare è l’impiego di due reti neurali distinte che si sfidano l’una con l’altra in un contesto di gioco a somma zero.
Perché le reti antagoniste generative sono una delle novità più interessanti degli ultimi dieci anni nel campo dell’intelligenza artificiale? Nel precedente articolo della serie abbiamo affrontato i concetti di base del deep learning, spiegando come funziona una rete neurale artificiale generica. Le reti neurali artificiali hanno fatto notevoli progressi, sono in grado già ora di riconoscere oggetti e voci a livelli superiori a quelli umani. Anche nel linguaggio naturale i progressi sono stati notevoli.
Ma se il riconoscimento è un campo di estremo interesse, i risultati diventano addirittura sorprendenti se iniziamo a parlare di sintesi, ovvero di creazione di immagini, video e voci.
Reti in competizione
Le reti neurali antagoniste, meglio conosciute come Generative Adversarial Networks (GANs), sono un tipo di rete neurale in cui la ricerca sta letteralmente esplodendo. L’idea è piuttosto recente, introdotta da Ian Goodfellow e colleghi all’università di Montreal nel 2014. L’articolo, intitolato appunto Generative Adversarial Nets, illustrava un’architettura in cui due reti neurali erano in competizione in un gioco a somma zero.
Discriminatore
La figura qui sopra illustra il funzionamento in un contesto di riconoscimento facciale. Il discriminatore consiste in una rete convoluzionale[1], agganciata a una rete “fully connected”. La parte convoluzionale serve ad estrarre via via le caratteristiche salienti dei volti, mentre la parte finale serve a generalizzare il riconoscimento[2].
Prima di addestrare la rete antagonista generativa, o GAN, Il discriminatore viene inizialmente addestrato separatamente a riconoscere volti reali con un grado di precisione soddisfacente. Lo scopo finale del discriminatore sarà distinguere se una data immagine è di un viso reale o artificiale, ovvero di “battere” il generatore riconoscendone i falsi.
Generatore
Il generatore dal canto suo è una rete deconvoluzionale[3], che prende in input rumore casuale e tenta di generare immagini tramite processi di interpolazione. Lo scopo finale è quello di generare immagini realistiche, in grado di “fregare” il discriminatore, producendo volti indistinguibili da quelli reali.
GAN
Nell’assemblare la rete antagonista generativa, le immagini create dal generatore costituiranno l’input del discriminatore.
Quando il discriminatore fornisce la sua valutazione (“reale” o “artificiale”), la confronta con le immagini presenti nell’insieme di test per determinare la correttezza del giudizio. Se il giudizio è errato (volto artificiale scambiato per vero), il discriminatore apprenderà dall’errore e migliorerà le risposte successive, mentre se il giudizio è corretto (volto artificiale identificato come tale), il feedback aiuterà il generatore a migliorare le prossime immagini.
Questo processo continua finché le immagini prodotte dal generatore e i giudizi del discriminatore raggiungeranno un punto di equilibrio. In pratica le due reti neurali competono “addestrandosi” l’un l’altra.
I risultati possono essere stupefacenti, come si può vedere nel video qui sotto, dove l’intera scena, cavallo compreso vengono completamente trasformati in tempo reale.
Applicazioni
Le applicazioni delle GAN oramai sono in praticamente tutti i campi.
Sintesi di immagini
Una delle applicazioni più popolari della rete antagonista generativa è quella della sintesi di immagini. come ad esempio generare immagini di animali, ad esempio trasformando zebre in cavalli.
Questo genere di applicazione (conosciuto come style transfer) consente di modificare interamente lo stile grafico, per esempio ricreare una fotografia con lo stile di Van Gogh, o addirittura con lo stile di altre foto!
Text-to-image
La conversione di descrizioni testuali in immagini è un altro campo dove le GAN stanno producendo risultati estremamente interessanti, al punto di generare immagini fotorealistiche.
Generazione di immagini a partire da descrizioni testuali
Vondrick e colleghi hanno proposto un’architettura per la generazione di video modellando primo piano e sfondo separatamente.
Promettenti anche i risultati della rete antagonista generativa anche sulla generazione dei video in sincronizzazione labiale , come visibile nel video qui sotto prodotto da Klingemann con Alternative Face
Restauro
Il recupero dei dettagli di video e immagini, fino a ieri ottenuto solo con lavoro manuale, sembra oggi avviato verso l’automazione.
Qui sotto un esempio di denoise (riduzione del rumore da immagini).
Note
[1] Approfondiremo il concetto di ConvNet in un articolo successivo.
[2] La generalizzazione serve a rendere il riconoscimento più robusto a disturbi come rumore e rotazioni/traslazioni.
[3] Il termine “deconvoluzionale” in questo ambito è fortemente dibattuto, e non tutti concordano. Per una trattazione approfondita della deconvoluzione nelle reti neurali si può fare riferimento all’eccellente articolo di Wenzhe Shi e colleghi.
LINKS
Ian Goodfellow et al.: Generative Adversarial Nets [arXiv, pdf]
Is the deconvolution layer the same as a convolutional layer?
Could 3D GAN Be the Next Step Forward for Faster 3D Modeling? [3dprinting.com]
Generative Adversarial Networks for Beginners [O’Reilly)
Introductory guide to Generative Adversarial Networks [GANs) and their promise! [Analythics Vidhya]
Carl Vondrick et al: Generating Videos with Scene Dynamics
Deconvolution and Checkerboard Artifacts
Multi-Agent Diverse Generative Adversarial Networks [arXiv]
WaveNet: A Generative Model for Raw Audio [DeepMind]
Google’s Dueling Neural Networks Spar To Get Smarter, No Humans Required [Wired]
Generative Adversarial Networks Using Adaptive Convolution (ILCR, pdf)