Reconstrução de balanceamento vs Autoencoder variacional de perda de KL

11

Estou treinando um autoencoder variacional condicional em um conjunto de dados de faces. Quando eu defino minha Perda de KLL igual ao meu termo de Perda de reconstrução, meu autoencoder parece incapaz de produzir amostras variadas. Eu sempre recebo os mesmos tipos de rosto aparecendo: insira a descrição da imagem aqui

Essas amostras são terríveis. No entanto, quando diminuo o peso da perda de KLL em 0,001, recebo amostras razoáveis: insira a descrição da imagem aqui

O problema é que o espaço latente aprendido não é suave. Se eu tentar executar uma interpolação latente ou gerar uma amostra aleatória, fico com lixo. Quando o termo KLL tem um peso pequeno (0,001), observo o seguinte comportamento de perda: insira a descrição da imagem aqui Observe que o VggLoss (o termo de reconstrução) diminui, enquanto o KLLoss continua a aumentar.

Também tentei aumentar a dimensionalidade do espaço latente, mas isso também não funcionou.

Observe aqui, quando os dois termos de perda têm peso igual, como o termo KLL domina, mas não permite que a perda de reconstrução diminua:

insira a descrição da imagem aqui

Isso resulta em terríveis reconstruções. Existem sugestões sobre como equilibrar esses dois termos de perda ou qualquer outra coisa possível a tentar, para que o meu autoencoder aprenda um espaço latente interpolativo e suave enquanto produz reconstruções razoáveis?

Joe B
fonte

Respostas:

6

Um pouco tarde para a festa aqui e você provavelmente já passou disso, mas está bem documentado que você precisa "aquecer" o termo de perda de KL começando em zero e treinando um pouco apenas na perda de reconstrução antes de introduzir a perda ou os resultados de KL não seja bom. Não está claro no seu post se você fez isso, mas é um exemplo clássico de como esses treinamentos podem ser delicados - às vezes me pergunto como eles são apropriados na validação cruzada, já que são fortes tentativas e erros, além de um pouco de poeira de duende e arco-íris.

JPJ
fonte
Ponto interessante, você tem uma referência para isso?
Dopexxx 2/03/19
4
@dopexxx Procure "KL annealing", por exemplo, arxiv.org/pdf/1511.06349.pdf
jayelm
Obrigado! Quem mais que Bengio introduziu isso: D Na verdade, encontrei o jornal em algum momento depois, mas havia esquecido esse tópico. É uma ótima referência
Dopexxx 30/04/19
5

No entanto, quando diminuo o peso da perda de KLL em 0,001, recebo amostras razoáveis: (...) O problema é que o espaço latente aprendido não é suave.

Parece super ajuste. Lembre-se de que a perda de KL no espaço latente corresponde à regularização.

Existem sugestões sobre como equilibrar esses dois termos de perda ou qualquer outra coisa possível a tentar, para que meu autoencoder aprenda um espaço latente interpolável e suave, enquanto produz reconstruções razoáveis?

Recentemente me deparei com este artigo: β-VAE: Aprendendo conceitos visuais básicos com uma estrutura variacional restrita (na verdade, usa seu conjunto de dados em um exemplo).

Do papel (β é o parâmetro que você alterou):

Introduzimos um hiperparâmetro ajustável β que equilibra a capacidade do canal latente e as restrições de independência com a precisão da reconstrução (...) β-VAE é estável para treinamento, faz poucas suposições sobre os dados e depende do ajuste de um único hiperparâmetro β, que pode ser otimizado diretamente por meio de uma pesquisa de hiperparâmetro usando dados fracamente rotulados ou através de inspeção visual heurística para dados puramente não supervisionados.

Jakub Bartczuk
fonte