IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Méthodes prédictives Discussion :

Réseaux de neurones : RPROP


Sujet :

Méthodes prédictives

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 6
    Points
    6
    Par défaut Réseaux de neurones : RPROP
    Bonjour,

    Ca fait quelques jours (semaines...) que je travaille pour implémenter l'algorithme RPROP dans mon réseau de neurones (1 couche d'entrée à 1 neurone, 1 couche cachée, 1 couche de sortie à 1 neurone).

    Déja, j'ai pu lire que cet algo était utilisable uniquement en mode Batch (c'est à dire, on présente toute la base d'exemple; pour chaque exemple, on ajoute les erreurs pour chacun des neurones, puis ce n'est qu'une fois arrivé à la fin de la base d'apprentissage que l'on fait la modification des poids) ... Est-ce bien correct?


    Pourriez-vous alors jeter un oeil à ce pseudo-code, qui pour l'instant, c'est bete de le dire, mais ne marche pas


    Pour chaque exemple dans la base d'apprentissage:

    Calcul de la valeur de chacun des neurones

    Calcul des erreurs pour chacuns des neurones, en partant de la fin (comme pour de la rétropropagation...), par la formule : Erreur[neurone] = Erreur[neurone] + f ' (activité[neurone]) * Somme(k) [poids[neurone -> k] * valeur_neurone[k]

    On met le tout dans la matrice de dérivées de l'erreur par rapport au poids W[i, j] (il suffit donc, par exemple pour le poids W[1, 4] (poids entre le neurone 1 et le neurone 4), de multiplier l'erreur du neurone 4 (arrivée) par la valeur du neurone 1 (départ))

    (On fait de même pour les biais)

    Si on atteint la fin de la base d'apprentissage, on applique l'algorithme RPROP (celui de base), puis on remet à 0 toutes les valeurs des erreurs de chaque neurone



    Un grand merci pour votre aide!

    Eric

  2. #2
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Bonjours,

    As-tu lu ceci : http://alp.developpez.com/tutoriels/...x-de-neurones/ ?

    En paticlier la partie sur la rétropropagation

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Citation Envoyé par Alp Voir le message
    Bonjours,

    As-tu lu ceci : http://alp.developpez.com/tutoriels/...x-de-neurones/ ?

    En paticulier la partie sur la rétropropagation
    J'imagine que tu parles de cette partie ?

    Entrée : un exemple, sous la forme (vecteur_x,vecteur_y);
    epsilon le taux d'apprentissage
    un Perceptron MultiCouches avec q-1 couches cachées C1, ..., Cq-1,
    une couche de sortie Cq.

    Répéter
    Prendre un exemple (vecteur_x,vecteur_y) et calculer g(vecteur_x)

    Pour toute cellule de sortie i di <- si(1-si)(yi-si) finPour
    Pour chaque couche de q-1 à 1
    Pour chaque cellule i de la couche courante
    di = oi(1-oi) * Somme [pour k appartenant aux indices des neurones
    prenant en entrée la sortie du neurone i] de dk*w_ki
    finPour
    finPour

    Pour tout poids w_ij <- w_ij + epsilon*di*x_ij finPour
    finRépéter

    Eneffet je l'ai bien lu, long large et travers, et il me semble bien que c'est ce que je fais, non? enfin sauf pour la mise à jour des poids qui est différente...

    Dans mon pseudo-code, (j'ai oublié de le préciser), j'ai mi uniquement la formule pour les unités des couches cachées!

    Et comme j'utilise une sigmoide pour chacune de mes unités, j'ai bien la dérivée qui correspond : ce que j'apelle f ' (activité[neurone]) revient bien à si(1-si) ou oi(1-oi) ...

    Y'a une ptite bete de cachée c'est ca?

  4. #4
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Bah il faut utiliser la mise à jour des poids comme décrite dans l'article. Tu fais différemment ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Alp Voir le message
    Bah il faut utiliser la mise à jour des poids comme décrite dans l'article. Tu fais différemment ?
    Oui, comme dis dans le titre, je fais ca avec l'algorithme Resilient Propagation (RPROP) (ils en parlent pas mal la dedans http://www.dcs.bbk.ac.uk/~aris/Camer...PR03_final.pdf)

    Celui que tu utilises reste la rétropropagation du gradient de l'erreur non?

  6. #6
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Ahhh, "RPROP" ça collait aussi avec "rétropropagation", d'où mon étonnement.

    Hé bien si tu as "bêtement" appliqué la règle de modification des poids qu'ils décrivent, je ne vois pas pourquoi ça marcherait pas. Peut-être que la structure n'est pas assez bonne pour que ça converge vite ? Ou les poids de départ ? (n'oublie pas qu'il s'agit de chercher un minima local)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Alp Voir le message
    Ahhh, "RPROP" ça collait aussi avec "rétropropagation", d'où mon étonnement.
    Ah ouai! J'avais jamais remarqué que ca marchait pour ca aussi.. intéressant

    Et bien en fait, j'utilise en parallèle un autre programme de RdN (MBP : Multiple Back Propagation), qui lui marche bien. Donc en fait je l'utilise pour voir si une structure marche bien, je lui fais son apprentissage, lui prend les valeurs de tous les poids, le remet dans mon programme, et la ca marche (donc ca veut bien dire que la procédure de Calcul marche bien...)

    Par contre c'est au niveau de l'apprentissage que je galère un peu plus, et je voulais voir déja si l'ordonnancement des taches était bon ? Surtout en mode Batch (qui apparament est plus adapté quand on possède une petite base d'apprentissage)

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Ah oui, pour la petite info, quand je fais l'apprentissage d'une seule valeur, par exemple : Entrée = 0.5, Sortie = 0.7, l'apprentissage se fait bien, et quand je lui rentre la valeur 0.5, il me sort bien 0.7...

    Par contre, dès que je mets 2 points dans la base d'apprentissage (voir plus...), et bien la il part tout de suite en sucette, quand je lui fais tracer la réponse en fonction de l'entrée, ca a toujours la forme d'une sigmoïde, dans l'intervalle d'apprentissage... bizarre non?

    Ca serait pas déja arrivé à quelqu'un ce genre de problème?


    Cordialement,

    Eric

Discussions similaires

  1. cherche cours réseaux de neurones
    Par young077 dans le forum Hardware
    Réponses: 4
    Dernier message: 13/09/2007, 11h18
  2. [newsom] Réseaux de neurones kohenen (SOM)
    Par Alucard9800XT dans le forum MATLAB
    Réponses: 1
    Dernier message: 22/05/2007, 20h07
  3. réseaux de neurones RBF
    Par liliana07 dans le forum C++Builder
    Réponses: 2
    Dernier message: 22/03/2007, 11h49
  4. Les réseaux de neurones ??? Ouvrage, site, tutos ???
    Par wallys dans le forum Méthodes prédictives
    Réponses: 5
    Dernier message: 21/03/2006, 14h08
  5. Réseaux de neurones
    Par kayin dans le forum Méthodes prédictives
    Réponses: 8
    Dernier message: 10/03/2004, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo