Blog.

GAN: Cosa sono le Generative Adversarial Nets


Autore
Andrea Provino
Data
Tempo di lettura
3 minuti
Categoria
AI, machine-learning

gan-generative-adversarial-networks-italia-rete-generativa-avversaria-rete-antagonista-generativa

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.

Right side image created by CycleGAN Source

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

Taggeddeep learningmachine learning


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum