KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Samedi 17 mai 2008 - 09:06:53

Programmer un réseau de neurones

Rechercher : dans
Programmer un réseau de neurones
par xavier
 Fil de Discussions
Statut : Résolu
samedi 16 octobre 2004 à 20:05:13
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.
Répondre à xavier  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Obeet, le samedi 16 octobre 2004 à 22:54:39 Fil de Discussions
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

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par franky*, le mercredi 15 décembre 2004 à 23:21:17 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par manou_2, le jeudi 25 août 2005 à 09:40:03 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par franky*, le jeudi 25 août 2005 à 10:00:56 Fil de Discussions
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


  • 2
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Par rachon, le mardi 6 décembre 2005 à 17:02:08 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par franky*, le mardi 6 décembre 2005 à 17:33:43 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par zineb, le jeudi 15 juin 2006 à 15:57:33 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par franky*, le jeudi 15 juin 2006 à 16:10:07 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par dj, le samedi 1 mars 2008 à 11:27:36 Fil de Discussions
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

116


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Ghassen, le lundi 21 avril 2008 à 17:46:53 Fil de Discussions
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

86


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par caractaire, le mercredi 12 septembre 2007 à 14:26:40 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par abdel2005, le mardi 11 décembre 2007 à 15:18:44 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par queen, le samedi 16 février 2008 à 10:31:57 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par franky*, le lundi 18 février 2008 à 13:37:28 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Niko92, le lundi 25 février 2008 à 21:04:15 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par lielectron, le vendredi 28 mars 2008 à 17:02:43 Fil de Discussions
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

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par tafiscobar, le jeudi 16 décembre 2004 à 14:48:07 Fil de Discussions
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

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par xavier, le samedi 18 décembre 2004 à 16:26:23 Fil de Discussions
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

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par franky*, le samedi 18 décembre 2004 à 23:39:01 Fil de Discussions
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*

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par donny, le lundi 14 février 2005 à 22:20:12