Hay varios enfoques teóricos para esta pregunta (use Google Scholar para encontrar los documentos relevantes).
Sin embargo, algunos investigadores han encontrado que otros valores producen mejores resultados.
Una forma de reducir el tiempo necesario para entrenar es comenzar con los vectores propios de la entrada. Sin embargo, no he intentado esto, pero si lo usa, es posible que desee dividir los valores por alguna constante.
Lo general que desea hacer es evitar la saturación en sus funciones de salida porque entonces la derivada de las funciones de salida está cerca de 0, lo que limita el aprendizaje en ese peso. Los pesos que consigan esto dependen de su función de salida y del número de entradas en cada capa.
Si no utiliza las neuronas de polarización, puede calcular fácilmente el intervalo apropiado para los pesos dada la cantidad de entradas. Si usa una neurona sesgada, se vuelve un poco más complicada y sugiero prueba y error.
- Visión por computadora: ¿Cuáles son los trabajos más interesantes de CVPR 2012?
- ¿Cuál es la diferencia entre el reconocimiento de patrones estadísticos, el aprendizaje automático y el aprendizaje profundo?
- ¿Cuál es la mejor plataforma de código abierto para construir un chatbot?
- ¿Cómo usarías la poda alfa-beta para calcular los valores mínimos de un árbol de juego?
- ¿Alguna vez ha recibido mejores resultados con su aprendizaje automático de lo que esperaba?
Lo importante aquí es usar diferentes intervalos para inicializar diferentes capas.
Me ha resultado muy útil trazar histogramas de las salidas de todas las capas a intervalos regulares (especialmente antes de comenzar el entrenamiento).
Como puede ver, todas las salidas (excepto el sesgo) se centran alrededor del medio de la función de salida (tanh para los primeros tres y logístico para la última capa). Esto evita la saturación al comienzo del entrenamiento.
También podría ayudarlo a trazar los cambios de peso durante el entrenamiento para determinar buenos puntos de partida. Eso se vería algo así: