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 :

Perceptron et apprentissage


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
    Mai 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 14
    Par défaut Perceptron et apprentissage
    Bonjour à tous !

    Voilà dans le cadre de mes études je dois implémenter un perceptron afin d'apprendre et de classifier différentes données.

    Ces données sont, pour la base d'apprentissage, réparties dans un nombre de classes > 2. Donc pour simplifier la chose (enfin je pense que ça simplifie), plutôt que de réaliser un perceptron apprenant directement à distinguer toutes les classes, on nous demande de réaliser n perceptrons binaires, correspondants aux n classes.

    Le but étant donc au final, d'avoir pour chaque classe c, un perceptron associé capable au moins de distinguer cette classe c de toutes les autres. Après on décidera la meilleure sortie entre les n perceptrons.

    Donc pour exemple :

    J'ai un ensemble de données de dimension 4, divisées en 3 classes a, b et c.
    Je veux établir le perceptron capable d'apprendre à distinguer la classe a des autres classes. J'ai donc procédé à un ré-étiquetage, tous les exemples de ma classe a sont étiqueté 1, et tout ceux des classes b et c étiquetés -1. (j'ai lu qu'on utilise parfois 0 et 1, parfois -1 et 1, notre enseignant nous a demandé -1 et 1 ici)

    Voilà les bases, j'espère que c'est clair.

    Mon problème est le suivant, j'ai un grand mal à bien assimiler le principe du perceptron, j'ai lu le très bon cours d'Alp, mais je n'arrive pas à me lancer j'ai trop de points flous :

    Dois-je utiliser un perceptron mono-couche ou multi-couches ? Mon algorithme devra pouvoir s'adapter à des données non linéairement séparable pour la suite, donc je pencherai plutôt pour le multi-couches si j'ai bien compris mais je ne suis pas sur.

    Ensuite, le gros point d'interrogation pour moi, c'est comment déterminer le nombre de neurones de ma sortie, ainsi que le nombre de couches cachées et de neurones sur celles-ci si on part sur un multi. J'ai vraiment un blocage à ce niveau.

    Donc voilà, je solicite votre aide, et vos connaissances afin de pouvoir avancer la dessus

    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
    Citation Envoyé par Bibipulse Voir le message
    Mon problème est le suivant, j'ai un grand mal à bien assimiler le principe du perceptron, j'ai lu le très bon cours d'Alp, mais je n'arrive pas à me lancer j'ai trop de points flous :
    Que d'honneur

    Citation Envoyé par Bibipulse Voir le message
    Dois-je utiliser un perceptron mono-couche ou multi-couches ? Mon algorithme devra pouvoir s'adapter à des données non linéairement séparable pour la suite, donc je pencherai plutôt pour le multi-couches si j'ai bien compris mais je ne suis pas sur.
    Si c'est non linéairement séparable, alors c'est du multicouche, tout simplement. J'en parle brièvement comme t'as pu le voir, avec XOR. Si je commence à l'étoffer ce cours, ça finirait par un livre
    J'ai essayé de résumer les infos essentielles à la compréhension de cette théorie.

    Citation Envoyé par Bibipulse Voir le message
    Ensuite, le gros point d'interrogation pour moi, c'est comment déterminer le nombre de neurones de ma sortie, ainsi que le nombre de couches cachées et de neurones sur celles-ci si on part sur un multi. J'ai vraiment un blocage à ce niveau.
    Le nombre de neurones en sortie, c'est souvent le nombre de classes quand il s'agit de classifier. Ainsi, tu auras par exemple des valeurs entre 0 et 1 pour chaque neurone de la couche de sortie, et le neurone de sortie qui donnera la plus grande valeur correspondra à la classe à laquelle appartient le vecteur donné en entrée.
    D'après le théorème de Cybenko, tu dois pouvoir te contenter d'une seule couche cachée il me semble. Le nombre de neurones sur la couche cachée par contre... Je t'invite à lire un peu les sujets sur les RdN dans ce forum, où tu constateras qu'en fait il n'y a aucun moyen fiable de le calculer et en fait ce que je te conseille de faire, c'est de prendre plusieurs valeurs pour le nombre de neurones en couche cachée, et de les tester sur un ensemble de vecteurs en entrée, et voir quelle nombre te donne les valeurs les plus proches de ce que tu veux.
    Citation Envoyé par Bibipulse Voir le message
    Donc voilà, je solicite votre aide, et vos connaissances afin de pouvoir avancer la dessus

    Merci d'avance !
    N'hésite pas, bien au contraire on est là pour ça

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 14
    Par défaut
    Déjà merci pour la réponse rapide, ça m'a bien aidé.

    J'ai donc commencé la réalisation de mon perceptron qui a cette forme :

    4 entrées, 1 couche cachée à 16 neurones (je ferai varier avec l'experimentation), et une couche de sortie à 2 neurones.

    J'ai initialisé les poids aléatoirement pour qu'ils soient compris entre -1 et 1.
    J'utilise la fonction sigmoide (1+tanh/2) comme fonction d'activation pour la couche cachée.

    Maintenant j'ai quelques interrogations sur la sortie : je dois utiliser une fonction linéaire, étant donné que les entrées de ma couche de sortie sont comprises entre -1 et 1, dois-je utiliser une fonction d'activation qui normalise mon résultat entre 0 et 1 ?

    Et enfin quand on parle du "vecteur de sortie attendue", je voudrais être sur d'avoir bien compris. Mon perceptron doit me donner une valeur comprise entre 0 et 1 pour chaque neurone de sortie, la plus grande étant la prétendue bonne classe, donc le vecteur de sortie attendue est juste un vecteur V, V(i) = 1 où i est le neurone correspondant à la bonne classe, et 0 pour le reste non ?

    J'ai deux classes, étiquetées -1 et 1. Si l'exemple que je passe à mon perceptron est étiqueté -1, alors mon vecteur de sortie attendue est [0 1]. Si quelqu'un peut me confirmer que je me plante pas =)

    Merci !

Discussions similaires

  1. Apprentissage par l'algorithme du perceptron
    Par arij25 dans le forum Méthodes prédictives
    Réponses: 7
    Dernier message: 11/03/2013, 19h52
  2. Apprentissage d'un perceptron multicouche sans exemple
    Par Termites dans le forum Méthodes prédictives
    Réponses: 4
    Dernier message: 24/01/2013, 18h08
  3. Apprentissage d'un perceptron multicouches
    Par Hypnocrate dans le forum Méthodes prédictives
    Réponses: 3
    Dernier message: 18/03/2009, 18h05
  4. apprentissage non supervisé .......
    Par ratbert dans le forum Statistiques, Data Mining et Data Science
    Réponses: 7
    Dernier message: 22/02/2008, 12h23
  5. apprentissage du C est-il necessaire pour C++ ?
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 02/05/2002, 12h56

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