J'ai un ANN assez simple utilisant Tensorflow et AdamOptimizer pour un problème de régression et je suis maintenant sur le point d'accorder tous les hyperparamètres.
Pour l'instant, j'ai vu beaucoup d'hyperparamètres différents que je dois régler:
J'ai 2 questions:
1) Voyez-vous un autre hyperparamètre que j'ai peut-être oublié?
2) Pour le moment, mon réglage est assez "manuel" et je ne suis pas sûr de ne pas tout faire de la bonne manière. Existe-t-il un ordre spécial pour régler les paramètres? E.g taux d’apprentissage en premier, puis taille du lot, puis ...… .__ Je ne suis pas sûr que tous ces paramètres soient indépendants - en fait, je suis tout à fait sûr que certains d’entre eux ne le sont pas. Lesquels sont clairement indépendants et lesquels ne le sont clairement pas? Devrions-nous ensuite les accorder ensemble? Existe-t-il un article ou un article traitant du réglage correct de tous les paramètres dans un ordre spécial?
EDIT: Voici les graphiques que j’ai obtenus pour différents taux d’apprentissage initial, tailles de lot et paramètres de régularisation. La courbe mauve est complètement étrange pour moi ... Parce que le coût diminue comme les autres lentement, mais il s'est bloqué avec un taux de précision inférieur. Est-il possible que le modèle soit bloqué dans un minimum local?
Pour le taux d’apprentissage, j’ai utilisé la décroissance: LR (t) = LRI/sqrt (Epoch)
Merci pour votre aide! Paul
Mon ordre général est le suivant:
Dépendances:
Je suppose que les valeurs optimales de
dépendent fortement les uns des autres. Je ne suis cependant pas un expert dans ce domaine.
Quant à vos hyperparamètres:
Faites fonctionner Tensorboard. Tracez l'erreur ici. Vous devez créer des sous-répertoires dans le chemin où TB recherche les données à tracer. Je fais cette création sous-répertoire dans le script. Je modifie donc un paramètre dans le script, lui attribue un nom, l'exécute et trace tous les essais du même graphique. Vous aurez très vite une idée des paramètres les plus efficaces pour votre graphique et vos données.
Pour les paramètres moins importants, vous pouvez probablement choisir une valeur raisonnable et vous y tenir.
Comme vous l'avez dit, les valeurs optimales de ces paramètres dépendent toutes les unes des autres. Le plus simple est de définir une plage de valeurs raisonnable pour chaque hyperparamètre. Ensuite, échantillonnez de manière aléatoire un paramètre de chaque plage et entraînez un modèle avec ce paramètre. Répétez cette opération un tas de fois, puis choisissez le meilleur modèle. Si vous avez de la chance, vous pourrez analyser quels paramètres d’hyperparamètre fonctionnent le mieux et en tirer des conclusions.
Je ne connais aucun outil spécifique pour tensorflow, mais la meilleure stratégie consiste à commencer par les hyperparamètres de base tels que le taux d'apprentissage de 0,01, 0,001, weight_decay de 0,005, 0,0005. Et puis accordez-les. Faire cela manuellement prendra beaucoup de temps, si vous utilisez caffe, voici la meilleure option pour extraire les hyperparamètres d’un ensemble de valeurs d’entrée et vous donner le meilleur.
https://github.com/kuz/caffe-with-spearmint
pour plus d'informations, vous pouvez également suivre ce tutoriel:
http://fastml.com/optimizing-hyperparams-with-hyperopt/
Pour le nombre de couches, je vous suggère tout d’abord de créer un réseau plus petit et d’augmenter les données, puis, une fois que vous avez suffisamment de données, d’accroître la complexité du modèle.