Parâmetros esparsos do Autoencoder [Hyper]

8

Acabei de começar a usar o pacote de autoencoder em R.

As entradas para a autoencode()função incluem lambda, beta, rho e epsilon.

Quais são os limites para esses valores? Eles variam para cada função de ativação? Esses parâmetros são chamados de "hiperparâmetros"?

Supondo que um autoencoder esparso, rho = 0,01 é bom para a função de ativação logística e rho = - .9 é bom para a função de ativação de tangente hiperbólica?

Por que o manual define epsilon como 0,001? Se bem me lembro, "Propagação posterior eficiente" da LeCun recomenda valores iniciais que não são tão próximos de zero.

Quanto importa um valor "bom" para beta?

Existe uma "regra de ouro" para escolher o número de nuerons na camada oculta? Por exemplo, se as camadas de entrada tiver N nós, é razoável ter 2N nuerons na camada oculta?

Você pode recomendar alguma literatura sobre o uso prático de auto-codificadores?

poder
fonte

Respostas:

10

O autoencoderpacote é 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 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ó.

Matt Krause
fonte
obrigado. Então, como vem beta = 6no autoencodercódigo de exemplo?
poder
1
αββ=6
1
Obrigado pela aceitação! Estive pensando em algo semelhante para o trabalho e foi divertido escrevê-lo. No futuro, você poderá ter melhor sorte fazendo perguntas menores (por exemplo, pergunte sobre o intervalo, valores iniciais e unidades ocultas separadamente). As pessoas parecem gostar de respostas que podem obter em dez minutos.
Matt Krause
Sim, faz sentido. Especialmente se você tiver apenas 10 minutos de inatividade no trabalho.
poder
2

Alguma parte da resposta de Matt Krause não me parece correta (Lambda e Beta), também não é mencionado o epsilon. Na verdade, este post deve ser um comentário, mas estou respondendo à pergunta por causa da restrição de 50 reputação. Sinta-se livre para comentar se você encontrar algum erro.

De http://web.stanford.edu/class/archive/cs/cs294a/cs294a.1104/sparseAutoencoder.pdf Lambda é um termo do coeficiente de redução de peso que desencoraja os pesos a atingir grandes valores, pois pode se super-ajustar. O termo de redução de peso (ou termo de regularização de peso) faz parte da função de custo, como o termo de escarsidade, explicado abaixo.

rho é uma restrição de escarsidade que controla o número médio de ativação na camada oculta. Ele está incluído para fazer o autoencoder funcionar mesmo com um número relativamente grande de unidades ocultas em relação às unidades de entrada. Por exemplo, se o tamanho da entrada for 100 e o tamanho oculto for 100 ou maior (ainda menor, mas próximo a 100), a saída poderá ser construída sem perda, pois as unidades ocultas podem aprender a função de identidade. Beta é coeficiente do termo escarsidade, que faz parte da função de custo. Controla a importância relativa do termo escarsidade. Lambda e Beta especificam a importância relativa de seus termos na função de custo.

Epsilon (se eles usaram a mesma notação com Andrew Ng) é o parâmetro de regularização para o processo de clareamento, que tem efeito de filtro passa-baixo na entrada. Isso tem alguns efeitos importantes nos métodos de reconstrução. Verifique o link em modelos baseados em reconstrução. Eu acho que eles usaram a ativação linear para a camada de saída e usaram algum tipo de clareamento (recursos univariados).

A taxa de atualização dos parâmetros (pesos e vieses) é denominada taxa de aprendizado e denotada por eta em geral. No entanto, tem sido usado como alfa por Andrew Ng. Verifique o primeiro link.

yasin.yazici
fonte
ϵ2