AI

Cos'è una Generative Adversarial Network (GAN)?

  • Tempo di lettura: 7 minuti

Le Generative Adversarial Networks (GAN) sono tipi di architetture di reti neurali in grado di generare nuovi dati conformi ai modelli appresi. Le GAN possono essere utilizzate per generare immagini di volti umani o altri oggetti, per effettuare la traduzione da testo a immagine, per convertire un tipo di immagine in un altro, e per migliorare la risoluzione delle immagini (super risoluzione) tra le altre applicazioni. Poiché le GAN possono generare dati completamente nuovi, sono a capo di molti sistemi, applicazioni e ricerche AI all’avanguardia. Ma come funzionano esattamente le GAN? Esploriamo come funzionano le GAN e diamo un’occhiata ad alcuni dei loro usi principali.

Definizione di modelli generativi e GAN

Una GAN è un esempio di modello generativo. La maggior parte dei modelli di IA possono essere divisi in una delle due categorie: modelli supervisionati e non supervisionati. I modelli di apprendimento supervisionato sono tipicamente usati per discriminare tra diverse categorie di input, per classificare. Al contrario, i modelli non supervisionati sono tipicamente usati per riassumere la distribuzione dei dati, spesso imparando una distribuzione gaussiana dei dati. Poiché imparano la distribuzione di un set di dati, possono estrarre campioni da questa distribuzione appresa e generare nuovi dati.

Diversi modelli generativi hanno diversi metodi di generazione dei dati e di calcolo delle distribuzioni di probabilità. Per esempio, il modello Naive Bayes opera calcolando una distribuzione di probabilità per le varie caratteristiche di input e la classe generativa. Quando il modello Naive Bayes fa una previsione, calcola la classe più probabile prendendo la probabilità delle diverse variabili e combinandole insieme. Altri modelli generativi non-deep learning includono Gaussian Mixture Models e Latent Dirichlet Allocation (LDA). I modelli generativi basati sull’apprendimento profondo includono Restricted Boltzmann Machines (RBMs), Variational Autoencoders (VAEs), e naturalmente, GANs.

Le Generative Adversarial Networks sono state proposte per la prima volta da Ian Goodfellow nel 2014, e sono state migliorate da Alec Redford e altri ricercatori nel 2015, portando a un’architettura standardizzata per le GAN. Le GAN sono in realtà due reti diverse unite insieme. Le GAN sono composte da due metà: un modello di generazione e un modello di discriminazione, chiamato anche generatore e discriminatore.

L’architettura GAN

Le reti adversariali generative sono costituite da un modello generatore e un modello discriminatore messi insieme. Il lavoro del modello generatore è quello di creare nuovi esempi di dati, basati sui modelli che il modello ha imparato dai dati di formazione. Il lavoro del modello discriminatore è quello di analizzare le immagini (supponendo che sia addestrato sulle immagini) e determinare se le immagini sono generate/false o genuine.

I due modelli sono messi l’uno contro l’altro, addestrati in modo teorico. L’obiettivo del modello generatore è di produrre immagini che ingannino il suo avversario - il modello discriminatore. Nel frattempo, il compito del modello discriminatore è quello di superare il suo avversario, il modello generatore, e catturare le immagini false che il generatore produce. Il fatto che i modelli siano messi l’uno contro l’altro si traduce in una corsa agli armamenti in cui entrambi i modelli migliorano. Il discriminatore riceve un feedback su quali immagini erano genuine e quali erano prodotte dal generatore, mentre il generatore riceve informazioni su quali delle sue immagini sono state segnalate come false dal discriminatore. Entrambi i modelli migliorano durante l’addestramento, con l’obiettivo di addestrare un modello di generazione che possa produrre dati falsi che siano fondamentalmente indistinguibili dai dati reali e genuini.

Una volta che una distribuzione gaussiana di dati è stata creata durante l’addestramento, il modello generativo può essere utilizzato. Il modello generativo viene inizialmente alimentato con un vettore casuale, che trasforma in base alla distribuzione gaussiana. In altre parole, il vettore semina la generazione. Quando il modello viene addestrato, lo spazio vettoriale sarà una versione compressa, o rappresentazione, della distribuzione gaussiana dei dati. La versione compressa della distribuzione dei dati è chiamata spazio latente, o variabili latenti. In seguito, il modello GAN può prendere la rappresentazione dello spazio latente e trarne dei punti, che possono essere dati al modello di generazione e utilizzati per generare nuovi dati che sono molto simili ai dati di addestramento.

Il modello discriminatore viene alimentato con esempi dall’intero dominio di addestramento, che è composto da esempi di dati reali e generati. Gli esempi reali sono contenuti nel dataset di allenamento, mentre i dati falsi sono prodotti dal modello generativo Il processo di formazione del modello discriminatore è esattamente lo stesso della formazione del modello di classificazione binaria di base.

Processo di addestramento GAN

Vediamo l’intero processo di addestramento per un ipotetico compito di generazione di immagini.

Per cominciare, la GAN viene addestrata usando immagini reali autentiche come parte del set di dati di addestramento. Questo imposta il modello discrimnatore per distinguere tra immagini generate e immagini reali. Produce anche la distribuzione dei dati che il generatore utilizzerà per produrre nuovi dati.

Il generatore prende un vettore di dati numerici casuali e li trasforma in base alla distribuzione gaussiana, restituendo un’immagine. Questa immagine generata, insieme ad alcune immagini autentiche dal set di dati di allenamento, viene alimentata nel modello discriminatore. Il discriminatore renderà una previsione probabilistica sulla natura delle immagini che riceve, fornendo un valore tra 0 e 1, dove 1 è tipicamente un’immagine autentica e 0 è un’immagine falsa.

C’è un doppio ciclo di feedback in gioco, poiché il discriminatore di terra è alimentato dalla verità di base delle immagini, mentre il generatore riceve un feedback sulle sue prestazioni dal discriminatore.

I modelli generativi e di discriminazione stanno giocando un gioco a somma zero l’uno con l’altro. Un gioco a somma zero è un gioco in cui i guadagni di una parte vengono a costo dell’altra parte (la somma di entrambe le azioni è zero ex). Quando il modello discriminatore è in grado di distinguere con successo tra esempi reali e falsi, non vengono apportate modifiche ai parametri del discriminatore. Tuttavia, grandi aggiornamenti sono fatti ai parametri del modello quando non riesce a distinguere tra immagini vere e false. L’inverso è vero per il modello generativo, esso viene penalizzato (e i suoi parametri aggiornati) quando non riesce a ingannare il modello discriminatore, ma altrimenti i suoi parametri rimangono invariati (o viene premiato).

Idealmente, il generatore è in grado di migliorare le sue prestazioni fino al punto in cui il discriminatore non può discernere tra le immagini false e quelle reali. Questo significa che il discriminatore renderà sempre le probabilità di P per le immagini reali e false, il che significa che le immagini generate dovrebbero essere indistinguibili da quelle genuine. In pratica, le GAN tipicamente non raggiungono questo punto. Tuttavia, il modello generativo non ha bisogno di creare immagini perfettamente simili per essere ancora utile per i molti compiti per cui le GAN sono usate.

Applicazioni GAN

Le GAN hanno una serie di applicazioni diverse, la maggior parte delle quali ruota intorno alla generazione di immagini e componenti di immagini. Le GAN sono comunemente usate in compiti in cui i dati di immagine richiesti mancano o sono limitati in qualche modo, come metodo per generare i dati richiesti. Esaminiamo alcuni dei casi d’uso comuni per le GAN.

Generazione di nuovi esempi per set di dati

Le GAN possono essere usate per generare nuovi esempi per semplici dataset di immagini. Se avete solo una manciata di esempi di allenamento e ne avete bisogno di più, le GAN possono essere usate per generare nuovi dati di allenamento per un classificatore di immagini, generando nuovi esempi di allenamento con diversi orientamenti e angoli.

Generazione di volti umani unici

Se sufficientemente addestrate, le GAN possono essere usate per generare immagini estremamente realistiche di volti umani. Queste immagini generate possono essere usate per aiutare ad addestrare i sistemi di riconoscimento dei volti.

Traduzione da immagine a immagine

Le GAN eccellono nella traduzione di immagini. Le GAN possono essere usate per colorare immagini in bianco e nero, tradurre schizzi o disegni in immagini fotografiche, o convertire immagini dal giorno alla notte.

Traduzione da testo a immagine

La traduzione da testo a immagine è possibile attraverso l’uso dei GAN. Quando viene fornito un testo che descrive un’immagine e quell’immagine di accompagnamento, un GAN può essere addestrato a creare una nuova immagine quando gli viene fornita una descrizione dell’immagine desiderata.

Modifica e riparazione di immagini

Le GAN possono essere usate per modificare fotografie esistenti. Le GAN rimuovono elementi come la pioggia o la neve da un’immagine, ma possono anche essere usate per riparare immagini vecchie, danneggiate o corrotte.

Super risoluzione

La super risoluzione è il processo di prendere un’immagine a bassa risoluzione e inserire più pixel nell’immagine, migliorandone la risoluzione. Le GAN possono essere addestrate a prendere un’immagine e generare una versione a più alta risoluzione di quell’immagine.

Ciao, sono Michele!

Sono molto felice di saperti qui.
Ogni giorno ti raccontiamo qualcosa di nuovo sull'AI e sulle nuove tecnologie. Seguici sui social o iscriviti alla newsletter!

Iscriviti alla newsletter!

Iscrivendoti accetti la nostra Privacy Policy

Ti va di rimanere aggiornatə?

Niente spam, niente pubblicità. Ogni tanto una mail. Tutto qui.
(Ah, ovviamente i tuoi dati non verranno mai ceduti)

Iscrivendoti accetti la nostra Privacy Policy