Generative Adversarial Networks: la Teoria dei giochi per insegnare alle reti neurali a generare contenuti.
Prima parte della serie: Machine Learning parte I – Reti Neurali demistificate
“What I cannot create, I do not understand.” (R. Feynman).
Nel precedente articolo della serie avevamo affrontato i concetti di base del deep learning, spiegando come funziona una rete neurale generica. Le reti neurali 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 convoluzionale1, 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 riconoscimento2.

Prima di addestrare la 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 deconvoluzionale3, 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 GAN, 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 immagini successive.
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 è 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 video
Vondrick e colleghi hanno proposto un’architettura per la generazione di video modellando primo piano e sfondo separatamente.
Promettenti anche i risultati 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)
Andrea lavora nel campo dell’IT da quasi 20 anni coprendo un po’ tutto, da sviluppo a business analysis, alla gestione di progetti.
Oggi possiamo dire che è uno gnomo spensierato, appassionato di Neuroscienze, Intelligenza Artificiale e fotografia.