Le GAN, o Generative Adversarial Net(work)s, sono un framework per la stima di modelli generativi attraverso un processo avversario, o antagonista, che prevede l’allenamento simultaneo di un modello Generativo (Generator, o G) e di uno Discriminatorio (Discriminator, D).
Una definizione densa di contenuto che merita di essere approfondita.
In italiano usiamo l’espressione Rete Generativa Avversaria o Rete Antagonista Generativa per riferirci all’argomento, anche se ritengo i termini inglese particolarmente utili a questo proposito per una maggiore chiarezza.
Basta indugi.
Pronti a salpare? Ammainiamo le vele e molliamo gli ormeggi!
Alla scoperta delle affascinanti Generative Adversarial Network: GAN, per gli amici.
GAN: Cos’è una Generative Adversarial Network
Nel 2014, Ian J. Goodfellow et al. presentarono un articolo accademico che introdusse un nuovo framework per la stima dei modelli generativi attraverso un processo avversario, o antagonista, facente impiego di due reti: una generativa, l’altra discriminatoria.
Il modello Generativo, indicato come Generator o G cattura la distribuzione originale mentre quello Discriminatorio, definito Discriminator o D, stima la probabilità che un dato provenga dal dataset di training anziché da G.
La procedura di training per G, la goal function, prevede di massimizzare la probabilità che D sbagli.
Esiste un termine per indicare questa particolare struttura a due giocatori che si viene a creare.
Il framework a due modelli corrisponde a un minimax two-player game.
Questa è davvero bella.
Sì, perché devi sapere che nella teoria delle decisioni, il minimax è un metodo per minimizzare la massima perdita possibile (minimax) o massimizzare il minimo guadagno (maximin).
Fu scoperto nella teoria dei giochi in caso di gioco a somma zero con due giocatori.
Dovremo approfondire anche questo delizioso ambito; per il momento concentriamoci sulle nostre GAN.
Come capire cos’è una Generative Adversarial Nets
Al di là dei molti tecnicismi, concreti e densi d’informazione, le GAN sono un sistema creativo.
Ora si che hai capito! Scherzi a parte, vediamo di comprendere cosa sono!
Consentono di generare dati, principalmente immagini (quindi video) da zero, e possono essere usate a supporto di sistemi di Reinforcement Learning (che abbiamo conosciuto qui).
Per intenderci… sta cosa è stata creata da una GAN.
Leggo nei tuoi occhi il desiderio di saperne di più.
Di fronte a una persona così curiosa e bramosa di sapere, non posso che aggiungere del contenuto.
Seguimi allora.
GAN in Python con TF-GAN
Joel Shor, Google Research Engineer, è autore di una leggere libreria per allenare e valutare Generative Adversarial Networks (GANs) chiamata TF-GAN che trovi qui.
Ha preparato per noi un video introduttivo sulle GAN che ti consiglio di vedere: non temere, è breve.
Joe può anche seguirti in un corso, firmato Google, proprio sulle reti generative avversarie.
Ti consiglio comunque di leggere prima il nostro post per imparare come funziona una rete generativa avversaria, così da avere un’infarinatura e procedere veloce nel corso.
Stiamo per concludere questo breve viaggio.
L’obiettivo era quello di fornire una definizione concisa, facilmente consultabile in futuro, e introduttiva alle GAN.
Ci siamo riusciti?
Scrivimelo nei commenti!
Comunque se intendi approfondire, qui hai una descrizione approfondita, qui una serie di esempi e qua invece un bel salto nel magico mondo delle GANs ancora più profondo.
GAN FAQ: Domande per ripassare
Prima di salutarti, ho pensato di raccogliere per te alcune domande e relative risposte che potresti trovare utili!
Sappi comunque una cosa.
Il box commenti poco oltre ti aspetta: se hai quesiti, non esitare a chiedere!
Per il momento è tutto.
Per aspera, ad astra.
Un caldo abbraccio, Andrea