Posez votre question Signaler

Programmer un réseau de neurones [Résolu/Fermé]

xavier - Dernière réponse le 29 oct. 2010 à 06:11
Bonjour à tous,

Je me suis mis dans l'idée de programmer un réseau de neurones, le problème étant que je ne sais pas par quel bout commencer.

En fait je ne parviens pas à trouver comment programmer une fonction réorganisation du réseau lors d'un apprentissage qui ne foutte pas en l'air tous les apprentissages précédents...
je sais aussi que le mieux pour moi, pour comprendre et apprendre, est d'examiner un programme déjà existant. Disons que j'ai quelques lacunes en matière de création, d'invention...

Qulequ'un a-t-il déjà programmer un tel réseau ? Si oui peut-il me le montrer en exemple ? Connaissez vous des liens de pages mettant en ligne des codes de réseaux ?

Merci de vos réponses.

Xavier.
Lire la suite 
Réponse
+13
moins plus
Salut,
Pour programmer un reseau neuronal, il te faut absolument savoir ce qu'il va faire. Ensuite il te faut ton truc de test pour qu'il apprenne.

Il existe plusieurs type d'algos en fonctions dece que tu veux faire...mais trouver la doc avec google est assez facile :o)


Le TeebObeeT préféré de la moche...

SETH- 29 oct. 2010 à 06:11
C U, things TO TO
Réponse
+8
moins plus
Salut,


Je viens de voir ton tuto et sa m interesserai bien de programmer un reseau de neurone pour la reconnaissance de caractere mais je sais pas par ou commencer.J ai essayer de trouver de la doc sur google mais pas evident(quel algo ??).
Je souhaite utilisé c++builder ou vb pour le faire/
Apparamment tu à l air de t y connaitre si sa ne te genrai pas de me donner un coup de pousse SVp

je te remercie d avance

Réponse
+6
moins plus
Obeet a tout a fait raison, mais si ça t'intéresse toujours, contacte-moi (en expliquant exactement ce que tu veux faire), je pourrai te donner 2-3 pistes (surtout sur la partie apprentissage : c'est pas si évident de trouver de la doc bien faite)

Eléctions : Bush filled his SOUl with HOpe

queen- 16 févr. 2008 à 10:31
Salut franky;
est-ce-que vous êtes connaisseur en matière d'optimisation combinatoire (recuit simulé, recherche tabou, algorithmes génétiques, ...) ?
Si oui, pourriez vous me dire si ces approches (ou l'une d'elles) peuvent servir dans la reconnaissance de mots et ont-elles la chance de donner un résultat meilleur que les réseaux de neurones surtout que je vise un vocabulaire large. merci.
franky* 166Messages postés mardi 7 décembre 2004Date d'inscription 4 décembre 2008 Dernière intervention - 18 févr. 2008 à 13:37
Bonjour,

Ca fait longtemps que je n'ai pas participé à cette discussion, mais je peux effectivement bien répondre à cette question :

Ce que tu appelles algorithmes d'optimisation combinatoire, c'est ce que j'appelle métaheuristiques, mais c'est pareil.
Par principe, ce ne sont pas des algorithmes qui permettent de résoudre des problèmes précis, mais seulement des outils qui permettent de trouver des optima (locaux) parmi des paramètre. On peut considérer qu'elles sont toutes équivalentes (certaines sont plus adaptées pour certains problèmes, mais en théorie, toutes convergent vers l'optimum global).

Il y a de fortes chances que ces outils puissent être utilisés dans la reconnaissance (de caractère, de mots, ou autres), mais pas comme algorithme de reconnaissance en tant que tel ! Seulement comme optimisation d'autre algorithmes.

La solution "classique" pour la reconnaissance est l'approche connexionniste (donc les RN), et elle donne donc en général de bon résultats, meilleurs que d'autres approches moins étudiées.

Cependant, dans le cas particulier de la reconnaissance vocale ou de phrases (ce que tu appelles reconnaissance de mots ?), une autre approche est très utilisée : les modèles stochastiques (ce qui veut dire avec un processus aléatoire).
Donc si c'est ça que tu veux faire, il vaudrait mieux te renseigner sur les réseaux Bayésiens (ils sont utilisés par les moteurs de recherche), et surtout sur les modèles de Markov cachés (HMM: hidden Markov model). Il s'agit d'outils très malins, et pas trop difficile à comprendre (à condition d'avoir un bon cours, mais je n'en ai pas à proposer...).

Si c'est ce que tu veux faire, je te conseille donc de chercher des cours sur la reconnaissance vocale, en faisant attention à la partie algorithmique qui utilise cette approche stochastique.

J'espère que ça t'aidera !

François
Niko92- 25 févr. 2008 à 21:04
Salut, j'ai qu'on pourrait peut etre m'aider ici. Je suis étudiant en M2 d'hydrobiologie et dois réaliser un travail pour mettre en place un modèle en utilisant un GLM multinomial. Je m'explique.

J'ai un jeu de données consernant des poissons, avec comme variables : le poids, la longueur, le sexe, la période de remontée des poissons dans l'Adour (pour leur reproduction) et l'age déterminé à partir d'une analyse des ecailles.

Cette derniere analyse etant difficile a mettre en place, on doit mettre en place un modele permettant de déterminer l'age a partir des autres variables (poids, la longueur, le sexe, la période). Pour cela, on utilise un modèle linéaire généralisé (glm) avec une distribution multinomiale sur le logiciel R : fonction multinom(). Le meilleur modèle sur critere d'AIC implique la période, le sexe et la période

- AGE : 4ans, 5ans, 6ans ou 7ans : en numeric

- PERIODE : A, B, C, D : en factor

- SEXE : X ou Y : en factor

- POIDS : en numeric


> mn<-multinom(AGE~POIDS+SEXE+PERIODE)
> summary (mn)

Call:
multinom(formula = AGE ~ POIDS + PERIODE + SEXE)

Coefficients:
(Intercept) POIDS PERIODE[T.B] PERIODE[T.C] PERIODE[T.D] SEXE[T.Y]
2 14.9861265 0.01008858 1.2689816 2.4656209 1.7575496 -27.00216
3 0.7254929 0.01762180 1.5407951 2.0443552 0.6967955 -25.11637
4 -7.2259991 0.02126346 -0.2081077 -0.5941544 -1.2756138 -36.54843

Std. Errors:
(Intercept) POIDS PERIODE[T.B] PERIODE[T.C] PERIODE[T.D] SEXE[T.Y]
2 0.03363829 0.0002590003 0.1684456 0.1607594 0.15390751 1.338751e-01
3 0.03268081 0.0002379928 0.1372602 0.1317097 0.13414525 1.311234e-01
4 0.00602207 0.0002529018 0.1647656 0.1139729 0.04066304 1.873992e-07

Residual Deviance: 530.0787
AIC: 566.0787

J'ai alors les coefficients qui théoriquement me permettraient de remonter a la probabilité d'appartenance à chaque age. (les coefficients manquants se déduisant des autres, avec par défaut zéro pour les 4ans).

La fonction de lien pour un modele multinomial etant un lien log, voila ce que donnerait la formule de probabilité d'appartenance à l'age 2 (soit 5ans) pour un individu male remontant en période B :

F5ans(poids de l'ind)=intercept2 + PERIODE[T.B]2 + SEXE[T.Y]2 + POIDS2 (poids de l'ind)

proba(5ans) = f(poids de l'individu)

proba(5ans) = exp(F5ans) / exp (F4ans + F5ans + F6ans + F7ans)

Et de meme pour les 4ages. Je peux alors calculer les probabilités d'appartenance aux différents ages pour tous les individus (j'ai fait un petit algorithme pour ca : fichier 'progVERIF-matrice.txt' => définir le nom de fichier sur la 1e ligne, apres il n'y a plus qu'a coller le tout dans R => la matrice des probabilités (ages en colonnes / individus en ligne) est sous le nom 'matrice')

________________

Si je calcule ces probabilités automatiquement sous R, avec la fonction :

predict.mlm(mn) ou predict(mn , type='probs')

je ne trouve pas les memes résultats (75% de bien classé, contre seulement 47% a partir des equations calculées 'manuellement' => algorithme "progVERIF.txt").

Apres vérification, mes equations semblent bonnes, mais elles ne tiennent pas compte de l'ajustement des probabilités par maximum de vraisemblance par la méthode des réseaux de neurones. C'est la que j'ai un probleme, je ne connais rien de cette méthode qui semble assez compliquée et apres avoir cherché dans la documentation de R, dans un grand nombre de publication et sur internet, je n'arrive pas a trouver d'informations suffisantes et suffisemment compréhensibles pour pouvoir définir sur papier cet ajustement.

Si je mets dans mon rapport les simples équations, un technicien souhaitant recalculer l'age de ses poissons a partir de ces equations aura plus de 50% d'erreurs. J'aurais donc besoin de savoir comment est fait l'ajustement par la méthode des réseaux de neurones, pour pouvoir décrire dans mon rapport comment passer des probabilités calculées manuellement, aux probabilités ajustées (de la fonction predict)???

Voila, j'ai perdu déjà beaucoup de temps sur ce probleme sans réussir a trouver de solution et il me reste moins d'une semaine pour rendre mon rapport (vendredi dernier delai). J'espere avoir de l'aide avant cette date butoire. Merci d'avance pour toute l'aide.

Niko
lielectron- 28 mars 2008 à 17:02
bonjour
je commence à travailler sur un réseau de neurone,j'ai des valeurs expérimentales, sous forme de vecteur,j'initialise des valeurs théorique avec quelque constante d'entrée par exemple 5 constantes, ces 5 constantes me permet de calculer un vecteur de meme taille que mon vecteur expérimentale ,
le but est de trouver à partir des valeurs initiales(théorique) de trouver des valeur des 5 constantes qui me permet d'avoir des valeurs plus proche de mes valeurs expérimentales.
avez vous des programmes de reseau de neurone.
merci
mjouda 5Messages postés dimanche 10 février 2008Date d'inscription 22 mai 2008 Dernière intervention - 22 mai 2008 à 14:49
salut franky
je suis entrain de faire un petit projet de master
je voudrais bien svp une petite application sous matlab d - un reseaux de neurones (pmc) ou k-means
merci d'avance
Réponse
+6
moins plus
bonjour
je suis un élève ingénieur de l'ecole nationale d'ingénieurs de Tunis (Tunisie)
je suis entrain de faire un projet sur la prévision de la demande en eau potable en utilisant les reseaux de nuerones
voici un document qui peut etre utile pour vous

Daddou- 5 juin 2008 à 18:04
salut Maher, c'est Dorra j'ai vraiment besoin de votre travail pour mon stage sur la prévision de la demande en eau potable au grand Tunis.Passes moi le document amaaaan
selimou- 1 mars 2009 à 11:06
Bonjour Maher,
Peux-tu m'envoyer une copie de ton doc sur les rna.
Merci
Réponse
+3
moins plus
j'en ai deja codé, et je ne l'ai pas encore mis sur le net, par contre il ya plusieurs api sur sourceforge et c'est un bon début si tu veux lire du code. Nottament, ya une librairie qui s'appelle fann (fast neural network) et il est pas mal.

Par contre, tu ne pourras coder que si tu comprends comment fonctionne un réseau de neurones et donc il te faudra ds un premier temps lire de la doc. Par google, tu trouveras de bons liens ou sur cetesser.

tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!

Réponse
+3
moins plus
Merci pour vos réponses.

En fait je me suis acharné avec un copain, et j'ai réussi à programmer un reseau qui reconnait les caractères ( chiffres et lettres ). Mon problème était au niveau de la fonction modification du reseau, et j'ai trouvé à ce sujet quelques explications sur la méthode de "backpropagation", qui s'est avérée simple et efficace.
Toutefois, je reste ouvert à vos éventuelles propostions de réseaux, histoire de voire quelles autres méthodes que la mienne on peut utiliser pour programmer de l'intelligence !!!

Xavier

sabeur franky* - 28 mars 2005 à 13:30
Tu parle de la reconnaissance de parole par réseau de neurone c'est effectivement mon thème de recherche. Je suis entrain de développer un programm sous MATLAB pour la reconnaissance de mots . Mais je ne sais pas de quoi il est constitué le patron d'entrée de mon réseau. A tu une idée?? Merci quand meme.
franky* 166Messages postés mardi 7 décembre 2004Date d'inscription 4 décembre 2008 Dernière intervention - 28 mars 2005 à 14:41
Salut,

J'ai pas très bien compris ta question... Il me semble quand même que l'utilisation de réseaux de neurones pour la reconnaissance de la parole n'est plus très utilisée parce que décevante.
C'est pour ça que je parlais des réseaux bayésiens !
Mais dans tous les cas, il faut traiter tes données : tu ne peux pas faire de la reconnaissance vocale avec un signal de pression (donc ce que renvoit un micro), il faut d'abord découper le signal en fenêtres, calculer les fréquences de base, séparer la parle du bruit, etc. C'est un gros boulot !
sabeur_mas- 28 avril 2009 à 19:53
Salut franky,
J'ai bien réussi à programmer un réseau de neurones de type MLP capable de reconnaître de 10 mots isolés et j'ai pu trouver des bons résultats (taux de reconnaissance = 93% avec 41 mn d'apprentissage ) mais je voudrais comparer ces performances en utilisant d'autres types de réseaux (RBF et Elman). Avez vous une idée.
Merci infiniment.
hichem- 16 févr. 2005 à 09:32
Message a Xavier
je souhaite faire un programme qui reconnait les caracteres d'une matricule sur une image mais je ne sais pas comment m'y prendre ni ou avoir la documentation
si tu as deja un code pret ca serait bien que tu me l'envois
mermade ratiba- 18 avril 2005 à 13:49
Merci pour vos réponses.

En fait je me suis acharné avec un copain, et j'ai réussi à programmer un reseau qui reconnait les caractères ( chiffres et lettres ). Mon problème était au niveau de la fonction modification du reseau, et j'ai trouvé à ce sujet quelques explications sur la méthode de "backpropagation", qui s'est avérée simple et efficace.
Toutefois, je reste ouvert à vos éventuelles propostions de réseaux, histoire de voire quelles autres méthodes que la mienne on peut utiliser pour programmer de l'intelligence !!!
Réponse
+3
moins plus
Ah Ah !
Ben oui, mais c'est normal...
Si tu essaies de te mettre à la place de ton réseau, en ne t'accordant que ses capacités, tu vas voir qu'il est très difficile de reconnaitre quelque chose d'aussi compliqué qu'un chiffre !

Mais je t'avais déjà parlé de la nécessité d'un prétraitement des données : c'est là que c'est nécessaire. Ce que tu vas tenter de reconnaitre, ce ne sont plus des chiffres, mais des points particuliers de ta matrice. Par exemple, un "3" possède (en première approximation) deux extrémités dans les cartiers "nord-ouest" et "sud-ouest", et un point de rebroussement à peu près au milieu... Et en deuxième approximation (c'est-à-dire en complexifiant ton réseau, puisque tu lui donne plus de choses à reconnaitre), tu peux ajouter par exemple les "orientations" des extrêmités.

Une fois le prétraitement effectué, tu vas avoir des objets "plus simples" à reconnaitre, dans le sens où ils auront des caractéristiques qui correspondent mieux à ce que peut reconnaitre une carte auto-organisatrice.

Evidemment, le but du prétraitement n'est pas de fournir quelque chose de très précis, sinon, tu serais déjà en train de reconnaitre le chiffre, sans avoir besoin de passer par un réseau de neurones... Donc il ne faut pas accentuer un 3 parce que c'est un 3 et qu'il ne doit pas ressembler à un 8. Ce qu'il faut, c'est vraiment accentuer les caractéristiques des caractères écrits en général, pour pouvoir ajouter une lettre ou # ou $ indifféremment, et que ton réseau (après apprentissage) soit capable de le reconnaitre !

Par contre, je n'ai aucune idée du (des) "meilleur(s)" prétraitements qui existent pour les caractères, mais il y a surement plein d'exemples même sur internet. [Johann, si t'as une idée...]

A+

Réponse
+3
moins plus
Bonjour
J'ai programmé un réseau de neurones en c++,mais je bloque sur l'interface en c++builder et je trouve pas une bonne documentation pour expliquer comment gérer les classes que j'ai dans mes algorithmes.
merci d'avance.

Réponse
+3
moins plus
bonjour a tous
j plein de question à poser ;alors la premiére c'est que je cherche un logiciel open source consernant la reconnaissance facial(visage) ...j'ai fait qq recherche et j 'ai trouvé que des logiciels libres et moi j'ai gravement besoin d'un open source....
ensuite je fais des recherches concernant le réseau de neurone ..alors j'ai bien compri le mécanisme de fonctionnement mais j 'ai des choses pas encor évidente pour moi par exemple l'apprentissage est -il applicable pour tous l'informatique bioinspiré ?? çad dans des documents apar les réseaux de neurones ;on trouve l'apprentissage dans le réseau bayésien..
enfin je veux savoir c'est quoi la relation entre l'apprentissage et les lois(exemple loi de hubb)

c'est encore flou pour moi alors je serai reconnaissante si qq1 peut m'aider
merci d'avance

Réponse
+2
moins plus
>>> t'es où ?
Lycée Clémenceau à Nantes...

>>> A propos du surapprentissage :

Comme tu me l'as dit, j'ai essayé de voir au niveau du surapprentissage pour tenter de diminuer sérieusement le coût des calculs, et de garder la propriété généralisatrice des réseau de neurone.
J'ai donc effectué les mesures suivantes : pour des paramètres fixés (paramètres qui me donnent une convergence assez rapide), j'ai fait varier la taille de ma base d'apprentissage (de 10 à 3500 exemples), et j'ai calculé à chaque fois :
- l'efficacité sur la base de test qui ne sert pas à l'apprentissage (1797 exemples)
- l'efficacité sur l'ensemble des exemples dont je dispose (app+test=5626 exemples) (les exemples de la base d'apprentissage servent à la fois à l'apprentissage et au test)

Voici les résultats :

- Nombre d'erreurs sur la base de test :
http://site.voila.fr/updt/tipe/image1.jpg

- Pourcentage d'erreur sur la base de test :
http://site.voila.fr/updt/tipe/image2.jpg

- Nombre d'erreurs pour les 2 bases :
http://site.voila.fr/updt/tipe/image4.jpg

- Pourcentage d'erreur pour les 2 bases :
http://site.voila.fr/updt/tipe/image3.jpg

On remarque bien qu'à un moment les courbes ne décroissent plus trop rapidement (à partir de 1500 exemples environ) et elles évoluent vers un minimum : 80 erreurs environ (toutes bases comprises).
Avec 1500 exemples il y a 100 erreurs sur la base de test et 200 sur les 2.
(Avec les meilleurs paramètres initiaux que j'ai trouvé pour l'instant, j'arrive à 60 erreurs).

Est-ce que cette différence est significative ?
Et au vu des résultats que j'obtiens devrais-je donc, comme tu me le conseillais, me contenter de moins d'exemples ?

Merci, et @+,
Matthieu

NB : quelques résultats :

- Nombre de modifications du réseau en fonction de a (avec 30 neurones cachées et un coeff d'app de 1) :
http://site.voila.fr/updt/tipe/modif_a_30_1.jpg

- Nombre d'erreurs sur la base de test en fonction de a (avec 70 neurones cachées et un coeff d'app de 1) :
http://site.voila.fr/updt/tipe/erreur_a_70_1.jpg

- Nombre de modif en fonction du nbr de neurones cachées (avec a=0.05 et un coeff d'app de 1) :
http://site.voila.fr/updt/tipe/modif_nbr_005_1.jpg

- Nombre d'erreurs en fct du nbr de neurones cachées (avec a=0.05 et un coeff d'app de 1) :
http://site.voila.fr/updt/tipe/erreur_nbr_005_1.jpg

Si jamais vous avez le logiciel de calcul formel Maple que j'utilise pour tracer les courbes et les surfaces, je pourrais mettre aussi en téléchargement ces fichiers (on voit bien mieux avec les surfaces 3D...)

Réponse
+2
moins plus
1/ tapé nntool au fentre de winow de matlab
2/ sorte un tableau lode input and output
3/ ceat net
in netour the are nam
choisire l'algorithe " retoprobagation de gradien
fonction d'act
l'erreur
nobre de la couch caché
les nobre des neurones dans la couch caché
peut clic sur creat
revien a la tablu
clicé sur lr nom de votre net
sort un tablu de net
clicé sur targed
couché des input
choiser le nomber destrine and errur
clicé sur trien netowrk
ok

Réponse
+2
moins plus
meme DE problem Programmer un réseau de neurones et

Réponse
+1
moins plus
Bonsoir!
T'as deviné, je suis dans l'équipe #CENSURE# ! :-)

La laser ne demande pas énorme de traitement: juste pour détecter les distances...

Je vais bosser ton idée...

L'algo que j'espère en tirer n'est pas pour cette coupe car effectivement, pas le temps! mais on espère que le réseau pourra nous servir pour les autres coupe. D'où l'intérêt d'en trouver un qui "apprend" un objet à reconnaitre ... ca la vie n'est pas faite que de quilles....

Réponse
+1
moins plus
Quelques petites nouveautés...

J'ai illuster la procédure d'apprentissage du PMC en fixant tous les poids de mon réseau, sauf 2 poids que je faisait varier... En testant pour chaque couples de poids le nombres d'erreurs sur la base de test, j'obtient de très belles surfaces qui représentent des puits de potentiel (comme on pouvait s'en douter).
Ensuite j'ai fixé les valeurs de ces 2 poids de telle sorte à avoir une grande erreur, puis j'ai lancé l'apprentissage, en ne modifiant que ces 2 poids avec la procédure classique, et en gardant toujour sles autres poids fixes : on peut ainsi représenter l'évolution du réseau sur la surface précédente, et on remarque bien qu'il évolue vers un minimum de potentiel ! (encore heureux, sinon tous les calculs théoriques sur le sujet seraient faux !)

Vous pouvez retrouver ces courbes sur mon mini-site :
http://site.voila.fr/updt/tipe/tipe.htm

Juste un petit problème : j'espérait pouvoir trouver des courbes de potentiel avec plusieurs minimum locaux, mais malheureusement je n'ai pas réussi (et pourtant j'en ai essayé plein...)...

@+,
Matthieu

franky* 166Messages postés mardi 7 décembre 2004Date d'inscription 4 décembre 2008 Dernière intervention - 1 avril 2005 à 18:37
Juste un petit problème : j'espérait pouvoir trouver des courbes de potentiel avec plusieurs minimum locaux, mais malheureusement je n'ai pas réussi (et pourtant j'en ai essayé plein...)...

He he ! C'est normal : ça me paraît pas évident avec que 2 paramètres dans un cas aussi "simple". Le problème, c'est que tu ne cherches les optimums que de 2 params parmis un bon paquet... Or tous tes autres paramètres sont déjà fixés sur des valeurs qui "ne laissent pas trop le choix" aux 2 restants ! Il y a "une solution", et le reste marche moins bien !

Alors tu as le choix : soit tu crées un problème avec seulement 2 paramètres, juste pour l'illustration, en t'arrangeant pour qu'il y ait plusieurs minimums locaux (ça me paraît vraiment dur, là...), soit tu reprends ton réseau, mais au lieu de fixer tous les poids sauf 2 "au bon endroit" (ce que tu as du faire...), tu les fixe de manière tout à fait débile, pour bien avoir au moins 2 minimums (ton but, ce n'est plus la performance, c'est d'avoir un joli dessin !). Tu n'as qu'à faire plusieurs essais avec des poids au hasard, tu finiras bien par tomber sur un cas avec 2 min. Le problème, c'est la temps de calcul pour dessiner toute la courbe... Tu peux toujours essayer d'itentifier quelques poids particulièrement importants, et deviner (estimer de manière qualitative) comment les fixer pour qu'il y ait plusieurs possibilités de fixer les autres poids de manière à avoir 2 minimums...

Je pense pas avoir été très clair, je le reconnais ! ;-) Mais j'ai des circonstance atténuantes !!! :-ppp

A+
Réponse
+1
moins plus
BONJOUR;je cherche de l'aide s'il vous plait
Avec qu'elle commande on peut réaliser se réseau
http://img1.imagilive.com/0208/ANN3.jpg

Réponse
+1
moins plus
j'ai besoin des documents sur les reseaux de neurones

Réponse
+1
moins plus
bonjour a tous
je suis entrain de développer un réseau de neurones et plus précisément une application de prédiction et j'ai trouvé bcp de probléme:
1. prédire quoi?? et j'aimerai bien que sa soit dans le domaine d'informatique
2.quel est le langage que j vais l'utiliser pour créer cet application?le java ou le matlab?? si le java ,alors qui peut me conseiller quelle éditeur de java je pourrai utiliser pour faire des interfaces sans écrire le code source??
3. je vais utiliser la rétropropagation de l'erreur avec la méthode supervisée pour l'apprentissage,alors j veux savoir comment on fait l'apprentissage?? est ce qu'on utilise des bases de donnée pour faire l'apprentissage???
et comment le réseau va apprendre?? théoriquement je sais bien mais pour faire le programme dois-je utiliser des fichiers,des bases ou quoi !!!!!?????

a l'aide :)))
vous voyez que je n'ai pas encore commencé et je suis déjà bloqué ....alors je vous en prie : ))) s'il y a qqc qui peut m'aider je serai vraiment reconnaissante...et merci d'avance

cheherazad 12Messages postés lundi 7 juillet 2008Date d'inscription 3 avril 2009 Dernière intervention - 3 avril 2009 à 19:36
bonjour a toi choupinoussa
j'aimerai bien t'aider mais je préfère que tu me donnes ta boite mail c mieu pour t'envoyé d fichié.a plus.
Réponse
+0
moins plus
Bonjour à tous!

Je suis à la recherche de doc pour programmer un réseau de neurone sur un microcontrôleur. C'est pour faire de la reconnaissance d'objet (et plus précisement, une quille).
Je me documente pas mal sur le net mais je n'ai pas encore trouvé mon bonheur. De plus même soucis pour l'apprentissage...

Merci ;)
@@@@@@@@@

franky* 166Messages postés mardi 7 décembre 2004Date d'inscription 4 décembre 2008 Dernière intervention - 20 déc. 2004 à 16:59
OK, mais j'imagine que c'est différentes formes de quilles, que tu dois reconnaitre ? A moins que ce ne soit l'absence où la présence de quille (auquel cas le pb est différent !)... (quille de bateau, ou de jeu, d'ailleurs ?)

La première chose à faire est de décider d'une architecture, mais pour t'aider, il faudrait que tu m'en dises plus long sur le problème : quelle sorte d'entrée tu as, quelle taille de jeu d'apprentissage, etc.

La reconnaissance de forme marche très bien avec les réseaux à couches, mais en fonction du pb, peut-être qu'il faut envisager une solution tout a fait différente. Si tu gardes la solution des réseaux à couches, la méthode d'apprentissage classique s'appelle la rétropropagation (backpropagation en englais, si tu cherches de la doc).

Fonctionnement en qqs mots :
Dans le cas où tu n'as qu'une seule couche (le réseau s'appelle alors un "perceptron"), la méthode d'apprentissage est très simple : il suffit de modifier les poids directement en fonction de l'erreur commise sur chaque test (à condition de savoir quelle réponse il doit donner à chaque fois !).
Mais si tu as plus de couches, le problème est beaucoup plus complexe (on a pendant longtemps cru que ce n'était pas possible, a cause de ça !). Pourtant, une solution très efficace a finit par être trouvée, elle consiste en rien de plus que de modifier les poids de chaque couche en "rétropropageant" l'erreur commise, de la sortie vers l'entrée.

J'en dirai plus sur les détails techniques de l'opération si c'est bien cette méthode que tu dois utiliser, sinon, ça sert à rien de t'embêter avec ça.

Tiens-nous au courant,

Franky

Eléctions : Bush filled his SOUl with HOpe
totolito- 20 déc. 2004 à 17:48
Merci bien pour ta réponse!

Je souhaite trouver un moyen pour faire de la reconnaissance de forme pour un robot (e=m6).
Il utilisera une caméra et devra reconaitre si oui ou non une quille est présente à l'image (au choix: l'image est centrée sur la quille suposée grâce à un laser puis l'image est analysée par le réseau de neurones afin de confirmer, ou bien dès qu'une quille est détectée, le réseau envoi les coordonnées de l'objet)

voilà tout!
franky* 166Messages postés mardi 7 décembre 2004Date d'inscription 4 décembre 2008 Dernière intervention - 20 déc. 2004 à 18:51
Eh ben dis-donc !
T'as les moyens, si tu peux t'offrir un laser pour la coupe E=M6 ! ;-)
T'es dans quelle équipe ? Une école ?

En tous cas, t'embêtes pas, si tu décide d'utiliser un RN pour la reconnaissance, tu n'auras pas assez de puissance ou de temps (calcul !) pour utiliser un laser... Et inversement !

Mais l'idée du RN est très intéressante dans ce cas : l'apprentissage peut être aussi long que tu veux, mais une fois que ton réseau est entraîné, il est relativement rapide.

La première solution qui me vient en tête pour ton problème s'appelle la rétinotopie (toujours si tu veux chercher de la doc) : ça consiste en une carte de reconnaissance type Kohonen (j'explique après), mais l'entrée n'est pas la même pour tous les neurones -> c'est très utile si ta caméra te renvoie beaucoup de pixels, alors que tu veux gagner du temps en n'ayant que "peu" de neurones.
Une seule autre solution concurrente (pour moi ! Mais à vérifier...) : tu peux toujours utiliser une carte de Kohonen, mais avec un très gros prétraitement des données, bien bourrin pour gagner du temps de calcul ensuite.
A la réflexion, c'est même la 2ème solution la meilleure (ne serait-ce que parce que tu n'auras pas le temps d'étudier la première...)
Donc demande-toi ce qui différencie (à tes yeux, mais de manière facilement implémentable !) une quille de tout ce que voit le robot sinon, et traite chaque image de manière à laisser apparaitre cette différence.

Le but est de passer d'une image de (au pif) 300*300 pixels de ta caméra à une image 8*8 par exemple, sans perte d'information capitale (déjà, c'est pas gagné !)

Ensuite, Kohonen :
Commence par rechercher tout ce que tu peux sur "les cartes auto-organisatrices", parce que le cours serait un peu long ici ! Si tu as encore des questions après, je pourrai t'aider.
Ce qu'il faut savoir en gros : le principe de kohonen est une façon d'organiser une carte de neurones (plane dans ton cas) de manière à ce que chacun s'active plus que les autres lorsqu'une certaine configuration se présente, et surtout que 2 neurones proches sur la carte aient des configurations d'activation privilégiées (prototypes) proches !
Mais ce n'est qu'un principe, et il ne faut surtout pas tenter de le programmer tel quel ! En fait, il existe des algorithmes très simples qui simulent cette organisation, et c'est ça qui nous intéresse.

L'énorme intérêt pour toi de cette méthode, c'est qu'elle est "auto-organisatrice", c'est-à-dire qu'elle ne correspond pas à un apprentissage supervisé. Donc tu n'auras pas besoin de développer tout un jeu d'entraînement, mais seulement de présenter au réseau des données (pré-traitées comme expliqué avant), et de le laisser s'organiser.

Ce que tu vas obtenir, c'est une carte de neurones (Ex. 8*8 comme avant, peut-être plus), dans laquelle chaque neurone correspondra à une position de la quille (n'oublies pas de présenter des exemples où il n'y a pas de quille !). Comme tu n'auras pas supervisé l'apprentissage, tu auras toutes les chances que ce soit un réseau "à droite" (selon ton implémentation) qui s'active lorsque la quille est à gauche de l'image, mais quitte à tourner l'image dans tous les sens, les neurones s'activeront exactement suivant la position de la quille sur l'image !

D'où une petite réflexion : si les quilles sont au niveau du sol et que ta caméra ne monte pas ni ne descend, tu n'as pas besoin de créer une carte en 2 dimension, mais seulement 1 ! Et au lieu d'avoir 64 neurones, tu pourras te contenter d'en prendre 8, ou plutôt une quinzaine pour avoir un minimum de précision (sans oublier le cas absence de quille !!!).

Une fois que tu sais quel neurone s'active dans quel cas, ça devient très simple de diriger ton robot.

Par contre, 2 problèmes pour cette méthode :
Elle permet d'obtenir la direction d'une quille mais pas ses coordonnées ! Plutôt que de compliquer l'algo, on peut imaginer que tu places la caméra très haut et "regardant vers le bas" (ou l'inverse !), et on se retrouve avec le pb de la carte en 2 dimensions (par exemple si ton prétraitement fait ressortir la base des quilles, le réseau pourra "replacer" cette base dans l'image).
Pb 2 : si toute une équipe compte sur toi pour faire une méthode de reconnaissance correcte, en temps limité, c'est très chaud, alors fait en sorte qu'une autre méthode de secours soit développée en parallèle.

Je te laisse encore me tenir au courant,

A+

Eléctions : Bush filled his SOUl with HOpe
fleurfz- 17 mai 2008 à 20:04
salut,
Svp j'ai besoin de votre aide, je suis entrain de préparer mon projet fin d'etude sur la reconnaissance des visages, et j'utilise normalment le reseau de kohonen, mais j'arriv pas à programer ce reseau(sur c++ builder6) .
j'attend votre réponse(il me reste pas bq de temps)
merci d'avance.
lolo franky* - 7 mai 2008 à 10:19
Bonjour,
Je cherche a programmer un reseau de type perceptron a 3 couches pour la reconnaissance de formes. Je souheite le faire sur matlab, avec une couches de neurones d'entrée, une couche cachée et un neurone de sortie. Mon but "premier" est de réaliser l'apprentissage afin que mon réseau puisse reconnaitre des sinusoides de phases et fréquneces aleatoires.Puis on verra pour faire plus compliqué si ca marche!! Je me suis pas mal renseignée sur l'apprentissage par retropagation du gradient mais je coince un peu au niveau de matlab...c'est pas mon fort. Pourriez vous m'aider à coder l'apprentissage, j'ai cru comprendre en lisant les discussions que vous en connaissiez pas mal dans ce domaine.
Merci de votre réponse
Réponse
+0
moins plus
Bonjour! :o)
Je suis trés interessé par la explications que vous pouvez fournir en ce qui concerne la theoorie et la programmation d'un reseau neuronal.
Si vous avez quelques minutes à perdre, je suis preneur : xxxx@xxxx.xx
Merci d'avance à ceux qui me reponderont! ;o)

Modération : Pour ta sécurité et ta tranquillité, pas de données personnelles dans le pseudo ou le corps des messages. De plus, le principe même d'un forum est de poser publiquement sa question pour que tous profitent d'une réponse publique...

franky* 166Messages postés mardi 7 décembre 2004Date d'inscription 4 décembre 2008 Dernière intervention - 23 déc. 2004 à 12:46
Salut,

Pour la théorie comme pour la programmation, le mieux est de trouver de la documentation bien faite, mais je n'en connais aucune qui soit bien présentée, et qui corresponde au niveau débutant... (flemme de chercher, peut-être)

Ensuite, on peut toujours trouver beaucoup de doc sur des points plus précis, car il faut savoir que le domaine réseaux de neurones est très vaste !

Et c'est donc là que je veux en venir : tu peux effectivement t'intéresser à plein de choses différentes pour la théorie, mais si tu veux te mettre à la programmation, tout va dépendre du problème exact qui t'est posé (ou que tu te poses).

Je te donne une explication sommaire des concepts de base qui t'aidera peut-être pour ta recherche de documentation :
Si a la base, le but des RN était d'aider les recherches en neurobiologie, les RN actuels sont bel et bien informatiques, et il n'est pas toujours évident de voir où se situe le lien avec de vrais neurones.
les premiers résultats concluants, trouvés il y a relativement longtemps, concernent le perceptron : c'est donc un type de réseau très simple, et traditionnellement celui par lequel on commence la présentation des RN. Il s'agit d'un réseau "à une couche", c'est-à-dire que tu as des valeurs d'entrée (Ei), tu cherches des valeurs de sortie (Si), et les seules connexions possibles vont d'un Ei à un Si. Son principe de calcul s'appelle la loi de Hebb.

La généralisation du perceptron donne les "réseaux à couches", basés sur la rétropropagation (voir plus haut dans la discussion)

Une architecture différente permet d'aboutir à des réseaux entièrement connectés (je te fait pas de dessin). Il est plus compliqué sur le principe (donc moins utilisé), car il pose le problème de la stabilisation du réseau, qui est mathématiquement plus difficile à déterminer.

Si l'on utilise ces 2 architectures, c'est que ce sont les plus fréquentes dans la biologie, et qu'elles ont une description informatique simple. Mais la première représente plus la notion de fonction, tandis que la seconde correspond plus à un filtrage.

Ensuite, il y a les réseaux non-supervisés, avec en priorité kohonen (encore une fois, voir plus haut) : jusque là, pour entraîner ton réseau, tu devais avoir un jeu d'entraînement composé d'entrées et des sorties désirées associées. Maintenant (en non-supervisé), si tu fournis à ton réseau des exemples de données différentes mais bien réparties, il va avoir tendance à les classer en catégories "proches" (cette notion de proche est le problème principal de cette méthode). Et donc tu n'auras plus à fournir les résultats attendus. Comme on peut s'en douter, c'est très utile pour la reconnaissance de formes et le traitement d'images.

Il existe encore bien d'autres types de réseaux, mais c'est plus du niveau de la recherche que de l'exploitation, pour l'instant.

J'espère que tu t'en sortiras avec ça.

Eléctions : Bush filled his SOUl with HOpe
Réponse
+0
moins plus
Réponse à Franky.

Pour l'instant, mon réseau reconnait des chiffres dans une matrice 5*7. Mais je suis en train de le modifier pour qu'à la fin il prenne en entrée un bmp de taille définie, ca ne va prendre beaucoup de temps, il suffit juste de changer le nombre de neurones d'entrée.
Pour qu'il reconnaisse aussi les lettres, il suffit que je change le nombre de neurones de sorties ( et les exemples evidemment ).

Il reconnait efficacement apres environ 200 apprentissages de chaque caractère. Il est presque infaillible dans le cas de caractères non douteux. Mais pour les cas litigieux, il dit l'une des réponses possibles ( mais bon, on ne peut pas lui demander de reconnaitre des caractères qui ressemblent à rien ).

Par contre, je n'ai mis qu'un exemple par caractère ( calligraphie carrée ). Je vais tenter d'augmenter le nombre d'exemples et voir le résultat. ( par exemple, le "4" existe sous de nombreuses formes, et je n'en ai rentré qu'une pour l'instant ).

Voilà voilà.

Ce document intitulé «  Programmer un réseau de neurones  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.