GAN: che cos’è una rete generativa avversaria

intelligenza artificiale

Le reti generative avversarie (GAN) sono un'entusiasmante innovazione nell'ambito dell'apprendimento automatico. Le GAN sono modelli generativi, ovvero creano nuove istanze di dati che assomigliano ai dati di addestramento. Ad esempio, le GAN possono creare immagini che sembrano fotografie di volti umani, anche se i volti non appartengono a nessuna persona reale. Le GAN raggiungono questo livello di realismo accoppiando un generatore che impara a produrre l'output di destinazione, con un discriminatore che impara a distinguere i dati reali dall'output del generatore. In questo articolo vedremo come sono fatte le GAN e come possono essere impiegate.

Introduzione

Si definisce rete generativa avversaria o Generative Adversarial Network (GAN), un sistema che permette ad una rete neurale di apprendere come generare nuovi dati aventi la stessa distribuzione dei dati usati in fase di addestramento. Nella sua versione originale, una rete generativa avversaria è composta da due componenti: un modello generativo, o generatore, e un modello discriminativo, o discriminatore, entrambi realizzati tramite reti neurali. Lo scopo del modello generativo è quello di produrre nuovi dati, mentre il modello discriminativo apprende come distinguere i dati reali da quelli generati artificialmente. Le due reti vengono addestrate in maniera alternata tramite retropropagazione dell'errore, mantenendo invariati i parametri del modello generativo durante l'addestramento del discriminatore e, viceversa, mantenendo invariati i parametri della rete discriminativa durante l'addestramento del generatore.

Applicazioni

Le reti GAN possono essere utilizzate nei seguenti campi applicativi:

  • Aumento dei dati - l'aumento dei dati di addestramento per i modelli ML si traduce in modelli con prestazioni migliori. Le GAN possono creare nuovi esempi, artificiali ma plausibili, dal dominio del problema di input su cui viene addestrato il modello.
  • Super risoluzione dell'immagine - la capacità di generare versioni ad alta risoluzione delle immagini di input.
  • Creazione dell'arte - la capacità di creare immagini fantastiche, nuove e artistiche.
  • Traduzione da immagine a immagine - la capacità di tradurre le fotografie in più domini, come dal giorno alla notte, dall'estate all'inverno e altro ancora.

Esistono poi sistemi molto complessi che riescono a tradurre una didascalia in formato testo, in un'immagine. L'immagine di copertina di questo articolo è stata creata con Craiyon. Craiyon è un sito, accessibile a tutti, che ospita una demo gratuita di un algoritmo capace di tradurre in immagine una didascalia scritta. Tra i vari blocchi che costituiscono il sistema vi è una particolare versione di rete GAN. Nella Figura 1, ad esempio, si può osservare come l'algoritmo interpreti la frase "dog in the Renaissance".

algoritmi

Figura 1: L'algoritmo di Craiyon interpreta e disegna il testo nella didascalia "cane nel Rinascimento"

Che cos'è un modello generativo

Ma cosa significa "generativo" nel contesto dell'apprendimento automatico? "Generativo" descrive una classe di modelli statistici in contrasto con i modelli discriminativi.

Detto in modo informale:

  • i modelli generativi possono generare nuove istanze di dati
  • i modelli discriminativi discriminano tra diversi tipi di istanze di dati

Un modello generativo potrebbe generare nuove foto di animali che sembrano animali reali, mentre un modello discriminativo potrebbe distinguere un cane da un gatto. Le GAN sono un tipo di modello generativo. Più formalmente, dato un insieme di istanze di dati X e un insieme di etichette Y, i modelli generativi catturano la probabilità congiunta p(X,Y) o solo p(X) se non ci sono etichette. I modelli discriminativi catturano la probabilità condizionata p(Y|X). I modelli discriminativi cercano di tracciare dei confini nello spazio dei dati, mentre i modelli generativi cercano di modellare il modo in cui i dati sono posizionati nello spazio. Prendiamo ad esempio delle cifre scritte a mano. Il modello discriminativo cerca di distinguere tra 0 e 1 scritti a mano tracciando una linea nello spazio dei dati. Se ottiene la linea giusta, può distinguere gli 0 dagli 1 senza mai dover modellare esattamente dove sono posizionate le istanze nello spazio dei dati. Al contrario, il modello generativo cerca di produrre 1 e 0 convincenti generando cifre che si avvicinano alle loro controparti reali nello spazio dei dati.

Struttura di una GAN

Lo schema a blocchi di Figura 2 illustra la struttura generale di una GAN.

algoritmi

Figura 2: Schema a blocchi di una generica rete GAN

Il cuore di una GAN è costituito da due elementi principali:

  1. Il generatore che impara a generare dati plausibili. Le istanze generate diventano esempi negativi per il discriminatore.
  2. Il discriminatore che impara a distinguere i dati falsi del generatore dai dati veri. Il discriminatore penalizza il generatore quando produce dati non plausibili.

Con il progredire dell'addestramento, il generatore si avvicina a generare output che possono ingannare il discriminatore. Infine, se l'addestramento del generatore va a buon fine, il discriminatore peggiora le sue prestazioni nel distinguere tra dati reali e dati falsi. Inizia così a classificare i dati falsi come reali e la sua precisione diminuisce. Sia il generatore che il discriminatore sono reti neurali. L'uscita del generatore è collegata direttamente all'ingresso del discriminatore. Attraverso il meccanismo di backpropagation, la classificazione del discriminatore fornisce un segnale che il generatore utilizza per aggiornare i suoi pesi.

Il Discriminatore

Il discriminatore in una GAN è semplicemente un classificatore. Cerca di distinguere i dati reali dai dati artificiali creati dal generatore. Può utilizzare qualsiasi architettura di rete appropriata al tipo di dati che sta classificando.

I dati di addestramento del discriminatore provengono da due fonti:

  • Istanze di dati reali - il discriminatore usa queste istanze come esempi positivi durante l'addestramento.
  • Istanze di dati falsi create dal generatore - il discriminatore usa queste istanze come esempi negativi durante l'addestramento.

Durante l'addestramento del discriminatore il generatore non si addestra. I suoi pesi rimangono costanti mentre produce esempi su cui il discriminatore può addestrarsi. Il discriminatore è connesso a due funzioni di perdita. Durante l'addestramento del discriminatore, il discriminatore ignora la perdita del generatore e utilizza semplicemente la perdita del discriminatore.

Durante l'addestramento del discriminatore:

  1. Il discriminatore classifica sia i dati reali che i dati falsi dal generatore
  2. La funzione costo del discriminatore penalizza il discriminatore per aver classificato erroneamente un'istanza reale come falsa o un'istanza falsa come reale
  3. Il discriminatore aggiorna i suoi pesi attraverso la retropropagazione dalla funzione perdita nella rete del discriminatore

Il generatore

Il generatore impara a creare dati falsi incorporando il feedback del discriminatore. Il generatore impara a fare in modo che il discriminatore classifichi il suo output come reale. L'addestramento del generatore richiede un'integrazione più stretta tra il generatore e il discriminatore rispetto all'addestramento del discriminatore. La porzione di GAN che addestra il generatore comprende:

    • l'input casuale
    • la rete del generatore, che trasforma l'input casuale in un'istanza di dati
    • il discriminatore, che classifica i dati generati
    • l'uscita discriminatore
    • la funzione di perdita del generatore, che penalizza il generatore per non aver ingannato il discriminatore

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2219 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend