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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    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 confirmé

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    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
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    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 confirmé

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    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
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    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 confirmé

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    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...

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