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

Algorithmes et structures de données Discussion :

Perceptron Multi-couche et descente de gradient


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut Perceptron Multi-couche et descente de gradient
    Bonjour tout le monde !
    J'essaie (désespérément) de mettre en oeuvre un algorithme de classification utilisant un perceptron multi-couche avec rétro-propagation par descente de gradient.

    La plupart des documents trouvés sont flous ou mal faits (à mon goût)...

    J'ai quatre entrées, une sortie (1 ou -1), c'est un problème de classification tout ce qu'il y a de plus classique.
    L'inconvénient, c'est que je ne vois pas comment calculer l'erreur...
    Voici la partie servant à l'entraînement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    x0	x1	x2	x3	out
    1	4	99	15	1
    2	1	396	1,875	-1
    1	2	70	7,5	1
    2	2	396	3,75	-1
    1	3	70	15	1
    2	3	300	15	-1
    1	4	70	30	1

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Au début il suffit par exemple d'initialiser les poids du réseau aléatoirement.

    Ensuite on présente en entrée un set de valeurs, on calcule la sortie (forward), l'erreur est alors la différence entre la sortie calculée et la sortie voulue. Ensuite rétro-propagation par descente de gradient (backward), et on recommence avec un autre set de valeurs d'entrée.

  3. #3
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Mon problème est dans l'implémentation, donc ça vient de l'algorithme.
    Comment sont calculés les nouveaux poids ?
    Que vaut le gradient ?

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Le gradient c'est l'erreur, c-a-d la différence entre la sortie calculée et la sortie voulue.

    Pour l'algorithme, voir Wikipedia par exemple.

  5. #5
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    C'est ce que j'ai essayé d'utiliser, mais ça ne fonctionne pas.

    Dans mon exemple, en utilisant les notations, ça donnerait quoi ?
    Est-ce que je peux utiliser n'importe quelle fonction de transfert (actuellement, j'utilise "sign") ?

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    La fonction de transfert (ou d'activation) c'est la fonction notée "g" dans l'algorithme de Wikipedia. Il faut qu'elle soit dérivable pour l'apprentisage, donc la fonction sign ne convient pas je pense. Le plus simple est d'utiliser la fonction sigmoide car sa dérivée sig'(t)=sig(t)*(1 - sig(t)) simplifie l'algorithme. Elle retourne une valeur comprise entre 0 et 1, qui peut s'interpréter comme une probabilité, quite a ensuite la seuiller à 0.5 si besoin d'un résultat binaire.

    Pour qu'un réseau fonctionne correctement il faut aussi bien choisir le nombre de couches, les différents paramètres (gain, inertie, ...). S'il y a peu de données d'apprentissage, comme dans ton cas, il faut peut-être les répéter plusieurs fois, ... Il n'y a pas vraiment de règle pour régler tout ça, il faut faire des essais.

Discussions similaires

  1. [AI Code]Réseau de neurones: perceptron multi-couche en C++
    Par Aszarsha dans le forum Contribuez
    Réponses: 1
    Dernier message: 20/09/2014, 10h28
  2. Perceptron multi couche
    Par pretyy dans le forum MATLAB
    Réponses: 2
    Dernier message: 19/12/2011, 19h53
  3. Réponses: 2
    Dernier message: 22/04/2009, 23h04
  4. Réseaux de neurones avec perceptron multi couches
    Par naoufal_bago dans le forum Méthodes prédictives
    Réponses: 9
    Dernier message: 14/03/2008, 22h15
  5. Perceptron Multi Couche
    Par MBAYE BABACAR GUEYE dans le forum MATLAB
    Réponses: 1
    Dernier message: 06/06/2007, 15h02

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