Gli autoencoder variazionali (VAE) utilizzano l'architettura dell'autoencoder per codificare lo spazio latente in un modo che può essere utilizzato per attività generative come la generazione di immagini.
A differenza della maggior parte degli autoencoder che sono modelli "deterministici" che codificano un singolo vettore di valori discreti per ogni variabile latente dei dati di addestramento, i VAES sono modelli "probabilistici" che codificano lo spazio latente come un intervallo di possibilità. Interpolando all'interno di questa gamma di possibilità codificate, i VAE possono sintetizzare nuovi campioni di dati che, benché unici e originali di per sé, assomigliano ai dati di addestramento originali.
Per consentire la generazione di campioni di dati completamente nuovi (piuttosto che semplicemente ricreare o combinare campioni dai dati di addestramento), lo spazio latente deve mostrare 2 tipi di regolarità:
- Continuità: i punti vicini nello spazio latente devono produrre contenuti simili quando vengono decodificati.
- Completezza: qualsiasi punto campionato dallo spazio latente deve generare contenuto significativo quando viene decodificato.
Un modo semplice per far rispettare la continuità e la completezza nello spazio latente è forzarlo a seguire una distribuzione normale (gaussiana). Pertanto, i VAE codificano 2 diversi vettori per ogni attributo latente dei dati di addestramento: un vettore di medie, "μ", e un vettore di deviazioni standard, "σ". In sostanza, questi 2 vettori rappresentano, rispettivamente, l'intervallo di possibilità per ciascuna variabile latente e la varianza attesa all'interno di ciascun intervallo di possibilità.
I VAE ottengono questo aggiungendo un'ulteriore funzione di perdita accanto alla perdita da ricostruzione: divergenza di Kullback-Leibler (o divergenza KL). Più specificamente, il VAE è addestrato a ridurre al minimo la divergenza tra una distribuzione gaussiana standard e lo spazio latente appreso riducendo al minimo la perdita di ricostruzione.