Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

DDPM: come hanno superato le GAN

Analizziamo i DDPM cercando di capire perché stanno diventando sempre più popolari rispetto alle GAN nell'ambito dell'AI generativa
Analizziamo i DDPM cercando di capire perché stanno diventando sempre più popolari rispetto alle GAN nell'ambito dell'AI generativa
Link copiato negli appunti

Come discusso nella lezione precedente, le GAN (Generative Adversarial Networks) hanno rappresentato i modelli di intelligenza artificiale generativa più popolari e usati. Tuttavia, ultimamente sta guadagnando terreno un'altra classe di modelli, noti come DDPM (Denoising Diffusion Probabilistic Models), un tipo di modelli che utilizza un approccio differente per generare contenuti sintetici.

In questa lezione, esamineremo cosa sono i DDPM e come funzionano, e spiegheremo perché stanno diventando sempre più popolari rispetto alle GAN nell'ambito dell'intelligenza artificiale generativa.

Gli svantaggi delle GAN

Come anticipato in precedenza, le GAN sono composte da due reti neurali: una rete che funge da generatore, ed un'altra che si comporta da discriminatore. Il generatore ha il compito di creare contenuti sintetici, mentre il discriminatore deve determinare se i contenuti sono reali o sintetici. Le due reti vengono addestrate insieme, in modo che il generatore impari a creare contenuti che sembrano reali, mentre il discriminatore imparerà a riconoscere i contenuti sintetici.

Le GAN hanno dimostrato di essere molto efficaci nel creare immagini realistiche, ma ci sono alcuni problemi non semplici da risolvere legati all'utilizzo delle GAN, come la stabilità durante il processo di training e il fatto che possono produrre contenuti di scarsa qualità.

I modelli basati su DDPM, al contrario, utilizzano un approccio diverso per generare contenuti sintetici.

Come funzionano i DDPM?

A differenza delle GAN, che utilizzano due reti neurali addestrate insieme, i modelli basati su DDPM usano una sola rete neurale che viene addestrata sfruttando l'idea della diffusione probabilistica, utilizzando un processo di sampling Monte Carlo (campionamento casuale) per prevedere il prossimo elemento di una sequenza di dati.

In pratica, la rete neurale viene addestrata su una sequenza di dati a cui è stato progressivamente aggiunto del rumore (noise). Il processo di addestramento consiste nel far prevedere alla rete neurale il valore originale dei dati, ovvero il valore senza il rumore. In questo modo, la rete neurale impara a "pulire" i dati e a generare nuovi contenuti sintetici.

Immaginando, quindi, di volere creare un modello di questo tipo per generare immagini sintetiche, dovremmo creare un dataset con versioni sempre più rumorose delle immagini originali, ad esempio aggiungendo progressivamente rumore gaussiano. Questo processo è chiarito dall'immagine seguente:

Vantaggi e svantaggi dei modelli basati su DDPM

I modelli DDPM hanno dimostrato di essere più stabili durante il processo di addestramento rispetto alle GAN, e di produrre contenuti di qualità superiore. Inoltre, i modelli di diffusione sono in grado di generare sequenze di dati più lunghe e più coerenti, rendendoli particolarmente adatti alla generazione testi, audio o immagini.

A tal proposito, è utile sottolineare come questa classe di modelli può essere facilmente adattata a diverse tipologie di dati, rendendoli quindi versatili e facili da utilizzare in una varietà di settori.

Nonostante i loro vantaggi, i modelli DDPM presentano alcune problematiche. Una di queste è la difficoltà nell'addestrare la rete neurale utilizzando il metodo di campionamento Monte Carlo summenzionato, che può essere computazionalmente molto oneroso. Inoltre, i modelli di diffusione possono richiedere una quantità molto significativa di dati di addestramento per funzionare correttamente, il che può rappresentare un ostacolo per alcune applicazioni.

Come implementare un modello basato su DDPM

Per implementare un modello di intelligenza artificiale generativa basato su DDPM, possiamo utilizzare (analogamente a quanto visto per le GAN) il linguaggio di programmazione Python. In linea di massima, il processo può essere riassunto dai seguenti passi:

  1. scegliere un framework di deep learning per Python, come TensorFlow o PyTorch. Questi framework forniscono gli strumenti necessari per costruire e addestrare una rete neurale, e possiamo quindi sfruttarli anche per lo specifico caso dei modelli basati su DDPM.
  2. Preprocessing dei dati: prima di iniziare a costruire il modello, è necessario preparare i dati di addestramento. Questo processo include il caricamento dei dati, il preprocessing degli stessi (ad esempio normalizzazione o standardizzazione) e la divisione dei dati in set di addestramento, validazione e test. Rimanendo nell'ambito delle immagini, una tipica operazione da effettuare in questa fase prevede un ridimensionamento di ogni elemento del dataset, in modo che tutti abbiano le stesse dimensioni (generalmente si utilizzano valori uguali per larghezza ed altezza, come 128x128 o 512x512).
  3. Costruire il modello: utilizzando il framework di deep learning scelto, si definisce la struttura della rete neurale. Sarò opportuno, in questa fase, stabilire con cura gli iperparametri, ed è spesso utile fare riferimenti a soluzioni pre-esistenti, oppure sperimentare in modo sistematico con i valori da utilizzare.
  4. Addestrare il modello: utilizziamo il set di addestramento per addestrare il modello, dopo avere scelto un'opportuna funzione di loss (ad esempio la cross-entropy) ed un opportuno ottimizzatore (ad esempio Adam).
  5. Valutare il modello: per valutare le prestazioni del modello durante l'addestramento si possono usare metriche che ci consentano di capire quanto i campioni generati si discostano dal dataset originario. Una metrica utilizzabile è, ad esempio, la Kernel Inception Distance (KID).
  6. Utilizzare il modello per generare contenuti sintetici: a questo punto non resta che utilizzare il modello per generare nuovi contenuti sintetici, partendo da una sequenza di dati di partenza (che, in questo caso, non sarà altro che un'immagine costituita da rumore).

Sulla documentazione ufficiale di Keras è disponibile un notebook piuttosto completo, che mostra tutti i passaggi necessari a costruire un modello concettualmente simile ai DDPM, sebbene un po' semplificato, ma che rende bene l'idea di cosa sia necessario fare.

Conclusioni

È importante sottolineare che i modelli basati su DDPM non sono l'unica alternativa alle GAN nell'ambito dell'intelligenza artificiale generativa. Esistono altri modelli, come i VAE (Variational Autoencoders) o le RNN (reti neurali ricorrenti), che utilizzano approcci differenti per generare contenuti sintetici.

Nella pratica, però, l'esplosione dell'intelligenza artificiale generativa nell'ultimo periodo ci porta a ritenere che il modello dettato dai DDPM sia quello vincente.

Grazie alla loro stabilità durante il processo di training, alla capacità di generare contenuti di alta qualità e alla loro versatilità, i modelli basati su DDPM hanno dimostrato di essere una valida alternativa alle GAN nell'ambito dell'intelligenza artificiale generativa.

Nella prossima lezione vedremo quali sono i modelli di questo tipo che hanno avuto maggiore successo, imparando anche come utilizzarli per la generazione di immagini, e magari anche per generare il nostro modello personalizzato.

Ti consigliamo anche