I modelli di diffusione sono modelli generativi utilizzati principalmente per la generazione di immagini e altri compiti di computer vision. Le reti neurali basate sulla diffusione vengono addestrate tramite il deep learning a "diffondere" progressivamente campioni con rumore casuale, quindi a invertire il processo di diffusione per generare immagini di alta qualità.
I modelli di diffusione sono tra le architetture di reti neurali all'avanguardia nell'AI generativa rappresentate in particolare dai popolari modelli da testo a immagine tra cui la diffusione stabile di Stability AI, DALL-E di OpenAI (a partire da DALL-E-2), Midjourney e Imagen di Google. Migliorano le prestazioni e la stabilità di altre architetture di machine learning utilizzate per la sintesi di immagini come gli autoencoder variazionali (VAE), le reti generative avversarie (GAN) e i modelli autoregressivi come PixelCNN.
L'intuizione alla base dei modelli di diffusione si ispira alla fisica, e tratta i pixel come le molecole di una goccia d'inchiostro che si diffonde nel tempo in un bicchiere d'acqua. Proprio come il movimento casuale delle molecole di inchiostro porterà alla fine alla loro dispersione uniforme nel vetro, l'introduzione casuale di rumore in un'immagine porterà alla fine a ciò che sembra statico in TV. Modellando quel processo di diffusione, e quindi imparando in qualche modo a invertirlo, un modello di intelligenza artificiale può generare nuove immagini semplicemente applicando il denoising a campioni di rumore casuale.
I modelli di diffusione sono principalmente associati alla generazione di immagini e ad altre attività di elaborazione delle immagini come l'inpainting e la super risoluzione, ma le loro applicazioni si estendono ad altri domini, tra cui la generazione di audio, la progettazione di farmaci e la generazione di molecole. Per semplicità, questo articolo si concentrerà sulla generazione di immagini.
Per spiegare e comprendere i modelli di diffusione, è importante notare innanzitutto che il processo generativo ora chiamato "diffusione" è stato scoperto indipendentemente in due diverse occasioni tramite due approcci matematici distinti. In breve, ci sono diversi modi in cui i modelli di diffusione, concettualmente semplici ma matematicamente complessi, possono "funzionare".
Gli sviluppi successivi hanno preso in prestito delle idee da entrambi gli approcci, mescolando i vantaggi di ciascuno per produrre i moderni modelli di diffusione che attualmente dominano il campo della generazione di immagini. Una breve rassegna della storia e della teoria dei modelli di diffusione facilita quindi la comprensione non solo di come funzionano i modelli di diffusione, ma anche del perché funzionano.
I modelli di diffusione ispirati alla fisica sono stati introdotti per la prima volta da Sohl-Dickstein et al nell'articolo del 2015 dal titolo "Deep Unsupervised Learning using Nonequilibrium Thermodynamics". Il loro algoritmo applicava la dinamica di Langevin, un metodo per modellare il movimento dei sistemi molecolari, per sottoscrivere la premessa di base dei modelli di diffusione: trasformare i dati in rumore, in modo da poter poi trasformare il rumore in dati.
Come la maggior parte dei modelli generativi, come ad esempio gli autoencoder variazionali (VAE), l'algoritmo di Sohl-Dickstein modellava la densità di probabilità: la probabilità relativa di una variabile campionata casualmente, x, che rientra in un particolare intervallo di valori. In sostanza, la modellazione di una funzione di densità di probabilità per un set di dati di addestramento consente a un algoritmo di generare campioni che hanno un'alta probabilità di adattarsi alla distribuzione dei dati di addestramento. Quando genera una nuova immagine, il modello presuppone una elevata probabilità che i valori dei pixel vengano distribuiti in quel modo specifico, in base alla distribuzione di probabilità appresa dai modelli nei dati di addestramento.
Logicamente parlando, le funzioni di densità di probabilità richiedono che la probabilità di tutte le possibilità si sommi fino a 1. In altre parole, la percentuale di probabilità di tutte le possibilità deve sommarsi esattamente al 100%. In pratica, ciò richiede spesso una costante di normalizzazione: un valore incorporato in una funzione di probabilità che riduce la probabilità totale a 1.
Calcolare una costante di normalizzazione che funzioni per tutti i possibili valori delle variabili è spesso intrattabile: tecnicamente risolvibile, ma richiede un tempo infinito per il calcolo. In questi casi, i modelli basati sulla verosimiglianza devono essere limitati a specifiche architetture di modelli o sviluppare soluzioni alternative intelligenti che approssimano la costante di normalizzazione in modo trattabile.
Indipendentemente dal lavoro di Sohl-Dickstein, Yang Song e Stefano Ermon hanno sviluppato un tipo di modello basato sull'energia denominato noise conditional score network nell'articolo del 2019 dal titolo "Generative Modeling by Estimating Gradients of the Data Distribution". Il loro algoritmo ha modellato il gradiente(∇x) del logaritmo () della funzione di densità di probabilità . Il gradiente della funzione di densità di probabilità logaritmica, scritta come è chiamato punteggio di Stein o semplicemente "funzione di punteggio".
A differenza delle tradizionali funzioni di densità di probabilità, le funzioni di punteggio non richiedono una costante di normalizzazione perché non modellano direttamente la densità di probabilità (e quindi non devono normalizzare la probabilità totale a 1). Invece, vengono addestrati attraverso la corrispondenza dei punteggi: i parametri del modello di apprendimento, θ, che produce un modello pθ(x) il cui punteggio (in altre parole, il suo gradiente) corrisponde a quello della distribuzione dei dati q(x) dei dati di addestramento.
Un altro beneficio dei modelli generativi basati sul punteggio (SGM) è che, a differenza dei modelli basati sulla verosimiglianza, non impongono molte restrizioni all'architettura del modello di pθ(x).
Esplorando i modi per migliorare le prestazioni del modello, Song ed Ermon sono arrivati casualmente alle stesse tecniche utilizzate da Sohl-Dickstein et al. Il loro articolo osservava che "la perturbazione dei dati con rumore gaussiano casuale rende la distribuzione dei dati più suscettibile alla modellazione generativa basata su punteggi". Il loro modello, costruito utilizzando l'architettura U-Net originariamente sviluppata per la segmentazione delle immagini, ha applicato allo stesso modo la dinamica di Langevin per generare campioni.
Nel 2020, Ho et alhanno proposto di utilizzare l'approccio di Sohl-Dickstein per generare immagini di alta qualità utilizzando l'inferenza variazionale nel loro articolo fondamentale, «Denoising diffusion probabilistic models» (DDPMS). Il loro articolo ha mostrato che massimizzare il limite inferiore delle evidenze (ELBO), un modo per riscrivere i problemi di ottimizzazione basati sulla probabilità in modo che siano trattabili, per addestrare modelli di diffusione è essenzialmente equivalente alla combinazione di obiettivi di abbinamento dei punteggi utilizzati per addestraregli SGM.
Implementando l'approccio di Sohl-Dickstein con la corrispondenza dei punteggi, Ho et al hanno dimostrato che i modelli probabilistici a diffusione possono raggiungere una qualità dell'immagine competitiva con i GAN, che all'epoca erano all'avanguardia. Queste connessioni sono state ulteriormente esplorate da Song, Ermon, Sohl-Dickstein e altri, tra cui Diederik P. Kingma, creatore del VAE, nel loro articolo del 2021, dal titolo "Score-Based Generative Modeling through Stochastic Differential Equations".
Nello stesso anno, Dhariwal e Nichol, utilizzando gli insight del documento precedentemente citato, pubblicarono "Diffusion Models Beat GaNs on Image Synthesis", stabilendo con sicurezza i modelli di diffusione come il nuovo stato dell'arte.
I DDPM, piuttosto che gli SGM, rimangono generalmente i modelli dominanti delle modalità di diffusione, anche se con miglioramenti introdotti nella ricerca successiva. Ad esempio, l'influente articolo del 2022 "High-Resolution Image Synthesis with Latent Diffusion Models" ha segnato importanti progressi in termini di efficienza ed economicità.
Durante l'addestramento, i modelli di diffusione diffondono gradualmente un punto dati con rumore casuale, passo dopo passo, fino a distruggerlo, poi imparano a invertire il processo di diffusione e a ricostruire la distribuzione originale dei dati.
Un modello di diffusione addestrato può quindi generare nuovi punti dati che assomigliano ai dati di addestramento semplicemente applicando il denoising a un campione iniziale casuale di rumore puro. Concettualmente, è simile a un autoencoder di denoising in cui le immagini rumorose agiscono come variabili latenti.
Trasformare direttamente un rumore casuale in un'immagine coerente è estremamente difficile e complesso, ma trasformare un'immagine rumorosa in un'immagine leggermente meno rumorosa è relativamente facile e diretto. I modelli di diffusione formulano quindi il processo di diffusione inversa come una trasformazione incrementale e graduale di una distribuzione semplice (come il rumore gaussiano) in una distribuzione più complessa (come un'immagine coerente).
Il processo di formazione e quindi di implementazione di una diffusione può essere suddiviso in tre fasi chiave:
Lo scopo del processo di diffusione diretta è trasformare dati puliti dal set di dati di addestramento, come un'immagine o un campione audio, in puro rumore. Il metodo più comune consiste nell'iniettare iterativamente rumore gaussiano fino a quando l'intera distribuzione dei dati non è gaussiana.
Matematicamente, questo processo graduale è formulato come una catena di Markov: un tipo di processo stocastico, ovvero un processo casuale che segue determinate regole probabilistiche, per la modellazione di dati di serie temporali sequenziali. In una catena di Markov, l'esito ad ogni passo temporale è influenzato solo dal passo temporale immediatamente precedente. In parole povere: xt, lo stato della catena di Markov x al momento t, è direttamente influenzato solo da xt-1. La funzione matematica che definisce la transizione da qualsiasi xt a xt+1 è chiamata kernel di transizione.
Ad ogni passo temporale t, viene aggiunta una piccola quantità di rumore gaussiano a xt-1 e l'immagine viene quindi ridimensionata per mantenere una dimensione costante dell'immagine nonostante l'iniezione continua di pixel casuali. In questa formulazione, x0 è il punto dati pulito originale; x1 è il punto dati dopo il primo passo temporale, a cui è stata aggiunta una piccola quantità di rumore gaussiano; xT è lo stato finale del processo di diffusione diretta. Se T è abbastanza grande, cioè dopo un numero sufficiente di passi, xT convergerà al puro rumore gaussiano.
Definiamo ogni passo in avanti come predire lo stato della distribuzione dei dati q(xt), dato q(xt-1). In un DDPM standard, questo processo in avanti non coinvolge alcun machine learning: il risultato finale della catena di Markov sarà sempre una distribuzione gaussiana e quindi non richiede ottimizzazione.
In un DDPM, il rumore gaussiano aggiunto ad ogni passo della catena di Markov non è né costante né arbitrario. Al contrario, il rumore deriva dalla struttura dell'immagine originale e la velocità con cui viene aggiunto aumenta costantemente ad ogni passaggio consecutivo.
La variazione della quantità di rumore migliora la stabilità dell'addestramento del modello e migliora al contempo le prestazioni complessive bilanciando due priorità concorrenti. Come ha scritto Yang Song nel suo post sul blog sui modelli generativi basati su punteggi:
Ricordiamo che ogni distribuzione gaussiana (normale) ha sia una media, , e una varianza, . Un altro parametro, β, funge da fattore di scala per la media e la varianza del rumore gaussiano nel kernel di transizione che definisce ogni fase della catena di Markov in avanti. La modifica del valore di β in un determinato passo comporta la modifica del rumore gaussiano aggiunto in quel passo. β1 è la varianza nella fase temporale 1; βt è la varianza nella fase temporale t, e così via, fino a βT.
Il valore della velocità di β in ogni fase è, a sua volta, determinato dalla pianificazione della varianza.
Ad ogni passo t, l'immagine viene leggermente spostata rispetto alla sua iterazione nella fase precedente (per la media) e viene aggiunto del rumore a questa versione spostata dell'immagine (per la varianza). L'entità di ogni spostamento e aggiunta di rumore è determinata dal valore di βt: all'aumentare di βt in base al programma di varianza, il tasso di diffusione aumenta costantemente di conseguenza. β è sempre un valore compreso tra 0 e 1: quindi, 0 < β1 < β2 < … < βT < 1.
La scelta di un programma di varianza specifico per β è una considerazione importante. In genere viene impostato manualmente come iperparametro, fissato su un valore costante o procedendo secondo una formula con un valore iniziale e finale predeterminati per β. Nel documento del DDPM, Ho et al hanno utilizzato un programma lineare con 1.000 passaggi in cui β1 = 10-4 e βT = 0,02. Ricerche successive hanno riscontrato miglioramenti nelle prestazioni e nell'efficienza con altri tipi di orari, come un programma coseno,[1] o rendendo il programma stesso un altro parametro appreso.[2]
Il valore di βt determina sia la media che la varianza del rumore gaussiano aggiunto al passo t.
In sintesi, ad ogni passo t, l'immagine viene leggermente spostata rispetto alla sua iterazione nella fase precedente (per la media) e viene aggiunto del rumore a questa versione spostata dell'immagine (per la varianza). L'entità di ogni spostamento e aggiunta di rumore è determinata dal valore di βt: all'aumentare di βt in base al programma di varianza, il tasso di diffusione aumenta costantemente di conseguenza.
Poiché l'aggiunta di rumore gaussiano inizia gradualmente e il rumore stesso è sempre derivato dalla struttura essenziale dell'immagine originale nel passaggio precedente, le qualità essenziali dell'immagine originale vengono mantenute per molti passaggi. Ciò consente al modello di apprendere in modo significativo i modelli e la struttura della distribuzione dei dati originale durante il processo di diffusione inversa.
Un difetto di questo processo passo dopo passo è che è ingombrante e costoso dal punto di vista computazionale: per ogni immagine in un set di dati di addestramento che potrebbe contenere migliaia o milioni di immagini, il processo di inoltro richiederebbe dozzine o centinaia di passaggi individuali.
Invece di aggiungere ripetutamente rumore, la formula per il processo di inoltro può essere riscritta in modo intelligente riparametrizzando l'espressione di come nuovo parametro, . Tramite una "proprietà interessante" delle catene di Markov, questo nuovo parametro può essere ulteriormente esteso ad un parametro aggiuntivo, , derivato dalla moltiplicazione iterativa di ad ogni passo progressivo della catena fino a quel punto. Questo parametro aggiuntivo riflette essenzialmente il rapporto segnale/rumore (SNR) di xt: in altre parole, quanta parte dell'immagine originale rimane al passo temporale t.
Ad esempio, in x1, è stata aggiunta una piccola quantità di rumore una volta. Il valore di è vicino a 1, il che significa che l'immagine conserva ancora la maggior parte del segnale "originale". In un passaggio successivo, come x50, il rumore è stato aggiunto molte volte. Poiché , il valore di è sempre minore di 1. Da , il valore di al passo 50 sarà molto più vicino a 0, il che significa che una parte maggiore dell'immagine originale è stata sostituita dal rumore. Al passo temporale T, xT è interamente rumore e il valore di si avvicina allo 0.
Sebbene la complessa derivazione dell'equazione non rientri nello scopo di questo articolo, ci sono due importanti conclusioni per comprendere l'importanza di questo trucco di riparametrizzazione:
Nei modelli di diffusione, il processo di diffusione inversa è quello in cui avviene il machine learning vero e proprio. Imparando a eseguire le fasi inverse del processo di noising, il modello sta essenzialmente imparando a eseguire il denoising del rumore gaussiano puro in un'immagine pulita. Una volta che la rete neurale è stata addestrata, questa capacità può essere utilizzata per generare nuove immagini dal rumore gaussiano attraverso una diffusione inversa passo dopo passo.
In teoria, il compito del modello può essere considerato il semplice inverso della diffusione diretta. Il processo in avanti, a partire dal punto dati x0 campionato dalla distribuzione dei dati reali q(x) del set di dati di addestramento, è definito come : ovvero, dato , calcola . Il suo contrario, la diffusione inversa, sarebbe definito come . Ma in pratica, il calcolo è intrattabile.
Invece, il compito di addestramento è formulato attraverso due soluzioni alternative:
Ricordiamo ancora una volta che la media del rumore gaussiano aggiunto nella diffusione diretta non è arbitraria: sebbene sia effettivamente casuale, la struttura del rumore è inizialmente derivata dalla struttura dell'immagine originale x0. Pertanto, imparando a prevedere con precisione il rumore attraverso la diffusione inversa, il modello apprende non solo a ridurre il rumore dell'immagine, ma anche implicitamente la struttura di x0.
L'obiettivo specifico dell'addestramento utilizzato per i modelli di diffusione è strettamente correlato al termine di perdita di ricostruzione utilizzato per ottimizzare gli autoencoder variazionali (VAE). Come i VAE, i modelli di diffusione sono ottimizzati massimizzando il limite inferiore variazionale (VLB), chiamato anche limite inferiore di evidenza (ELBO), di una combinazione di più termini di perdita.
La massimizzazione del VLB viene utilizzata nell'inferenza variazionale per approssimare la funzione di punteggio intrattabile : invece di minimizzare direttamente l'errore, riformula l'equazione massimizzando la stima minima (o limite inferiore) dell'accuratezza delle previsioni del modello.
I termini di perdita utilizzati riflettono ciascuno la divergenza di Kullback-Leibler (o "divergenza KL", in genere indicata come DKL) tra i risultati dei passaggi di diffusione diretta di q e i passaggi inversi previsti da pθ. La divergenza KL viene utilizzata per misurare la differenza tra due distribuzioni di probabilità, ad esempio tra la distribuzione dei valori dei pixel in un'immagine e la distribuzione dei valori dei pixel in un'altra.
In particolare, la funzione di perdita per i modelli di diffusione combina tre termini di perdita: LT, Lt e L0.
Sebbene la sua complessa derivazione matematica vada oltre lo scopo di questo articolo, il VLB può essere semplificato fino all'errore quadratico medio (MSE) tra il rumore previsto dal modello, e il vero rumore aggiunto nel processo di diffusione diretta, ad ogni passo temporale. Questo spiega perché l'output del modello è una previsione del rumore in ogni fase, piuttosto che l'immagine denoised stessa.
Calcolando il gradiente della funzione di perdita durante la retropropagazione e quindi regolando i pesi del modello per ridurre al minimo la funzione di perdita attraverso la discesa del gradiente, le previsioni del modello sull'intero set di dati di addestramento diventeranno più accurate.
Una volta che il modello di diffusione ha imparato a stimare con precisione il rumore da sottrarre ad ogni passo, può essere utilizzato per generare nuove immagini campionando da un'immagine disturbata casuale xT dalla distribuzione dei dati che ha appreso e facendo un denoising per i passi T. Analogamente ai VAE, l'introduzione di un leggero elemento di casualità nel processo di campionamento consente ai modelli di diffusione di produrre nuove immagini che assomigliano ai dati di addestramento, piuttosto che riprodurre direttamente le immagini di addestramento.
A differenza del processo di addestramento sulla diffusione inversa, il numero di passaggi nel processo di generazione non deve corrispondere al numero di passaggi utilizzati nel processo successivo. Questo è possibile perché il modello viene addestrato a prevedere l'intero rumore in ogni fase dell'immagine, piuttosto che la quantità specifica di rumore da rimuovere in quella fase.
Meno passaggi comportano una maggiore velocità e minori richieste di calcolo, con un potenziale compromesso nei minimi dettagli; più passaggi in genere migliorano la precisione, anche se a costo di una riduzione della velocità e dell'aumento dei costi di calcolo.
Mentre un modello di diffusione standard può generare variazioni di buona qualità delle immagini di addestramento in modo casuale, la maggior parte degli usi pratici di un modello di generazione di immagini richiede il controllo di alcuni aspetti dell'output del modello. I modelli di diffusione guidata consentono all'utente di condizionare le immagini generate con una guida specifica.
La forma più comune è un modello di diffusione da testo a immagine che consente agli utenti di condizionare l'output con un messaggio di testo, ad esempio "una giraffa con un cappello a cilindro". Ciò comporta l'abbinamento di un modello di diffusione con un modello linguistico di grandi dimensioni (LLM) separato per interpretare il prompt di testo, introdotto per la prima volta da Google nel documento "Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding".
I modelli di diffusione standard mirano a prevedere la funzione di punteggio incondizionato ∇xlogp(x): in altre parole, il gradiente del logaritmo della probabilità che l'immagine x generata dal modello p si adatti ai dati di addestramento x. I modelli di diffusione guidata introducono una categoria visiva specifica, y, ad esempio "giraffa", e predicono la funzione di punteggio condizionale ∇xlogp(x|y): in altre parole, la probabilità dell'immagine x, poiché deve rientrare nella categoria y.
I metodi per la diffusione guidata possono essere suddivisi in due categorie:
Nonostante la capacità all'avanguardia di generare immagini di alta qualità, i modelli di diffusione convenzionali presentano due importanti svantaggi: sono lenti e costosi dal punto di vista computazionale. Questi inconvenienti sono stati notevolmente ridotti dall'avvento di modelli di diffusione latente, a cominciare dalla diffusione stabile.
La premessa alla base dei modelli di diffusione latente è semplice e si basa ancora una volta sul collegamento con gli autoencoder variazionali (VAE). Piuttosto che applicare il processo di diffusione in uno spazio di pixel ad alta dimensione, cioè direttamente alle immagini di input, il modello potrebbe prima proiettare l'input nello spazio latente di dimensioni inferiori, quindi applicare a quel punto il processo di diffusione.
In sostanza, i modelli di diffusione latente impiegano un'architettura di autoencoder simile a VAE per addestrare un encoder a produrre rappresentazioni latenti z dei dati di input x. Queste rappresentazioni latenti vengono poi utilizzate come input di un modello di diffusione standard, in genere utilizzando l'architettura U-Net. Poiché il modello di diffusione lavora con dati di dimensioni inferiori, il suo output viene quindi immesso in una rete di decodificatori per l'upsampling nella dimensione finale dell'immagine desiderata.
Addestra, convalida, adatta e implementa le funzionalità di AI generativa, foundation model e machine learning con IBM watsonx.ai, uno studio aziendale di nuova generazione per builder AI. Crea applicazioni AI in tempi ridotti e con una minima quantità di dati.
Metti l'AI al servizio della tua azienda grazie all'esperienza leader di settore e alla gamma di soluzioni di IBM nel campo dell'AI.
Reinventa i flussi di lavoro e le operazioni critiche aggiungendo l'AI per massimizzare le esperienze, il processo decisionale in tempo reale e il valore di business.
NOTA: tutti i link sono esterni a ibm.com.
[1] "Improved Denoising Diffusion Probabilistic Models," arXiv, 18 febbraio 2021
[2] "Variational Diffusion Models," arXiv, ultima revisione 14 aprile 2023