Lignes directrices pour sélectionner un optimiseur pour la formation des réseaux de neurones

18

J'utilise des réseaux de neurones depuis un certain temps maintenant. Cependant, une chose avec laquelle je me bats constamment est la sélection d'un optimiseur pour la formation du réseau (en utilisant backprop). Ce que je fais habituellement, c'est de commencer par un seul (par exemple SGD standard), puis d'essayer d'autres autres à peu près au hasard. Je me demandais s'il y avait une meilleure approche (et moins aléatoire) pour trouver un bon optimiseur, par exemple à partir de cette liste:

  • SGD (avec ou sans élan)
  • AdaDelta
  • AdaGrad
  • RMSProp
  • Adam

En particulier, je suis intéressé s'il y a une justification théorique pour choisir l'un sur l'autre étant donné que les données de formation ont une certaine propriété, par exemple, elles sont rares. J'imagine également que certains optimiseurs fonctionnent mieux que d'autres dans des domaines spécifiques, par exemple lors de la formation de réseaux convolutionnels contre des réseaux à action directe ou de la classification contre la régression.

Si l'un d'entre vous a développé une stratégie et / ou une intuition sur la façon de choisir les optimiseurs, je serais très intéressé à l'entendre. De plus, s'il y a des travaux qui fournissent une justification théorique pour choisir l'un sur l'autre, ce serait encore mieux.

mplappert
la source

Réponses:

3

1) AdaGrad pénalise le taux d'apprentissage trop sévèrement pour les paramètres qui sont fréquemment mis à jour et donne plus de taux d'apprentissage aux paramètres clairsemés, paramètres qui ne sont pas mis à jour aussi fréquemment. Dans plusieurs problèmes, les informations les plus critiques sont souvent présentes dans les données qui ne sont pas aussi fréquentes mais rares. Donc, si le problème sur lequel vous travaillez concerne des données éparses telles que tf-idf, etc. Adagrad peut être utile.

2) AdaDelta, RMSProp fonctionne presque sur des lignes similaires avec la seule différence dans Adadelta, vous n'avez pas besoin d'une constante de vitesse d'apprentissage initiale pour commencer.

3) Adam combine les bonnes propriétés d'Adadelta et de RMSprop et a donc tendance à faire mieux pour la plupart des problèmes.

4) La descente de gradient stochastique est très basique et est rarement utilisée actuellement. Un problème est lié au taux d'apprentissage global qui lui est associé. Par conséquent, cela ne fonctionne pas bien lorsque les paramètres sont à différentes échelles, car un faible taux d'apprentissage rendra l'apprentissage lent tandis qu'un taux d'apprentissage élevé peut entraîner des oscillations. De plus, la descente de gradient stochastique a généralement du mal à s'échapper des points de selle. Adagrad, Adadelta, RMSprop et ADAM gèrent généralement mieux les pointes de selle. SGD avec élan accélère l'optimisation et aide également à mieux échapper aux minima locaux.

Santanu_Pattanayak
la source
2

Mon approche personnelle consiste à choisir l'optimiseur le plus récent (c'est-à-dire le plus récent journal publié dans un journal à comité de lecture), car ils rapportent généralement les résultats sur des ensembles de données standard, ou dépassent l'état de l'art, ou les deux. Lorsque j'utilise Caffe par exemple, j'utilise toujours Adam ( http://arxiv.org/abs/1412.6980 ).

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

Tout comme l' Adamest essentiellement l' RMSpropélan, NadamAdam RMSpropavec l'élan Nesterov.

rigo
la source