Reti generative contraddittorio (GAN): un’introduzione

Le reti generative avversarie (GAN) rappresentano una delle tecnologie più innovative degli ultimi tempi, mostrando un grande potenziale in svariati ambiti. Dalla creazione di immagini modificate e il potenziamento della voce, fino a diverse applicazioni nel settore medico e non solo, le GAN si stanno dimostrando uno strumento di grande versatilità.

Questa tecnologia d’avanguardia può essere un valido supporto nella realizzazione dei tuoi prodotti e servizi, migliorando al contempo la qualità delle immagini per preservare i tuoi ricordi più preziosi.

Nonostante i notevoli vantaggi, l’impiego delle GAN solleva alcune preoccupazioni.

Ma di cosa si tratta esattamente?

In questo articolo, analizzeremo nel dettaglio cosa sono le GAN, come funzionano e quali sono le loro principali applicazioni.

Addentriamoci subito nell’argomento!

Cos’è una rete generativa avversaria?

Una rete generativa avversaria (GAN) è un’architettura di apprendimento automatico che si basa su due reti neurali che competono tra loro. L’obiettivo di questa competizione è quello di ottenere previsioni sempre più accurate, sia che si tratti di immagini, musica originale, disegni o altro.

Le GAN sono state ideate nel 2014 da Ian Goodfellow, informatico e ingegnere, insieme ad alcuni collaboratori. Si tratta di reti neurali profonde, uniche nel loro genere, in grado di generare nuovi dati simili a quelli su cui sono state addestrate. La competizione tra le due reti è un gioco a somma zero, dove una delle due “perde” a vantaggio dell’altra.

Inizialmente, le GAN sono state proposte come un modello generativo per l’apprendimento automatico, soprattutto nell’ambito dell’apprendimento non supervisionato. Tuttavia, le GAN possono essere utili anche per l’apprendimento supervisionato, semi-supervisionato e per rinforzo.

I due componenti principali in competizione all’interno di una GAN sono:

Il generatore: una rete neurale convoluzionale che crea artificialmente output simili ai dati reali.

Il discriminatore: una rete neurale deconvoluzionale capace di distinguere gli output creati artificialmente da quelli autentici.

Concetti chiave

Per comprendere a fondo il funzionamento delle GAN, è utile chiarire alcuni concetti fondamentali.

Apprendimento automatico (ML)

L’apprendimento automatico (Machine Learning o ML) è un ramo dell’intelligenza artificiale (AI) che si concentra sulla creazione di modelli in grado di imparare e migliorare le proprie prestazioni sfruttando i dati. Questi modelli sono in grado di prendere decisioni, fare previsioni e svolgere compiti sempre con maggiore accuratezza.

Gli algoritmi di ML creano modelli basati sui dati di training, migliorando continuamente attraverso l’apprendimento. Sono utilizzati in una vasta gamma di settori, come la visione artificiale, il processo decisionale automatizzato, il filtraggio delle email, la medicina, i servizi bancari, la qualità dei dati, la sicurezza informatica, il riconoscimento vocale, i sistemi di raccomandazione e molti altri.

Modello discriminante

Nell’ambito del deep learning e dell’apprendimento automatico, il modello discriminante agisce come un classificatore, distinguendo tra diverse categorie o classi.

Ad esempio, può essere utilizzato per distinguere tra diversi tipi di frutta o animali.

Modello generativo

I modelli generativi utilizzano campioni casuali per generare nuove immagini realistiche. Questi modelli imparano da immagini reali di oggetti o esseri viventi per produrre proprie imitazioni che, pur essendo artificiali, risultano realistiche. Esistono due tipologie principali di modelli generativi:

Autocodificatori variazionali: si basano su codificatori e decodificatori, che sono reti neurali separate. Il processo prevede il passaggio di un’immagine realistica attraverso un codificatore, che la trasforma in un vettore in uno spazio latente. Successivamente, un decodificatore utilizza questo vettore per generare una copia realistica dell’immagine. Inizialmente, la qualità dell’immagine potrebbe essere bassa, ma migliora man mano che il decodificatore viene addestrato. Una volta che il decodificatore è pienamente funzionante, il codificatore non è più necessario.

Reti generative avversarie (GAN): come spiegato precedentemente, una GAN è una rete neurale profonda in grado di generare nuovi dati simili all’input ricevuto. Le GAN rientrano nell’ambito dell’apprendimento automatico non supervisionato, una delle tipologie di apprendimento che andremo a vedere nel dettaglio.

Apprendimento supervisionato

Nell’apprendimento supervisionato, una macchina viene addestrata usando dati etichettati, ovvero dati già contrassegnati con la risposta corretta. La macchina analizza questi dati di addestramento per produrre un risultato accurato partendo da dati etichettati.

Apprendimento non supervisionato

L’apprendimento non supervisionato prevede l’addestramento di una macchina con dati non etichettati o non classificati. L’algoritmo di apprendimento automatico lavora su questi dati in modo autonomo, senza alcuna guida. L’obiettivo della macchina è classificare i dati non ordinati in base a schemi, somiglianze e differenze, senza aver ricevuto un addestramento specifico.

Le GAN sono associate all’apprendimento non supervisionato nel ML, in quanto sono costituite da due modelli (generatore e discriminatore) in grado di individuare e apprendere automaticamente schemi dai dati di input.

Analizziamo questi due modelli nel dettaglio.

Componenti di una GAN

Il termine “avversaria” in GAN deriva dalla presenza di due componenti in competizione: il generatore e il discriminatore. Questa competizione è fondamentale per acquisire, analizzare e riprodurre le variazioni nei dati di un set di dati. Analizziamo meglio i due componenti principali di una GAN.

Generatore

Il generatore è una rete neurale che apprende a generare dati fittizi, come immagini e audio, che appaiono realistici. Il suo addestramento migliora in modo continuo attraverso l’apprendimento.

I dati generati dal generatore vengono utilizzati come esempio negativo per il discriminatore. Il generatore riceve un vettore casuale di lunghezza fissa come input per produrre un campione in output. L’obiettivo è quello di presentare un output che il discriminatore classifichi come reale, anche se è falso.

Il generatore viene addestrato utilizzando i seguenti elementi:

  • Vettori di input “rumorosi”
  • Una rete di generatori che trasforma l’input casuale in un’istanza di dati
  • Una rete di discriminatori che classifica i dati generati
  • Una “loss” del generatore che penalizza il generatore quando non riesce a ingannare il discriminatore

Il generatore agisce come un ladro, cercando di creare dati realistici per ingannare il discriminatore. Cerca di evitare i vari controlli effettuati. Nelle fasi iniziali, il generatore potrebbe non avere successo, ma continua a migliorare fino a generare dati realistici e di alta qualità, capaci di superare i test. Raggiunta questa capacità, è possibile utilizzare il generatore in modo autonomo, senza il discriminatore.

Discriminatore

Il discriminatore è anch’essa una rete neurale in grado di distinguere tra immagini reali e false, o altri tipi di dati. Gioca un ruolo fondamentale durante la fase di allenamento.

Il discriminatore agisce come la polizia, cercando di catturare il ladro (i dati falsi generati dal generatore). Ha lo scopo di identificare immagini false e anomalie nei dati.

Come detto in precedenza, il generatore apprende e migliora fino a diventare autosufficiente nella produzione di immagini di alta qualità, senza la necessità di un discriminatore. Quando i dati di alta qualità generati vengono passati attraverso il discriminatore, non è più possibile distinguere tra un’immagine reale e una falsa. A quel punto, il generatore può essere utilizzato in modo autonomo.

Come funziona una GAN?

Una rete generativa avversaria (GAN) si basa su tre elementi:

  • Un modello generativo che descrive come vengono generati i dati.
  • Un ambiente “avversario” in cui viene addestrato un modello.
  • Reti neurali profonde come algoritmi di intelligenza artificiale per l’addestramento.

Le due reti neurali di una GAN, generatore e discriminatore, giocano una partita “avversaria”. Il generatore riceve dati di input, come file audio o immagini, per generare un’istanza di dati simile, mentre il discriminatore convalida l’autenticità di questa istanza. Il discriminatore determina se l’istanza di dati analizzata è reale o meno.

Ad esempio, immaginiamo di voler verificare se una determinata immagine sia reale o falsa. Per fare ciò, si utilizzano dati di input generati manualmente per alimentare il generatore, il quale crea nuove immagini replicate.

Il generatore cerca di far apparire autentiche le immagini generate, nonostante siano false, con lo scopo di evitare di essere “scoperto”.

L’output del generatore viene inviato al discriminatore, insieme a una serie di immagini da dati reali, per verificare l’autenticità delle immagini. Il discriminatore contrasta l’azione del generatore, identificando i dati falsi dai reali.

Il discriminatore utilizza sia i dati falsi che quelli reali per restituire una probabilità di 0 o 1, dove 1 indica l’autenticità e 0 indica un falso.

Nel processo sono presenti due cicli di feedback:

  • Il generatore si unisce a un circuito di feedback con il discriminatore
  • Il discriminatore si unisce a un altro ciclo di feedback con un insieme di immagini reali

L’addestramento di una GAN funziona perché sia il generatore che il discriminatore sono in continuo apprendimento. Il generatore impara a generare input falsi sempre più realistici, mentre il discriminatore impara a migliorare la capacità di identificare le falsificazioni. Entrambi i modelli sono in continuo movimento.

Il discriminatore è una rete convoluzionale in grado di classificare le immagini ricevute. Funziona come un classificatore binomiale, etichettando le immagini come false o reali.

Il generatore, d’altra parte, è una rete convoluzionale inversa che utilizza campioni di dati casuali per produrre immagini. Il discriminatore verifica i dati utilizzando tecniche di downsampling, come il max-pooling.

Entrambe le reti cercano di ottimizzare una funzione di perdita o un obiettivo opposto e diverso, in una sorta di gioco avversario. Le loro perdite consentono loro di “spingersi” a vicenda ancora più duramente.

Tipi di GAN

Esistono diverse tipologie di reti generative avversarie, a seconda dell’implementazione. Ecco i principali tipi di GAN attivamente utilizzati:

  • GAN condizionale (CGAN): si tratta di una tecnica di apprendimento profondo che utilizza parametri condizionali specifici per distinguere i dati reali dai dati falsi. Include un parametro aggiuntivo – “y” – nella fase del generatore per produrre i dati corrispondenti. Le etichette vengono aggiunte all’input e inviate al discriminatore per verificare l’autenticità dei dati.
  • Vanilla GAN: è una tipologia semplice di GAN in cui sia il discriminatore che il generatore sono percettroni più semplici e multistrato. Gli algoritmi sono semplici, con l’ottimizzazione dell’equazione matematica tramite la discesa del gradiente stocastico.
  • Deep convolutional GAN (DCGAN): è una tipologia popolare, considerata una delle implementazioni GAN più riuscite. DCGAN è basata su ConvNet, anziché percettroni multistrato. Le ConvNet sono applicate senza l’utilizzo di tecniche come il max-pooling o la connessione completa dei livelli.
  • Super Resolution GAN (SRGAN): si tratta di un’implementazione GAN che utilizza una rete neurale profonda insieme a una rete avversaria per produrre immagini di alta qualità. SRGAN è particolarmente utile per l’upscaling efficiente di immagini originali a bassa risoluzione, migliorandone i dettagli e riducendo al minimo gli errori.
  • Laplacian Pyramid GAN (LAPGAN): si basa su una rappresentazione lineare e invertibile che include diverse immagini passa-banda posizionate a otto spazi l’una dall’altra, con residui a bassa frequenza. LAPGAN utilizza diverse reti di discriminatori e generatori, oltre a più livelli di piramide laplaciana.

LAPGAN è ampiamente utilizzata perché produce immagini di alta qualità. Le immagini vengono prima sottocampionate a ciascun livello della piramide e poi ridimensionate, dove viene aggiunto un po’ di “rumore” per raggiungere le dimensioni originali.

Applicazioni delle GAN

Le reti generative avversarie sono utilizzate in svariati settori, tra cui:

Scienza

Le GAN possono essere uno strumento accurato e veloce per modellare la formazione di getti ad alta energia e condurre esperimenti di fisica. Possono anche essere addestrate per stimare i colli di bottiglia nell’esecuzione di simulazioni per la fisica delle particelle, notoriamente dispendiose in termini di risorse.

Le GAN possono accelerare le simulazioni e migliorarne la fedeltà. Inoltre, le GAN possono essere utili nello studio della materia oscura, simulando l’effetto della lente gravitazionale e migliorando le immagini astronomiche.

Videogiochi

Anche l’industria dei videogiochi ha sfruttato il potenziale delle GAN per aumentare i dati bidimensionali a bassa risoluzione utilizzati nei vecchi videogiochi. Le GAN sono in grado di ricreare tali dati in risoluzioni 4K o superiori, attraverso l’addestramento delle immagini. Successivamente, è possibile effettuare un downsampling dei dati o delle immagini per adattarli alla risoluzione effettiva del videogioco.

Fornendo un addestramento adeguato ai modelli GAN, è possibile ottenere immagini 2D più nitide e chiare, di qualità superiore rispetto ai dati nativi, pur mantenendo i dettagli dell’immagine originale, come i colori.

Alcuni videogiochi che hanno utilizzato le GAN sono Resident Evil Remake, Final Fantasy VIII e IX, e altri.

Arte e Moda

Le GAN possono essere utilizzate per generare arte, ad esempio per creare immagini di individui mai esistiti, fotografie pittoriche, immagini di modelli di moda irreali e molto altro. Possono anche essere utilizzate per generare disegni, ombre e schizzi virtuali.

Pubblicità

L’utilizzo delle GAN per creare e produrre annunci pubblicitari permette di risparmiare tempo e risorse. Come abbiamo visto, se desideri vendere dei gioielli, puoi creare un modello immaginario, simile a un essere umano reale, con l’aiuto delle GAN.

Potrai far indossare i tuoi gioielli a questo modello e mostrarli ai tuoi clienti, evitando i costi legati all’assunzione di un modello, al pagamento del trasporto, all’affitto di uno studio, all’organizzazione di fotografi, truccatori e così via.

Questo è particolarmente utile per le aziende in crescita che non hanno la possibilità di assumere un modello o di sostenere i costi di un set fotografico per la pubblicità.

Sintesi audio

Le GAN permettono di creare file audio da una serie di clip audio. Questa tecnica è conosciuta come audio generativo. È importante non confondere l’audio generativo con le voci degli assistenti virtuali come Amazon Alexa o Apple Siri, dove i frammenti vocali vengono cuciti insieme e prodotti su richiesta.

L’audio generativo utilizza le reti neurali per studiare le proprietà statistiche di una sorgente audio e riprodurle in un determinato contesto. La modellazione è in grado di rappresentare come il parlato cambia ad ogni millisecondo.

Transfer learning

Le ricerche avanzate sul transfer learning utilizzano le GAN per allineare gli spazi delle funzionalità più recenti, come l’apprendimento per rinforzo profondo. In questo caso, gli embedding della fonte e il task da realizzare vengono forniti al discriminatore per determinare il contesto. Successivamente, il risultato viene propagato all’indietro tramite l’encoder. In questo modo, il modello continua ad imparare.

Altre applicazioni delle GAN includono:

  • Diagnosi di perdita della vista totale o parziale attraverso il rilevamento di immagini glaucomatose
  • Visualizzazione di design industriale, interior design, articoli di abbigliamento, scarpe, borse e altro
  • Ricostruzione delle caratteristiche facciali forensi di persone malate
  • Creazione di modelli 3D di un elemento da un’immagine, produzione di nuovi oggetti come una nuvola di punti 3D, modellazione di movimenti in un video
  • Simulazione dell’aspetto di una persona con l’avanzare dell’età
  • Aumento dei dati per il miglioramento del classificatore DNN
  • Disegno di caratteristiche mancanti in una mappa, miglioramento delle viste stradali, trasferimento di stili di mappatura
  • Produzione di immagini, sostituzione di un sistema di ricerca di immagini
  • Generazione di input di controllo per un sistema dinamico non lineare utilizzando una variante GAN
  • Analisi degli effetti del cambiamento climatico su un edificio
  • Creazione del volto di una persona prendendo la sua voce come input
  • Creazione di nuove molecole per diversi target proteici in caso di cancro, fibrosi e infiammazione
  • Animazione di GIF a partire da un’immagine normale

Esistono molte altre applicazioni delle GAN in diversi settori, e il loro utilizzo è in continua espansione. Tuttavia, sono sempre più frequenti anche i casi di utilizzo improprio. Le immagini di persone create con le GAN sono state utilizzate in attività illecite, come la produzione di video e immagini falsi.

Le GAN possono essere utilizzate anche per creare foto e profili di persone sui social media che non sono mai esistite. Altri usi impropri includono la creazione di pornografia falsa senza il consenso delle persone riprese, la distribuzione di video contraffatti di candidati politici e così via.

Sebbene le GAN possano rappresentare un vantaggio in molti ambiti, l’uso improprio può avere conseguenze disastrose. Pertanto, è fondamentale stabilire linee guida chiare e rigorose per il loro utilizzo.

Conclusione

Le GAN rappresentano un notevole esempio di tecnologia moderna, offrendo un modo innovativo per generare dati e migliorare funzioni come la diagnosi visiva, la sintesi di immagini, la ricerca, l’aumento dei dati, le arti, la scienza e molti altri settori.

Se sei interessato a questo argomento, ti consigliamo di approfondire l’argomento delle piattaforme di machine learning low-code e no-code per la creazione di applicazioni innovative.