Bonjours,
En ce moment je m'intéresse aux réseaux de neurones, et après avoir lu pas mal de doc différentes, je pense avoir compris l'essentiel.
Donc avant de faire quoi que ce soit, j'ai voulu apprendre à un réseau le XOR logique.
Mais voilà, il refuse de me rendre des bons résultats pour une raison que j'ignore.
J'ai utiliser un réseau de ce type :
Deux entrés, une couche caché à un neurone.
Comme sur ce pitoyable schéma quoi :
e1 --O--\
````````O-- s
e2 --O--/
Avec cette forme de réseau j'ai moi même réussi à trouver les poids pour que ça marche (avec la fonction de transfert Heaviside.
Mais là je voulais tester ma fonction d'apprentissage...
Donc avec la fonction sigmoïde comme fonction de transfert.
J'ai utilisé cet algorithme pour la fonction d'apprentissage : http://galaxy.agh.edu.pl/~vlsi/AI/ba.../backprop.html
Et en gros, comme valeur il refuse de me donner autre chose que quelque chose du genre :
0,0 -> ~=0
0,1 -> 0<b<1
1,0 -> ~=1
1,1 -> ~=b
ça ne vas pas pour (0,1) et (1,1).. la valeur de b est entre 0.3 et 0.7 selon mes tests.
Pourtant ma fonction d'apprentissage à l'air de fonctionner, j'ai essayer d'autre fonctions logique comme le OU, NAND, ET...
Bref je bloque.
Voici mon programme : http://worldofstyfore.free.fr/RdN.ml
Merci d'avance pour votre aide.
EDIT : Bon, j'avais pas remarqué ça avant, mais il semble que le problème viennent de la fonction "propagation" (pour modifier les poids), où pour chaque couche, il met le même delta, mêmes poids... etc, tout pareil à tous les neurones d'une même couche.. bizarre. (parfois y a des variation de certains paramètres des neurones... mais de trèèèès très légères variation, au dixième chiffre après la virgule quoi..).
Le plus bizarre est que je n'ai rien changé... Et au début a ne faisait pas ça. (car avec ça ben.. ça rend les mêmes résultats pour toutes les entrées..)
Partager