Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1468 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Apprentissage sur un perceptron

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Apprentissage sur un perceptron

n°2171913
Terminapor
I'll see you rise.
Posté le 20-01-2013 à 12:54:02  profilanswer
 

Bonjour :hello:
 
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)

Code :
  1. In=0;
  2. pour i=0,NbEntrée
  3.      In+= Entrée(i)*Poid(i);
  4. fin
  5. In-=Threshold; // w0
  6. Sortie = 1.0 / (1.0 + e^-(In)); // Formule sigmoïde


 
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 :hello:


Message édité par Terminapor le 20-01-2013 à 12:54:47

---------------
Perhaps you don't deserve to breathe
mood
Publicité
Posté le 20-01-2013 à 12:54:02  profilanswer
 

n°2171920
Profil sup​primé
Posté le 20-01-2013 à 13:51:39  answer
 

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

n°2171922
Terminapor
I'll see you rise.
Posté le 20-01-2013 à 14:07:29  profilanswer
 

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)


Message édité par Terminapor le 20-01-2013 à 14:39:23

---------------
Perhaps you don't deserve to breathe
n°2173833
Beusse59
Posté le 01-02-2013 à 20:04:04  profilanswer
 

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+

n°2173878
Terminapor
I'll see you rise.
Posté le 02-02-2013 à 13:49:21  profilanswer
 

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) :D
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)


---------------
Perhaps you don't deserve to breathe
n°2173882
Beusse59
Posté le 02-02-2013 à 14:37:43  profilanswer
 

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à.

n°2173886
Terminapor
I'll see you rise.
Posté le 02-02-2013 à 15:50:37  profilanswer
 

Merci à toi, je vais regarder tout ça :jap:


---------------
Perhaps you don't deserve to breathe

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Apprentissage sur un perceptron

 

Sujets relatifs
aide pour programmer un neurone(perceptron) en pythonApprentissage par renforcement.
algo d'apprentissage à base de réseau de neurones.bête question: programme pour faciliter l'apprentissage de python
[Apprentissage ActionScript]apprentissage tableau html soucis
[VBA] Support d'apprentissage[Apprentissage] Passage de Java à C#
apprentissage du bashApprentissage du slovène au travers d'une IHM tactile
Plus de sujets relatifs à : Apprentissage sur un perceptron


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR