Rechercher : dans
Par :

Programmer un réseau de neurones

Dernière réponse le 17 nov 2009 à 18:45:06 xavier, le 16 oct 2004 à 20:05:13 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « Programmer un réseau de neurones » dans :
Ressources programmation système Linux VoirVoici quelques liens qui vous permettront de vous aider à vous débrouiller avec la programmation système sous Linux. Tutoriels * Page de M. Billaud (fr) Un cours/tutoriel sur la programmation système et réseau sous Unix. Très complet. Cours de...
Sécuriser ses réseaux professionnels VoirSécuriser ses réseaux professionnels Virus, spyware, spam des milliers de programmes néfastes sont aux portes du réseau informatique de votre entreprise et de votre ordinateur professionnel. Qui sont-ils et comment bloquer définitivement leurs...
Programmation réseau - Les sockets VoirIntroduction aux sockets La notion de sockets a été introduite dans les distributions de Berkeley (un fameux système de type UNIX, dont beaucoup de distributions actuelles utilisent des morceaux de code), c'est la raison pour laquelle on parle...
Introduction aux réseaux de neurones VoirIntroduction aux réseaux neuronaux Les réseaux de neurones (ou réseaux neuronaux, en anglais neural networks) ont fait leur apparition à la fin des années 50 dans le but d'imiter le fonctionnement des neurones biologiques (du cerveau). Mais...
Outils réseau VoirIntroduction aux outils réseau Les réseaux informatiques sont par nature complexes car leur administration demande des compétences sur un grand nombre de domaines. Par ailleurs la multiplicité des protocoles, des systèmes d'exploitation et des...

2

Obeet, le 16 oct 2004 à 22:54:39
  • +4

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

Répondre à Obeet

3

franky*, le 15 déc 2004 à 23:21:17

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

Répondre à franky*

68

manou_2, le 25 aoû 2005 à 09:40:03

Bonjour franky!!

Je voudaris savoir ce que c'est un apprentissage (réseaux de neurones)
zéro mémoire!! on utilise quoi comme algotithme généralement?
Merci

Répondre à manou_2

69

franky*, le 25 aoû 2005 à 10:00:56

Salut,
Je ne me souviens pas avoir déjà entendu parler d'apprentissage zéro mémoire, c'est d'autant plus bizarre que si ton réseau "apprend" qqch, c'est qu'il a une mémoire. Et cette mémoire, c'est simplement les poids des connexions.

Les algorithmes d'apprentissage, pour un perceptron multi-couches, sont tous basés (à ma connaissance) sur la loi de Hebb, qui exprime le fait que 2 neurones qui travaillent ensemble voient leur liaison se renforcer. Ils sont également tous équivalents à un algorithme de descente de gradient (si tu as fait de la physique, ça doit te parler).
Et si tu veux plus d'informations, l'algorithme type s'appelle tout simplement algo de rétropropagation du gradient, ensuite, il en existe des variantes...
Tout ça doit se trouver sur internet.

J'espère que ça t'aidera,
Franky*
Devine si tu peux, et choisis si tu l'oses

Répondre à franky*

70

rachon, le 6 déc 2005 à 17:02:08
  • +3

Salut franky c'est sympa de ta part de vouloir nous aider
on a crée moi et mon pote ce compte pour te contacter et si on ne reussi pas dans la programattion nous sommes dans la merde c'est un TP noté et nous blocquons sur l'algorithme d'apprentissage
le prof ve la methode de descente du gradient

en effet je dois programmer un reseau de neurones
j'ai 4 neurones d'entrées
(1 couche cachée : 3 neuronnes)
1 neurone de sortie (qui prend les valeurs soit 0 soit 1)
il nous faut programmer l'algorithme d'apprentissage (méthode de la descente du gradient) on doit faire cela sur maple ou C++ .
si tu as des exemples peut tu nous les envoyés ou si tu as la solution merci de bienvouloir nous aider
Car le but c'est de tracer la courbe d'erreur en fonction du nombre de neurone de la couche cachée
on atteind impatiament ta réponse
merci

Répondre à rachon

71

franky*, le 6 déc 2005 à 17:33:43
  • +1

Salut,

J'espère pouvoir encore vous aider, mais ce n'est pas mon domaine, et j'oublie progressivement comment ça marche.

Déjà, il doit y avoir pas mal de réponses à vos questions dans les autres messages de ce post.

Ensuite, je sais que ça ne rentre pas dans le cadre de votre projet, mais si vous avez accès à Matlab, la toolbox réseaux de neurones est très bien faite (et permettrait de répondre facilement à la question de l'influence du nb de neurones de la couche cachée sur l'erreur).

Sinon, je peux déjà vous donner la réponse (quelle que soit la fonction à approximer) : l'erreur va diminuer progressivement (meilleure capacité d'apprentissage), puis réaugmenter rappidement (sur-apprentissage).

Pour finir, je ne vois pas trop comment vous aider pour la descente de gradient : il doit surement y avoir plein de cours sur internet (

http://fr.wikipedia.org/wiki/R%C3%A9tropropagation
par exemple), donc je pourrais plutôt vous aider pour des détails, mais pas pour expliquer toute la méthode !
En deux mots, la descente de gradient consiste à toujours suivre la pente maximale, entre le résultat voulu et l'endroit où on se trouve, mais elle a un ENORME défaut : elle reste coincée dans les minima locaux ! (voir à ce sujet le "recuit simulé").

Bon courage ! Devine si tu peux, et choisis si tu l'oses

Répondre à franky*

78

zineb, le 15 jun 2006 à 15:57:33

Bonjour,
je suis étudiante et la je fais un stage sur les réseaux de neurone.
on me demande de faire des réseaux de neurone en matlab mais ils n'ont pas la toolbox donc je fais avec BNT une librairie de matlab en libre service.
le probleme c'est que je ne sais pas m'en servir.
je sais que j'ai 2 entrées ,4 cachés,1 sortie.
je suis l'algorithme de retropropagation en feedforward.pourrais tu m'aider?
merci beaucoup
ps : que signifie le terme boite noire.
merci d'avance

Répondre à zineb

79

franky*, le 15 jun 2006 à 16:10:07

Salut,

Là, je ne vais vraiment pas pouvoir t'aider : ce n'est plus du tout mon domaine (en plus, pas trop de temps...)
Tout ce que je peux dire, c'est que sans toolbox, ça ne me parait pas trop faisable...

Par contre, pour la boite noire, ça veut simplement dire un système (ici, le réseau) qui possède des entrées et des sorties, mais dont on ne connait pas l'architecture interne (ou du moins, on ne peut pas la modifier). Autrement dit, c'est comme si tu te retrouvait devant une boite fermée : la seule manière de l'étudier, c'est de faire des expériences en lui fournissant des valeurs d'entrée et en observant le résultat.
A là limite, tu ne sais même pas que c'est un réseau de neurones, ça pourrait être n'importe quel système qui a le même comportement.

Bon courage,
François
Devine si tu peux, et choisis si tu l'oses

Répondre à franky*

105

dj, le 1 mar 2008 à 11:27:36

Slt,
je travaille sur le meme sujet que vous ;modelisation et commande du ph par reseaux de neurones
pour matlab je vous conseille de voir le guide de matlab v6 neural network

Répondre à dj

161

 GUUEK 24780--..')+, le 17 nov 2009 à 18:45:06

Salut dj, je me suis mis aussi en tete de faire un petit reseau delire , as tu utiliser le v8 de la version 2.4? les patch sont optimiser, contacte moi je te dirait comment l'installer et plus si tu veu... LOL :o*)


UN NEURONE PENSANT VAUT MIEUX QU'UN RESEAU SOUS IPV6.....

G

Répondre à GUUEK 24780--..')+

116

Ghassen, le 21 avr 2008 à 17:46:53

Bonjour je suis en train de developper mon projet fin d'etudes j'ai fini la partie de l'etat de l'art et je passe maintenent à la partie programmtion Matlab d'un algorithme d'apprentissage pour un modele connexionniste
j'ai besoin vraiment de votre aide et un enorme merci d'avance

Répondre à Ghassen

127

snipermod84, le 5 jun 2008 à 17:00:34

Salut Francky.J'ai demandé une aide sur les réseaux de neurones mais depuis la personne pour me repondre.La question se trouve dans la rubrique programmer réseaux de neurones.Mon nom d'utilisateur est snipermod84 alors si tu peux m'aider merci de bien vouloir me le faire parvenir.vraiment très urgent

Répondre à snipermod84

86

caractaire, le 12 sep 2007 à 14:26:40

Je sui un étudiant j'ai un sujet sur la reconnaissance des caractère est je veut faire
cette reconnaissons par les réseaux de neurone est je ne sait pas par ou je commencer
Merci pour ton aide
mon email: kerkour8@yahoo.fr

Répondre à caractaire

90

abdel2005, le 11 déc 2007 à 15:18:44

Bonjour Franky,
J'ai suivi tes explications sur les réseaux de neurones pour Xavier.Je te demande si tu veux m'aider.Je cherche à comparer les méthodes Hessiennes (méthodes qui dérivent de Newton),les algorithmes génétiques et enfin les réseaux de neurones.Mon problème est le suivant:Je veux optimiser (recherche du min et max) d'une fonction quadratique (carrée) sous contraintes de types égalités et inégalités par les réseaux de neurones.C'est résolu pour les autres méthodes .
Merci d'avance

Répondre à abdel2005

98

queen, le 16 fév 2008 à 10:31:57

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.

Répondre à queen

100

franky*, le 18 fév 2008 à 13:37:28

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

Répondre à franky*

104

Niko92, le 25 fév 2008 à 21:04:15
  • +2

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

Répondre à Niko92

111

lielectron, le 28 mar 2008 à 17:02:43

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

Répondre à lielectron

124

mjouda, le 22 mai 2008 à 14:49:15
  • +1

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épondre à mjouda

4

tafiscobar, le 16 déc 2004 à 14:48:07
  • +1

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épondre à tafiscobar

5

xavier, le 18 déc 2004 à 16:26:23
  • +1

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

Répondre à xavier

6

franky*, le 18 déc 2004 à 23:39:01
  • +2

Effectivement, pour la reconnaissance de caractères, rien ne vaut un réseau à 2 couches avec rétropropagation. C'était surtout pour t'expliquer cette méthode que j'aurais pu t'être utile, parce que c'est effectivement très simple sur le principe, mais pas toujours bien expliqué. D'ailleurs, si la documentation que tu as trouvée est en ligne (et bien faite), tu peux me donner l'adresse ?

Sinon, j'imagine que la reconnaisssance se fait sur une grille, tu peux me dire de combien sur combien, et à quel point c'est efficace ? (est-ce que tu peux reconnaitre toutes les écritures, avec quel pourcentage de réussite, etc.) (enfin si tu as fait les tests, bien sûr !)

Pour ce qui est de programmer de l'intelligence, tout dépend de ton objectif, et surtout de ce que tu appelles intelligence ! Les réseaux de neurones sont très adaptés à la reconnaissance, par exemple, même s'il existe d'autre méthodes de reconnaissance plus efficaces pour certains domaines (Ex reconnaissance de la parole par des réseaux Bayésiens, ou des modèles de Markov en général).
Et puis il existe d'autres architectures de réseaux de neurones que celle des couches ! C'est d'ailleurs très impressionnant : chaque fois que l'on a une nouvelle idée de type de réseau, on découvre un endroit dans le cerveau où la même "astuce" est utilisée (mais je pense que l'inverse est plus vrai encore : les modèles informatiques s'inspirent de la biologie !)

Si tu as des questions précises, n'hésites pas !

Eléctions : Bush filled his SOUl with HOpe

Répondre à franky*

18

donny, le 14 fév 2005 à 22:20:12
  • +1

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épondre à donny

52

sabeur, le 28 mar 2005 à 13:30:49
  • +1

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.

Répondre à sabeur

53

franky*, le 28 mar 2005 à 14:41:54
  • +4

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 !
Devine si tu peux, et choisis si tu l'oses

Répondre à franky*

160

sabeur_mas, le 28 avr 2009 à 19:53:52
  • +1

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.

Répondre à sabeur_mas

119

chaa500, le 5 mai 2008 à 01:18:45

Bonjour sabar

contacte moi sur sKype

aach1978@yahoo.fr

pseudo chaa500

Répondre à chaa500

hichem, le 16 fév 2005 à 09:32:20

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

Répondre à hichem

64

mermade ratiba, le 18 avr 2005 à 13:49:50

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épondre à mermade ratiba

125

wissal, le 30 mai 2008 à 20:05:16

Je suis en train de travailler sur la reconnaissance de caractères
est ce que tu peux m'envoyer ton programme stp ça pourra m'aider énormément
merci d'avance
email:khadrouf.wissal@gmail.com

Répondre à wissal

7

Totolito, le 20 déc 2004 à 15:06:51

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 ;)
@@@@@@@@@

Répondre à Totolito

8

franky*, le 20 déc 2004 à 16:59:43

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

Répondre à franky*

9

totolito, le 20 déc 2004 à 17:48:04

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!

Répondre à totolito

10

franky*, le 20 déc 2004 à 18:51:37
  • +4

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

Répondre à franky*

121

fleurfz, le 17 mai 2008 à 20:04:37

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.

Répondre à fleurfz

120

lolo, le 7 mai 2008 à 10:19:04

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épondre à lolo

11

totolito, le 20 déc 2004 à 19:26:25

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épondre à totolito

12

Thomas, le 23 déc 2004 à 07:05:08

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 : thomas.b3@wanadoo.fr ou sur MSN : thot_0k@hotmail.com
Merci d'avance à ceux qui me reponderont! ;o)

Répondre à Thomas

13

franky*, le 23 déc 2004 à 12:46:04

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épondre à franky*

14

Xavier, le 30 déc 2004 à 13:04:24

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

Répondre à Xavier

15

franky*, le 30 déc 2004 à 21:51:31

OK, ben c'est très bien, de bons résultats comme ça !

Juste une remarque :
non, ça ne va pas être facile d'augmenter arbitrairement la taille de la grille d'entrée !
La raison est très simple, c'est que si on te dit d'écrire le chiffre 5 sur une feuille A4, tu vas pouvoir l'écrire petit, grand, à gauche, à droite, etc.
Les réseaux à couches sont très démunis dans ce cas-là !
Et augmenter le nombre de neurones de la couche d'entrée est sans doutes la pire chose à faire : chaque neurone vas se trouver très isolé, et si ton réseau est habitué à voir un chiffre en haut à gauche, il ne reconnaitra rien si le même chiffre se trouve en bas à droite.

En plus, ça ne servirait à rien d'augmenter le nombre d'exemples pour s'entraîner sur "tous" les jeux possibles, car l'apprentissage dans un tel cas est par essence impossible.

Donc la solution (j'en ai parlé un peu plus haut dans la discussion), c'est le prétraitement ! Dans le cas de la reconnaissance de caractères, ce qui se fait souvent, c'est commencer par isoler (donc reconnaître, mais par d'autres méthodes) des caractéristiques essentielles (intersection, etc.), puis de les positionner les unes par rapport aux autres.

Eléctions : Bush filled his SOUl with HOpe

Répondre à franky*

16

xavier, le 9 jan 2005 à 11:34:31

Je suis bien d'accord avce toi, et je t'avoue que je ne comptais pas ne pas faire de prétraitement. Quand je disais augmenter le nombre de pixel, ca sous entendait quand même un prétraitement, de sorte que les caractères soient centrés dans la grille, et aient la même largeur ainsi que la même longueur.
Merci quand même de t'intéresser à mon programme.

Répondre à xavier

17

franky*, le 9 jan 2005 à 12:01:59

De rien :-)

Tiens-moi au courant de l'avancement...

Et puis si y'a un problème inattendu, ou si tu veux des conseils, pareil ;-)

Eléctions : Bush filled his SOUl with HOpe

Répondre à franky*

19

donny, le 14 fév 2005 à 22:21:12

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épondre à donny

20

franky*, le 15 fév 2005 à 10:38:58

Salut Donny,

Je voulais t'envoyer un bon cours (http://www.metz.supelec.fr/~frezza/Cours.html : c'est celui que j'ai eu cette année) mais le seul lien qui ne marche plus, c'est justement le cours de DEA. Je laisse l'adresse parce qu'il y a surement d'autres liens utiles...

Sinon, je veux bien t'aider, mais sur des points précis que tu ne comprends pas : je ne remplacerai pas un cours ! Et surtout, je ne pourrai pas t'aider pour la programmation, je ne programme jamais rien ! ;-)

Donc comme mots clés, tu peux chercher (j'ai du parler de tout ça dans les posts précédents) : kohonen+paradigme (ou principe), cartes auto-organisatrices, compétition+neurones+"chapeau mexicain" (<- tout ça, c'est pour le principe), orientation orientée masque+entrée, valeurs nominales, apprentissage non supervisé, rétinotopie (pas obligatoire !!! c'est déjà plus avancé, comme notion), réseaux incrémentaux (pour ça, il doit y avoir un lien sur la page que je t'ai donnée vers la page de Fritzke : c'est lui qui a développé ça !)

Evidemment, tu mélanges tout ça, et quand tu auras l'impression de maitriser toutes ces notions, tu devrais être capable de te débrouiller. S'il y en a que tu ne trouves vraiment pas, tu peux m'en demander plus, bien sûr, mais je ne travaille pas exactement dans ce domaine...

Bon courage, y'a du boulot en perspective ! Devine si tu peux, et choisis si tu l'ose

Répondre à franky*

118

éspoir, le 23 avr 2008 à 13:24:37

Bonjour
si quelqu'un a déja essayé les filtre existant sous matlab me di quel est le meilleur pour filtrer un signal aléatoire (de parole) afin de ne pas perdre l'information et surtout pour extraire quelques parametres pertinents.
svp n'ésité pas a me donner la moindre idée je suis vraiment perdu
au revoir

Répondre à éspoir

21

Saadbou DIAWARA, le 22 fév 2005 à 17:07:56

Salut
moi aussi j'ai besion voir le code source de ce programme mais plustot en java. En effet je dois presenter un memoir sur le data mining et vous savais ele reseau de neurones est un outil du data mining (sans doute le plus utilisé)
alors j'ai fais des recherches sur les codes java des differents outils du data mining mais je n'arrive tjrs pas a recevoir des reponses que j'attends vraiment
Si vous pouviez m'envoyer des codes portant sur le data mining ce serait vraiment gentil de votre part

merci et a bientot j'espere

Répondre à Saadbou DIAWARA

22

matmdx, le 26 fév 2005 à 16:50:46

Bonjour à tous,
Je vois que sur ce forum les réponses apportées sont souvent pertinentes et intéressantes (ce qui n'est pas le cas de tous les forums il faut bien le dire...), donc je vais tenter ma chance à mon tour !

Voilà : je suis entrain de coder un réseau de neurone destiné à la reconnaissance de caractères manuscrits (je ne m'intéresse ici qu'aux chiffres, mais bon le principe est le même...). Mon réseau est un perceptron multi-couche :

- 1 couche d'entrée de 64 neurones (images de 8*8 pixels)
- 1 couche cachée au nombre de neurones variable
- 1 couche de sortie de 10 neurones (de 0 à 9)

J'utilise bien entendu un algorithme de rétroprogation du gradient pour le calcul des poids.
Pour l'apprentissage j'utilise une base de donnée de 3823 images de 8*8 pixels en niveaux de gris et environ 1800 pour les vérifications (cette base est gratuite et disponible à cette adresse :

http://www.ics.uci.edu/~mlearn/MLRepository.html
dans la section 'optdigits').

Au début mon réseau ne fonctionnait pas ou peu, comme pour un certain nombre d'entre vous (je suppose). J'ai alors décidé de paramétrer tout le réseau :

- fonctions de transfert à paramètres (et non pas une simple sigmoïde) : j'entends par là f(x) = 1/(1+exp(a*x)) translatée de plus entre -1 et 1 pour une meilleure efficacité (a variable)
- nombre de neurones de la couche cachée
- coefficient d'apprentissage : coeff pour la modification des poids : w = w +b*modif (b variable)

En procédant de la sorte on obtient tout de suite des résultats très satisfaisants et je pense que les documents que l'on peut trouver sur le sujet n'insistent pas assez sur ce point.
(personnellement j'ai trouvé a=(de 0,08 à 0,12 ) environ, et b entre 0,1 et 1 : b ne change pas grand chose à l'efficacité du réseau mais peut accroîrte la rapidité des calculs..).

En fait ce que je veux faire c'est étudier ce réseau à fond, et trouver les paramètres qui permettent d'obtenir un réseau le plus efficace possible (l'efficacité du réseau est pour moi la reconnaissance par le réseau des images de la base de vérification qui n'interviennent pas dans l'apprentissage, ainsi que le coût d'apprentissage ou la durée d'apprentissage ou le nombre de modification des poids lors de l'apprentissage, comme on veut).
J'ai déjà fait tourné mon PC pendant de nombreuses heures (une bonne journée au moins, et oui c'est très long !!!...), et certains résultats m'étonnent.

- Pour le paramètre des sigmoïdes tout ce passe comme je l'imaginait : si on représente l'efficacité en fonction du paramètre on obtient une forme de parabole avec un minimum (qui correspond pour mon réseau à 0,115 environ). Donc de ce côté là tout va bien !

- par contre plus j'augmente le nombre de neurones de la couche cachée et plus le réseau est efficace, aussi bien au niveau de la base de vérification qu'au niveau du coût des calculs (sans toutefois aller trop loin sinon le coût n'est pas négligeable) : moi qui pensait que le "bon nombre de neurones" de cette couche serait de l'ordre du nombre de neurones de la couche de sortie (comme c'est parfois conseillé dans les documents), j'obtiens des couches avec près de 20 à 100 neurones !!!

Est-ce que quelqu'un pourrait m'expliquer cela ??

Sinon concrètement pour l'efficacité j'obtient un taux de réussite au minimum de 3% sur la base d'apprentissage (ce qui fait quand même environ 60 exemples non reconnus) et bien sûr 100% sur la base d'apprentissage. J'obtiens de plus environ 60% d'efficacité sur des images que j'ai moi même scanées.

C'est pas mal, mais est-ce qu'il y a moyen d'améliorer ces résultats ??

Merci de vos réponses,
Matthieu

Répondre à matmdx

23

franky*, le 28 fév 2005 à 23:38:13

Salut Matthieu,

Ca fait plaisir d'avoir un problème aussi bien posé !
Bon, y'a plein de choses à dire, alors je pense que je répondrai en plusieurs fois...

Avant tout, merci pour l'adresse de la base d'exemples, c'est toujours utile, des trucs comme ça.

Ce que tu fais là, c'est un travail de recherche de niveau mastere, alors si c'est pas indiscret... Tu fais quoi, dans la vie ?

Bon, première remarque sur tes 3 paramètres :
Le coefficient d'apprentissage (b) est très classique, et utilisé par tout le monde, normalement. Tu as bien identifié ce qu'il faisait, accélérer le calcul, mais pour être plus précis, il faut trouver un juste milieu : s'il n'est pas assez grand, ton réseau met des plombes à s'entrainer, mais s'il est trop grand, tu perds en finesse, et tu risque d'osciller (donc perdre du temps), voire de ne pas trouver le minimum global (les poids optimaux). Une solution simple et généralement employée, c'est d'avoir un paramètre variable : tant que les variations des poids se font dans le même sens, tu augmentes b à chaque pas de calcul, et quand tu sens que tu t'approche des poids optimum, tu diminues b à chaque pas.
Mon conseil : laisse tomber ce problème, il a été et est encore étudié, mais pour un raiseau donné qui doit faire un travail donné, si tu as un b qui a l'air de bien marché, n'y touche pas !

Deuxième paramètre : a
Je n'ai jamais entendu parler d'une paramétrisation de la fonction de transfert, et je dois dire que tes résultats me paraissent... étonnants. Je m'explique : tu me donnes l'impression d'avoir super bien étudié la question, puisque tu obtiens un paraboloïde avec un minimum bien marqué. Donc c'est une question qui mérite d'être approfondie ! Peut-être que tu es un précurseur sur ce point (on peut toujours rêver. En tout cas, je ne pourrais pas me prononcer avec certitude : je ne travaille pas dans le milieu des RN actuellement !). Mais juste une chose : est-ce que tu as bien réalisé cette "expérience" (parce que je sais que c'est long, l'expérimentation sur les RN, alors si tu as déterminé une parabole avec seulement 5 points, avant de breuveter ta découverte, vérifie ! Bon, OK, c'est un peu exagéré, mais c'était pour te montrer ce que je voulais dire) ?
En fait, si je me permets de douter, c'est pas pour rien : tu es d'accord pour dire que les poids sont des valeurs réelles (théoriquement) ? Donc la somme des entrées pondérées également. Et la valeur de sortie d'un neurone (en supposant par exemple qu'elle est comprise entre -1 et 1) doit pouvoir s'approcher de 1 ou de -1. J'en déduis (mais c'est à vérifier) que si tu peux obtenir un résultat en un temps donné avec une faible valeur de a, donc une sigmoïde "étirée", tu dois pouvoir obtenir le même résultat avec une sigmoïde "normalisée" (a=1), dans le même temps, juste en jouant sur le taux d'apprentissage b ! (dans ce cas, b sera plus faible). Peut-être que tu as fait ton test avec une valeur de b fixée qui favorisait effectivement a=0,115. A ce moment là, on retombe sur le problème de l'optimisation de b. Peut-être aussi que ta méthode, pour étirer les sigmoïdes, permet d'avoir plus de précision avec un codage fixé pour les réels. Mais je pense que des floatants sur 16 bits sont largement suffisant précis pour enregistrer des poids (puisque cette précision est négligeable devant b).

Quoi qu'il en soit, ces paramètres a et b n'interviennent que pour la rapidité d'apprentissage, et pas pour l'efficacité du réseau proprement dit.

On en arrive donc à la partie intéressante : le nombre de neurones de la couche cachée. Avant tout, il n'y a pas de recette miracle pour trouver le bon nombre de neurone d'une couche ! Il n'y en a jamais eu, et si certains textes conseillent de mettre le même nombre dans la couche cachée que dans la couche de sortie, il ne faut pas leur faire confiance ! En fait, ça pourrait marcher, si tu avais autant de neurones dans la couche d'entrée que dans celle de sortie : tu n'aurais aucune raison de changer ce nombre entre les 2 (et encore ! Ca dépend pour quoi faire !). Maintenant, pour passer de 64 à 10, il faut trouver un juste milieu qui peut effectivement être à 5 comme à 500 neurones ! Personellement, j'aurais commencé avec 40 (ça, c'est juste par expérience, je peux pas t'expliquer pourquoi en fait).
Mais il y a un point sur lequel j'aimerais revenir : tu utilises des "couches" abstraites qui ne tiennent pas compte de l'aspect "dessin" (donc planaire) de la représentation d'un chiffre. Alors je sais, on peut se dire que les connections vont se faire et se défaire au fil de l'apprentissage pour lier les neurones "proches", c'est-à-dire qui apparaissent souvent ensemble. Mais il reste un problème : a aucun endroit dans ton réseau tu n'indiques que 2 neurones voisins sur la grille d'entrée sont voisins par leur influence sur le réseau et peuvent éventuellement se substituer l'un à l'autre ! Il y a donc tout un paquet d'informations importantes dont tu ne te sers pas.
Il existe une solution bien plus adaptée à la reconnaissance de formes (donc de caractères) dans la catégorie RN : les cartes auto-organisatrices et tout ce qui en découle (j'en ai parlé plusieurs fois plus haut). Mais ne te décourage pas pour autant ! Ton réseau n'est peut-être pas ce qui se fait de mieux pour la reconnaissance de chiffres, mais il présentes un intérêt théorique, et peut même être utile pour un autre usage (à toi de découvrir). Et dans ce cas, ta base d'exemple, même en n'étant composée que de chiffres (donc de matrices) est un base comme une autre pour tester ton réseau !
Elle est peut-être juste un peu grande par rapport à la taille de ton réseau, ce qui te fait perdre un peu de temps : je pense qu'une cinquantaine d'exemples par caractère sont largement suffisants pour l'apprentissage !

Bon, c'est pas tout ça mais il se fait tard, donc la suite dans la semaines... N'hésites pas à répondre ! Surtout si tu n'es pas d'accord avec ce que j'ai dit ;-p
Devine si tu peux, et choisis si tu l'oses

Répondre à franky*

24

matmdx, le 1 mar 2005 à 18:39:35

Eh bien ! ça n'a pas traîné !
Merci Franky* pour ta réponse.

>>> Tu fais quoi, dans la vie ?

Je suis en prépa maths !!! :-)
En fait je travaille sur ce sujet dans le cadre de mes TIPE...

>>> Coefficient b :

Je ne reviens pas dessus car on semble être d'accord.

>>> Coefficient a :

Je te confirme que j'ai réalisé des mesures très précises (et que d'autres sont prévues) : pour chaque couple de paramètres ( a , nombre de neurone de la couche cachée) j'entraîne 10 réseaux et je récupère pour chacun le nombre de modification des poids et le nombre de chiffres reconnus sur la base de test, puis ensuite j'effectue une moyenne des 10 valeurs... En effet je ne peut pas effectuer les mesures sur seulement 1 réseau, les poids initiaux étant choisis aléatoirement !

J' ai donc réalisé ces mesures pour 160 couples de paramètres (!!!) pour obtenir une belle surface en 3D !
J'observe donc la décroissance pour les neurones cachés et la cuvette pour le coeff a, pour le nombre de modifications.
J'observe la décroissance pour les neurones cachés, et une cuvette (applatie d'un côté) pour l'efficacité.
(si tu veux des images, je peux te les envoyer par mail)

J'aime bien ton idée de compensation de a par b et vis versa, et je vais voir si ça se vérifie expérimentalement. De toute manière je comptais réaliser à nouveau les mesures pour d'autres coeff d'apprentissage a.

>>> La couche cachée :

Ta réponse me rassure ! Merci ! ;-)

>>> Influence des neurones proches :

C'est vrai, dans mon réseau un neurone n'influence pas ceux qui sont proches de lui. J'avoue que je n'avais pas pensé à le faire, mais qu'aussi je ne vois pas trop comment le faire... faudra que tu me ré-expliques ça plus en détail... si ça apporte vraiment quelque chose pour ce type de réseau. (je verrais plutôt ça dans des réseaux de type Hopfieldiens...)

>>> La taille de la base d'apprentissage :

Je compte également réalisé des mesures en fonction de la taille de la base, mais ce que j'ai constaté sur quelques exemples (et ce qui me paraît tout à fait logique) pris pour des valeurs différentes de la taille de la base, c'est que l'efficacité est meilleure plus il y a d'exemples ! Par contre c'est vrai le coût d'apprentissage est moindre pour des bases plus petites (logique aussi).

>>> Les autres types de réseaux :

Tu vas rire, mais je compte également réalisé 2 autres réseaux de type carément différents (pour la reconnaissance de caractères toujours), pour de même effectuer des mesures, et au final comparer l'efficacité des 3 réseaux !! :-)

Je compte réaliser très prochainement :

- un réseau de type carte auto-organisatrice de Kohonen (comme tu me le conseille), mais je ne pensais pas que c'était lui le meilleur (d'après toi)

- un réseau de type mémoire auto-associative de Hopfield (j'avais déjà essayé, mais ça marchait pas... mais je compte recommencer !)

Je ne suis pas au bout de mes peines !!!
Et tu peut être certain que j'aurais besoin d'aide pour régler ces reéseaux !

Encore merci pour ta réponse,
@ très bientôt,
Matthieu

Répondre à matmdx

25

franky*, le 1 mar 2005 à 20:30:18

Salut,

>>Je suis en prépa maths !!! :-)
>>En fait je travaille sur ce sujet dans le cadre de mes TIPE...

Eh ben ! Ca, c'est ce qui s'appelle s'ouvrir à d'autres choses ! (je suis passé par là aussi ;-) ) Tu vises l'IMAG ? Les ENS ?
Si un jour, après une école, tu veux continuer dans la recherche, y'a une équipe dans mon labo qui s'occupe exclusivement des RN... J'en profite pour leur faire de la pub ! (équipe cortex au loria) Tu pourras toujours me recontacter à ce moment-là !

Pour le coef a, c'est bien ce que je pensais : t'as super bien fait ça !
Préviens-moi si ça se confirme... Ca a l'air d'être un résultat sympa.

L'influence des neurones proches, en fait, c'est du type Kohonen. J'y reviens après.

Pour la base d'apprentissage, il faut faire attention : a partir d'un moment, si tu augmentes trop sa taille, tu perds beaucoup de temps d'apprentissage pour un gain en précision négligeable...
Mais il ne faut pas non plus passer d'un extrême à l'autre : j'imagine que tu as entendu parler de surapprentissage (overfitting en anglais) ? Sinon, ça vaut le coup de chercher de quoi il s'agit, pour ce que tu fais...
Tant que tu y es, cherches aussi des infos sur le "compromis biais-variance", ça fera toujours bien quand tu passeras l'oral.
En résumé, la variance, c'est l'erreur d'estimation liée au manque de données (ce qui ne risque pas de t'arriver, là !), et le biais, c'est les erreurs d'approximation liées aux hypothèses, à la forme du modèle. Le problème c'est que pour un ensemble de données fixe, tu ne peux pas diminuer l'un sans augmenter l'autre... D'où la recherche d'un compromis.
Mais dans ton cas, ça veut surtout dire que tu as suffisemment de données pour ne pas avoir peur de complexifier (raisonnablement) ton modèle. Et également que tu n'as pas forcément besoin de toute ta base d'apprentissage.

Euh... désolé, je suis un peu parti dans mon trip, là... ;-p

Revenons aux différents types de réseaux, et pour commencer, le bon vieux Hopfield : c'est simple, je te le déconseille purement et simplement. Et ne t'en fait pas pour ton TIPE, c'est tout a fait justifiable de dire que les recherches récentes t'ont fait penser que tu n'avais pas intérêt à t'engager sur une voie sans avenir...
Je m'explique, il est possible que ce type de réseaux puisse présenter un intérêt. C'est d'ailleurs un peu mon domaine (IA distribuée, SMA, etc.). Le problème, c'est qu'on ne sait pas QUEL intérêt ! Parce qu'il y a une manière "naturelle" d'utiliser ces réseau, pour l'apprentissage, sauf qu'il ne sont pas très performants ! Ce qui fait que la recherhce dans ce domaine est un peu dans une impasse pour le moment... Ils présentent bien quelques avantages, avec en premier plan celui de reconnaitre des prototypes très fortements dégradés (images bruitées, ...). Seulement, on est obligé de lui faire apprendre par coeur ces prototypes, et sa capacité de mémorisation n'est pas géniale : de l'odre de 0,15 x le nombre de neurones, en comptant un neurone pour un pixel dans le cas de la reconnaissance d'images !

Maintenant, le Kohonen. Lui aussi, il a ses avantages et ses inconvénients. D'abord, il est très adapté à la reconnaissance de caractères, grace à la propriété dont je t'ai parlé hier : il sait reconnaitre des formes proches ! Par contre (il me semble l'avoir dit plus haut dans le discussion), dans ce cas, il y aura absolument besoin d'un prétraitement ! (sauf si tu sais que tous tes caractères ont la même taille, sont centrés, et ne sont pas trop bruités).
Mais surtout, il y a un point fondamental qui te concerne particulièrement : ta base d'exemples est visiblement utilisable pour un réseau de type perceptron, c'est-à-dire pour faire de l'apprentissage supervisé. J'en déduis que chaque image est associée à la bonne "réponse", le chiffre dessiné. Or les réseaux de type kohonen sont fait pour de l'apprentissage non supervisé : dans le cas où tu n'as qu'une collection d'images sans catégorie associée, un tel réseau est capable de rassembler ces images par ressemblance. D'où leur nom de cartes auto-organisatrices.
Ce qui veut dire que tu ne vas pas utiliser à fond toutes les ressources qu'offre ta base d'exemples, et il est finalement possible (même si ça m'étonnerait) que le perceptron marche mieux que Kohonen dans ton cas !

Bon, je te laisse méditer ça (autrement dit, on m'attend pour faire autre chose que mon autiste sur l'ordi ;-p ),
Bon courage !
Devine si tu peux, et choisis si tu l'oses

Répondre à franky*

26

matmdx, le 3 mar 2005 à 20:06:35

>>> Tu vises l'IMAG ? Les ENS ?

Euh.............. Nan faut peut-être pas exagérer pour les ENS...
J'espère "seulement" (et ce sera déjà pas mal) avoir l'ENSIMAG !

A part ça j'ai obtenu l'autorisation de l'administration de mon lycée pour pouvoir utiliser une salle informatique de 12 PC pour pouvoir faire tourner mes algos pendant plusieurs nuits !!!
D'ailleurs en ce moment même les PC tournent déjà !
Comme ça j'obtiendrais des résultats plus rapidement.

>>> Réseau de Kohonen :
Je crois que j'ai pas compris comment se faisait l'apprentissage pour ce réseau, et surtout j'ai pas compris, une fois que le réseau a été entraîné, comment fait-on pour avoir la sortie correspondant à l'entrée (la carte s'organisant toute seule, comment peut-on savoir quelle zone activée en sortie correspond à telle classe de chiffre ?) ?

@ +,
Matthieu

Répondre à matmdx

27

franky*, le 4 mar 2005 à 00:00:26

> Euh.............. Nan faut peut-être pas exagérer pour les ENS...
> J'espère "seulement" (et ce sera déjà pas mal) avoir l'ENSIMAG !

T'en fais pas, je te charriais ;-)
Et puis si t'as l'IMAG, c'est excellent !

Eh ben, ils sont cool, dans ton lycée, de te laisser autant de moyens ! T'es où ?

Bon, Kohonen.
Là, il est un peu tard pour que je t'explique tout l'apprentissage.
Par contre, je peux répondre rapidement à ta question : il faut te dire que ça n'a rien à voir avec le réseau à couches. Par principe, c'est auto-organisé, donc il n'y a pas de couche avec 10 neurones qui va te dire quel prototype a été reconnu. C'était utile pour l'apprentissage supervisé, pour pouvoir corriger la reconnaissance au fur et à mesure de l'apprentissage, mais là, l'utilisateur est un peu mis hors du système.
Alors je sais, tu vas me dire qu'au bout du compte, tu veux quand même savoir quel chiffre a été reconnu... La réponse te paraîtra simple quand tu auras compris la méthode d'apprentissage : c'est celui qui a été séléctionné par le réseau :-ppp

T'en fait pas pour ça, j'essaierai de répondre plus clairement demain. Dis-toi simplement que sur la "couche" qui nous intéresse (parce qu'on peut considérer qu'il y a 2 couches), c'est-à-dire la carte auto-organisatrice proprement dite, tu n'auras jamais d'équivalence 1 neurone = 1 pixel, mais au contraire 1 neurone = 1 caractéristique du caractère, voire ...= 1 caractère. Donc les neurones qui seront activés te donneront un résultat.

Petit exercice de réflexion en attendant le reste des explications : essaie de bien te faire à l'idée qu'on va différencier 2 distances. La première est la "distance" entre 2 caractères, en termes d'image, et la seconde, la "distance" sur la carte entre 2 neurones qui vont représenter une caractéristique du caratère ou, comme je l'ai dit plus haut, entre 2 caractères eux-même. On risque donc encore de parler de "distance entre 2 caractères", alors que ça n'aura rien à voire avec la première distance !
C'est pas très clair, mais essaie de bien différencier les 2, ce sera très utile par la suite...

A+
Devine si tu peux, et choisis si tu l'oses

Répondre à franky*

28

matmdx, le 5 mar 2005 à 19:25:32
  • +1

>>> 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épondre à matmdx

29

franky*, le 8 mar 2005 à 17:15:40

Salut Matthieu,

Désolé, j'ai pas trop pu venir avant...
Mais j'ai parlé de ce post à un copain qui s'y connait mieux que moi dans les RN (Johann), il te dira sûrement plein de choses intéressantes ! ;-)

Quand à mon explication sur les cartes de Kohonen, il faudra attendre encore, je suis pas trop dispo, là... Désolé.
Mais si tu as déjà un peu cherché des infos par ailleurs, je n'aurai pas grand chose à t'apprendre : je pourrais plutôt t'aider à comprendre des points obscurs.

Sinon, pour tes problèmes de nombre d'exemples, on voit effectivement que 1000 ou 1500 suffisent... (bon ,OK, j'avais dit 500 au début, j'atais un peu optimiste !)
En tous cas, bravo pour ton boulot, c'est impressionnant !

Bonne continuation,
François Devine si tu peux, et choisis si tu l'oses

Répondre à franky*

107

rozalia, le 15 mar 2008 à 10:20:48

Slt, je désire connaitre comment extraire les contours d'une image,pour la reconnaitre avec un réseau de neurones, g trouvé codage de freeman, mai g besoin d'aide!!

Répondre à rozalia

133

LeXxX, le 3 déc 2008 à 21:50:54

Salut Fanky,

je souhaiterais avoir quelques conseils. J'ai un algorithme d'apprentissage a créer est je ne sais pa trop lequel serait le plus approprié. Mon algorithme doit etudier le mouvement du marché boursier (up ou down) d'une compagnie que j'ai choisi(CAC40). J'aimerais avoir de l'aide. S'il y a possibilité de rentrer en contact serait pas mal.

Merci.

Répondre à LeXxX

134

franky*, le 4 déc 2008 à 08:46:40

Salut LeXxX,

Je n'aurai pas le temps de beaucoup t'aider : je termine une thèse sur un sujet complètement différent, ce qui veut dire en plus que je n'y connait plus grand chose aux réseaux de neurones !

Ta question n'est pas assez précise pour que je puisse y répondre : donne-moi des exemples de données que tu dois obtenir, ou le style de questions auxquelles ton algo doit répondre.

Si je devais deviner : tu dois prévoir si la valeur monte ou baisse en fonction d'une dizaine de facteurs (des données diverses sur la bourse). Si c'est ça, tu dois utiliser un perceptron tout simple, sans te poser de questions (on doit pouvoir trouver des cours sur google)

Remarque en passant : le CAC 40 n'est pas une compagnie, c'est un indicateur boursier qui mélange les valeurs des 40 meilleures boites françaises.

Bon courage !
Devine si tu peux, et choisis si tu l'oses

Répondre à franky*

30

matmdx, le 8 mar 2005 à 17:41:39

>>> Mais j'ai parlé de ce post à un copain qui s'y connait mieux que moi dans les RN (Johann), il te dira sûrement plein de choses intéressantes ! ;-)

Sympa et merci d'avance à lui !
(pourrais-tu envoyer à mon adresse e-mail vos adresses ? ce serait peut-être plus simple...)

Merci,
Matthieu
matmdx@voila.fr

Répondre à matmdx

31

johann, le 9 mar 2005 à 00:41:39

Salut !!

Bon j'ai parcouru rapidement le thread...
Effectivement Fanch à raison, il s'ai bien démené pour te répondre, respect à lui !!

Pour ce qui est des "connexions latérales", c'est valable dans plusieurs types de réseaux, Hopfield bien sur, mais aussi la CNFT qui est l'ancêtre des SOM (Self-Organizing Maps) de Kohonen. La différence est tout simplement que la CNFT (Continuum Neural Field Therory) fait "jouer la concurence"... C'est à dire que par le biais de connexion latérales, tous les neurones de la carte se disputent pour créer des bulles d'activités, jusqu'à stabilisation de la carte. Ceci dis, celà demande plusieurs itération pour une même entrée.
Les poids des connexions sont en chapeau mexicain, une double exponentielle positive dans l'entourage proche et négative plus loin, tend vers zéro à l'infini...

Kohonen à simplifié le principe avec le "winner takes all", c'est à dire que chaque neurone calcule la similitude de son entrée avec son prototype et on choisit le meilleur, on lui crée l'équivalent de la "bulle d'activité" (un gaussienne 2D) autour de lui. En fonction du coef d'activation de chaque neurone, le prototype de chacun est décalé vers l'exemple. L'amplitude de ses mouvement diminue petit à petit (diminution controllé par un paramètre).
La topologie finale de la carte décrit la densité des exemples (dans l'espace des prototypes, car comme l'a fait remarqué Franky, il faut bien distinguer cet espace, muni d'une distance, et la distance entre deux neurones (nb de connexions pour aller de l'un à l'autre))

Autre chose : la fonction d'action. C'est ici une "gaussienne" ou tout autre RBF (Radial Basis Function) centrée sur le prototype. Plus on s'éloigne du prototype, plus la valeur d'activation baisse...

L'apprentissage pour un tel type de carte, c'est de placer les neurones vers les centre de densités de la distribution des exemples.

Enfin, pour ensuite caractériser quelle classe d'exemple à été reconnu, là l'étiquetage de la base sera utile.
En fait dans le principe, rien ne t'interdit de coller un perceptron (donc mono couche) au dessus de la SOM !!!
Cela risque même de bien marcher.

Ce qui me chiffonne c'est les fortes hypothèses qu'il faut faire sur les exemples, qui risquent fort d'être irréalistes. Mais dans un cas d'école, c'est pas forcément génant... A toi de voir (pour le bruit, un pré-traitement possible est un simple flou gaussien. Si le rapport signal/bruit reste faible, c'est nikel !) Pour l'invariance en échèlle/translation, là faut un algo plus costaud, et ça sort du cadre...
Ceci dis, le système de reconnaissance de la poste US passe par deux couche de carte... A partir d'une rétine en 256x256 niveaux de gris, une première batterie de cartes 12x64, avec une connectivité partielle (chaque neurone de chaque carte prend en entrée une zone de la rétine, à neurone voisins, zones voisines), re belotte vers des cartes 12x16, puis enfin vient la "couche cachée", linéaire, classique, en connectivité totale et la couche de sortie.
Je sais pas si c'est bien clair, j'essaye de scanner le schémas la prochaine fois que je passe au labo.

En ce qui concerne ton apprentissage :
Je suis assez étonné par tes résultats en fonction de 'a'.
J'immagine que tu effectue l'apprentissage APRES avoir fixé le paramètre.
(Sinon c'est tout faux !)
Par contre à tu géré l'invariance des poids initiaux, je veux dire, pour des (a,b) différents, si les poids initiaux sont différents aussi, tu va te caler dans des minimum locaux différents.
Sinon, je ne m'expliques pas tes résultats : d'instinct, il me semble que la forme de la fonction de transfert n'influe pas sur l'EQM (Erreur Quadratique Moyenne), dès lors que l'apprentissage est bien fait.
Par contre ça influe sur la rapidité de l'apprentissage, ça, oui !!

Autre chose (qui pourrait aussi être une piste) : tu ne va pas assez loin dans l'apprentissage, tu n'atteint pas l'overfitting. Je ne veux pas dire qu'il faut l'atteindre, il faut s'arrêter avant, mais le fait de voir l'EQM remonter SUR LA BASE DE TEST indique qu'on a dépassé le seuil d'un apprentissage correct. Est c'est au niveau de ce minimum sur la courbe qu'il faut s'arrêter. Ce n'est pas toujours necessaire pour optenir des performances correcte, mais pour une comparaison de paramètres tel que tu le fais, je dirais que ça l'est (sinon c'est un peu comme déclarer un vainqueur d'une course à pied alors qu'il ne sont qu'à mi-parcours...)

Voilà, je te laisse réagir déjà à ça, si t'as d'autres questions, j'ai coché l'option pour les mails, tu dois pouvoir choper mon adresse.
Si jamais Franky t'as envoyé l'autre, je préfèrerais que tu utilise celle que donne ici !!!

Quote = "Franky" >>Bon, je te laisse méditer ça (autrement dit, on m'attend pour faire autre chose que mon autiste sur l'ordi ;-p ),

MOUARF !! Je crois avoir une idée ;°)

A+

Répondre à johann

159

grrrada, le 21 avr 2009 à 22:59:38
  • +1

Le reseau de neurones ke je ss entrain de crer permet de reproduire les neurones reel les mouvement de flux d'infos pour k'1 handicapée puisse conduir par exmpl mais je trouve un problem lors de l'execution de la semul malgres ke la programation est juste je meetrai ma main a couper

Répondre à grrrada