Cambiar su punto de inicialización significa cambiar la matriz de ‘Peso’ que inicializa de antemano para que la red neuronal se propague hacia adelante. Una mala elección de la matriz de peso inicializada puede causar problemas de desaparición o explosión de gradientes. El problema de gradiente explosivo ocurre cuando tiene una red neuronal profunda con un valor de matriz de peso inicializado mayor que, digamos, 1.5, lo que hace que el resultado predicho sea muy grande. Cuando ocurre lo contrario, es decir, sus valores iniciales de la matriz de peso están muy cerca de 0, hace que la salida predicha se desvanezca (acercarse a 0) y esto se llama un problema de gradiente de fuga.
Solución lógica :
Considere el ejemplo de una sola neurona con función de activación sigmoidea que tiene n unidades de entrada.
- ¿Debería centrarme en conseguir un trabajo o aprender ciencia de datos?
- ¿Qué significa estadísticas de coexistencia?
- ¿Cómo debo aprender el aprendizaje automático? ¿Puede proporcionar una hoja de ruta específica desde un principiante hasta un experto?
- ¿Cómo puedo medir la precisión de un sistema de recomendación?
- Cómo implementar el reconocimiento de imágenes para crear una aplicación para organizar imágenes
Tendremos z = w1x1 + w2x2 +… + wnxn (ignorando el término de sesgo)
Supongamos que el valor de n es grande: hay muchas entradas para esta neurona individual. Por lo tanto, desearíamos que el valor de wi sea pequeño para que z no explote (similar a la analogía anterior).
Como a = g (z), lo mismo sigue para ‘a’ también.
Para lograr esto, multiplicamos el valor inicializado al azar por la raíz cuadrada de (1 / n [l-1]), donde n [l-1] es el número de unidades ocultas en la capa 1-n.
Intenta esto :
Inicialice los pesos de una distribución normal gaussiana con media 0 y st.dev. 1 de la forma requerida. Y luego multiplique como se indicó anteriormente.
(Código de Python usando numpy)
W [lth layer] = np.random.randn (shape) * np.sqrt (1 / n [l-1 th layer])
Si está utilizando una función de activación ReLU:
W [lth layer] = np.random.randn (shape) * np.sqrt (2 / n [l-1 th layer])
Lea también : método de inicialización de Xavier