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 :

1 ou 2 neurone?


Sujet :

Méthodes prédictives

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut 1 ou 2 neurone?
    Bonjour,

    je programme actuellement un réseau de neurone simple couche. Je voulais commencé par un exemple simple. Une fonction logique par exemple. Je voudrais savoir combien de neurone dois-je mettre pour modèliser une fonction not.

    Déja est-ce que un RdN simple couche peu modèliser cette fonction et un unique neurone peut-il suffire pour la modèlisation?

    Si quelqu'un pouvait m'apporter une réponse?

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Par défaut
    Si tu poses la question, c'est sans doute que tu n'as pas trop compris ce que
    faisait un réseaux de neurones ou même un seul neurone.

    en version simple un perceptron avec en entrée un vecteur x, y applique
    un vecteur de poids w et un biais b ( w'x + b) et applique au résultat
    une fonction (ou pas) généralement de type sigmoïde ou échelon.

    donc la question est: "est-ce qu'avec un neurone prenant en entrée 1 ou 0
    je suis capable de lui faire sortir repsectivement 0 ou 1.

    Evidemment oui! dans ce cas w = -1 et b = 0.5 suivit d'une fonction échelon

    h(x) = 1 si x > 0 et 0 sinon

    ça fonctionne.

    De manière générale il faut comprendre le perceptron comme un séparateur linéaire. Si sur un graphe tu représentes les sorties attendues
    en fonction des valeurs d'entrées (dans le cas de fonctions logiques, il s'agit
    des noeuds d'une grille) et que tu peux tracer une ligne qui sépare les 1 des 0 alors un seul perceptron peut faire le travail. Sinon, c'est qu'il faut en utiliser plus d'un (mais tu ne sais pas forcément combien).

    ex: fonction "or"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     |0  1
    ---------
    0| 0 1
    1| 1 1
    clairement tu peux mettre tous les uns d'un coté d'une droite donc un seul
    neurone suiffit (même chose pour "and")

    par contre avec "xor":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     |0  1
    ---------
    0| 0 1
    1| 1 0
    ce n'est pas possible dont tu ne peut pas le faire avec un seul neurone.

    Dans le cas de "not" tu n'as qu'une dimension:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    0  1
    ---------
    1  0
    Il est donc facile de séparer les 1 des 0 et donc un seul neurone suffit.

    Pour le cas "xor" (a.not(b) + not(a).b), tu peux même trouver combien de neurones il faut: a.not(b) peut s'effectuer avec un neurone de même que not(a).b.

    Pour a.not(b):
    |0 1
    ---------
    0| 0 1
    1| 0 0
    [/code]

    il faut donc un neurone pour chaque et un troisième neurone pour la fonction "or"

    Donc une réseau avec 1 couche cachée de deux neurones et un neurone en sortie.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut Re
    Merci pour votre réponse.

    Par contre une question pratique pour la génération de la base de donnée d'apprentissage. Si je veux faire une classification basique du genre une fonction e1 = a*e2 +b. Si un couple (e1_a,e2_a) deux couple tiré aléatoirement :
    si e1_a> a * e2_a +b la sortie du réseau est a val1
    sinon la sortie du réseau est a val2.

    Quand je crée cette base de donnée dois-je mettre val1=1 val2=0 ou val1=1 et val2=-1.
    Parce que lorsque l'on va faire le calcul de la sortie du neurone fonctionActivation( somme (w*ei) pour savoir si l'entrée appartiennent à la zone 0 ou 1 on va devoir faire :

    si fonctionActivation( somme (w*ei)) >0 => zone 1
    sinon zone 0.

    Donc il faut mettre val1 =1 et val2 = -1?

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Par défaut
    Je suis désolé mais je n'ai pas compris ce que tu voulais faire. Peux-tu reformuler ta question si poussibles en explicitant tes notations (pas très standards).

    Un problème de classification et généralement donné par un ensemble de couples: (x1,y1), (x2,y2), ... , (x3,y3)
    où les xi sont les données (ou descripteurs) et les yi représentent les labels attendus yi = {1,-1} ou yi = {1,0} (classification binaire)

    La fonction d'activation est à choisir de sorte à pouvoir atteindre les valeurs de sortie ou sinon, tu transformes les données de manière à ce que les valeurs extrêmes coincide avec celles de la fonction d'activation
    donc

    h(x) = 0 si x <= 0 et 1 sinon pour des labels de classes {1,0}
    h(x) = -1 si x < 0 et 1 sinon pour des labels de classes {1,-1}

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut Re
    En fait en sortie on aura tout d'abord la somme:
    a(X) = somme(wi*Xi) ou w est le poids i associé à l'entrée Xi = [e0, e1,...,en]
    et en sortie de la fonction d'activation on aura:
    y= h(a) j'ai pris dans mon cas une sigmoide.
    Si on part sur une classification de deux zones, j'ai un enssemble de couple (e1,e2,t) ou t est la classification (zone0 ou zone1). Mais justement cette valeur t, je dois mettre t= 0 ou 1 ou t = -1 ou 1.

    Parce que si j'ai bien compris pour savoir si le couple (e1,e2) appartient a la zone1 ou la zone 2 on va faire:
    si y = h(a) >0 zone 1
    sinon zone 0 ??

    Donc pour moi la valeur cible dans la base de donnée doit valoir -1 ou 1 pour pouvoir la comparer a cette calculée par le neurone??

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Par défaut
    Citation Envoyé par black_hole Voir le message
    En fait en sortie on aura tout d'abord la somme:
    a(X) = somme(wi*Xi) ou w est le poids i associé à l'entrée Xi = [e0, e1,...,en]
    J'ai l'impression que tu mélanges des concepts là si tu as un échantillon x = [e0, e1, ..., en]

    alors le vecteur poids correpsond aux entrées:

    a(X) = somme(wi,ei)

    ensuite comme je l'expliquais plus haut, il faut que les valeurs associées à tes labels de classe correspondent au valeurs extrêmes de la fonction h.

    donc si -1< h(y) <1 alors t dans {1,-1}
    si 0< h(y) <1 alors t dans {1,0}

Discussions similaires

  1. Les réseaux de neurones ??? Ouvrage, site, tutos ???
    Par wallys dans le forum Méthodes prédictives
    Réponses: 5
    Dernier message: 21/03/2006, 14h08
  2. Algo évolutionniste et neurone
    Par vincent0 dans le forum Méthodes prédictives
    Réponses: 3
    Dernier message: 21/11/2005, 18h01
  3. Trouver un cours d'introduction sur les reseaux de neurones
    Par Alec6 dans le forum Méthodes prédictives
    Réponses: 2
    Dernier message: 10/10/2005, 16h41
  4. Besoin d'aide classifieur SVM et reseau de neurones
    Par dahoo dans le forum Méthodes prédictives
    Réponses: 2
    Dernier message: 12/04/2005, 14h31
  5. Réseaux de neurones
    Par kayin dans le forum Méthodes prédictives
    Réponses: 8
    Dernier message: 10/03/2004, 14h22

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