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.
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?
Respostas:
Eu acho que é sobre saturação dos neurônios. Pense em você ter uma função de ativação como sigmoide.
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.
fonte
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 .
fonte