Cómo calcular el número óptimo de capas para un problema determinado en DNN

La profundidad de la red generalmente se elige por prueba y error o algún tipo de búsqueda de hiperparámetro. Realmente no hay un cálculo que puedas hacer para resolverlo rápidamente, depende del problema. Una buena forma de inicializar su arquitectura es inspirarse en documentos que aborden un problema similar.

En general, la profundidad le permite aproximar representaciones más complejas de su problema. Las redes más profundas pueden ser especialmente útiles cuando el problema en el que está trabajando requiere representaciones jerárquicas .

Sin embargo, la profundidad viene con una serie de costos:

  1. Gradiente de fuga : el error de su red se propaga a través de la regla de la cadena, que es solo el producto de los gradientes en cada etapa de la computación. Por lo general, los gradientes son << 1, y multiplicar muchos números pequeños juntos da un número aún menor. Entonces, cuantas más capas tenga, más crucial es asegurarse de que sus gradientes no desaparezcan durante el aprendizaje, porque es fácil que los errores no lleguen a las capas profundas de la red.
  2. Sobreajuste : cuanto mayor es el poder de representación de su red, mayor es la probabilidad de que aprenda funciones que no se generalizan bien en situaciones nuevas.
  3. Más parámetros con los que lidiar: con más capas, tiene más con qué lidiar. Es posible que deba colocar capas intermedias (deserción, norma de lote, etc.) para mitigar los efectos no deseados. Todo esto significa que su espacio de búsqueda de hiperparámetros es mucho más grande.
  4. Aumento del tiempo de entrenamiento: nuevamente, más parámetros para entrenar.

Y probablemente hay otros problemas que no estoy captando también.

Solo tenga en cuenta que estos costos pueden superar las ganancias que obtiene con más profundidad. En su lugar, puede optar por optimizar otros aspectos de su red (o datos).

APÉNDICE : Acaba de salir un artículo interesante que trata esta misma pregunta: https://arxiv.org/pdf/1705.05502….

En particular, los investigadores postulan que: “Para n variables, una red superficial requiere un tamaño exponencial en n, mientras que una red profunda requiere como máximo linealmente muchas neuronas. Las redes con un número constante k> 1 de capas ocultas parecen interpolarse entre estos extremos, siguiendo una curva exponencial en n ^ (1 / k). Esto sugiere una heurística aproximada para el número de capas requeridas para aproximar funciones simples con redes neuronales. Por ejemplo, si no queremos que las capas tengan más de 10 ^ 3 neuronas, digamos, entonces el número mínimo de capas requeridas crece solo como log n “.