web-dev-qa-db-fra.com

Est-ce un bon taux d'apprentissage pour la méthode Adam?

J'entraîne ma méthode. J'ai obtenu le résultat comme ci-dessous. Est-ce un bon rythme d'apprentissage? Sinon, est-ce élevé ou faible? C'est mon résultat

enter image description here

lr_policy: "step"
gamma: 0.1
stepsize: 10000
power: 0.75
# lr for unnormalized softmax
base_lr: 0.001
# high momentum
momentum: 0.99
# no gradient accumulation
iter_size: 1
max_iter: 100000
weight_decay: 0.0005
snapshot: 4000
snapshot_prefix: "snapshot/train"
type:"Adam"

Ceci est une référence

Avec de faibles taux d'apprentissage, les améliorations seront linéaires. Avec des taux d'apprentissage élevés, ils commenceront à paraître plus exponentiels. Des taux d'apprentissage plus élevés réduiront la perte plus rapidement, mais ils se retrouvent coincés à de pires valeurs de perte enter image description here

16
John

Le taux d'apprentissage semble un peu élevé. La courbe diminue trop vite à mon goût et s'aplatit très vite. J'essaierais 0,0005 ou 0,0001 comme taux d'apprentissage de base si je voulais obtenir des performances supplémentaires. Vous pouvez quand même quitter après plusieurs époques si vous voyez que cela ne fonctionne pas.

La question que vous devez vous poser est cependant de savoir combien de performances avez-vous besoin et dans quelle mesure vous êtes proche de l'accomplissement des performances requises. Je veux dire que vous formez probablement un réseau de neurones dans un but précis. Souvent, vous pouvez obtenir plus de performances du réseau en augmentant sa capacité, au lieu de régler finement le taux d'apprentissage qui est assez bon sinon parfait de toute façon.

7
Thomas Pinetz

Vous pouvez commencer avec un taux d'apprentissage plus élevé (par exemple 0,1) pour sortir des minima locaux, puis le réduire à une très petite valeur pour laisser les choses se calmer. Pour ce faire, modifiez la taille du pas pour dire 100 itérations afin de réduire la taille du taux d'apprentissage toutes les 100 itérations. Ces chiffres sont vraiment uniques à votre problème et dépendent de plusieurs facteurs comme votre échelle de données.

Gardez également à l'esprit le comportement de perte de validation sur le graphique pour voir si vous sur-ajustez les données.

7
Juan Camilo Zapata

Je voudrais être plus précis dans certaines déclarations de Juan. Mais ma réputation n'est pas suffisante, je la poste donc comme réponse.

Vous ne devriez pas avoir peur des minimums locaux. Dans la pratique, à ma connaissance, nous pouvons les classer comme "bons minimums locaux" et "mauvais minimums locaux". La raison pour laquelle nous voulons avoir un taux d'apprentissage plus élevé, comme l'a dit Juan, est que nous voulons trouver un meilleur "bon minimum local". Si vous définissez votre taux d'apprentissage initial trop élevé, ce sera mauvais parce que votre modèle tombera probablement dans les régions "mauvais minimum local". Et si cela se produit, la pratique du "taux d'apprentissage en décomposition" ne peut pas vous aider.

Alors, comment pouvons-nous nous assurer que vos poids tomberont dans la bonne région? La réponse est que nous ne pouvons pas, mais nous pouvons augmenter sa possibilité en choisissant un bon ensemble de poids initiaux. Encore une fois, un taux d'apprentissage initial trop élevé rendra votre initialisation vide de sens.

Deuxièmement, il est toujours bon de comprendre votre optimiseur. Prenez le temps de regarder sa mise en œuvre, vous trouverez quelque chose d'intéressant. Par exemple, le "taux d'apprentissage" n'est pas réellement le "taux d'apprentissage".

En résumé: 1/Inutile de dire qu'un petit taux d'apprentissage n'est pas bon, mais qu'un taux d'apprentissage trop grand est définitivement mauvais. 2/L'initialisation du poids est votre première supposition, elle affecte votre résultat 3/Prenez le temps de comprendre que votre code peut être une bonne pratique.

2
Taro NGUYEN