Apprentissage sur un perceptron - Algo - Programmation
Marsh Posté le 20-01-2013 à 13:51:39
J'y connais rien, mais si tu veux essayer la matrice suivante: peut-être ?
1 0 1
0 1 1
0 0 0
1 1 1
Marsh Posté le 20-01-2013 à 14:07:29
L'ordre n'importe pas, et ça ne marche pas non plus avec des 0 (de toute manière, ça aurait du marcher avec des -1/1 si ça avait marché avec des 0/1)
Le soucis, c'est que je vois pas comment on recalcule le seuil du neurone, j'ai essayé ça :
Seuil -= Alpha*(SortieDesiree - Sortie);
Mais ça donne rien de concluant non plus
edit : Le cours que j'ai suivi : http://alp.developpez.com/tutoriel [...] -neurones/
Le tableau de valeurs sur lequel je me base : http://pages.cs.wisc.edu/~dyer/cs540/notes/nn.html (Example: Learning OR in a Perceptron)
Marsh Posté le 01-02-2013 à 20:04:04
Je connais l'algorithme de décente du gradient, et il n'y a que très peu de différences entre les deux. Normalement le biais doit être calculé dans l'algorithme, vu que c'est lui qui détermine l'activation ou non
du neurone. As tu pensé à soustraire le biais à la somme ? Et quel fonction d'activation utilise-tu ?
Sinon si tu es intéressé par les réseaux de neurones, je travail actuellement sur un logiciel et une librairie en C++ ( http://temporaire-zebrain.0fees.net/ ).
Et je recherche d'autre personnes intéressées. Tu pourras me contacter si tu le souhaite.
A+
Marsh Posté le 02-02-2013 à 13:49:21
C'est bon, j'ai pu régler le soucis du neurone (je prenais pas en compte w0 dans mes calculs), et j'ai fait le réseau (avec la back-propagation d'erreur)
Maintenant, j'essaie de faire un apprentissage non-supervisé pour le neurone, en gros, les sorties du réseau passent par une fonction qui renvoie vrai ou faux si le résultat est satisfaisant, mais j'arrive pas à implémenter la correction dans ce cas.
En fait, je cherche à appliquer le réseau de neurone pour une IA d'un jeu 2D, le réseau permettrai de faire les reach-specifications (comment aller d'une plateforme à une autre en graduant bien le saut et les déplacements, en prenant en compte les objets dangereux,etc) et aussi les stratégies de combats.
Donc chaque fois que le réseau se retrouverai face à une situation (pendant l'entraînement), il essaierai quelque chose, et si ça ne marche pas, corrigerai en essayant autre chose jusqu'à ce qu'il y arrive (d'où l'utilité de la fonction qui valide les sorties sans savoir lesquels précisément sont bonnes ou fausses)
Marsh Posté le 02-02-2013 à 14:37:43
Regarde du coté de l'adaline, et des carte auto-organisatrices. Cela permettra à ton IA de retenir les objets en les classant grâce aux cartes, et de s'adapter à des situation grâce à l'adaline. C'est un peut plus dur que les perceptrons. Mais sa offre des résultats bien meilleurs dans ces cas là.
Marsh Posté le 02-02-2013 à 15:50:37
Merci à toi, je vais regarder tout ça
Marsh Posté le 20-01-2013 à 12:54:02
Bonjour
Je commence un peu à exploiter les perceptrons, histoire de voir ce qu'on peut faire avec, mais je bloque sur l'apprentissage (j'utilise l'algo de Widrow-Hoff)
Donc si j'ai bien compris, l'algo marche avec un set d'exemple, on lui présente des valeurs en entrée, ce qu'on veut en sortir et l'algo fait progressivement converger le neurone vers cette sortie.
J'ai essayé avec un seul neurone de lui apprendre n'importe quel fonction logique (sauf XOR), mais les résultats sont pas très concluant
Voilà comme je procède :
Je lui fais passer ma liste d'exemple, je force les deux entrée de mon neurone aux valeurs de l'exemple, je calcule la sortie et je modifie les poids des entrée de tel manière :
poid(i) += alpha * (Résultat - RésulatExemple) * Entrée(i)
Le calcul de la sortie se fait comme ça : (w0 est traité indépendamment, donc il n'est pas modifié par l'algo)
Ce qui m'étonne, c'est que dans les algos que j'ai vu, le threshold n'est jamais modifié, ou alors il y a un truc que j'ai très mal pigé
L'exemple (pour un ou) :
A B S
-1 -1 -1
-1 1 1
1 -1 1
1 1 1
Merci pour vos lumière
Message édité par Terminapor le 20-01-2013 à 12:54:47
---------------
Perhaps you don't deserve to breathe