Por que precisamos de auto-codificadores?

17

Recentemente, tenho estudado auto-codificadores. Se bem entendi, um autoencoder é uma rede neural em que a camada de entrada é idêntica à camada de saída. Portanto, a rede neural tenta prever a saída usando a entrada como padrão-ouro.

Qual é a utilidade desse modelo? Quais são os benefícios de tentar reconstruir alguns elementos de saída, tornando-os o mais iguais possível aos elementos de entrada? Por que alguém deveria usar todo esse maquinário para chegar ao mesmo ponto de partida?

Larry
fonte

Respostas:

17

Os codificadores automáticos possuem uma camada de entrada, camada oculta e uma camada de saída. A entrada é forçada a ser tão idêntica à saída, por isso é a camada oculta na qual estamos interessados.

A camada oculta forma um tipo de codificação da entrada. "O objetivo de um codificador automático é aprender uma representação compactada e distribuída (codificação) para um conjunto de dados". Se a entrada for um vetor de 100 dimensões e você tiver 60 neurônios na camada oculta, o algoritmo do codificador automático replicará a entrada como um vetor de 100 dimensões na camada de saída, no processo, fornecendo um vetor de 60 dimensões que codifica sua entrada .

Portanto, o objetivo dos codificadores automáticos é a redução da dimensionalidade , entre muitos outros.

Madhulika Mukherjee
fonte
Obrigado @ Madhulika, talvez eu tenha entendido. O algoritmo funciona da seguinte maneira: possui uma camada de entrada, treina a rede neural para ter uma camada de saída idêntica à camada de entrada. Ele compara a camada de entrada com a camada de saída e, se forem diferentes, continua treinando novamente a rede neural. Para quando são idênticos. Quando termina, tomamos a última camada oculta como a melhor aproximação de redução de dimensionalidade da camada de entrada e a usamos para qualquer objetivo de que precisamos. Isso está correto?
Larry
Sim, você acertou quase tudo. :) Leia mais literatura sobre isso.
Madhulika Mukherjee
5

Ele também pode modelar sua população para que, ao inserir um novo vetor, você possa verificar a diferença entre a saída e a entrada. Se eles são "praticamente" iguais, você pode assumir que a entrada corresponde à população. Se eles são "bastante" diferentes, provavelmente a entrada não pertence à população que você modelou.

Eu vejo isso como uma espécie de "regressão por redes neurais", na qual você tenta ter uma função que descreve seus dados: sua saída é igual à entrada.

Matthieu
fonte
3

Talvez essas fotos tenham alguma intuição. Como comentador acima, os codificadores automáticos tentam extrair alguns recursos de alto nível dos exemplos de treinamento. Você pode ver como o algoritmo de prognóstico é usado para treinar cada nível oculto separadamente para o NN profundo na segunda foto.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

As fotos são tiradas da Wikipedia russa.

Marat Zakirov
fonte
2
Comentar as imagens seria útil.
Tim