Auto-Encoding Variational Bayes: il paper che insegnò alle reti a immaginare

Nel 2013 Kingma e Welling trasformarono l'autoencoder da fotocopiatrice a generatore, con un'idea semplice e un trucco matematico elegante. Rileggiamo il paper che ha inventato il VAE, oggi nascosto dentro Stable Diffusion.

Nel dicembre del 2013 un dottorando dell’Università di Amsterdam, Diederik Kingma, carica su arXiv insieme al suo relatore Max Welling un paper di una decina di pagine dal titolo poco invitante: Auto-Encoding Variational Bayes. Niente demo spettacolari: le immagini generate negli esperimenti sono cifre scritte a mano, sfocate, in bianco e nero. Eppure quel paper contiene due idee che oggi si trovano, quasi intatte, dentro i sistemi di generazione di immagini più usati al mondo. La prima: una rete neurale può comprimere i dati non in un punto, ma in una distribuzione di probabilità. La seconda: un trucco algebrico di una riga che rende addestrabile tutto il resto.

L’ELBO, il trucco della riparametrizzazione e i due termini del costo sono derivati nel libro.

Leggi «Il salto probabilistico: l’ELBO e la riparametrizzazione» nel libro →

Il difetto della fotocopiatrice

Per capire il problema che il paper risolve bisogna partire dall’autoencoder classico, un’architettura già nota all’epoca. Un autoencoder è una rete a due metà: un encoder che comprime l’input (per esempio un’immagine) in un vettore piccolo, il codice latente, e un decoder che dal codice prova a ricostruire l’input originale. Si addestra minimizzando l’errore di ricostruzione. Funziona bene come compressore, ma come generatore è una delusione.

Il motivo è geometrico. L’encoder classico mappa ogni immagine in un punto preciso dello spazio latente, e i punti delle immagini di addestramento finiscono sparsi come coriandoli: tra un punto e l’altro ci sono zone vuote in cui il decoder non è mai stato addestrato. Se si pesca un codice a caso in una di quelle zone e lo si dà al decoder, esce spazzatura. È come una fotocopiatrice: riproduce fedelmente ciò che le metti sul vetro, ma non ha alcuna idea di come sia fatto un documento nuovo.

Codificare nuvole, non punti

La prima mossa del paper è cambiare cosa produce l’encoder. Invece di un punto, l’encoder di un variational autoencoder produce i parametri di una gaussiana: una media μ e una deviazione standard σ. Ogni immagine non viene più schiacciata in una coordinata esatta, ma in una piccola nuvola di probabilità. Durante l’addestramento il codice latente si ottiene campionando da quella nuvola: la stessa immagine, passata due volte, produce due codici leggermente diversi, e il decoder deve imparare a ricostruirla comunque.

La seconda mossa è disciplinare le nuvole. Un termine aggiuntivo nella funzione di perdita — una divergenza di Kullback-Leibler — spinge tutte le gaussiane dell’encoder verso una distribuzione di riferimento, la normale standard centrata nell’origine. L’effetto combinato è che lo spazio latente si riempie: le nuvole si sovrappongono, si toccano, coprono la regione attorno all’origine senza lasciare buchi. A quel punto generare è banale: si campiona un vettore dalla normale standard, lo si passa al decoder, ed esce un’immagine nuova ma plausibile. La fotocopiatrice è diventata un disegnatore.

Il salto concettuale non è tecnico ma filosofico: smettere di chiedere alla rete «dove sta questa immagine?» e chiederle invece «quanto è incerta la sua posizione?».

Il trucco della riparametrizzazione

C’è però un ostacolo che avrebbe fermato tutto: il campionamento. L’addestramento delle reti neurali si basa sulla backpropagation, che richiede di calcolare derivate lungo tutto il percorso dal risultato ai parametri. Ma estrarre un numero a caso da una distribuzione non è un’operazione derivabile: il gradiente non può attraversare un lancio di dadi.

La soluzione del paper è il reparameterization trick, e sta in una riga: invece di campionare z direttamente dalla gaussiana con media μ e deviazione σ, si campiona un rumore ε dalla normale standard e si calcola z = μ + σ·ε. Il risultato è statisticamente identico, ma la casualità è stata spostata fuori dal percorso del gradiente: ε è un ingresso esterno fissato, mentre μ e σ — le uscite dell’encoder — partecipano a un calcolo perfettamente derivabile.

L’analogia più onesta è quella di una ricetta con un ingrediente imprevedibile. Se il cuoco assaggia e aggiusta «a occhio» dentro la ricetta, nessuno può risalire a cosa ha fatto. Se invece la ricetta dice «aggiungi esattamente il pizzico di sale che trovi nella bustina numero 7», l’imprevedibilità sta tutta nella bustina, e la ricetta stessa resta riproducibile e analizzabile passo per passo. Il trucco fa questo: sposta il caso in una bustina esterna.

Il latente probabilistico del VAE x input encoder μ σ z spazio latente: una nuvola, non un punto ε ~ N(0, 1) z = μ + σ·ε decoder x̂ ricostruzione loss = errore di ricostruzione + KL(nuvola ∥ N(0,1))

Il flusso di un variational autoencoder: l’encoder produce media e deviazione di una gaussiana, il punto latente z si ottiene con la riparametrizzazione, il decoder ricostruisce l’input. La penalità KL tiene tutte le nuvole vicine all’origine.

Due forze in tensione

La funzione obiettivo del VAE — nel paper è la variational lower bound, quella che oggi chiamiamo comunemente ELBO, evidence lower bound — mette insieme le due componenti viste sopra, e vale la pena notare che tirano in direzioni opposte. Il termine di ricostruzione vorrebbe nuvole strettissime e ben separate: più il codice è preciso, più fedele è la ricostruzione. Il termine KL vorrebbe invece nuvole larghe e tutte uguali alla normale standard: massima sovrapposizione, massima generabilità, ma codici indistinguibili tra loro.

È il compromesso di un bibliotecario che deve archiviare libri in poco spazio: scaffali iper-specifici rendono ogni libro facilissimo da ritrovare ma lasciano metà biblioteca vuota; scaffali generici riempiono tutto lo spazio ma rendono i libri confondibili. Il VAE si addestra esattamente su questo crinale, e gran parte della ricerca successiva (dal β-VAE in poi) ha esplorato come spostare l’ago della bilancia.

Questo compromesso spiega anche il difetto storico dei VAE: le immagini generate tendono a essere sfocate. Quando il modello è incerto tra più ricostruzioni possibili, la soluzione che minimizza l’errore medio è una media tra le alternative — e la media di più immagini nitide è un’immagine sfocata. Le GAN, pubblicate pochi mesi dopo, avrebbero preso la strada opposta: immagini nitide, addestramento instabile.

Dove lo incontrate oggi

Il VAE «puro» come generatore di immagini è stato superato. Ma le sue idee sono ovunque. Il reparameterization trick è diventato uno strumento standard per far passare gradienti attraverso nodi stocastici, ben oltre gli autoencoder. E soprattutto: i modelli di diffusione latente, la famiglia di cui fa parte Stable Diffusion, non lavorano sui pixel ma dentro lo spazio compresso di un autoencoder regolarizzato in stile VAE. Quando un modello text-to-image genera un’immagine, la parte finale del lavoro — trasformare il latente in pixel — la fa un discendente diretto del decoder di questo paper.

C’è anche una nota biografica che aiuta a collocare il paper: l’anno dopo, lo stesso Kingma avrebbe firmato Adam, l’ottimizzatore più usato nel deep learning. Due dei mattoni fondamentali del campo portano la stessa firma di dottorato.

Il paper originale

Se questo articolo vi ha incuriosito, il consiglio è leggere la fonte: Auto-Encoding Variational Bayes di Diederik P. Kingma e Max Welling (arXiv:1312.6114, dicembre 2013, poi presentato a ICLR 2014). È denso ma breve, e la sezione sul reparameterization trick resta la spiegazione più chiara in circolazione. Merita una menzione anche il lavoro parallelo e indipendente di Danilo Rezende, Shakir Mohamed e Daan Wierstra (DeepMind), che nello stesso periodo arrivò a una formulazione molto simile: come spesso accade, l’idea era matura. Per chi fa AI oggi, capire il VAE significa capire il vocabolario — spazio latente, prior, ELBO — con cui si descrive quasi tutta la generazione moderna.

I commenti sono riservati agli iscritti.

Accedi per commentare