O autoencoder
pacote é apenas uma implementação do codificador automático descrito nas notas de classe de Andrew Ng , que pode ser um bom ponto de partida para uma leitura mais aprofundada. Agora, para responder às suas perguntas
As pessoas às vezes distinguem entre
parâmetros , que o algoritmo de aprendizado calcula a si próprio, e
hiperparâmetros , que controlam esse processo de aprendizado e precisam ser fornecidos ao algoritmo de aprendizado.
É importante perceber que NÃO HÁ VALORES MÁGICOS para os hiperparâmetros. O valor ideal variará, dependendo dos dados que você está modelando: você precisará experimentá-los com seus dados.
a) Lambda ( ) controla como os pesos são atualizados durante a retropropagação. Em vez de apenas atualizar os pesos com base na diferença entre a saída do modelo e a verdade do terreno), a função de custo inclui um termo que penaliza grandes pesos (na verdade, o valor ao quadrado de todos os pesos). O Lambda controla a importância relativa desse termo de penalidade, que tende a arrastar pesos para zero e ajuda a evitar ajustes excessivos.λ
b) Rho ( e beta ( β ) controlam a escassez. Rho é a ativação esperada de uma unidade oculta (média do conjunto de treinamento). A representação se tornará cada vez mais esparsa à medida que se tornar menor. Essa escassez é imposta pelo ajuste do termo de viés, e o beta controla o tamanho de suas atualizações. (Parece que β na verdade apenas redimensiona a taxa geral de aprendizado α .)ρ )( ββα
c) Epsilon ( controla os valores de peso inicial, que são sorteados aleatoriamente a partir de N ( 0 , ϵ 2 ) .ϵ )N( 0 , ϵ2)
Seus valores de rho não parecem irracionais, pois ambos estão próximos da parte inferior do intervalo da função de ativação (0 a 1 para logística, -1 a 1 para tanh). No entanto, isso obviamente depende da quantidade de escassez desejada e do número de unidades ocultas que você usa também.
m- 1 / 2m
Existem muitas "regras práticas" para escolher o número de unidades ocultas. Seu palpite inicial (entrada 2x) parece estar alinhado com a maioria deles. Dito isto, essas estimativas são muito mais estimativas do que estimativas. Supondo que você tenha o poder de processamento, eu iria errar ao lado de mais unidades ocultas, depois impor a escassez com um baixo valor rho.
Um uso óbvio dos codificadores automáticos é gerar representações de recursos mais compactas para outros algoritmos de aprendizado. Uma imagem bruta pode ter milhões de pixels, mas um codificador automático (esparso) pode representá-la em um espaço muito menor.
Geoff Hinton (e outros) mostraram que eles geram recursos úteis para a classificação subsequente. Parte do trabalho de aprendizado profundo usa codificadores automáticos ou similares para pré-treinar a rede.
Vincent et al. use codificadores automáticos diretamente para executar a classificação.
A capacidade de gerar representações sucintas de recursos também pode ser usada em outros contextos. Aqui está um pequeno projeto em que os estados produzidos pelo autoencoder são usados para guiar um algoritmo de aprendizado por reforço nos jogos da Atari .
Finalmente, pode-se também usar auto-codificadores para reconstruir entradas ruidosas ou degradadas, assim , o que pode ser um final útil por si só.
beta = 6
noautoencoder
código de exemplo?