Rete generativa avversaria

Da testwiki.
Vai alla navigazione Vai alla ricerca

Una rete generativa avversaria (Template:Inglese o GAN) è una classe di metodi di apprendimento automatico, introdotta per la prima volta da Ian Goodfellow,[1] in cui due reti neurali vengono addestrate in maniera competitiva nel contesto di un gioco a somma zero. Questo tipo di framework permette alla rete neurale di apprendere come generare nuovi dati aventi la stessa distribuzione dei dati usati in fase di addestramento. Ad esempio, è possibile ottenere una rete neurale in grado di generare volti umani iperrealistici,[2] come dimostrato nel 2018 da NVIDIA, azienda produttrice di GPU.

La rete generativa avversaria è detta anche rete antagonista generativa o rete contraddittoria generativa.

Metodo

Rete generativa avversaria

Nella sua versione originale, una rete generativa avversaria è composta da due componenti: un modello generativo, o generatore G, e un modello discriminativo, o discriminatore D, 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. In particolare, dato uno spazio latente 𝒛, avente una distribuzione a priori p𝒛(𝒛), il generatore rappresenta una funzione differenziabile G(𝒛;θg) che fornisce in output i nuovi dati secondo una certa distribuzione pg, dove θg sono i parametri del modello generativo. Il discriminatore rappresenta una funzione differenziabile D(𝒙;θd), dove θd sono i parametri del modello discriminativo, che produce in output la probabilità che 𝒙 provenga dalla distribuzione dei dati di addestramento pdata. Lo scopo è quello di ottenere un generatore che sia un buono stimatore di pdata. Quando questo avviene, il discriminatore viene "ingannato" e non riesce più a distinguere i campioni provenienti da pdata da quelli provenienti da pg.

La chiave per raggiungere questa situazione è l'addestramento competitivo. La rete discriminativa viene addestrata in modo da massimizzare la probabilità di classificare correttamente i campioni provenienti dai dati di addestramento e i campioni generati. Allo stesso tempo, la rete generativa viene addestrata minimizzando

log(1D(G(𝒛)),

e massimizzando quindi la probabilità del discriminatore di considerare i campioni prodotti dalla rete generativa, ovvero 𝒙pg, come provenienti da pdata.

L'apprendimento consiste quindi nell'ottimizzare un gioco minimax a due giocatori (D e G):

minGmaxD𝔼𝒙pdata(𝒙)[logD(𝒙)]+𝔼𝒛p𝒛(𝒛)[log(1D(G(𝒛)))],

che ha un ottimo globale per pg=pdata.[1]

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.

Varianti

Negli ultimi anni si è assistito ad un rapido sviluppo di metodi che rappresentano versioni modificate del framework originale.

Rete generativa avversaria condizionata

Una rete generativa avversaria condizionata, o in inglese conditional generative adversarial network (cGAN), è un'estensione della GAN in cui sia il generatore che il discriminatore vengono condizionati tramite l'utilizzo di qualche tipo di informazione aggiuntiva 𝒚. La funzione obiettivo diventa:

minGmaxD𝔼𝒙pdata(𝒙)[logD(𝒙|𝒚)]+𝔼𝒛p𝒛(𝒛)[log(1D(G(𝒛|𝒚)))].

Ad esempio, è possibile generare una nuova immagine di una specifica cifra scritta a mano fornendo l'etichetta relativa alla sua classificazione, ovvero uno scalare in [0,9], come input addizionale alle due reti,[3] oppure generare automaticamente immagini di ambienti esterni a partire da un layout semantico della scena.[4] In generale, i possibili campi applicativi ricadono nel dominio dei problemi di traduzione di un'immagine in un'altra:[5][6] generazione di foto realistiche a partire da etichette semantiche, generazione di immagini aeree a partire da mappe urbane (ad esempio Google Maps), generazione di immagini realistiche a partire dai contorni della scena o da uno disegno, inpainting, e molti altri.

VAE-GAN

Questa classe di metodi si basa sull'unione di autoencoder variazionali, o in inglese variational autoencoders (VAE), e le GAN. In generale, un discriminatore viene usato per distinguere tra gli esempi forniti in output dal VAE e quelli reali. In questo modo, invece di usare una funzione di errore definita, il discriminatore permette di apprendere una funzione di similarità tra l'esempio ricostruito in uscita dal VAE e quello fornito in input. Questo approccio fa sì che si ottengano ricostruzioni migliori rispetto al singolo VAE.[7]

cycleGAN

Una cycleGAN, dall'inglese cycle-consistent generative adversarial network,[8] è un'evoluzione della rete generativa avversaria in cui l'addestramento avviene in maniera non supervisionata. In questo modo è possibile apprendere un modello capace di tradurre un'immagine da un dominio X ad un altro Y , e viceversa, senza dover utilizzare immagini target, spesso non disponibili, durante la fase di addestramento. Il modello è composto da due generatori G:XY e F:YX per tradurre, rispettivamente, immagini dal dominio X al dominio Y e viceversa, e da due discriminatori, DX e DY, per distinguere tra gli esempi generati e quelli reali per ciascun dominio. Durante l'addestramento, in aggiunta alla classica funzione obiettivo avversaria, viene minimizzata la seguente funzione di consistenza:

(G,F)=𝔼xpdata(x)[F(G(x))x1]+𝔼ypdata(y)[G(F(y))y1].

L'idea è che, date due immagini xX e yY, applicando i due generatori in cascata F(G(x)) e G(F(y)) si ottengono di nuovo le rispettive immagini x e y. Questo tipo di modello viene applicato con successo in problemi in cui non esistono dati di addestramento accoppiati, ovvero in cui non è disponibile per ogni elemento di un dominio X il suo corrispettivo nel dominio target Y (es., trasferimento dello stile da un'immagine ad un'altra).

Altre varianti

Sono presenti molte altre varianti del framework principale. In particolare, numerosi metodi si sono specializzati a seconda del dominio applicativo che differiscono sia dal punto di vista dell'architettura della rete che per la funzione obiettivo adottata durante l'addestramento. Lo sviluppo delle reti generative avversarie è avvenuta soprattutto nel campo della visione artificiale, in cui sono state fortemente impiegate sin dalla loro prima apparizione.[9]

Note

Voci correlate

Altri progetti

Template:Interprogetto

Template:Apprendimento automatico Template:Portale