Al sintonizar una red neuronal, ¿cuánto tiempo suele esperar mientras entrena antes de cambiar los hiperparámetros y probar otra configuración?

La respuesta de Sadid Hasan es bastante buena y, en general, querrás automatizar esto si puedes.

Por supuesto, la automatización del ajuste de hiperparámetros puede no ser siempre factible por varias razones:

  1. Se necesita mucho tiempo para entrenar una red (por ejemplo,> 1 semana). En este caso, querrá ser inteligente sobre la configuración de hiperparámetro con la que elija probar. Y en la mayoría de los casos prácticos, usar un ser humano es la forma más sencilla de hacerlo.
  2. Es demasiado complicado configurar el código de ajuste adicional. En algunos casos, es más fácil (en términos de horas hombre empleadas) sintonizar manualmente la red. Esto es relativo a la complejidad de su red y al número de hiperparámetros que requieren optimización.

Ahora, volviendo a la pregunta original. Idealmente, espera la convergencia (por ejemplo, el error de validación deja de disminuir). Pero a veces esto puede llevar demasiado tiempo. Lamentablemente, no hay una buena respuesta a su pregunta. Mucho de esto se basa solo en la intuición y en asegurarse de que lo que espera que suceda y lo que realmente sucede es (principalmente) consistente. Descubrí que normalmente uso las siguientes heurísticas para guiar este tipo de decisiones:

  • Mira las curvas de entrenamiento: ¿Oscila por todas partes? Si es así, debería parar y volver a correr con una tasa de aprendizaje más pequeña. Tal vez la convergencia es súper lenta en comparación con lo que esperaba. Corramos con un ritmo de aprendizaje más rápido y veamos cómo va.
  • Observe el error de validación: si la tasa a la que disminuye el error de entrenamiento es significativamente mayor que la tasa a la que disminuye el error de validación, el modelo probablemente esté sobreajustado. Así que terminemos el entrenamiento temprano y reduzcamos el número de nodos / capas.
  • Incremente iterativamente la complejidad de la red: un error común es comenzar con una red gigante y complicada y esperar que sea una bala mágica. Me da un poco de vergüenza admitir que he cometido este error en varias ocasiones. No hace falta decir que no es una buena idea. En cambio, lo que desea hacer es comenzar de manera simple y hacer crecer la red. Si parece que la red está convergiendo bastante rápido con una sola capa, tome una instantánea mental y aumente a, por ejemplo, 3 capas. Si una red de 3 capas tiene un error de validación peor que el modelo más simple (dado el mismo error de entrenamiento), probablemente estamos sobreajustando. Entonces deberíamos dejar de entrenar e intentar algo más simple.

Por ahora esto es todo lo que tengo. Trataré de agregar más heurísticas más adelante cuando piense en ellas. Para cualquiera que lea, siéntase libre de ofrecer sugerencias / críticas a esta respuesta si algo suena mal o me falta algo obvio.

¡Buena suerte!

Simplemente puede dejar que algún optimizador realice estos experimentos y decida los mejores hiperparámetros. Por ejemplo:

  • Cómo cuadrícula hiperparámetros de búsqueda para modelos de aprendizaje profundo en Python con Keras – dominio del aprendizaje automático
  • maxpumperla / hyperas.

Le recomiendo que pruebe las bibliotecas de ajuste Hyperparameter como Spearmint e HyperOpt. En la práctica, encontré que ambos son muy útiles (admiten Python).

Menta verde:

Pros: + Puede reanudar

Contras: -Falta de documento (mal mantenido) -Falta de soporte (no hay soporte adecuado para enumeración, variables categóricas). -No hay soporte para Condicional.

HyperOpt:

Pros: + TPE (Estimadores de árbol de Parzen): basado en árbol + Condicional de soporte. Escribe la condición para ayudar al optimizador a reducir el espacio de búsqueda en función de valores variables.

Contras: -Parameters de búsqueda independientes entre sí. Tienes que superar esto manualmente.

Aquí hay un ejemplo: https://arimo.com/data-science/2