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.
fuente