Quando devo usar um autoencoder variacional em oposição a um autoencoder?

19

Entendo a estrutura básica do autoencoder variacional e do autoencoder normal (determinístico) e a matemática por trás deles, mas quando e por que eu preferiria um tipo de autoencoder ao outro? Tudo o que posso pensar é que a distribuição prévia de variáveis ​​latentes do autoencoder variacional nos permite amostrar as variáveis ​​latentes e depois construir a nova imagem. Qual a vantagem da estocástica do autoencoder variacional sobre o autoencoder determinístico?

DiveIntoML
fonte

Respostas:

13

O VAE é uma estrutura que foi proposta como uma maneira escalável de realizar EM variacional (ou inferência variacional em geral) em grandes conjuntos de dados. Embora tenha uma estrutura semelhante a um EA, serve a um propósito muito maior.

Dito isto, é possível, é claro, usar os VAEs para aprender representações latentes. Sabe-se que os VAEs dão representações com fatores desembaraçados [1] Isso ocorre devido a priores gaussianos isotrópicos nas variáveis ​​latentes. Modelá-los como gaussianos permite que cada dimensão na representação se afaste o mais possível dos outros fatores. Além disso, [1] adicionou um coeficiente de regularização que controla a influência do anterior.

Embora os gaussianos isotrópicos sejam suficientes para a maioria dos casos, para casos específicos, pode-se querer modelar os anteriores de maneira diferente. Por exemplo, no caso de sequências, pode-se definir anteriores como modelos seqüenciais [2].

Voltando à questão, como se pode ver, o anterior fornece controle significativo sobre como queremos modelar nossa distribuição latente. Esse tipo de controle não existe na estrutura usual de EA. Este é realmente o poder dos modelos bayesianos, os VAEs estão simplesmente tornando-os mais práticos e viáveis ​​para conjuntos de dados em larga escala. Portanto, para concluir, se você deseja um controle preciso sobre suas representações latentes e o que gostaria que elas representassem, escolha VAE. Às vezes, modelagem precisa pode capturar melhores representações como em [2]. No entanto, se o EA for suficiente para o trabalho que você faz, basta seguir o EA, é simples e descomplicado o suficiente. Afinal, com os EAs, estamos simplesmente executando um PCA não linear.

[1] Aprendizagem precoce de conceitos visuais com aprendizado profundo não supervisionado, 2016
Irina Higgins, Loic Matthey, Xavier Glorot, Arka Pal, Benigno Uria, Charles Blundell, Shakir Mohamed e Alexander Lerchner
https://arxiv.org/abs/1606.05579

[2] Um modelo variável latente recorrente para dados sequenciais, 2015
Junyoung Chung, Kyle Kastner, Laurent Dinh, Kratarth Goel, Aaron Courville, Yoshua Bengio
https://arxiv.org/abs/1506.02216

TenaliRaman
fonte
6

TenaliRaman teve alguns pontos positivos, mas também perdeu muitos conceitos fundamentais. Primeiro, deve-se notar que o principal motivo para usar uma estrutura semelhante a um EA é o espaço latente que nos permite compactar as informações e, com sorte, obter fatores independentes que representam recursos de alto nível dos dados. Um ponto importante é que, embora os EAs possam ser interpretados como a extensão não linear do PCA, uma vez que as unidades ocultas "X" ocupariam o mesmo espaço que o primeiro número "X" de componentes principais, um AE não produz necessariamente componentes ortogonais no latente espaço (o que equivaleria a uma forma de desembaraço). Além de um VAE, você pode obter uma aparência da probabilidade dos dados (embora aproximada) e também fazer uma amostra (que pode ser útil para várias tarefas diferentes). Contudo,

A distribuição anterior imposta às unidades latentes em um VAE apenas contribui para o ajuste do modelo devido ao termo de divergência de KL, que a referência [1] simplesmente adicionou um multiplicador de hiperparâmetro nesse termo e obteve um artigo completo (a maioria é bastante óbvio). Essencialmente, um prior "não informativo" é aquele que apresenta uma divergência de KL próxima a zero e não contribui muito para a perda, o que significa que determinada unidade não é usada para reconstrução no decodificador. O desembaraço entra em jogo em um VAE naturalmente porque, no caso mais simples de dados multimodais, o custo de divergência de KL é mais baixo por ter um Gaussiano latente exclusivo para cada modo do que se o modelo tentar capturar vários modos com um único Gaussian (que divergiria mais do que o anterior, pois é penalizado fortemente pelo custo de divergência de KL) - levando desembaraço nas unidades latentes. Portanto, o VAE também se presta naturalmente à maioria das fontes de dados devido às implicações estatísticas associadas a ele.

Também existem estruturas de imposição de escassez para AE, mas infelizmente não conheço nenhum documento que compare o VAE vs AE estritamente com base na representação do espaço latente e no desembaraço. No entanto, eu realmente gostaria de ver algo nessa arena - já que os EAs são muito mais fáceis de treinar e, se pudessem alcançar um tanto de desemaranhamento quanto os EVAs no espaço latente, obviamente seriam preferidos. Em uma nota relacionada, também vi algumas promessas dos métodos ICA (e ICA não lineares), mas as que vi obrigaram o espaço latente a ter a mesma dimensão que os dados, o que não é tão útil quanto os EAs para extrair recursos de alto nível.

JPJ
fonte
3

O codificador automático padrão pode ser ilustrado usando o seguinte gráfico: insira a descrição da imagem aqui

Conforme declarado nas respostas anteriores, ele pode ser visto como apenas uma extensão não-linear do PCA.

Mas comparado ao autoencoder variacional, o autoencoder vanilla tem a seguinte desvantagem:

O problema fundamental dos autoencodificadores, para geração, é que o espaço latente para o qual eles convertem suas entradas e onde estão seus vetores codificados, pode não ser contínuo ou permitir uma interpolação fácil.

Ou seja, a parte de codificação no gráfico acima não pode lidar com entradas que o codificador nunca viu antes, porque diferentes classes são agrupadas de forma contundente e essas entradas invisíveis são codificadas em algo localizado em algum lugar em branco:

insira a descrição da imagem aqui

Para resolver esse problema, o autoencoder variacional foi criado adicionando uma camada contendo uma média e um desvio padrão para cada variável oculta na camada do meio:

insira a descrição da imagem aqui

Então, mesmo para a mesma entrada, a saída decodificada pode variar e as entradas codificadas e em cluster ficam suaves:

insira a descrição da imagem aqui

Portanto, para excluir ou classificar (filtrar dados diferentes), um auto-codificador padrão seria suficiente, enquanto é melhor empregarmos um auto-codificador variacional para geração.

Referência:
compreensão intuitiva de autoencodificadores variacionais

Lerner Zhang
fonte
1

A escolha da distribuição do código no VAE permite um melhor aprendizado de representação não supervisionada, em que amostras da mesma classe terminam próximas umas das outras no espaço do código. Além disso, é mais fácil encontrar uma semântica para as regiões no espaço do código. Por exemplo, você saberia de cada área que classe pode ser gerada.

Se você precisar de uma análise mais aprofundada, dê uma olhada na tese de Durk Kingma . É uma ótima fonte de inferência variacional.

PickleRick
fonte
Quando você está falando sobre "escolher a distribuição", de qual distribuição você está falando? p (z), p (z | x), p (x | z) ou todos eles? Vi apenas o uso de distribuição normal ou de Bernoulli, você conhece algum trabalho que compare o desempenho usando uma distribuição diferente? Quanto ao seu segundo ponto, não vejo por que o autoencoder variacional funcionará melhor do que um autoencoder normal, você poderia elaborar? Obrigado.
DiveIntoML 24/01