Qual é o benefício da distribuição normal truncada na inicialização de pesos em uma rede neural?


13

Ao inicializar pesos de conexão em uma rede neural de feedforward, é importante inicializá-los aleatoriamente para evitar simetrias que o algoritmo de aprendizado não seria capaz de quebrar.

A recomendação que vi em vários locais (por exemplo, no tutorial MNIST do TensorFlow ) é usar a distribuição normal truncada usando um desvio padrão de , em que é o número de entradas para o dada camada de neurônios.1NN

Acredito que a fórmula de desvio padrão garante que os gradientes retropropagados não se dissolvam nem amplifiquem muito rapidamente. Mas não sei por que estamos usando uma distribuição normal truncada em oposição a uma distribuição normal regular. É para evitar raros pesos extremos?


Você pode fornecer a fonte desta recomendação e / ou a cotação direta?
Tim

+ Tim Bom ponto, eu adicionei um link para um exemplo. Acredito que também vi essa recomendação em um artigo sobre boas práticas de redes neurais (embora não seja possível encontrá-las).
MiniQuark 7/08/16

Respostas:


13

Eu acho que é sobre saturação dos neurônios. Pense em você ter uma função de ativação como sigmoide.

insira a descrição da imagem aqui

Se seu valor de peso obtiver um valor> = 2 ou <= - 2, seu neurônio não aprenderá. Portanto, se você truncar sua distribuição normal, não terá esse problema (pelo menos a partir da inicialização) com base na sua variação. Eu acho que é por isso, é melhor usar normal truncado em geral.


Sim, isso faz sentido, obrigado. Eu acho que você quis dizer "valor> = 2", não 1.
MiniQuark 29/03

sim é suposto ser de valor> = 2
Güngör Basa

4

O benefício de usar a distribuição normal truncada é impedir a geração de "neurônios mortos" devido ao uso de relu_logits , explicado aqui .

Geralmente, deve-se inicializar pesos com uma pequena quantidade de ruído para quebra de simetria e impedir 0 gradientes. Como estamos usando neurônios ReLU, também é uma boa prática inicializá-los com um viés inicial ligeiramente positivo para evitar "neurônios mortos".


Não sei ao certo como o uso do truncado_normal evitará neurônios mortos: ele não adicionará nenhum "viés inicial ligeiramente positivo". Você pode por favor elaborar?
MiniQuark 01/03

1
porque a retropropagação atualizará apenas os neurônios 'vivos', com alguma contribuição diferente de zero para a propagação #
Jason Jason
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.