Lamentablemente, no existe una forma genérica de determinar a priori el mejor número de neuronas y el número de capas para una red neuronal, dada solo una descripción del problema. Ni siquiera hay mucha guía para determinar buenos valores para probar como punto de partida.
El enfoque más común parece ser comenzar con una suposición aproximada basada en la experiencia previa sobre redes utilizadas en problemas similares. Esta podría ser su propia experiencia, o experiencia de segunda / tercera mano que haya adquirido de un curso de capacitación, blog o trabajo de investigación. Luego, pruebe algunas variaciones y verifique el rendimiento cuidadosamente antes de elegir la mejor.
El tamaño y la profundidad de las redes neuronales también interactúan con otros hiperparámetros , por lo que cambiar una cosa en otro lugar puede afectar dónde están los mejores valores. Por lo tanto, no es posible aislar un "mejor" tamaño y profundidad para una red y luego continuar ajustando otros parámetros de forma aislada. Por ejemplo, si tiene una red muy profunda, puede funcionar de manera eficiente con la función de activación ReLU, pero no tan bien con sigmoide; si encuentra el mejor tamaño / forma de red y luego intenta un experimento con diferentes funciones de activación, puede venir a la conclusión equivocada sobre lo que funciona mejor.
A veces puede leer sobre las "reglas generales" que los investigadores usan cuando comienzan un diseño de red neuronal desde cero. Estas cosas pueden funcionar para sus problemas o no, pero al menos tienen la ventaja de comenzar el problema. Las variaciones que he visto son:
Cree una red con capas ocultas de un orden de tamaño similar al de la entrada, y todas del mismo tamaño, con el argumento de que no hay una razón particular para variar el tamaño (a menos que esté creando un autoencoder tal vez).
Comience de manera simple y aumente la complejidad para ver qué mejora una red simple.
Pruebe diferentes profundidades de red si espera que la salida se explique bien por los datos de entrada, pero con una relación compleja (en lugar de solo inherentemente ruidosa).
Intente agregar algo de abandono, es lo más parecido que tienen las redes neuronales al polvo mágico de hadas que lo hace todo mejor (advertencia: agregar abandono puede mejorar la generalización, pero también puede aumentar el tamaño de capa requerido y los tiempos de entrenamiento).
Si lees esto o algo parecido en cualquier texto, tómalo con una pizca de sal. Sin embargo, en el peor de los casos, lo ayudan a superar el efecto de página en blanco, a escribir algún tipo de red y a iniciar el proceso de prueba y refinamiento.
Por otro lado, trate de no perderse demasiado en el ajuste de una red neuronal cuando algún otro enfoque sea mejor y le ahorre mucho tiempo. Considere y use otros enfoques de aprendizaje automático y ciencia de datos. Explore los datos, tal vez haga algunos trazados. Pruebe algunos enfoques lineales simples primero para obtener puntos de referencia para superar, regresión lineal, regresión logística o regresión softmax según su problema. Considere el uso de un algoritmo de ML diferente para los NN: los enfoques basados en el árbol de decisión, como XGBoost, pueden ser más rápidos y efectivos que el aprendizaje profundo en muchos problemas.