Bonsoir.
Désolé de encore venir vous demander votre aide... mais là je sèche !
J'ai intégré l'algorithme de rétro propagation dans un programme C++ de la plus simple facture cependant je rencontre un résultat qui me laisse perplexe.
J'ai commencé par vouloir faire apprendre à mon réseau la fonction booléenne XOR et après plusieurs cycles d'apprentissages j'ai récupéré les différentes erreurs calculées pendant la correction.
L'erreur "pure", c'est-à-dire la moyenne de (sortie_voulue - sortie_obtenue) pour chaque couple entrée/sortie reste environ constante entre 50% et 49%. Je pourrais penser que le problème vient directement de l'algorithme.
Or, lorsque je regarde la variation de l'erreur quadratique (définie par E = (1/2)(sum(sortie_voulue - sortie_obtenue)²) force est de constater que le programme fonctionne puisqu'en partant d'une erreur quadratique d'environ 45%, je tombe rapidement en dessous de 1% après quelques cycles de corrections.
L'objectif de l'apprentissage étant de diminuer l'erreur quadratique, on pourrait se réjouir de sa très faible valeur.
Oui mais l'erreur "pure" reste à environ 50% ! Si bien que lorsque je souhaite obtenir "0", le réseau calcule "0.56" et lorsque je souhaite avoir 1, j'obtiens des valeurs comme "0.42".
Il y aurait-il alors des problèmes théoriques qui m'auraient échappés ou pensez-vous que cela vienne de mon programme ?
Merci pour votre lecture.
Partager