J'entraîne un réseau pour la localisation d'images avec l'optimiseur Adam, et quelqu'un me suggère d'utiliser la décroissance exponentielle. Je ne veux pas essayer cela car l'optimiseur Adam lui-même diminue le taux d'apprentissage. Mais ce gars insiste et il a dit qu'il avait fait ça avant. Alors, dois-je faire cela et y a-t-il une théorie derrière votre suggestion?
Réponses
Trop de publicités?Il dépend. ADAM mises à jour de n'importe quel paramètre d'un individu au taux d'apprentissage. Cela signifie que tous les paramètres dans le réseau ont un apprentissage spécifique de taux associés.
Mais le seul apprentissage de taux pour le paramètre est calculé à l'aide lambda (la formation initiale du taux) comme limite supérieure. Cela signifie que chaque unique au taux d'apprentissage peut varier de 0 (pas de mise à jour) pour lambda (maximum de mise à jour).
L'apprentissage des taux d'adapter eux-mêmes pendant les marches du train, c'est vrai, mais si vous voulez être sûr que chaque étape de mise à jour ne pas dépasser lambda vous pouvez de plus faible lambda à l'aide de décroissance exponentielle ou quoi que ce soit. Il peut aider à réduire les pertes lors de la dernière étape de la formation, lorsque le calcul de la perte avec le précédemment associés paramètre lambda a cessé de diminuer.
Dans mon expérience, il n'a pas de sens (et ne fonctionne pas bien) pour faire de l'apprentissage du taux de décroissance avec Adam optimiseur.
La théorie est que Adam prend en charge l'apprentissage de l'optimisation des taux (vérifier la référence) :
"Nous proposons Adam, une méthode efficace de l'optimisation stochastique ne nécessite premier ordre dégradés avec peu de mémoire. La méthode calcule individuel d'apprentissage d'adaptation des tarifs pour les différents les paramètres à partir des estimations de première et deuxième moments de la dégradés; le nom Adam est dérivé d'adaptation moment de l'estimation."
Comme avec n'importe quel apprentissage profond problème YMMV, une taille unique ne convient pas à tous, vous devriez essayer différentes approches et voir ce qui fonctionne pour vous, etc. etc.
Oui absolument. D'après ma propre expérience, il est très utile pour Adam avec l'apprentissage de la décroissance du taux. Sans décroissance, vous devez définir un taux d'apprentissage très faible afin que la perte ne commence pas à diverger après avoir diminué jusqu'à un certain point. Ici, je poste le code pour utiliser Adam avec la décroissance du taux d'apprentissage en utilisant TensorFlow. J'espère que cela sera utile à quelqu'un.
decayed_lr = tf.train.exponential_decay(learning_rate,
global_step, 10000,
0.95, staircase=True)
opt = tf.train.AdamOptimizer(decayed_lr, epsilon=adam_epsilon)
Adam a un seul taux d'apprentissage, mais c'est un max de taux qui est adaptative, donc je ne pense pas que beaucoup de personnes utilisant au taux d'apprentissage d'ordonnancement avec elle.
En raison de la nature adaptative le taux de défaut est assez robuste, mais il peut y avoir des moments où vous souhaitez l'optimiser. Ce que vous pouvez faire est de trouver un optimal taux de défaut à l'avance en commençant par un très faible taux et de l'augmenter jusqu'à la perte de cesse de réduire, puis d'examiner la pente de la perte de la courbe et de choisir le taux d'apprentissage qui est associé avec la plus forte diminution de la perte (pas au point où la perte est en fait plus bas). Jeremy Howard mentionne cela dans le rapide.ia profonde de l'apprentissage du cours et de son à partir de l'Apprentissage Cyclique des Taux du papier.