
Un problema común que todos enfrentamos cuando trabajamos en proyectos de aprendizaje profundo es elegir una tasa de aprendizaje y un optimizador (los hiperparámetros). Si eres como yo, te encontrarás adivinando un optimizador y una tasa de aprendizaje, y luego verificas si funcionan (y no estamos solos).
Para comprender mejor el efecto del optimizador y la elección de la tasa de aprendizaje, entrené el mismo modelo 500 veces. Los resultados muestran que los hiperparámetros correctos son cruciales para el éxito del entrenamiento, pero pueden ser difíciles de encontrar.
En este artículo, discutiré las soluciones a este problema utilizando métodos automatizados para elegir los hiperparámetros óptimos.
Configuración experimental
Entrené la red neuronal convolucional básica de la serie de tutoriales de TensorFlow, que aprende a reconocer los dígitos MNIST. Esta es una red razonablemente pequeña, con dos capas convolucionales y dos capas densas, un total de aproximadamente 3.400 pesos para entrenar.Se utiliza la misma semilla aleatoria para cada entrenamiento.
Cabe señalar que los resultados a continuación son para un modelo y conjunto de datos específicos. Los hiperparámetros ideales para otros modelos y conjuntos de datos serán diferentes.
(Si desea donar algo de tiempo de GPU para ejecutar una versión más grande de este experimento en CIFAR-10, comuníquese con nosotros).
¿Qué tasa de aprendizaje funciona mejor?
Lo primero que exploraremos es cómo afecta la tasa de aprendizaje al entrenamiento del modelo. En cada ejecución, se entrena el mismo modelo desde cero, variando solo el optimizador y la tasa de aprendizaje.
El modelo se entrenó con 6 optimizadores diferentes: Gradient Descent, Adam, Adagrad, Adadelta, RMS Prop y Momentum. Para cada optimizador, se entrenó con 48 tasas de aprendizaje diferentes, de 0,000001 a 100 en intervalos logarítmicos.
En cada ejecución, la red se entrena hasta que alcanza al menos el 97% de precisión del tren. El tiempo máximo permitido fue de 120 segundos. Los experimentos se realizaron en una Nvidia Tesla K80, alojada por FloydHub. El código fuente está disponible para descargar.
Aquí está el tiempo de entrenamiento para cada opción de tasa de aprendizaje y optimizador:

El gráfico anterior es interesante. Podemos ver eso:
- Para cada optimizador, la mayoría de las tasas de aprendizaje no logran entrenar el modelo.
- Hay una forma de valle para cada optimizador: una tasa de aprendizaje demasiado baja nunca progresa, y una tasa de aprendizaje demasiado alta provoca inestabilidad y nunca converge. En el medio, hay una banda de tasas de aprendizaje "correctas" que se entrenan con éxito.
- No existe una tasa de aprendizaje que funcione para todos los optimizadores.
- La tasa de aprendizaje puede afectar el tiempo de entrenamiento en un orden de magnitud.
Para resumir lo anterior, es fundamental que elija la tasa de aprendizaje correcta. De lo contrario, su red no se capacitará o tardará mucho más en converger.
Para ilustrar cómo cada optimizador difiere en su tasa de aprendizaje óptima, aquí está el modelo más rápido y más lento para entrenar para cada tasa de aprendizaje, en todos los optimizadores. Tenga en cuenta que el tiempo máximo es 120 s (por ejemplo, la red no se pudo entrenar) en todo el gráfico; no hay una tasa de aprendizaje única que funcione para todos los optimizadores:

Consulte la amplia gama de tasas de aprendizaje (de 0,001 a 30) que logran el éxito con al menos un optimizador del gráfico anterior.
¿Qué optimizador funciona mejor?
Ahora que hemos identificado las mejores tasas de aprendizaje para cada optimizador, comparemos el rendimiento de cada entrenamiento de optimizador con la mejor tasa de aprendizaje encontrada en la sección anterior.
Aquí está la precisión de validación de cada optimizador a lo largo del tiempo. Esto nos permite observar qué tan rápido, preciso y estable se desempeña cada uno:

Algunas observaciones:
- Todos los optimizadores, excepto RMSProp (ver punto final) , logran converger en un tiempo razonable.
- Adam aprende más rápido.
- Adam es más estable que los otros optimizadores y no sufre ninguna disminución importante en la precisión.
- RMSProp se ejecutó con los argumentos predeterminados de TensorFlow (tasa de decaimiento 0.9, épsilon 1e-10, momentum 0.0) y podría darse el caso de que estos no funcionen bien para esta tarea. Este es un buen caso de uso para la búsqueda automatizada de hiperparámetros (consulte la última sección para obtener más información al respecto).
Adam también tuvo un rango relativamente amplio de tasas de aprendizaje exitosas en el experimento anterior. En general, Adam es la mejor opción de nuestros seis optimizadores para este modelo y conjunto de datos.
¿Cómo afecta el tamaño del modelo al tiempo de entrenamiento?
Ahora veamos cómo el tamaño del modelo afecta cómo se entrena.
Variaremos el tamaño del modelo por un factor lineal. Ese factor escalará linealmente el número de filtros convolucionales y el ancho de la primera capa densa, escalando así aproximadamente linealmente el número total de pesos en el modelo.
Hay dos aspectos que investigaremos:
- ¿Cómo cambia el tiempo de entrenamiento a medida que crece el modelo, para un optimizador fijo y una tasa de entrenamiento?
- ¿Qué tasa de aprendizaje se entrena más rápido en cada tamaño de modelo, para un optimizador fijo?
¿Cómo cambia el tiempo de entrenamiento a medida que crece el modelo?
A continuación se muestra el tiempo necesario para lograr una precisión de entrenamiento del 96% en el modelo, aumentando su tamaño de 1x a 10x. Hemos utilizado uno de nuestros hiperparámetros más exitosos de antes:

- El tiempo para entrenar crece linealmente con el tamaño del modelo.
- La misma tasa de aprendizaje entrena con éxito la red en todos los tamaños de modelos.
(Nota: solo se puede confiar en los siguientes resultados para el conjunto de datos y los modelos probados aquí, pero podría valer la pena probarlos para sus experimentos).
Este es un buen resultado. Nuestra elección de hiperparámetros no fue invalidada por escalar linealmente el modelo. Esto puede sugerir que la búsqueda de hiperparámetros se puede realizar en una versión reducida de una red, para ahorrar tiempo de cálculo.
Esto también muestra que, a medida que la red se hace más grande, no incurre en ningún trabajo O (n²) en la convergencia del modelo (el crecimiento lineal en el tiempo puede explicarse por las operaciones adicionales incurridas para cada entrenamiento de pesas).
Este resultado es aún más tranquilizador, ya que muestra que nuestro marco de aprendizaje profundo (aquí TensorFlow) escala de manera eficiente.
¿Qué tasa de aprendizaje funciona mejor para diferentes tamaños de modelo?
Realicemos el mismo experimento para múltiples tasas de aprendizaje y veamos cómo el tiempo de entrenamiento responde al tamaño del modelo:

- Las tasas de aprendizaje de 0,0005, 0,001, 0,00146 obtuvieron mejores resultados; también obtuvieron mejores resultados en el primer experimento. Vemos aquí la misma banda de "punto óptimo" que en el primer experimento.
- El tiempo de entrenamiento de cada tasa de aprendizaje crece linealmente con el tamaño del modelo.
- El rendimiento de la tasa de aprendizaje no dependió del tamaño del modelo. Las mismas tasas que funcionaron mejor para el tamaño 1x funcionaron mejor para el tamaño 10x.
- Por encima de 0,001, el aumento de la tasa de aprendizaje aumentó el tiempo de entrenamiento y también aumentó la variación en el tiempo de entrenamiento (en comparación con una función lineal del tamaño del modelo).
- El tiempo para entrenar puede modelarse aproximadamente como c + kn para un modelo con n pesos, costo fijo cy constante de aprendizaje k = f (tasa de aprendizaje) .
En resumen, la tasa de aprendizaje con mejor rendimiento para el tamaño 1x fue también la mejor tasa de aprendizaje para el tamaño 10x.
Automatización de la elección de la tasa de aprendizaje
Como muestran los resultados anteriores, es crucial que el entrenamiento de modelos tenga una buena opción de optimizador y tasa de aprendizaje.
La elección manual de estos hiperparámetros requiere mucho tiempo y es propensa a errores. A medida que cambia su modelo, es posible que la elección previa de hiperparámetros ya no sea ideal. No es práctico realizar continuamente nuevas búsquedas a mano.
Hay varias formas de seleccionar hiperparámetros automáticamente. Esbozaré un par de enfoques diferentes aquí.
Búsqueda de cuadrícula
La búsqueda en cuadrícula es lo que realizamos en el primer experimento: para cada hiperparámetro, cree una lista de valores posibles. Luego, para cada combinación de posibles valores de hiperparámetros, entrene la red y mida su rendimiento. Los mejores hiperparámetros son aquellos que dan el mejor rendimiento observado.
La búsqueda en cuadrícula es muy fácil de implementar y comprender. También es fácil verificar que ha buscado una sección suficientemente amplia de la búsqueda de parámetros. Es muy popular en la investigación por estas razones.
Entrenamiento poblacional
El entrenamiento basado en la población (DeepMind) es una implementación elegante del uso de un algoritmo genético para la elección de hiperparámetros.
En PBT, se crea una población de modelos. Todos se entrenan continuamente en paralelo. Cuando cualquier miembro de la población ha tenido suficiente tiempo para entrenar para mostrar una mejora, su precisión de validación se compara con el resto de la población. Si su rendimiento está en el 20% más bajo, entonces copia y muta los hiperparámetros y variables de uno de los 20% con mejor rendimiento.
De esta manera, los hiperparámetros más exitosos generan muchas variantes ligeramente mutadas de sí mismos y es probable que se descubran los mejores hiperparámetros.
Próximos pasos
Gracias por leer esta investigación sobre las tasas de aprendizaje. Comencé estos experimentos por mi propia curiosidad y frustración en torno al giro de hiperparámetros, y espero que disfruten de los resultados y conclusiones tanto como yo.
Si hay un tema o una extensión en particular que le interese ver, hágamelo saber. Además, si está interesado en donar algo de tiempo de GPU para ejecutar una versión mucho más grande de este experimento, me encantaría hablar.
Estos escritos son parte de una exploración de un año de temas de arquitectura de IA. Siga esta publicación (¡y aplauda este artículo!) Para recibir actualizaciones cuando salgan las próximas piezas.