Pautas para seleccionar un optimizador para entrenar redes neuronales

18

He estado usando redes neuronales por un tiempo ahora. Sin embargo, una cosa con la que lucho constantemente es la selección de un optimizador para entrenar la red (usando backprop). Lo que generalmente hago es comenzar con uno (por ejemplo, SGD estándar) y luego probar otros más de manera bastante aleatoria. Me preguntaba si hay un enfoque mejor (y menos aleatorio) para encontrar un buen optimizador, por ejemplo, de esta lista:

  • SGD (con o sin impulso)
  • AdaDelta
  • AdaGrad
  • RMSProp
  • Adán

En particular, estoy interesado si hay alguna justificación teórica para elegir uno sobre otro dado que los datos de entrenamiento tienen alguna propiedad, por ejemplo, que son escasos. También me imagino que algunos optimizadores funcionan mejor que otros en dominios específicos, por ejemplo, al entrenar redes convolucionales versus redes de retroalimentación o clasificación vs. regresión.

Si alguno de ustedes ha desarrollado alguna estrategia o intuición sobre cómo elegir optimizadores, me interesaría mucho escucharlo. Además, si hay algún trabajo que proporcione una justificación teórica para elegir uno sobre otro, eso sería aún mejor.

mplappert
fuente

Respuestas:

3

1) AdaGrad penaliza la tasa de aprendizaje con demasiada severidad para los parámetros que se actualizan con frecuencia y brinda una mayor tasa de aprendizaje a los parámetros dispersos, parámetros que no se actualizan con tanta frecuencia. En varios problemas, a menudo la información más crítica está presente en los datos que no son tan frecuentes sino escasos. Entonces, si el problema en el que está trabajando trata con datos escasos como tf-idf, etc. Adagrad puede ser útil.

2) AdaDelta, RMSProp casi funciona en líneas similares con la única diferencia en Adadelta que no requiere una constante de tasa de aprendizaje inicial para comenzar.

3) Adam combina las buenas propiedades de Adadelta y RMSprop y, por lo tanto, tienden a mejorar para la mayoría de los problemas.

4) El descenso de gradiente estocástico es muy básico y rara vez se usa ahora. Un problema es con la tasa de aprendizaje global asociada con el mismo. Por lo tanto, no funciona bien cuando los parámetros están en diferentes escalas, ya que una baja tasa de aprendizaje hará que el aprendizaje sea más lento, mientras que una gran tasa de aprendizaje puede provocar oscilaciones. También el descenso de gradiente estocástico generalmente tiene dificultades para escapar de los puntos de silla. Adagrad, Adadelta, RMSprop y ADAM generalmente manejan mejor los puntos de silla. El SGD con impulso proporciona cierta velocidad a la optimización y también ayuda a escapar mejor de los mínimos locales.

Santanu_Pattanayak
fuente
2

Mi enfoque personal es elegir el optimizador más nuevo (es decir, el más reciente publicado en una revista revisada por pares), porque generalmente informan resultados en conjuntos de datos estándar, o superan el estado del arte, o ambos. Cuando uso Caffe, por ejemplo, siempre uso a Adam ( http://arxiv.org/abs/1412.6980 ).

mprat
fuente
0
Nadam(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=None, schedule_decay=0.004)

Al igual que Adames esencialmente RMSpropcon el impulso, Nadames Adán RMSpropcon el impulso de Nesterov.

rigo
fuente