Al inicializar los pesos de conexión en una red neuronal de avance, es importante inicializarlos aleatoriamente para evitar cualquier simetría que el algoritmo de aprendizaje no pueda romper.
La recomendación que he visto en varios lugares (por ejemplo, en el tutorial MNIST de TensorFlow ) es usar la distribución normal truncada usando una desviación estándar de , dondeNes el número de entradas a la capa de neurona dada.
Creo que la fórmula de desviación estándar garantiza que los gradientes retropropagados no se disuelvan o amplifiquen demasiado rápido. Pero no sé por qué estamos usando una distribución normal truncada en lugar de una distribución normal regular. ¿Es para evitar pesos atípicos raros?
Respuestas:
Creo que se trata de la saturación de las neuronas. Piensa que tienes una función de activación como sigmoide.
Si su valor de peso obtiene valor> = 2 o <= - 2, su neurona no aprenderá. Por lo tanto, si trunca su distribución normal, no tendrá este problema (al menos desde la inicialización) en función de su variación. Creo que es por eso que es mejor usar normal truncado en general.
fuente
El beneficio de usar la distribución normal truncada es evitar la generación de "neuronas muertas" debido al uso de relu_logits , que se explica aquí .
fuente