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
Partager