Fondamenti di IA

Che cos’è una rete generativa antagonista (GAN)?

mm
Aggiungi Unite.AI alle tue fonti preferite su Google

Le reti generative antagoniste (GAN) sono tipi di architetture di reti neurali in grado di generare nuovi dati che si conformano ai modelli appresi. Le GAN possono essere utilizzate per generare immagini di volti umani o altri oggetti, per eseguire la traduzione testo-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 alla base di molti sistemi, applicazioni e ricerche all’avanguardia dell’IA. Eppure, come funzionano esattamente le GAN? Esploriamo come funzionano le GAN e diamo un’occhiata ad alcune delle loro principali applicazioni.

Definizione dei modelli generativi e GAN

Una GAN è un esempio di modello generativo. La maggior parte dei modelli di IA possono essere divisi in due categorie: modelli supervisati e non supervisati. I modelli di apprendimento supervisato sono tipicamente utilizzati per discriminare tra diverse categorie di input, per classificare. Al contrario, i modelli non supervisati sono tipicamente utilizzati 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.

I diversi modelli generativi hanno metodi diversi per generare dati e calcolare le distribuzioni di probabilità. Ad esempio, il modello Naive Bayes opera calcolando una distribuzione di probabilità per le diverse caratteristiche di input e la classe generativa. Quando il modello Naive Bayes rende una previsione, calcola la classe più probabile prendendo la probabilità delle diverse variabili e combinandole insieme. Altri modelli generativi non basati sull’apprendimento profondo includono i modelli di miscela gaussiana e l’allocazione latente di Dirichlet (LDA). I modelli generativi basati sull’apprendimento profondo includono macchine di Boltzmann ristrette (RBMs), autoencoder variazionali (VAE) e, naturalmente, le GAN.

Le reti generative antagoniste 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, anche noto come generatore e discriminatore.

L’architettura GAN

Le reti generative antagoniste sono costruite a partire da un modello di generazione e un modello di discriminazione uniti insieme. Il compito del modello di generazione è creare nuovi esempi di dati in base ai modelli che il modello ha appreso dai dati di training. Il compito del modello di discriminazione è analizzare le immagini (supponendo che sia stato addestrato su immagini) e determinare se le immagini sono generate/falsi o genuine.

I due modelli sono opposti l’uno all’altro, addestrati in un modo teorico dei giochi. L’obiettivo del modello di generazione è produrre immagini che ingannino il suo avversario, il modello di discriminazione. Nel frattempo, l’obiettivo del modello di discriminazione è superare il suo avversario, il modello di generazione, e rilevare le immagini false prodotte dal generatore. Il fatto che i modelli siano opposti l’uno all’altro porta a una corsa agli armamenti in cui entrambi i modelli migliorano. Il modello di discriminazione riceve feedback su quali immagini erano genuine e quali immagini 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 sono essenzialmente indistinguibili dai dati reali e genuini.

Una volta creata una distribuzione gaussiana dei dati durante l’addestramento, il modello di generazione può essere utilizzato. Il modello di generazione 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 è addestrato, lo spazio del vettore sarà una versione compressa, o rappresentazione, della distribuzione dei dati. La versione compressa della distribuzione dei dati è nota come spazio latente o variabili latenti. In seguito, il modello GAN può quindi prendere la rappresentazione dello spazio latente e disegnare punti da esso, che possono essere dati al modello di generazione e utilizzati per generare nuovi dati che sono molto simili ai dati di training.

Il modello di discriminazione viene alimentato con esempi dall’intero dominio di training, che è composto da esempi di dati reali e generati. Gli esempi reali sono contenuti all’interno del set di dati di training, mentre i dati falsi sono prodotti dal modello di generazione. Il processo di addestramento del modello di discriminazione è esattamente lo stesso dell’addestramento di un modello di classificazione binaria di base.

Il processo di addestramento GAN

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

Per iniziare, la GAN viene addestrata utilizzando immagini genuine e reali come parte del set di dati di training. Ciò configura il modello di discriminazione 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 in input un vettore di dati numerici casuali e li trasforma in base alla distribuzione gaussiana, restituendo un’immagine. L’immagine generata, insieme a qualche immagine genuina del set di dati di training, viene alimentata nel modello di discriminazione. Il modello di discriminazione renderà una previsione probabilistica sulla natura delle immagini che riceve, restituendo un valore compreso 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 modello di discriminazione riceve il feedback della verità fondamentale delle immagini, mentre il generatore riceve feedback sulle sue prestazioni dal modello di discriminazione.

I modelli di generazione e discriminazione stanno giocando un gioco a somma zero l’uno contro l’altro. Un gioco a somma zero è uno in cui i guadagni di una parte si verificano a spese dell’altra parte (la somma è zero). Quando il modello di discriminazione è in grado di distinguere con successo tra esempi reali e falsi, non vengono apportate modifiche ai parametri del modello di discriminazione. Tuttavia, vengono apportate grandi modifiche ai parametri del modello quando non riesce a distinguere tra esempi reali e falsi. L’inverso è vero per il modello di generazione: viene penalizzato (e i suoi parametri vengono aggiornati) quando non riesce a ingannare il modello di discriminazione, ma altrimenti i suoi parametri non vengono modificati (o viene ricompensato).

Idealmente, il generatore è in grado di migliorare le sue prestazioni fino a quando il modello di discriminazione non può più distinguere tra immagini false e immagini reali. Ciò significa che il modello di discriminazione renderà sempre probabilità del 50% per immagini reali e false, il che significa che le immagini generate dovrebbero essere indistinguibili dalle immagini genuine. Nella pratica, le GAN non raggiungono mai questo punto. Tuttavia, il modello di generazione non deve creare immagini perfettamente simili per essere comunque utile per i molti compiti per cui le GAN vengono utilizzate.

Applicazioni GAN

Le GAN hanno una serie di applicazioni diverse, la maggior parte delle quali ruotano attorno alla generazione di immagini e componenti di immagini. Le GAN vengono comunemente utilizzate in compiti in cui i dati di immagine richiesti sono mancanti o 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 utilizzate per generare nuovi esempi per set di dati di immagini semplici. Se si dispone solo di un pugno di esempi di training e se ne necessitano altri, le GAN potrebbero essere utilizzate per generare nuovi dati di training per un classificatore di immagini, generando nuovi esempi di training a diverse orientazioni e angoli.

Generazione di volti umani unici

La donna in questa foto non esiste. L’immagine è stata generata da StyleGAN. Foto: Owlsmcgee via Wikimedia Commons, Public Domain (https://commons.wikimedia.org/wiki/File:Woman_1.jpg)

Quando sufficientemente addestrate, le GAN possono essere utilizzate per generare immagini di volti umani estremamente realistiche. Queste immagini generate possono essere utilizzate per aiutare ad addestrare sistemi di riconoscimento facciale.

Traduzione immagine-immagine

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

Traduzione testo-immagine

La traduzione testo-immagine è possibile attraverso l’utilizzo di GAN. Quando fornite con testo che descrive un’immagine e con l’immagine stessa, una GAN può essere addestrata per creare una nuova immagine quando fornita con una descrizione dell’immagine desiderata.

Modifica e riparazione di immagini

Le GAN possono essere utilizzate per modificare fotografie esistenti. Le GAN rimuovono elementi come la pioggia o la neve da un’immagine, ma possono anche essere utilizzate 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, migliorando la risoluzione dell’immagine. Le GAN possono essere addestrate per prendere un’immagine e generare una versione a risoluzione più alta di quell’immagine.

Le GAN possono anche essere utilizzate per riparare immagini vecchie, danneggiate o corrotte. La super risoluzione è il processo di prendere un’immagine a bassa risoluzione e inserire più pixel nell’immagine, migliorando la risoluzione dell’immagine. Le GAN possono essere addestrate per prendere un’immagine e generare una versione a risoluzione più alta di quell’immagine. Le GAN possono anche essere utilizzate per riparare immagini vecchie, danneggiate o corrotte.

Blogger e programmatore con specializzazioni in Machine Learning e Deep Learning argomenti. Daniel spera di aiutare gli altri a utilizzare il potere dell'AI per il bene sociale.