Che cos'è un modello di diffusione? Una definizione completa

Che cos'è un modello di diffusione? Una definizione completa
Che cos'è un modello di diffusione?
I modelli di diffusione sono una classe di modelli generativi probabilistici. Sono potenti per ridurre il rumore nell'apprendimento automatico (https://zilliz.com/learn/making-machine-learning-more-accessible-for-application-developers) e nella sintesi di immagini. Un modello di diffusione distrugge progressivamente i dati aggiungendo rumore gaussiano e impara a invertire il processo per generare campioni.
Nella generazione di immagini, ad esempio, i modelli di diffusione aggiungono rumore a un'immagine cento o mille volte, finché non diventa un'immagine di puro rumore. Quindi rimuovono gradualmente il rumore dall'immagine fino a ottenere un'immagine coerente. Infine, il modello è in grado di generare nuove immagini diverse che si avvicinano all'immagine originale.
Componenti dei modelli di diffusione
I modelli di diffusione si basano su tre strutture matematiche di base:
- Modello probabilistico di diffusione denoising (DDPM): I DDPM utilizzano due catene di Markov, una avanti e una indietro, per aggiungere o rimuovere il rumore dai dati. Sfruttano le reti neurali profonde per imparare a invertire il rumore introdotto nella catena inversa, consentendo in ultima analisi di generare campioni di dati che assomigliano molto alla distribuzione originale dei dati.
- Modelli generativi basati sul punteggio (SGM): Gli SGM funzionano aggiungendo un rumore gaussiano ai dati e stimando funzioni di punteggio utilizzando una rete neurale profonda addestrata al rumore. Queste funzioni di punteggio guidano la generazione di nuovi campioni di dati che assomigliano molto alla distribuzione originale.
- Equazioni differenziali stocastiche (score SDE): Le SDE a punteggio generalizzano le DDPM e le SGM per modellare dati con passi temporali o livelli di rumore infiniti. Utilizzano le SDE per modellare i processi di perturbazione del rumore e di generazione dei campioni e si basano su funzioni di punteggio per denoising dei dati generati.
Come funzionano i modelli di diffusione?
I modelli di diffusione operano a un livello sofisticato, coinvolgendo la meticolosa interazione tra dati, rumore gaussiano controllato e uno spazio latente intermedio. Questo intricato processo consente di creare versioni migliorate dei dati originali. Approfondiamo i meccanismi:
1. **Il ruolo del rumore gaussiano
I modelli di diffusione introducono sistematicamente il rumore gaussiano nel corso delle loro operazioni. A ogni passo iterativo, ai dati viene aggiunto un rumore gaussiano controllato con precisione. Questo rumore viene campionato da una distribuzione gaussiana, consentendo un controllo di precisione sui livelli di rumore.
# Aggiunta di rumore gaussiano controllato noisy_data = original_data + noise
2. Transizione alla distribuzione normale:
Per facilitare il processo di diffusione, i dati in ingresso subiscono una trasformazione. Vengono prima convertiti in una distribuzione normale, caratterizzata da una media pari a 0 e da una deviazione standard pari a 1. Questa conversione non solo semplifica il controllo del rumore, ma pone anche le basi per il percorso di diffusione.
# Trasformazione dei dati in una distribuzione normale Dati normalizzati = (dati originali - dati originali.media()) / dati originali.std()
3. Processo di modellizzazione della diffusione:
Analizziamo il processo di modellazione della diffusione nel contesto dei modelli generativi, in particolare per le immagini o i video. Il percorso di diffusione consiste in due fasi cruciali:
- In questa fase, il modello intraprende un viaggio di trasformazione dei pixel di un'immagine incontaminata. Attraverso centinaia o addirittura migliaia di passi incrementali, viene progressivamente introdotto il rumore gaussiano. Questo processo si svolge in una catena di Markov, con ogni fase che introduce una quantità di rumore controllata con precisione. L'immagine si "diffonde" in uno stato di puro rumore.
# Processo di diffusione in avanti per step in range(num\_steps): noisy\_image = noisy\image + step\_noise\[step]
- Processo di diffusione inversa:** Al contrario, il processo di diffusione inversa segna il percorso verso la chiarezza. Questa fase comporta la rimozione del rumore, il ridimensionamento e passaggi iterativi che alla fine portano alla nascita di un'immagine chiara. È come guardare un'immagine nebbiosa che gradualmente si mette a fuoco.
# Processo di diffusione inverso for step in reversed(range(num\steps)): noisy\_image = noisy\image - step\_noise\[step]
Nel processo di diffusione in avanti, è fondamentale notare che il ridimensionamento dei valori dei pixel è un passaggio chiave prima dell'ulteriore aggiunta di rumore. Se si salta questo passaggio, si rischia la saturazione dell'immagine, con conseguente perdita di dettagli.
# Scalare i valori dei pixel immagine scalata = immagine originale \* fattore di scalatura
4. Levitare le reti neurali convoluzionali (CNN):
Nel processo di diffusione inversa, le reti neurali convoluzionali (CNN) svolgono un ruolo fondamentale. Data un'immagine avvolta da un rumore puro, queste reti neurali sono abili nel denoising dell'immagine. Esse rimuovono abilmente il rumore, restituendo un'immagine chiara e coerente che rispecchia fedelmente l'originale.
5. **Formazione per le generazioni future
Dopo l'addestramento, il modello di diffusione viene preparato per la generazione di nuove immagini. Ciò comporta l'introduzione intenzionale di rumore nei dati di ingresso. Il modello prende quindi in mano la situazione, utilizzando le sue abilità di denoising apprese per creare nuove versioni incontaminate dei dati di ingresso.
# Generazione di nuove immagini introducendo rumore new\_image = noisy\input\_data + generated\_noise
Spazio latente intermedio nei moderni modelli di diffusione:
Nell'ambito dei moderni modelli di diffusione delle immagini, si assiste a una svolta interessante. Questi modelli spesso introducono un terzo attore nel mix: uno spazio latente intermedio. Invece di operare direttamente sui pixel dell'immagine grezza, il processo di diffusione avviene all'interno di questo spazio latente. Questa innovazione migliora l'efficienza e l'efficacia dei modelli di diffusione, consentendo trasformazioni più sfumate e controllate.
Applicazioni dei modelli di diffusione nell'AI/ML
Il modello di diffusione è un approccio che sta guadagnando popolarità nella modellazione generativa grazie ai suoi numerosi casi d'uso nella vita reale. È utilizzato nella generazione di immagini, nella generazione da testo a immagine, nella super-risoluzione di immagini, nella generazione di linguaggio naturale, ecc.
Generazione del linguaggio naturale
[L'elaborazione del linguaggio naturale (https://zilliz.com/learn/top-5-nlp-applications) (NLP) ha molte applicazioni reali nell'attuale mondo dell'IA. Grazie alla loro capacità di produrre output diversi, i modelli di diffusione sono essenzialmente applicati alla generazione del linguaggio naturale (NLG). Essi consentono di svolgere molti compiti NLG in modelli linguistici di grandi dimensioni (LLM), come i trasformatori generativi pre-addestrati (GPT). Tra questi, la generazione di contenuti, la sintesi di testi e il completamento di testi.
Generazione di immagini e video
I modelli di diffusione migliorano la qualità dei video generati. Risolvono i problemi di complessità e continuità spazio-temporale dei fotogrammi video. Questa capacità consente ai creatori di contenuti di alimentare richieste di testo per generare brevi sceneggiature video di alta qualità.
Generazione da testo a immagine
Oggi è possibile generare immagini inviando richieste di testo a un generatore di testo-immagine. Imagen di Google e DALL-E di OpenAI ne sono un esempio. I LLM utilizzano la diffusione per decodificare le parole visive in un'immagine. Idealmente, questi generatori codificano le immagini come parole visive vettoriali. Utilizzano poi queste parole per condizionare un modello di diffusione e generare una nuova immagine con uno stile simile a quello dell'immagine originale.
Super risoluzione dell'immagine
Una delle prime applicazioni dei modelli di diffusione è la super risoluzione delle immagini. Si tratta di aumentare la risoluzione di un'immagine da bassa ad alta risoluzione, conservandone il più possibile il contenuto.
La risoluzione delle immagini utilizzando il modello di diffusione avviene in due fasi. In primo luogo, si utilizza il modello di diffusione per generare immagini a bassa risoluzione, che sono più facili e veloci da addestrare. In secondo luogo, si addestra un modello di diffusione separato e lo si condiziona a una super-risoluzione che migliora la risoluzione delle immagini di bassa qualità.
Limitazioni dei modelli di diffusione
I modelli di diffusione sono potenti e stanno rivoluzionando il settore dell'intelligenza artificiale. Tuttavia, come dimostreremo di seguito, hanno una buona dose di sfide.
I modelli di diffusione richiedono tempo per essere addestrati
I modelli di diffusione si basano sul denoising per generare le immagini. L'addestramento dei modelli di denoising da zero comporta molte iterazioni. Nei primi livelli, i modelli di diffusione vengono addestrati più a lungo. L'addestramento si riduce gradualmente nelle fasi successive, quando il modello è in grado di generare campioni che corrispondono fedelmente ai dati di addestramento. Questo processo può richiedere minuti o ore o tempo di calcolo. In altre parole, i modelli di diffusione utilizzano migliaia di chiamate alle reti neurali per generare campioni rispetto alle GAN, che utilizzano una sola chiamata. Ciò rende i modelli di diffusione più lenti nella generazione dei campioni.
È difficile mettere a punto un modello di diffusione.
Per ottenere una versione personalizzata di un modello, si prende un modello pre-addestrato e lo si allena con i propri dati. Tuttavia, è difficile mettere a punto un modello di diffusione incondizionato pre-addestrato con dati limitati. I limiti dei dati possono portare a un overfitting nelle prime fasi dell'addestramento. Le immagini risultanti da modelli sovradimensionati sono di bassa qualità e con una diversità limitata.
I modelli di diffusione richiedono una grande memoria
I modelli di diffusione di grandi dimensioni richiedono grandi requisiti di memoria. Un modello di diffusione può contenere miliardi di parametri. Vengono quindi addestrati e testati su server potenti. Considerando le dimensioni limitate della memoria della GPU, l'implementazione di questi modelli sui dispositivi mobili è impegnativa. Con questa limitazione, i dispositivi mobili hanno difficoltà a eseguire un singolo modello di diffusione di grandi dimensioni.
Dato che l'utilizzo della memoria della GPU rappresenta una minaccia per l'implementazione dei modelli di diffusione sui dispositivi mobili, stanno nascendo delle soluzioni. Una soluzione consiste nel rilasciare versioni più piccole dei modelli di diffusione. I modelli sono sufficientemente compressi per essere distribuiti su dispositivi mobili.
FAQs
Qual è la differenza tra un GAN e un modello di diffusione?
Le reti generative avversarie (GAN) funzionano attraverso un processo di formazione avversaria. Impiegano una rete neurale generatrice per produrre campioni di dati e una rete neurale discriminatrice per differenziare i campioni di dati autentici da quelli falsi. Un modello di diffusione è un modello basato sulla verosimiglianza che genera campioni aggiungendo iterativamente del rumore gaussiano ai dati e applicando una funzione di denoising appresa per trasformare gradualmente i dati in campioni realistici.
Qual è la differenza tra trasformatore e modello di diffusione?
I trasformatori applicano meccanismi di autoattenzione per apprendere le relazioni contestuali tra gli elementi dei dati sequenziali ed eccellono nella classificazione delle immagini e nell'NLP. I modelli di diffusione eccellono nella generazione di immagini fotorealistiche di alta qualità.
Quali sono le sfide dei modelli di diffusione?
I modelli di diffusione seguono un processo di addestramento di denoising che richiede molto tempo e molte iterazioni. Inoltre, i modelli di diffusione di grandi dimensioni con miliardi di parametri richiedono ampie risorse di memoria. Infine, la messa a punto di un modello di diffusione con dati limitati può portare a un overfitting, con il risultato di immagini generate di bassa qualità e meno diversificate.
Come fa un modello di diffusione a generare immagini?
I modelli di diffusione generano immagini attraverso un processo iterativo che prevede la diffusione e il denoising dei valori dei pixel di un'immagine per generare immagini sempre più coerenti e dettagliate.
- Che cos'è un modello di diffusione?
- Componenti dei modelli di diffusione
- Come funzionano i modelli di diffusione?
- Applicazioni dei modelli di diffusione nell'AI/ML
- Limitazioni dei modelli di diffusione
- FAQs
Contenuto
Inizia gratis, scala facilmente
Prova il database vettoriale completamente gestito progettato per le tue applicazioni GenAI.
Prova Zilliz Cloud gratuitamente