O que são codificadores automáticos variacionais e a quais tarefas de aprendizado eles são usados?


24

De acordo com esta e esta resposta, os auto-codificadores parecem ser uma técnica que utiliza redes neurais para redução de dimensão. Eu gostaria de saber adicionalmente o que é um autoencoder variacional (suas principais diferenças / benefícios em relação aos autoencoders "tradicionais") e também quais são as principais tarefas de aprendizado para as quais esses algoritmos são usados.

Respostas:


37

Embora os autoencodificadores variacionais (VAEs) sejam fáceis de implementar e treinar, explicá-los não é nada simples, porque eles misturam conceitos do Deep Learning e do Variational Bayes, e as comunidades Deep Learning e Probabilistic Modeling usam termos diferentes para os mesmos conceitos. Assim, ao explicar os VAEs, você corre o risco de se concentrar na parte do modelo estatístico, deixando o leitor sem uma pista sobre como realmente implementá-lo ou vice-versa para se concentrar na arquitetura da rede e na função de perda, na qual o termo Kullback-Leibler parece ser puxado para fora do ar. Vou tentar encontrar um meio termo aqui, começando pelo modelo, mas fornecendo detalhes suficientes para realmente implementá-lo na prática ou entender a implementação de outra pessoa.

VAEs são modelos generativos

Ao contrário dos auto-codificadores clássicos (esparsos, denoising, etc.), os VAEs são modelos generativos , como os GANs. Com modelo generativo, quero dizer um modelo que aprende a distribuição de probabilidade sobre o espaço de entrada . Isso significa que, depois de treinarmos esse modelo, podemos obter amostras de (nossa aproximação de) . Se nosso conjunto de treinamento for feito de dígitos manuscritos (MNIST), depois do treinamento, o modelo generativo poderá criar imagens que se parecem com dígitos manuscritos, mesmo que não sejam "cópias" das imagens no conjunto de treinamento.p(x)xp(x)

O aprendizado da distribuição das imagens no conjunto de treinamento implica que as imagens que parecem dígitos manuscritos devem ter uma alta probabilidade de serem geradas, enquanto imagens que parecem o Jolly Roger ou ruído aleatório devem ter uma probabilidade baixa. Em outras palavras, significa aprender sobre as dependências entre os pixels: se nossa imagem é uma imagem em escala de cinza de pixels do MNIST, o modelo deve aprender que, se um pixel é muito brilhante, há uma probabilidade significativa de que alguns vizinhos os pixels também são brilhantes; se tivermos uma linha longa e inclinada de pixels brilhantes, poderemos ter outra linha horizontal menor de pixels acima deste (a 7) etc.28×28=784

VAEs são modelos de variáveis ​​latentes

O VAE é um modelo de variáveis ​​latentes : isso significa que , o vetor aleatório das intensidades de 784 pixels (as variáveis observadas ), é modelado como uma função (possivelmente muito complicada) de um vetor aleatório de menor dimensionalidade, cujos componentes são variáveis não observadas ( latentes ). Quando esse modelo faz sentido? Por exemplo, no caso MNIST, pensamos que os dígitos manuscritos pertencem a uma variedade de dimensões muito menor que a dimensãoxzZ xzZx, porque a grande maioria dos arranjos aleatórios com intensidades de 784 pixels não parece um dígito manuscrito. Intuitivamente, esperamos que a dimensão seja pelo menos 10 (o número de dígitos), mas é provavelmente maior porque cada dígito pode ser escrito de maneiras diferentes. Algumas diferenças não são importantes para a qualidade da imagem final (por exemplo, rotações e traduções globais), mas outras são importantes. Portanto, neste caso, o modelo latente faz sentido. Mais sobre isso mais tarde. Observe que, surpreendentemente, mesmo que nossa intuição nos diga que a dimensão deve cerca de 10, podemos definitivamente usar apenas 2 variáveis ​​latentes para codificar o conjunto de dados MNIST com um VAE (embora os resultados não sejam bonitos). O motivo é que mesmo uma única variável real pode codificar infinitamente muitas classes, porque pode assumir todos os valores inteiros possíveis e muito mais. Obviamente, se as classes tiverem sobreposição significativa entre elas (como 9 e 8 ou 7 e I no MNIST), mesmo a função mais complicada de apenas duas variáveis ​​latentes fará um trabalho ruim ao gerar amostras claramente discerníveis para cada classe. Mais sobre isso mais tarde.

Os VAEs assumem uma distribuição paramétrica multivariada (onde são os parâmetros de ) e aprendem os parâmetros do distribuição multivariada. O uso de um pdf paramétrico para , que impede que o número de parâmetros de um VAE cresça sem limites com o crescimento do conjunto de treinamento, é chamado amortização no jargão do VAE (sim, eu sei ...).q(z|x,λ)λqz

A rede do decodificador

insira a descrição da imagem aqui

Começamos a partir da rede de decodificadores porque o VAE é um modelo generativo, e a única parte do VAE que é realmente usada para gerar novas imagens é o decodificador. A rede do codificador é usada apenas no tempo de inferência (treinamento).

O objetivo da rede de decodificadores é gerar novos vetores aleatórios pertencentes ao espaço de entrada , ou seja, novas imagens, começando pelas realizações do vetor latente . Isso significa claramente que ele deve aprender a distribuição condicional . Para os VAEs, essa distribuição geralmente é considerada uma gaussiana multivariada 1 :xXzp(x|z)

pϕ(x|z)=N(x|μ(z;ϕ),σ(z;ϕ)2I)

ϕ é o vetor de pesos (e preconceitos) da rede do codificador. Os vetores e são funções não lineares complexas e desconhecidas, modelado pela rede do decodificador: as redes neurais são poderosas aproximações de funções não lineares.μ(z;ϕ)σ(z;ϕ)


Conforme observado por @amoeba nos comentários, há uma semelhança impressionante entre o decodificador e um modelo clássico de variáveis ​​latentes: Análise Fatorial. Na análise fatorial, você assume o modelo:

x|zN(Wz+μ,σ2I), zN(0,I)

Ambos os modelos (FA e o decodificador) assumem que a distribuição condicional das variáveis ​​observáveis nas variáveis ​​latentes é gaussiana e que as próprias são gaussianas padrão. A diferença é que o decodificador não assume que a média de seja linear em , nem pressupõe que o desvio padrão seja um vetor constante. Pelo contrário, os modela como funções não lineares complexas do . A esse respeito, pode ser visto como Análise Fatorial não linear. Veja aquixzzp(x|z)zzpara uma discussão perspicaz dessa conexão entre FA e VAE. Como a FA com uma matriz de covariância isotrópica é apenas PPCA, isso também se vincula ao resultado bem conhecido de que um autoencoder linear reduz ao PCA.


Vamos voltar ao decodificador: como aprendemos ? Intuitivamente, queremos variáveis ​​latentes que maximizem a probabilidade de gerar o no conjunto de treinamento . Em outras palavras, queremos calcular a distribuição de probabilidade posterior do , dados os dados:ϕzxiDnz

p(z|x)=pϕ(x|z)p(z)p(x)

Assumimos que antes de , e ficamos com o problema usual na inferência bayesiana de que calcular (a evidência ) é difícil ( integral multidimensional). Além disso, como aqui é desconhecido, não podemos computá-lo de qualquer maneira. Digite Inferência Variacional, a ferramenta que fornece o nome dos Autoencodificadores Variacionais.N(0,I)zp(x)μ ( z ; ϕ )μ(z;ϕ)

Inferência Variacional para o Modelo VAE

A Inferência Variacional é uma ferramenta para executar a Inferência Bayesiana aproximada para modelos muito complexos. Não é uma ferramenta excessivamente complexa, mas minha resposta já é muito longa e não vou entrar em uma explicação detalhada do VI. Você pode dar uma olhada nesta resposta e nas referências, se estiver curioso:

/stats//a/270569/58675

Basta dizer que VI procura uma aproximação para em uma família paramétrica de distribuições , onde, como observado acima, são os parâmetros da família. Procuramos parâmetros que minimizem a divergência de Kullback-Leibler entre nossa distribuição de destino e :p(z|x)q(z|x,λ)λp(z|x)q(z|x,λ)

minλD[p(z|x)||q(z|x,λ)]

Novamente, não podemos minimizar isso diretamente porque a definição de divergência Kullback-Leibler inclui a evidência. Apresentando o ELBO (Evidence Lower BOund) e após algumas manipulações algébricas, finalmente chegamos a:

ELBO(λ)=Eq(z|x,λ)[logp(x|z)]D[(q(z|x,λ)||p(z)]

Como o ELBO é um limite inferior à evidência (veja o link acima), maximizar o ELBO não é exatamente equivalente a maximizar a probabilidade de dados fornecidos (afinal, VI é uma ferramenta para a inferência bayesiana aproximada ), mas vai na direção certa.λ

Para fazer inferência, precisamos especificar a família paramétrica . Na maioria dos VAEs, escolhemos uma distribuição Gaussiana multivariada e não correlacionadaq(z|x,λ)

q(z|x,λ)=N(z|μ(x),σ2(x)I)

Essa é a mesma escolha que fizemos para , embora possamos ter escolhido uma família paramétrica diferente. Como antes, podemos estimar essas funções não lineares complexas introduzindo um modelo de rede neural. Como este modelo aceita imagens de entrada e retorna parâmetros da distribuição das variáveis ​​latentes, chamamos de rede do codificador . Como antes, podemos estimar essas funções não lineares complexas introduzindo um modelo de rede neural. Como este modelo aceita imagens de entrada e retorna parâmetros da distribuição das variáveis ​​latentes, chamamos de rede do codificador .p(x|z)

A rede do codificador

Também chamada de rede de inferência , é usada apenas no tempo de treinamento.

insira a descrição da imagem aqui

Como observado acima, o codificador deve aproximar e , portanto, se tivermos, digamos, 24 variáveis ​​latentes, a saída de o codificador é um vetor . O codificador possui pesos (e preconceitos) . Para aprender , podemos finalmente escrever o ELBO em termos dos parâmetros e da rede de codificadores e decodificadores, assim como os pontos de ajuste do treinamento:μ(x)σ(x)d=48θθθϕ

ELBO(θ,ϕ)=iEqθ(z|xi,λ)[logpϕ(xi|z)]D[(qθ(z|xi,λ)||p(z)]

Podemos finalmente concluir. O oposto do ELBO, em função de e , é usado como a função de perda do VAE. Usamos o SGD para minimizar essa perda, ou seja, maximizar o ELBO. Como o ELBO é um limite inferior à evidência, isso vai na direção de maximizar a evidência e, assim, gerar novas imagens que são otimamente semelhantes às do conjunto de treinamento. O primeiro termo no ELBO é a probabilidade logarítmica negativa esperada dos pontos de ajuste do treinamento, portanto, incentiva o decodificador a produzir imagens semelhantes às do treinamento. O segundo termo pode ser interpretado como um regularizador: incentiva o codificador a gerar uma distribuição para as variáveis ​​latentes que é semelhante aθϕp(z)=N(0,I). Mas, introduzindo primeiro o modelo de probabilidade, entendemos de onde vem toda a expressão: a minimização da divergência de Kullabck-Leibler entre o posterior aproximado posterior e o modelo posterior . 2qθ(z|x,λ)p(z|x,λ)

Depois de aprendermos e maximizando o , podemos jogar fora o codificador. A partir de agora, para gerar novas imagens, basta provar e propagá-lo através do decodificador. As saídas do decodificador serão imagens semelhantes às do conjunto de treinamento.θϕELBO(θ,ϕ)zN(0,I)

Referências e leituras adicionais


1 Essa suposição não é estritamente necessária, embora simplifique nossa descrição de VAEs. No entanto, dependendo dos aplicativos, você pode assumir uma distribuição diferente para . Por exemplo, se é um vetor de variáveis ​​binárias, um gaussiano não faz sentido e um Bernoulli multivariado pode ser assumido.pϕ(x|z)xp

2 A expressão ELBO, com sua elegância matemática, oculta duas principais fontes de dor para os praticantes da VAE. Um é o termo médio . Isso efetivamente requer o cálculo de uma expectativa, o que requer a coleta de várias amostras deEqθ(z|xi,λ)[logpϕ(xi|z)]qθ(z|xi,λ). Dado o tamanho das redes neurais envolvidas e a baixa taxa de convergência do algoritmo SGD, ter que desenhar várias amostras aleatórias a cada iteração (na verdade, para cada minibatch, o que é ainda pior) consome muito tempo. Os usuários do VAE resolvem esse problema de maneira muito pragmática calculando essa expectativa com uma única amostra aleatória (!). A outra questão é que, para treinar duas redes neurais (codificador e decodificador) com o algoritmo de retropropagação, preciso diferenciar todas as etapas envolvidas na propagação direta do codificador para o decodificador. Como o decodificador não é determinístico (avaliar sua saída requer o desenho de um gaussiano multivariado), nem faz sentido perguntar se é uma arquitetura diferenciável. A solução para isso é o truque de reparametrização .


1
Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
gung - Restabelece Monica

2
+6. Eu coloquei uma recompensa aqui, então espero que você receba alguns votos adicionais. Se você deseja melhorar alguma coisa neste post (mesmo que seja apenas formatação), agora é uma boa hora: todas as edições enviarão esse tópico para a primeira página e farão com que mais pessoas prestem atenção ao prêmio. Além disso, eu estava pensando um pouco mais sobre a relação conceitual entre a estimativa EM do modelo FA e o treinamento VAE. Você cria um link para os slides das palestras, detalhados sobre como o treinamento do VAE é semelhante ao EM, mas pode ser ótimo destilar parte dessa intuição nessa resposta.
Ameba diz Reinstate Monica

(Fiz algumas leituras sobre isso e estou pensando em escrever aqui uma resposta "intuitiva / conceitual", com foco na correspondência FA / PPCA <--> VAE em termos de treinamento EM <--> VAE, mas acho que não Eu sei o suficiente para uma resposta autoritária ... Então, eu prefiro que outra pessoa a tenha escrito :-) #
ameba diz Reinstate Monica

Obrigado pela recompensa! Algumas edições importantes implementadas. Porém, não vou abordar as coisas do EM, porque não sei o suficiente sobre ele, e como tenho tempo suficiente (você sabe quanto tempo leva para implementar as principais edições ... ;-)
DeltaIV,
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.