Muy buena pregunta, ya que aún no existe una respuesta exacta a esta pregunta. Este es un campo de investigación activo.
En definitiva, la arquitectura de su red está relacionada con la dimensionalidad de sus datos. Dado que las redes neuronales son aproximadores universales, siempre que su red sea lo suficientemente grande, tiene la capacidad de adaptarse a sus datos.
La única forma de saber realmente qué arquitectura funciona mejor es probarlas todas y luego elegir la mejor. Pero, por supuesto, con las redes neuronales, es bastante difícil ya que cada modelo tarda bastante tiempo en entrenarse. Lo que algunas personas hacen es entrenar primero un modelo que es "demasiado grande" a propósito, y luego podarlo eliminando pesos que no contribuyen mucho a la red.
¿Qué pasa si mi red es "demasiado grande"?
Si su red es demasiado grande, podría sobreajustar o tener dificultades para converger. Intuitivamente, lo que sucede es que su red está tratando de explicar sus datos de una manera más complicada de lo que debería. Es como tratar de responder una pregunta que podría responderse con una oración con un ensayo de 10 páginas. Puede ser difícil estructurar una respuesta tan larga, y puede haber muchos hechos innecesarios incluidos ( vea esta pregunta )
¿Qué pasa si mi red es "demasiado pequeña"?
Por otro lado, si su red es demasiado pequeña, se ajustará a sus datos y por lo tanto. Sería como responder con una oración cuando deberías haber escrito un ensayo de 10 páginas. Por muy buena que sea su respuesta, le faltarán algunos de los hechos relevantes.
Estimando el tamaño de la red
Si conoce la dimensionalidad de sus datos, puede saber si su red es lo suficientemente grande. Para estimar la dimensionalidad de sus datos, puede intentar calcular su rango. Esta es una idea central sobre cómo las personas intentan estimar el tamaño de las redes.
Sin embargo, no es tan simple. De hecho, si su red necesita ser de 64 dimensiones, ¿construye una sola capa oculta de tamaño 64 o dos capas de tamaño 8? Aquí, te voy a dar una idea de lo que sucedería en cualquier caso.
Yendo más profundo
Profundizar significa agregar más capas ocultas. Lo que hace es que permite que la red calcule características más complejas. En las redes neuronales convolucionales, por ejemplo, a menudo se ha demostrado que las primeras capas representan características de "bajo nivel" como bordes, y las últimas capas representan características de "alto nivel" como caras, partes del cuerpo, etc.
Por lo general, debe profundizar si sus datos están muy desestructurados (como una imagen) y deben procesarse un poco antes de que se pueda extraer información útil de ellos.
Ampliando
Ir más profundo significa crear características más complejas, y "ampliarse" simplemente significa crear más de estas características. Es posible que su problema pueda explicarse por características muy simples, pero es necesario que existan muchas de ellas. Por lo general, las capas se vuelven más estrechas hacia el final de la red por la sencilla razón de que las características complejas transportan más información que las simples, y por lo tanto, no necesita tantas.
Respuesta corta: está muy relacionada con las dimensiones de sus datos y el tipo de aplicación.
Elegir la cantidad correcta de capas solo se puede lograr con la práctica. No hay una respuesta general a esta pregunta todavía . Al elegir una arquitectura de red, restringe su espacio de posibilidades (espacio de hipótesis) a una serie específica de operaciones de tensor, asignando datos de entrada a datos de salida. En un DeepNN, cada capa solo puede acceder a la información presente en la salida de la capa anterior. Si una capa deja caer información relevante para el problema en cuestión, esta información nunca podrá ser recuperada por capas posteriores. Esto generalmente se conoce como " cuello de botella de información ".
El cuello de botella de información es una espada de doble filo:
1) Si usa un número reducido de capas / neuronas, el modelo solo aprenderá algunas representaciones / características útiles de sus datos y perderá algunas importantes, porque la capacidad de las capas intermedias es muy limitada ( falta de ajuste ).
2) Si usa una gran cantidad de capas / neuronas, entonces el modelo aprenderá demasiadas representaciones / características que son específicas de los datos de entrenamiento y no se generalizan a los datos en el mundo real y fuera de su conjunto de entrenamiento ( sobreajuste )
Enlaces útiles para ejemplos y más hallazgos:
[1] https: //livebook.manning.com#! / Book / deep-learning-with-python / chapter-3 / point-1130-232-232-0
[2] https://www.quantamagazine.org/new-theory-cracks-open-the-black-box-of-deep-learning-20170921/
fuente
Trabajando con redes neuronales desde hace dos años, este es un problema que siempre tengo cada vez que quiero modelar un nuevo sistema. El mejor enfoque que he encontrado es el siguiente:
El enfoque general es probar diferentes arquitecturas, comparar resultados y tomar la mejor configuración. La experiencia te da más intuición en la primera suposición de arquitectura.
fuente
Además de las respuestas anteriores, hay enfoques en los que la topología de la red neuronal emerge de manera endógena, como parte de la capacitación. Lo más destacado es que tiene Neuroevolución de topologías aumentadas (NEAT) donde comienza con una red básica sin capas ocultas y luego usa un algoritmo genético para "complejizar" la estructura de la red. NEAT se implementa en muchos marcos de ML. Aquí hay un artículo bastante accesible sobre una implementación para aprender Mario: CrAIg: Uso de redes neuronales para aprender Mario
fuente