Guía para seleccionar los hiperparámetros en Deep Learning

38

Estoy buscando un documento que pueda ayudar a dar una guía sobre cómo elegir los hiperparámetros de una arquitectura profunda, como codificadores automáticos apilados o redes de confianza profunda. Hay muchos hiperparámetros y estoy muy confundido sobre cómo elegirlos. Además, el uso de la validación cruzada no es una opción, ya que el entrenamiento realmente lleva mucho tiempo.

Jack Twain
fuente
Recomiendo el libro de aprendizaje profundo de Ian Goodfellow: deeplearningbook.org
Vadim Smolyakov

Respuestas:

24

Básicamente hay cuatro métodos:

  1. Búsqueda manual: utilizando los conocimientos que tiene sobre el problema, adivine los parámetros y observe el resultado. Sobre la base de ese resultado, modifique los parámetros. Repita este proceso hasta que encuentre parámetros que funcionen bien o se acabe el tiempo.
  2. Búsqueda de cuadrícula: conocimiento que tiene sobre el problema, identifique los rangos para los hiperparámetros. Luego seleccione varios puntos de esos rangos, generalmente distribuidos uniformemente. Entrene su red utilizando todas las combinaciones de parámetros y seleccione la combinación que mejor funcione. Alternativamente, puede repetir su búsqueda en un dominio más estrecho centrado en los parámetros que ofrecen el mejor rendimiento.
  3. Búsqueda aleatoria: al igual que la búsqueda de cuadrícula, utiliza el conocimiento del problema para identificar rangos para los hiperparámetros. Sin embargo, en lugar de elegir valores de esos rangos de manera metódica, los selecciona al azar. Repita este proceso hasta que encuentre parámetros que funcionen bien o use lo que aprende para acotar su búsqueda. En el artículo Random Search for Hyper-Parameter Optimization, el Dr. Bengio propone que este sea el método de referencia con el que se deben comparar todos los demás métodos y muestra que tiende a funcionar mejor que los otros métodos.
  4. Optimización bayesiana: el trabajo más reciente se ha centrado en mejorar estos otros enfoques mediante el uso de la información obtenida de cualquier experimento dado para decidir cómo ajustar los hiperparámetros para el próximo experimento. Un ejemplo de este trabajo sería la optimización bayesiana práctica de algoritmos de aprendizaje automático de Adams et al.
DaemonMaker
fuente
14

Existe una amplia variedad de métodos. Se pueden dividir en gran medida en métodos de búsqueda aleatorios / no dirigidos (como la búsqueda de cuadrícula o la búsqueda aleatoria) y métodos directos. Sin embargo, tenga en cuenta que todos requieren probar una cantidad considerable de configuraciones de hiperparámetros a menos que tenga suerte (cientos al menos, depende de la cantidad de parámetros).

En la clase de métodos directos, se pueden identificar varios enfoques distintos:

  • métodos libres de derivados, por ejemplo, Nelder-Mead simplex o DIRECT
  • métodos evolutivos, como CMA-ES y enjambres de partículas
  • enfoques basados ​​en modelos, por ejemplo, EGO y Kriging secuencial

Es posible que desee buscar en Optunity , un paquete de Python que ofrece una variedad de solucionadores para el ajuste de hiperparámetros (todo lo que mencioné, excepto EGO y Kriging, por ahora). Optunity estará disponible para MATLAB y R pronto. Descargo de responsabilidad: soy el desarrollador principal de este paquete.

Según mi experiencia personal, los métodos evolutivos son muy poderosos para este tipo de problemas.

Marc Claesen
fuente
10

¡No busque más! Yoshua Bengio publicó uno de mis trabajos aplicados favoritos, uno que recomiendo a todos los nuevos ingenieros de aprendizaje automático cuando comiencen a entrenar redes neuronales: recomendaciones prácticas para el entrenamiento basado en gradientes de arquitecturas profundas. Para obtener su perspectiva sobre el giro de hiperparámetros: incluida la tasa de aprendizaje, el cronograma de la tasa de aprendizaje, la detención temprana, el tamaño del minibatch, el número de capas ocultas, etc., consulte la Sección 3.

sabalaba
fuente