Al diseñar nuevas arquitecturas de aprendizaje profundo, ¿cómo se determina si la arquitectura es mala o si la optimización del modelo es el problema?

Creo que no hay una manera infalible de resolver eso. Pero aquí hay algo que puede intentar obtener algunas pistas:

  • Predecir sobre los datos de entrenamiento: Cualquier modelo que tenga la esperanza de tener un buen desempeño en los datos de la prueba debe al menos hacerlo razonablemente bien en los datos de entrenamiento. Entonces, en lugar de optimizar la capacidad de generalización del modelo, se está centrando en la capacidad del modelo para capturar el patrón en los datos.
  • Comience con un modelo muy simple: para ConvNets, use, digamos, 2-3 capas de convolución seguidas de 1-2 capas completamente conectadas; para MLP, use una red de 2–3 capas. Luego, optimice esta red para obtener algo razonable, probando varios trucos, como inicializaciones, tasas de aprendizaje, etc. Lo más probable es que para la mayoría de las tareas que se pueden aprender, estos modelos al menos deberían ser significativamente mejores que las conjeturas aleatorias. Una vez que haya optimizado estas redes simples, aumente gradualmente la complejidad de la red [profundidad, tipos de capas, ancho, etc.]. La configuración que obtuvo de las redes más simples debería funcionar razonablemente bien en las redes más grandes. Ajuste los parámetros alrededor de sus valores óptimos anteriores para obtener nuevos valores óptimos para estos modelos más grandes.