Função de perda para autoencoders


19

Estou experimentando um pouco de auto-codificadores e, com o tensorflow, criei um modelo que tenta reconstruir o conjunto de dados MNIST.

Minha rede é muito simples: X, e1, e2, d1, Y, onde e1 e e2 são camadas de codificação, d2 e Y são camadas de decodificação (e Y é a saída reconstruída).

X tem 784 unidades, e1 tem 100, e2 tem 50, d1 tem 100 novamente e Y 784 novamente.

Estou usando sigmoides como funções de ativação para as camadas e1, e2, d1 e Y. As entradas estão em [0,1] e, portanto, devem ser as saídas.

Bem, tentei usar a entropia cruzada como função de perda, mas a saída sempre foi um blob e notei que os pesos de X a e1 sempre convergiam para uma matriz de valor zero.

Por outro lado, o uso de erros quadráticos médios como função de perda produziria um resultado decente, e agora sou capaz de reconstruir as entradas.

Por que? Eu pensei que poderia interpretar os valores como probabilidades e, portanto, usar entropia cruzada, mas obviamente estou fazendo algo errado.


1
Você mencionou o uso do sigmoide para as funções de ativação nas primeiras camadas. Eles exibem "saturação", conforme explicado mais detalhadamente nas Notas do CS231n . Você já tentou outra função de ativação como ReLUs?
Jerry

Não me lembro agora se tentei outro, mas obrigado por compartilhar!
AkiRoss

Respostas:


17

Penso que a melhor resposta para isso é que a função de perda de entropia cruzada não é adequada para essa tarefa em particular.

Ao adotar essa abordagem, você está basicamente dizendo que os dados MNIST verdadeiros são binários e suas intensidades de pixel representam a probabilidade de que cada pixel esteja 'ligado'. Mas sabemos que esse não é realmente o caso. O erro dessa suposição implícita está causando problemas.

-[(alvo)registro(predição)+(1-alvo)registro(1-predição)]

entropia cruzada vs. perda de mse

Podemos ver que a perda de entropia cruzada é assimétrica. Por que queremos isso? É realmente pior prever 0,9 para este pixel 0,8 do que prever 0,7? Eu diria que talvez seja melhor, se alguma coisa.

Provavelmente, poderíamos entrar em mais detalhes e descobrir por que isso leva aos blobs específicos que você está vendo. Eu arriscaria um palpite de que é porque as intensidades de pixel estão acima de 0,5, em média, na região em que você está vendo o blob. Mas, em geral, este é um caso das suposições implícitas de modelagem que você fez como inadequadas para os dados.

Espero que ajude!


3
wo que função de perda é adequada se a entrada estiver flutuando entre 0 e 1?
Jemshit Iskenderov

Perda de entropia binária cruzada
torayeff 06/07/19
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.