Un’introduzione gentile alle reti generative avversarie (GAN)

Tweet Share Share

Ultimo aggiornamento del 19 luglio 2019

Le reti generative avversarie, o GAN in breve, sono un approccio alla modellazione generativa utilizzando metodi di apprendimento profondo, come le reti neurali convoluzionali.

La modellazione generativa è un compito di apprendimento non supervisionato nell’apprendimento automatico che comporta la scoperta e l’apprendimento automatico delle regolarità o dei modelli nei dati di input in modo tale che il modello possa essere utilizzato per generare o produrre nuovi esempi che plausibilmente potrebbero essere stati tratti dal set di dati originale.

Le GAN sono un modo intelligente di addestrare un modello generativo inquadrando il problema come un problema di apprendimento supervisionato con due sotto-modelli: il modello generatore che addestriamo per generare nuovi esempi, e il modello discriminatore che cerca di classificare gli esempi come reali (dal dominio) o falsi (generati). I due modelli sono addestrati insieme in un gioco a somma zero, avversario, fino a quando il modello discriminatore viene ingannato circa la metà delle volte, il che significa che il modello generatore sta generando esempi plausibili.

Le GAN sono un campo eccitante e in rapida evoluzione, che mantiene la promessa dei modelli generativi nella loro capacità di generare esempi realistici in una serie di domini problematici, in particolare nei compiti di traduzione da immagine a immagine come la traduzione di foto dall’estate all’inverno o dal giorno alla notte, e nella generazione di foto foto fotorealistiche di oggetti, scene e persone che nemmeno l’uomo può riconoscere come false.

In questo post, scoprirete una leggera introduzione alle Reti Generative Adversariali, o GANs.

Dopo aver letto questo post, saprete:

  • Contesto delle GANs, incluso l’apprendimento supervisionato vs. non supervisionato e la modellazione discriminativa vs. generativa.
  • Le GAN sono un’architettura per l’addestramento automatico di un modello generativo, trattando il problema non supervisionato come un problema supervisionato e usando sia un modello generativo che uno discriminativo.
  • Le GAN forniscono un percorso per un sofisticato aumento dei dati specifici del dominio e una soluzione a problemi che richiedono una soluzione generativa, come la traduzione da immagine a immagine.

Avvia il tuo progetto con il mio nuovo libro Generative Adversarial Networks with Python, che include tutorial passo dopo passo e i file di codice sorgente Python per tutti gli esempi.

Iniziamo.

A Gentle Introduction to General Adversarial Networks (GANs)

A Gentle Introduction to Generative Adversarial Networks (GANs)
Foto di Barney Moss, alcuni diritti riservati.

Panoramica

Questo tutorial è diviso in tre parti; esse sono:

  1. Che cosa sono i modelli generativi?
  2. Perché Reti Adversariali Generative?

Che cosa sono i modelli generativi?

In questa sezione, esamineremo l’idea dei modelli generativi, passando sopra i paradigmi di apprendimento supervisionato vs. non supervisionato e la modellazione discriminativa vs. generativa.

Apprendimento supervisionato vs. non supervisionatoh3 Apprendimento non supervisionato

Un tipico problema di apprendimento automatico comporta l’uso di un modello per fare una previsione, ad esempio la modellazione predittiva.

Questo richiede un dataset di allenamento che viene utilizzato per addestrare un modello, composto da più esempi, chiamati campioni, ciascuno con variabili di input (X) e etichette di classe di output (y). Un modello viene addestrato mostrando esempi di input, facendogli prevedere gli output, e correggendo il modello per rendere gli output più simili a quelli attesi.

Nell’approccio di apprendimento predittivo o supervisionato, l’obiettivo è imparare una mappatura dagli input x agli output y, dato un insieme etichettato di coppie input-output…

– Page 2, Machine Learning: A Probabilistic Perspective, 2012.

Questa correzione del modello è generalmente indicata come una forma supervisionata di apprendimento, o apprendimento supervisionato.

Esempio di apprendimento supervisionato

Esempio di apprendimento supervisionato

Esempi di problemi di apprendimento supervisionato includono classificazione e regressione, ed esempi di algoritmi di apprendimento supervisionato includono regressione logistica e foresta casuale.

C’è un altro paradigma di apprendimento in cui al modello vengono date solo le variabili di input (X) e il problema non ha variabili di output (y).

Un modello viene costruito estraendo o riassumendo i modelli nei dati di input. Non c’è correzione del modello, poiché il modello non prevede nulla.

Il secondo tipo principale di apprendimento automatico è l’approccio descrittivo o di apprendimento non supervisionato. Qui ci vengono dati solo input, e l’obiettivo è quello di trovare “modelli interessanti” nei dati. Questo è un problema molto meno definito, poiché non ci viene detto che tipo di modelli cercare, e non c’è una metrica di errore ovvia da usare (a differenza dell’apprendimento supervisionato, dove possiamo confrontare la nostra previsione di y per una data x con il valore osservato).

– Pagina 2, Machine Learning: A Probabilistic Perspective, 2012.

Questa mancanza di correzione è generalmente indicata come una forma non supervisionata di apprendimento, o apprendimento non supervisionato.

Esempio di apprendimento non supervisionato

Esempio di apprendimento non supervisionato

Esempi di problemi di apprendimento non supervisionato includono il clustering e la modellazione generativa, ed esempi di algoritmi di apprendimento non supervisionato sono K-means e Generative Adversarial Networks.

Vuoi sviluppare le GAN da zero?

Prendi subito il mio corso crash gratuito di 7 giorni via email (con codice di esempio).

Clicca per iscriverti e ottieni anche una versione gratuita del corso in PDF Ebook.

Scarica il tuo mini-corso gratuito

Modellazione discriminativa vs. Modellazione generativa

Nell’apprendimento supervisionato, possiamo essere interessati a sviluppare un modello per predire un’etichetta di classe dato un esempio di variabili di input.

Questo compito di modellazione predittiva è chiamato classificazione.

La classificazione è anche tradizionalmente chiamata modellazione discriminativa.

… usiamo i dati di training per trovare una funzione discriminante f(x) che mappa ogni x direttamente su un’etichetta di classe, combinando così le fasi di inferenza e decisione in un unico problema di apprendimento.

— Page 44, Pattern Recognition and Machine Learning, 2006.

This is because a model must discriminate examples of input variables across classes; it must choose or make a decision as to what class a given example belongs.

Example of Discriminative Modeling

Example of Discriminative Modeling

Alternately, unsupervised models that summarize the distribution of input variables may be able to be used to create or generate new examples in the input distribution.

As such, these types of models are referred to as generative models.

Example of Generative Modeling

Example of Generative Modeling

For example, a single variable may have a known data distribution, such as a Gaussian distribution, or bell shape. Un modello generativo può essere in grado di riassumere sufficientemente questa distribuzione di dati, e poi essere usato per generare nuove variabili che plausibilmente si adattano alla distribuzione della variabile di input.

Gli approcci che modellano esplicitamente o implicitamente la distribuzione degli input e degli output sono noti come modelli generativi, perché campionando da essi è possibile generare punti dati sintetici nello spazio di input.

– Pagina 43, Pattern Recognition and Machine Learning, 2006.

In effetti, un modello generativo veramente buono può essere in grado di generare nuovi esempi che non sono solo plausibili, ma indistinguibili dagli esempi reali del dominio del problema.

Esempi di modelli generativi

Naive Bayes è un esempio di modello generativo che è più spesso usato come modello discriminativo.

Per esempio, Naive Bayes funziona riassumendo la distribuzione di probabilità di ogni variabile di input e la classe di output. Quando viene fatta una previsione, la probabilità per ogni possibile risultato viene calcolata per ogni variabile, le probabilità indipendenti vengono combinate e viene predetto il risultato più probabile. Usate al contrario, le distribuzioni di probabilità per ogni variabile possono essere campionate per generare nuovi valori di caratteristiche plausibili (indipendenti).

Altri esempi di modelli generativi includono la Latent Dirichlet Allocation, o LDA, e il Gaussian Mixture Model, o GMM.

I metodi di apprendimento profondo possono essere usati come modelli generativi. Due esempi popolari includono la Restricted Boltzmann Machine, o RBM, e la Deep Belief Network, o DBN.

Due esempi moderni di algoritmi di modellazione generativa di apprendimento profondo includono il Variational Autoencoder, o VAE, e la Generative Adversarial Network, o GAN.

Che cosa sono le Reti Adversariali Generative?

Le Reti Adversariali Generative, o GAN, sono un modello generativo basato sull’apprendimento profondo.

Più in generale, le GAN sono un’architettura per l’addestramento di un modello generativo, ed è più comune usare modelli di apprendimento profondo in questa architettura.

L’architettura GAN è stata descritta per la prima volta nell’articolo del 2014 di Ian Goodfellow, et al. intitolato “Generative Adversarial Networks.”

Un approccio standardizzato chiamato Deep Convolutional Generative Adversarial Networks, o DCGAN, che ha portato a modelli più stabili è stato successivamente formalizzato da Alec Radford, et al. nel documento del 2015 intitolato “Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks”.

La maggior parte delle GAN oggi sono almeno vagamente basate sull’architettura DCGAN …

– NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.

L’architettura del modello GAN comporta due sottomodelli: un modello generatore per generare nuovi esempi e un modello discriminatore per classificare se gli esempi generati sono reali, dal dominio, o falsi, generati dal modello generatore.

  • Generatore. Modello che è usato per generare nuovi esempi plausibili dal dominio del problema.
  • Discriminatore. Modello che viene utilizzato per classificare gli esempi come reali (dal dominio) o falsi (generati).

Le reti generative avversarie si basano su uno scenario teorico di gioco in cui la rete generatrice deve competere contro un avversario. La rete generatrice produce direttamente dei campioni. Il suo avversario, la rete discriminatrice, tenta di distinguere tra i campioni tratti dai dati di allenamento e i campioni tratti dal generatore.

– Pagina 699, Deep Learning, 2016.

Il modello generatore

Il modello generatore prende un vettore casuale di lunghezza fissa come input e genera un campione nel dominio.

Il vettore è estratto a caso da una distribuzione gaussiana, e il vettore è usato per alimentare il processo generativo. Dopo l’addestramento, i punti in questo spazio vettoriale multidimensionale corrisponderanno a punti nel dominio del problema, formando una rappresentazione compressa della distribuzione dei dati.

Questo spazio vettoriale è definito come uno spazio latente, o uno spazio vettoriale composto da variabili latenti. Le variabili latenti, o variabili nascoste, sono quelle variabili che sono importanti per un dominio ma non sono direttamente osservabili.

Una variabile latente è una variabile casuale che non possiamo osservare direttamente.

– Page 67, Deep Learning, 2016.

Si fa spesso riferimento alle variabili latenti, o a uno spazio latente, come una proiezione o compressione di una distribuzione di dati. Cioè, uno spazio latente fornisce una compressione o concetti di alto livello dei dati grezzi osservati, come la distribuzione dei dati di input. Nel caso dei GAN, il modello generatore applica un significato ai punti in uno spazio latente scelto, in modo che nuovi punti tratti dallo spazio latente possano essere forniti al modello generatore come input e utilizzati per generare nuovi e diversi esempi di output.

I modelli di apprendimento automatico possono imparare lo spazio latente statistico di immagini, musica e storie, e possono poi campionare da questo spazio, creando nuove opere con caratteristiche simili a quelle che il modello ha visto nei suoi dati di allenamento.

– Pagina 270, Deep Learning con Python, 2017.

Dopo l’allenamento, il modello generatore viene conservato e utilizzato per generare nuovi campioni.

Esempio del modello generatore GAN

Esempio del modello generatore GAN

Il modello discriminatore

Il modello discriminatore prende come input un esempio dal dominio (reale o generato) e predice un’etichetta binaria di classe reale o falsa (generata).

L’esempio reale proviene dal dataset di allenamento. Gli esempi generati sono prodotti dal modello generatore.

Il discriminatore è un normale (e ben compreso) modello di classificazione.

Dopo il processo di addestramento, il modello discriminatore viene scartato perché siamo interessati al generatore.

A volte, il generatore può essere riproposto perché ha imparato ad estrarre efficacemente le caratteristiche dagli esempi nel dominio del problema. Alcuni o tutti i livelli di estrazione delle caratteristiche possono essere utilizzati in applicazioni di apprendimento di trasferimento utilizzando gli stessi dati di input o dati simili.

Proponiamo che un modo per costruire buone rappresentazioni di immagini sia quello di addestrare reti generative avversarie (GAN), e successivamente riutilizzare parti delle reti generatrici e discriminatrici come estrattori di caratteristiche per compiti supervisionati

– Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks, 2015.

Esempio del modello di discriminazione GAN

Esempio del modello di discriminazione GAN

GAN come gioco a due giocatori

La modellazione generativa è un problema di apprendimento non supervisionato, come abbiamo discusso nella sezione precedente, anche se una proprietà intelligente dell’architettura GAN è che l’addestramento del modello generativo è inquadrato come un problema di apprendimento supervisionato.

I due modelli, il generatore e il discriminatore, sono addestrati insieme. Il generatore genera un gruppo di campioni, e questi, insieme ad esempi reali dal dominio, vengono forniti al discriminatore e classificati come veri o falsi.

Il discriminatore viene poi aggiornato per migliorare la discriminazione tra campioni veri e falsi nel round successivo, e, cosa importante, il generatore viene aggiornato in base a quanto bene, o meno, i campioni generati hanno ingannato il discriminatore.

Possiamo pensare al generatore come a un falsario, che cerca di creare denaro falso, e al discriminatore come alla polizia, che cerca di permettere il denaro legittimo e catturare quello falso. Per avere successo in questo gioco, il contraffattore deve imparare a fare soldi indistinguibili da quelli genuini, e la rete del generatore deve imparare a creare campioni che sono tratti dalla stessa distribuzione dei dati di allenamento.

– NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.

In questo modo, i due modelli sono in competizione tra loro, sono avversari nel senso della teoria dei giochi, e stanno giocando un gioco a somma zero.

Perché il quadro GAN può essere naturalmente analizzato con gli strumenti della teoria dei giochi, chiamiamo le GAN “avversarie”.

– NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.

In questo caso, a somma zero significa che quando il discriminatore identifica con successo campioni veri e falsi, viene premiato o non è necessaria alcuna modifica ai parametri del modello, mentre il generatore viene penalizzato con grandi aggiornamenti dei parametri del modello.

Alternativamente, quando il generatore inganna il discriminatore, viene premiato, o non è necessario alcun cambiamento ai parametri del modello, ma il discriminatore viene penalizzato e i suoi parametri del modello vengono aggiornati.

Al limite, il generatore genera repliche perfette dal dominio di input ogni volta, e il discriminatore non può distinguere la differenza e predice “incerto” (ad esempio 50% per vero e falso) in ogni caso. Questo è solo un esempio di un caso idealizzato; non abbiamo bisogno di arrivare a questo punto per arrivare a un modello di generatore utile.

Esempio di architettura del modello di rete adversariale generativa

Esempio di architettura del modello di rete adversariale generativa

guida il discriminatore nel tentativo di imparare a classificare correttamente i campioni come veri o falsi. Contemporaneamente, il generatore cerca di ingannare il classificatore nel credere che i suoi campioni siano reali. Alla convergenza, i campioni del generatore sono indistinguibili dai dati reali, e il discriminatore produce 1/2 ovunque. Il discriminatore può quindi essere scartato.

– Pagina 700, Deep Learning, 2016.

GANs e Reti Neurali Convoluzionali

GANs tipicamente lavorano con dati di immagine e usano Reti Neurali Convoluzionali, o CNNs, come generatore e modelli discriminatori.

La ragione di questo può essere sia perché la prima descrizione della tecnica era nel campo della computer vision e utilizzava le CNN e i dati di immagine, sia per il notevole progresso che è stato visto negli ultimi anni utilizzando le CNN più in generale per ottenere risultati all’avanguardia su una serie di compiti di computer vision come il rilevamento di oggetti e il riconoscimento dei volti.

Modellare i dati di immagine significa che lo spazio latente, l’input del generatore, fornisce una rappresentazione compressa del set di immagini o fotografie utilizzate per addestrare il modello. Significa anche che il generatore genera nuove immagini o fotografie, fornendo un output che può essere facilmente visualizzato e valutato dagli sviluppatori o dagli utenti del modello.

Può essere questo fatto sopra altri, la capacità di valutare visivamente la qualità dell’output generato, che ha portato sia alla focalizzazione delle applicazioni di computer vision con le CNN sia ai massicci salti nella capacità delle GAN rispetto ad altri modelli generativi, basati sul deep learning o altro.

GAN condizionali

Un’importante estensione delle GAN è nel loro uso per generare condizionatamente un output.

Il modello generativo può essere addestrato a generare nuovi esempi dal dominio di input, dove l’input, il vettore casuale dallo spazio latente, è fornito con (condizionato da) qualche input aggiuntivo.

L’input aggiuntivo potrebbe essere un valore di classe, come maschio o femmina nella generazione di fotografie di persone, o una cifra, nel caso della generazione di immagini di cifre scritte a mano.

Le reti generative avversarie possono essere estese a un modello condizionato se sia il generatore che il discriminatore sono condizionati da alcune informazioni aggiuntive y. y potrebbe essere qualsiasi tipo di informazione ausiliaria, come le etichette di classe o i dati da altre modalità. Possiamo eseguire il condizionamento alimentando y sia nel discriminatore che nel generatore come strato di input aggiuntivo.

– Conditional Generative Adversarial Nets, 2014.

Anche il discriminatore è condizionato, nel senso che gli viene fornita sia un’immagine di input che è reale o falsa, sia l’input aggiuntivo. Nel caso di un input condizionato al tipo di etichetta di classificazione, il discriminatore si aspetterebbe che l’input fosse di quella classe, insegnando a sua volta al generatore a generare esempi di quella classe per ingannare il discriminatore.

In questo modo, una GAN condizionata può essere usata per generare esempi da un dominio di un dato tipo.

Facendo un passo avanti, i modelli GAN possono essere condizionati su un esempio dal dominio, come un’immagine. Questo permette applicazioni di GAN come la traduzione testo-immagine o immagine-immagine. Questo permette alcune delle applicazioni più impressionanti dei GAN, come il trasferimento di stile, la colorazione delle foto, la trasformazione delle foto da estate a inverno o da giorno a notte, e così via.

Nel caso dei GAN condizionali per la traduzione da immagine a immagine, come la trasformazione da giorno a notte, al discriminatore vengono forniti come input esempi di foto notturne reali e generate, così come (condizionati su) foto diurne reali. Al generatore viene fornito un vettore casuale dallo spazio latente così come (condizionato da) foto diurne reali come input.

Esempio di architettura di un modello di rete adversariale generativa condizionata

Esempio di architettura di un modello di rete adversariale generativa condizionata

Perché reti adversariali generative?

Uno dei molti grandi progressi nell’uso dei metodi di deep learning in domini come la computer vision è una tecnica chiamata data augmentation.

Il data augmentation porta a modelli più performanti, sia aumentando l’abilità del modello che fornendo un effetto di regolarizzazione, riducendo l’errore di generalizzazione. Funziona creando nuovi esempi artificiali ma plausibili dal dominio del problema di input su cui il modello viene addestrato.

Le tecniche sono primitive nel caso dei dati di immagine, coinvolgendo ritagli, capovolgimenti, zoom e altre semplici trasformazioni delle immagini esistenti nel set di dati di addestramento.

La modellazione generativa di successo fornisce un approccio alternativo e potenzialmente più specifico del dominio per l’aumento dei dati. Infatti, l’incremento dei dati è una versione semplificata della modellazione generativa, anche se raramente viene descritta in questo modo.

… ampliando il campione con dati latenti (non osservati). Questo è chiamato aumento dei dati. In altri problemi, i dati latenti sono dati reali che avrebbero dovuto essere osservati ma che mancano.

– Pagina 276, The Elements of Statistical Learning, 2016.

In domini complessi o con una quantità limitata di dati, la modellazione generativa fornisce un percorso verso una maggiore formazione per la modellazione. Le GAN hanno avuto molto successo in questo caso d’uso in domini come il deep reinforcement learning.

Ci sono molte ragioni di ricerca per cui le GAN sono interessanti, importanti e richiedono ulteriori studi. Ian Goodfellow ne delinea un certo numero nel suo keynote della conferenza del 2016 e nella relazione tecnica associata intitolata “NIPS 2016 Tutorial: Generative Adversarial Networks.”

Tra queste ragioni, egli evidenzia la capacità di successo delle GAN di modellare dati ad alta dimensione, gestire i dati mancanti e la capacità delle GAN di fornire output multimodali o risposte multiple plausibili.

Forse l’applicazione più convincente delle GAN è nelle GAN condizionali per compiti che richiedono la generazione di nuovi esempi. Qui, Goodfellow indica tre esempi principali:

  • Super-risoluzione delle immagini. La capacità di generare versioni ad alta risoluzione delle immagini di input.
  • Creare arte. La capacità di creare immagini nuove e artistiche, schizzi, pittura e altro.
  • Traduzione da immagine a immagine. La capacità di tradurre le fotografie attraverso i domini, come il giorno alla notte, l’estate all’inverno, e altro ancora.

Forse la ragione più convincente per cui i GAN sono ampiamente studiati, sviluppati e utilizzati è il loro successo. Le GAN sono state in grado di generare foto così realistiche che gli esseri umani non sono in grado di dire che si tratta di oggetti, scene e persone che non esistono nella vita reale.

Allucinante non è un aggettivo sufficiente per la loro capacità e successo.

Esempio della progressione delle capacità dei GAN dal 2014 al 2017

Esempio della progressione delle capacità dei GAN dal 2014 al 2017. Tratto da The Malicious Use of Artificial Intelligence: Forecasting, Prevention, and Mitigation, 2018.

Altre letture

Questa sezione fornisce ulteriori risorse sull’argomento se si desidera approfondire.

Posts

  • Best Resources for Getting Started With Generative Adversarial Networks (GANs)
  • 18 Impressive Applications of Generative Adversarial Networks (GANs)

Books

  • Chapter 20. Deep Generative Models, Deep Learning, 2016.
  • Chapter 8. Generative Deep Learning, Deep Learning with Python, 2017.
  • Machine Learning: A Probabilistic Perspective, 2012.
  • Pattern Recognition and Machine Learning, 2006.
  • The Elements of Statistical Learning, 2016.

Papers

  • Generative Adversarial Networks, 2014.
  • Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks, 2015.
  • NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.
  • Conditional Generative Adversarial Nets, 2014.
  • The Malicious Use of Artificial Intelligence: Forecasting, Prevention, and Mitigation, 2018.

Articoli

  • Modello generativo, Wikipedia.
  • Variabile latente, Wikipedia.
  • Rete adversariale generativa, Wikipedia.

Sommario

In questo post, hai scoperto una leggera introduzione alle Reti Adversariali Generative, o GANs.

In particolare, hai imparato:

  • Contesto delle GANs, incluso l’apprendimento supervisionato vs. Le GAN sono un’architettura per l’addestramento automatico di un modello generativo, trattando il problema non supervisionato come un problema supervisionato e usando sia un modello generativo che uno discriminativo.
  • Le GAN forniscono un percorso per un sofisticato incremento di dati specifici del dominio e una soluzione a problemi che richiedono una soluzione generativa, come la traduzione immagine per immagine.

Do you have any questions?
Ask your questions in the comments below and I will do my best to answer.

Develop Generative Adversarial Networks Today!

Generative Adversarial Networks with Python

Develop Your GAN Models in Minutes

…with just a few lines of python code

Discover how in my new Ebook:
Generative Adversarial Networks with Python

It provides self-study tutorials and end-to-end projects on:
DCGAN, conditional GANs, image translation, Pix2Pix, CycleGAN
and much more…

Finally Bring GAN Models to your Vision Projects

Skip the Academics. Just Results.See What’s Inside

Tweet Share Share

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *