Bonjour,
J'ai découvert il y a peu les réseaux de neurones artificiels. J'ai réussi à programmer un simple neurone à seuil qui apprend des fonctions booléennes linéairement séparables. J'ai ensuite réussi à programmer un perceptron multicouche (PMC) (on choisit le nombre de couches, de neurones par couche, la taille de la rétine, de la couche de sortie) ainsi que l'algorithme de rétropropagation du gradient pour l'apprentissage à partir d'une base d'exemples. Je programme tout ça en OCaml (je suis en CPGE et c'est le langage utilisé en cours et je l'aime bien).
J'arrive à faire apprendre à mon PMC différentes fonctions (comme des affines, des sinusoïdes.. comme sur cet applet : http://agerodol.pagesperso-orange.fr...let_retro.html). Mais voilà mon problème : impossible de faire apprendre à mon PMC la simple fonction XOR. (j'ai essayé avec plusieurs couches cachées et différents nombres de neurones en vain)
En fait, mon PMC utilise des sigmoïdes comme fonction de transfert et de ce fait j'obtiens pour les vecteurs calculés des réels dans [0;1] (dans la pratique je n'obtiens pas les valeurs 0 et 1). Je pense donc que mon PMC est adapté pour apprendre des fonctions mais pas du tout pour apprendre des fonctions logiques comme le XOR, le OR, le AND....
Je voulais donc savoir si les PMC à sigmoïdes permettaient l'apprentissage de problèmes de logique (dans le sens "à valeurs dans {0;1}") ou alors pas du tout ? Je suis coincé à ce stade car je ne peux pas non plus utiliser mon PMC pour apprendre un jeu de morpion par exemple !
Si quelqu'un est intéressé par les sources (OCaml) de mon PMC (voir celles du perceptron simple) je peux les passer dans le thread sans soucis
Merci beaucoup d'avance !
Bonne soirée.
PS. Mes connaissances en la matière proviennent (quasi) exclusivement de cet article : http://www.grappa.univ-lille3.fr/pol...sortie005.html
Partager