IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Méthodes prédictives Discussion :

[Réseau de neurones] Idées d'exercices


Sujet :

Méthodes prédictives

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 1
    Points
    1
    Par défaut [Réseau de neurones] Idées d'exercices
    Bonjour,

    je m'intéresse aux réseaux de neurones et j'ai suivis cet article.

    J'ai créer un petit code en PHP pour simuler la fonction logique OU. Voici le code :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    // Fonction pour créer un neurone
    function create_neurone($entrees, $poids, $seuil)
    {
    	foreach($entrees as $elem)
    		$resultat += ($elem * $poids);
     
    	if($resultat <= $seuil)
    		return 0;
    	elseif($resultat >= $seuil)
    		return 1;
    }
     
    $entrees = array(0.3,0.3);
    if(create_neurone($entrees, 1, 0.7) == 1)
    	echo 1;
    else
    	echo 0;
     
    ?>

    Je voudrais dans un premier temps savoir si mon code est correct et ensuite, si il est correct, avoir des idées d'exercices pour m'entraîner.

    Merci d'avance.

  2. #2
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Ca semble correct, mais c'est très très spécifique.

    Tu ne peux, avec ça, absolument pas avoir des poids différents pour des connexions différentes, par exemple. Et puis le seuil de 0.7 je trouve cela (subjectivement) beaucoup. Dans mon article, j'ai pris 0.25 et 0.25 pour dépasser 0.5 quand on somme les deux. Chacun sa façon de voir.

    Ce que je te conseille, c'est de continuer avec des exemples graduellement plus compliqués, pour enfin penser aux réseaux de neurones feed-forward multicouches.
    Pour les exemples hmm... Je te conseille de parcourir les sujets du forum IA (celui ou l'on est ici) concernant les réseaux de neurones et d'essayer de reproduire les réseaux de neurones avec lesquels les utilisateurs ont eu des problèmes.

    De mémoire, il n'y avait rien d'infaisable.
    Je ne donne pas d'exemples de RdN qu'il serait intéressant de faire dans l'article ?

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse.
    Pour le seuil de 0.7 c'était pour tester avec différentes valeurs.

    Mais le seuil est dans la fonction d'activation ? Je veux ire par là que chaque entrée n'a pas son propre seuil comme le poids ?

    Dans ton article, tu donnes l'exemple de la fonction de OU exclusif, XOR. J'attends un peu de m'entraîner avant de l'essayer car il me semble qu'il faut utiliser un perceptron multi-couche pour ça.

    Pour finir, quand tu dis que mon exemple est très spécifique ça veut dire quoi exactement ?

    Merci.

  4. #4
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Ton code est trop spécifique -> il faudra le réécrire pour pouvoir créer des types de réseaux de neurones plus généraux (ne serait-ce qu'un réseau qui a besoin d'avoir des poids différents pour chaque connexion, et des seuils différents).

    Ensuite, un seuil est rattaché à un et un seul neurone. Pas à une entrée. Il fait en fait partie des poids mais joue un rôle à part. Dans mon article, j'utilise la convention que le seuil est un poids w0 relié à une entrée de valeur -1.

    Si tu as d'autres questions, n'hésite pas. C'est très important que tout soit clair dès le début afin de pouvoir aborder des modèles plus complexes.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    En fait, j'ai pas mal de questions effectivement; car je suis en 2nde et que mon niveau en math n'est pas des meilleurs. Mais quand le sujet me passionne, je comprends beaucoup plus facilement...

    1°/ Je n'ai pas compris comment on choisis les poids et les seuils. Par exemple, dans le cas de la fonction OU, je ne comprends pas pourquoi tu as choisis 1 pour le poids et 0.5 pour le seuil.

    2°/ La phase d'apprentissage est en fait la phase de "correction" des poids, c'est bien ça ?

    3°/ Les fonctions d'activation (sigmoïde, Heaviside etc...) fonctionne comment ? Je n'ai pas compris leur rôle si ce n'est que de calculer la sortie du neurone et comment elle le font.

    Désolé, mon message fait un peu "liste".

    Voilà, merci d'avance.

  6. #6
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par maxiter Voir le message
    En fait, j'ai pas mal de questions effectivement; car je suis en 2nde et que mon niveau en math n'est pas des meilleurs. Mais quand le sujet me passionne, je comprends beaucoup plus facilement...
    Il faudrait effectivement que tu t'avances en maths parallèlement... Et pense aussi à cartonner au BAC

    Citation Envoyé par maxiter Voir le message
    1°/ Je n'ai pas compris comment on choisis les poids et les seuils. Par exemple, dans le cas de la fonction OU, je ne comprends pas pourquoi tu as choisis 1 pour le poids et 0.5 pour le seuil.
    Je me suis dit, en tant que convention, que si la somme pondérée des entrées dépasse 0.5, on peut dire que l'on a 1 en sortie, car on est alors plus proche de 1 que de 0 (qui sont les 2 seules valeurs possibles pour une sortie de OU).
    Après, je me suis dit que les deux entrées de la fonction OU ont des rôles symétriques, donc elles doivent avoir le même poids. J'ai dit que si la somme pondérée des entrées dépasse 0.5, on a 1. Par exemple, 0.25 + 0.25 = 0.5 et hop on a 1. Du coup, poids égaux à 1 tous les deux.
    J'ai juste pris des décisions arbitraires.

    Citation Envoyé par maxiter Voir le message
    2°/ La phase d'apprentissage est en fait la phase de "correction" des poids, c'est bien ça ?
    Dans la majorité des cas oui.
    (il existe aussi des réseaux de neurones plutôt complexes qui ajustent eux-mêmes leur structure (rajout d'un neurone en 147ème couche, de seuil s, connecté à tels autres neurones, etc...) afin d'obtenir de meilleurs résultats)
    Considère donc que oui.

    Citation Envoyé par maxiter Voir le message
    3°/ Les fonctions d'activation (sigmoïde, Heaviside etc...) fonctionne comment ? Je n'ai pas compris leur rôle si ce n'est que de calculer la sortie du neurone et comment elle le font.
    Ce sont de bêtes fonctions comme tu en vois en 2nde...
    Sauf qu'en terminale, tu ne vois ni l'exponentielle (e^qqch) ni les fonctions définies en plusieurs morceaux.

    M'enfin, déjà, en regardant mon article, ici : http://alp.developpez.com/tutoriels/...urones/#LIII-2
    tu as les graphes des fonctions, ça devrait t'aider !
    Pour l'exponentielle, c'est simplement un nombre disons assez particulier et important en maths, et que l'on élève à une puissance qui dépend de x.
    Au passage, ce fameux nombre (e) vaut 2.71.......

    Pour en savoir plus sur ces deux fonctions qui sont assez connues, tu as 1/ ton prof de maths 2/ wikipedia 3/ les divers cours de maths qui trainent sur internet

    PS : je te conseille vraiment de bosser les maths en parallèle, c-à-d de maitriser ce que tu fais en cours et éventuellement t'avancer si tu en as le temps, sinon tu bloqueras au moment où il faudra comprendre des choses plus complexes, comme la démonstration présente à la fin de l'article (elle utilise des choses qu'on ne voit qu'en 1ère année après le Bac, et encore...

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup, je comprends mieux maintenant.

    Pour mon niveau en maths, j'ai le temps de me perfectionner, le problème c'est (comme dis mon prof de maths) : "Il faut prendre les maths comme un jeux" .
    Je ne m'amuse pas vraiment en maths, sauf quand le sujet m'intéresse; ce qui est le cas avec les réseaux de neurones.

    Les seuils et poids sont toujours déterminés par nous ? Ou bien il existe des cas où ils se calculent "tout seul" ?

    Enfin, avec mon niveau (càd celui de ton article), je peux faire quoi ? Je suppose que les réseaux de neurones artificiels ne se résument pas "que" à ça ?

    Merci encore.

  8. #8
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Non, car là ils sont "justes" connectés les uns aux autres d'une couche vers la suivante.

    Il y en a qui ont des connexions revenant vers l'arrière, etc... Tu n'imagines pas le nombre de modèles !

    Les seuils et poids sont toujours déterminés par nous ? Ou bien il existe des cas où ils se calculent "tout seul" ?
    Les poids, tu appliqueras un algorithme d'apprentissage sur une base d'exemples d'apprentissage pour en avoir des bons.
    Les seuils... Ce sont des poids spéciaux, mais c'est déjà plus facilement trouvable

    Enfin, avec mon niveau (càd celui de ton article), je peux faire quoi ?
    Tu n'as à mon avis pas tiré tout ce que tu as à tirer de l'article... Il y a les multicouches, qui eux permettent de faire la plupart des choses que tu auras l'idée de faire, en gros. Seulement là, niveau maths ça envoie un peu plus.

    Mais à la fin de l'article, tu pourras faire vraiment pas mal de choses !

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    Je me suis mal exprimé, en fait je voulais savoir ce qu'on pouvait faire avec les perceptrons mono-couche ou avec des neurones seuls ?

    Pour les multi-couches ou les récurrents, je vais attendre un peu je crois :p .

  10. #10
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Un neurone seul (un perceptron monocouche, c'est un ensemble de neurones, mais ils sont indépendants tous) peut effectuer une séparation linéaire.
    Je l'explique dans mon article, regarde

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    D'accord, mais quel est l'intêret d'avoir plusieurs neurones indépendants connectés entres eux ?

    Si j'ai bien compris ton article, les perceptrons multi-couches servent à effectuer des séparations impossibles linéairement, c'est bien ça ?

  12. #12
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par maxiter Voir le message
    D'accord, mais quel est l'intêret d'avoir plusieurs neurones indépendants connectés entres eux ?
    Ils ne sont pas connectés entre eux, mais considérer la sortie de chacun indépendemment des autres n'a aucun sens. Généralement, on prend la sortie la plus grande de toutes, ou alors on effectue un traitement sur ces différentes valeurs, mais considérer chaque valeur dans son coin n'a aucun sens, pour un perceptron monocouche. C'est pour ça que sur un schéma on mettrait plusieurs neurones sur la même lignée, même si chaque neurone est indépendant des autres dans un perceptron monocouche.
    Ils sont juste connectés aux mêmes informations d'entrée et vont envoyer une valeur en sortie qui a besoin des autres pour "avoir un sens.

    Citation Envoyé par maxiter Voir le message
    Si j'ai bien compris ton article, les perceptrons multi-couches servent à effectuer des séparations impossibles linéairement, c'est bien ça ?
    Du moins, inséparables dans l'espace des entrées sans projeter dans un nouvel espace de plus grande dimension (voir par exemple la technique des Support Vector Machines pour ça).
    Mais on va dire oui pour toi pour le moment, c'est ça.

    C'est bête hein, mais c'est vraiment le fait de ne pas pouvoir tracer un trait (pour XOR) qui séparerait comme il faut les points, qui est en cause.

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    Ok, merci beaucoup pour ces renseignements.
    Je vais essayer de coder un perceptron en C; je posterai sur ce même topic en cas de soucis .

    Merci encore.

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    Bonjour, c'est encore moi .

    J'ai recodé mon neurone en C++ et en ajustant le seuil et poids, j'arrive à simuler la fonction OR, AND, NAND et NOR.

    Cependant, j'avais dans l'idée de programmer un perceptron pour implémenter l'algorithme d'apprentissage etc... Mais je ne sais pas ce qu'il pourra faire.
    J'ai pensé à la fonction XOR mais je crois qu'il faut un perceptron multi-couche; et je préfère commencer par le mono-couche.

    Si quelqu'un a une idée, un truc pas trop difficile, n'hésitez pas .

    Merci d'avance.

    PS : Désolé pour le double post.

  15. #15
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Bah tu peux coder OR, AND, NOR, NAND mais en faisant apprendre les poids au lieu de les fixer toi-même

  16. #16
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    Oui mais pour ces fonctions, un seul neurone suffit, pas besoin de perceptron, si ?

    Tant que j'y pense, j'ai relu (encore une fois) ton article hier soir en m'attardant surtout sur les deux algorithmes d'apprentissage.
    Et je ne comprends pas le chiffre alpha noté "a". Qu'est-ce que c'est et à quoi il sert exactement ?

    En tout cas c'est une bonne idée que je vais surement faire, pour être au point avant de passer aux perceptrons .

    Merci.

  17. #17
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par maxiter Voir le message
    Oui mais pour ces fonctions, un seul neurone suffit, pas besoin de perceptron, si ?
    Oui, mais tu peux appliquer les algos d'apprentissage pour les perceptrons...

    Citation Envoyé par maxiter Voir le message
    Tant que j'y pense, j'ai relu (encore une fois) ton article hier soir en m'attardant surtout sur les deux algorithmes d'apprentissage.
    Et je ne comprends pas le chiffre alpha noté "a". Qu'est-ce que c'est et à quoi il sert exactement ?
    L'activation ?
    C'est juste quand on fait f( somme pondérée des entrées y compris le seuil ).

  18. #18
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Alp Voir le message
    L'activation ?
    C'est juste quand on fait f( somme pondérée des entrées y compris le seuil ).
    Non pas l'activation, l'apprentissage. Quand tu dis ça :
    On va noter un nombre réel auquel on donne le nom de taux d'apprentissage. C'est nous qui devons lui donner une valeur lors de la mise en pratique de l'apprentissage. Comme nous ne considérons qu'un neurone à la fois, on va noter w i le poids reliant la i -ème information à notre neurone.
    C'est là que je comprends pas .

    Merci.

  19. #19
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Ahh

    Je te conseille de lire ce topic : http://www.developpez.net/forums/d56...apprentissage/

    Y'a pas mal de sujets dans ce forum sur les RdN, n'hésite pas à les lire pour voir s'il n'y a pas déjà la réponse

  20. #20
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    En effet, j'ai déjà lu ce topic mais après avoir posté mon message .

    J'ai encore une dernière question (décidément) pour terminer mon code.
    Toujours dans la même équation : w_i = w_i + alpha*(yk - sk)*x_i

    Si j'ai bien compris :
    w_i est le poids que l'on modifie à chaque itération
    alpha est le taux d'apprentissage compris entre 0 et 1
    yk par contre je ne vois pas de tout ce que c'est. Dans l'article tu dis que c'est la sortie attendue, la "sortie vraie" ?
    sk est le poids actuel
    x_i est l'entrée que l'on traite.

    Cette fois j'ai cherché parmis les topics existants, mais je n'ai pas trouvé .

    Merci.

Discussions similaires

  1. Réponses: 60
    Dernier message: 12/05/2011, 14h18
  2. [Réseau de neurones] [MATLAB] Idées d'exercices
    Par MEKKI-AHMED dans le forum Méthodes prédictives
    Réponses: 1
    Dernier message: 03/03/2010, 09h03
  3. Réseau de neurones - exporter
    Par kairn_ dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/01/2007, 10h21
  4. interface graphique, réseau de neurones
    Par korp69 dans le forum C++
    Réponses: 19
    Dernier message: 13/11/2006, 13h44
  5. Réseau de neurones - reconnaissance visage
    Par PrAbronsius dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 03/05/2006, 03h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo