Os autocodificadores variacionais (VAEs) utilizam a arquitetura de autoencoder para codificar o espaço latente de forma a ser usada para tarefas generativas, como a geração de imagens.
Diferentemente da maioria dos autocodificadores, que são modelos "determinísticos" que codificam um único vetor de valores discretos para cada variável latente dos dados de treinamento, os VAES são modelos "probabilísticos" que codificam o espaço latente como um conjunto de possibilidades. Interpolando dentro dessa gama de possibilidades codificadas, os VAEs podem sintetizar novas amostras de dados que, embora únicas e originais em si mesmas, assemelham-se aos dados de treinamento originais.
Para possibilitar a geração de amostras de dados completamente novas (em vez de simplesmente recriar ou combinar amostras de dados de treinamento), o espaço latente deve exibir dois tipos de regularidade:
- Continuidade: pontos próximos no espaço latente devem produzir conteúdo semelhante quando decodificados.
- Completude: qualquer ponto de amostra do espaço latente deve produzir conteúdo significativo quando decodificado.
Uma maneira simples de impor continuidade e completude no espaço latente é forçá-lo a seguir uma distribuição normal (Gaussiana). Portanto, os VAEs codificam 2 vetores diferentes para cada atributo latente dos dados de treinamento: um vetor de médias, "μ", e um vetor de desvios padrão, "σ". Em essência, esses 2 vetores representam a gama de possibilidades para cada variável latente e a variância esperada dentro de cada faixa de possibilidades, respectivamente.
Os VAEs conseguem isso adicionando uma função de perda adicional com a perda de reconstrução: divergência de Kullback-Leibler (ou divergência KL). Mais especificamente, o VAE é treinado para minimizar a divergência entre uma distribuição gaussiana padrão e o espaço latente aprendido, minimizando a perda de reconstrução.