RMSProp et Adam vs SGD


12

J'exécute des expériences sur l'ensemble de validation EMNIST en utilisant des réseaux avec RMSProp, Adam et SGD. J'atteins une précision de 87% avec SGD (taux d'apprentissage de 0,1) et décrochage (0,1 décrochage prob) ainsi que la régularisation L2 (pénalité 1e-05). En testant la même configuration exacte avec RMSProp et Adam ainsi que le taux d'apprentissage initial de 0,001, j'atteins une précision de 85% et une courbe d'entraînement nettement moins fluide. Je ne sais pas comment expliquer ce comportement. Quelle peut être la raison du manque de fluidité de la courbe d'entraînement et de la précision inférieure et des taux d'erreur plus élevés atteints?


Cela dépend du réseau. Pouvez-vous nous montrer les détails du réseau? Pouvez-vous également fournir les courbes d'apprentissage?
Memming

Il s'agit d'un réseau à 5 couches (Dropout, Affine, ELU dans chaque couche), configuré comme suit: 150 dimensions cachées, fonction d'activation ELU utilisée, 0,1 taux d'apprentissage pour SGD, 0,001 taux d'apprentissage pour RMS et Adam, régularisation L2 avec 1e -05 pénalité, abandon avec une probabilité d'exclusion de 0,1.
Alk

Et quand vous dites "exactement la même configuration ... taux d'apprentissage initial de 0,001", voulez-vous dire que vous avez utilisé un taux d'apprentissage différent ou que vous avez fait deux expériences: une avec le même taux d'apprentissage et une avec un autre? Cela peut dépendre du logiciel réel que vous utilisez quant aux paramètres par défaut.
Wayne

J'ai donc utilisé 0,1 pour SGD et 0,001 pour Adam et RMSProp. En effet, lorsque j'ai exécuté Adam et RMSProp avec un taux d'apprentissage de 0,1, ils ont tous deux mal performé avec une précision de 60%. En outre, 0,001 est la valeur recommandée dans l'article sur Adam.
Alk

Vous devez publier des courbes d'apprentissage et déterminer si vous mesurez l'erreur sur les données de test ou de formation.
Jakub Bartczuk

Réponses:


4

Après avoir recherché quelques articles en ligne et la documentation Keras, il est suggéré que l'optimiseur RMSProp soit recommandé pour les réseaux de neurones récurrents. https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L209

La descente de gradient stochastique semble tirer parti de son taux d'apprentissage et de son élan entre chaque lot pour optimiser les poids du modèle en fonction des informations de la fonction de perte dans mon cas, c'est «catégorical_crossentropy».

Je suggère http://ruder.io/optimizing-gradient-descent/index.html pour plus d'informations sur les algorithmes d'optimisation.


Je ne sais pas ce que vous entendez par "l'optimiseur RMSProp est recommandé pour les réseaux de neurones récurrents". Le lien que vous mettez est maintenant rompu et il n'est mentionné nulle part qu'il est recommandé.
Harshal Parekh
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.