¿Cómo decidir la arquitectura de red neuronal?

19

Me preguntaba cómo tenemos que decidir cuántos nodos hay en capas ocultas, y cuántas capas ocultas colocar cuando construimos una arquitectura de red neuronal.

Entiendo que la capa de entrada y salida depende del conjunto de capacitación que tengamos, pero ¿cómo decidimos la capa oculta y la arquitectura general en general?

usuario7677413
fuente
Típicamente experimentamos, usando nuestra intuición; considéralo un hiperparámetro . Hay formas de aprender la arquitectura, pero no sé cuán prácticas son: blog.acolyer.org/2017/05/10/…
Emre
2
Busqué un duplicado de esto, porque estoy seguro de que ha aparecido muchas veces antes en este sitio. Sin embargo, no se pudo encontrar una versión pura que no estuviera asociada a algún conjunto de datos o problema. ¿Quizás esta podría ser la pregunta genérica a la que señalamos a otros? Lamentablemente, no hay una gran respuesta de "cómo hacerlo" en general, pero es una pregunta común cuando se enfrentan a tantas opciones.
Neil Slater
Esta es una pregunta muy interesante para responder (el investigador comenzó a trabajar en su pregunta). ¿Cuál sería la arquitectura óptima para el conjunto de datos A y el conjunto de datos B. Lea a continuación el documento que intentó responder a su pregunta? Bienvenido al mundo de Neural Architecture Search (NAS). arxiv.org/abs/1611.01578
iDeepVision

Respuestas:

17

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.

Neil Slater
fuente
Es una gran explicación. Gracias. También me pregunto si hay una buena manera de decidir qué enfoque de ML utilizar. Usted mencionó que podría haber una mejor manera que una red neuronal, pero ¿cómo podemos determinar eso fácilmente?
user7677413
@ user7677413: se aplica lo mismo. Tienes que probar y ver, aunque la experiencia puede darte una guía sobre problemas familiares.
Neil Slater
1
¿Cuándo es necesaria la red neuronal?
user7677413
1
Las redes neuronales rara vez son necesarias . Sin embargo, son mejores en algunos problemas. Se destacan en tareas de procesamiento de señales como el reconocimiento de audio e imagen, y también tienen la capacidad de aprender diferencias sutiles de grandes cantidades de datos donde los algoritmos más simples pueden alcanzar un límite. Sin embargo, si un NN es la herramienta adecuada para usted y cualquier problema que enfrente en un día en particular, nadie puede predecirlo.
Neil Slater
1
@ user7677413 Creo que está asumiendo que no hay 40 años de investigación profunda y profunda sobre aprendizaje automático. Parece que solo estás rascando la superficie. Recomiendo encontrar un libro de texto y ver cómo todo se une, eso ayudaría a construir su intuición para los muchos algoritmos de aprendizaje automático.
Alex L