Cómo configurar el número de neuronas y capas en redes neuronales


26

Soy un principiante en redes neuronales y he tenido problemas para comprender dos conceptos:

  1. ¿Cómo se decide el número de capas intermedias que tiene una red neuronal dada? 1 vs 10 o lo que sea.
  2. ¿Cómo se decide el número de neuronas en cada capa intermedia? ¿Se recomienda tener un número igual de neuronas en cada capa intermedia o varía con la aplicación?

Respuestas:


19

La consideración del número de neuronas para cada capa y el número de capas en redes completamente conectadas depende del espacio de características del problema. Para ilustrar lo que sucede en los casos bidimensionales con el fin de representar, utilizo el espacio 2-d. He usado imágenes de los trabajos de un científico . Para comprender otras redes como la CNNque le recomiendo, eche un vistazo aquí .

Supongamos que tiene una sola neurona, en este caso, después de aprender los parámetros de la red, tendrá un límite de decisión lineal que puede separar el espacio en dos clases individuales.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Suponga que se le pide que separe los siguientes datos. Necesitará d1qué especifica el límite superior de decisión y de alguna manera está haciendo ANDoperaciones para determinar si los datos de entrada están en el lado izquierdo o en el lado derecho. Line d2está realizando otra ANDoperación que investiga si los datos de entrada son superiores d2o no. En este caso d1está tratando de entender si la entrada está en el lado izquierdo de la línea para clasificar la entrada como círculo , también d2está tratando de averiguar si la entrada está en el lado derecho de la línea para clasificar la entrada como círculo . Ahora necesitamos otroANDoperación para concluir los resultados de las dos líneas que se construyen después de entrenar sus parámetros. Si la entrada está en el lado izquierdo d1y en el lado derecho de d2, debe clasificarse como círculo .

ingrese la descripción de la imagen aquí

Ahora suponga que tiene el siguiente problema y se le pide que separe las clases. En este caso, la justificación es exactamente como la de arriba.

ingrese la descripción de la imagen aquí

Para los siguientes datos:

ingrese la descripción de la imagen aquí

El límite de decisión no es convexo y es más complejo que los límites anteriores. Primero debes tener una subred que encuentre los círculos internos. Luego, debe tener otra subred que encuentre el límite de decisión rectangular interior que decida que las entradas que están dentro del rectángulo no son círculo y si están afuera, lo son. Después de esto, debe concluir los resultados y decir si los datos de entrada están dentro del rectángulo más grande y fuera del rectángulo interior, deben clasificarse como círculo . Necesita otra ANDoperación para este propósito. La red sería así:

ingrese la descripción de la imagen aquí


Suponga que se le pide que encuentre el siguiente límite de decisión en un círculo .

ingrese la descripción de la imagen aquí

En este caso, su red sería como la siguiente red a la que se hizo referencia pero con muchas más neuronas en la primera capa oculta.

ingrese la descripción de la imagen aquí


11

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.


Puede usar el concepto de dimensión intrínseca para averiguar la cantidad de dimensiones relevantes para su problema. Las dimensiones intrínsecas intentan responder cuántas variables se necesitan para describir completamente una señal y están relacionadas con el número de variables en la fuente aleatoria de esa señal.
Pedro Henrique Monforte

8

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/


4

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:

  1. Busque problemas similares que también se hayan modelado con redes de avance y estudie sus arquitecturas.
  2. Comience con esa configuración, entrene el conjunto de datos y evalúe el conjunto de prueba.
  3. Realice la poda en su arquitectura y compare los resultados en el conjunto de datos con los resultados anteriores. Si la precisión de su modelo no se ve afectada, puede inferir que el modelo original está sobreajustando los datos.
  4. De lo contrario, intente agregar más grados de libertad (es decir, más capas).

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.


1

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.