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 :

Apprentissage par l'algorithme du perceptron


Sujet :

Méthodes prédictives

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 47
    Points
    47
    Par défaut Apprentissage par l'algorithme du perceptron
    Bonjour
    je suis débutante en réseau de neurones et j' ai un code à réaliser concernant l'apprentissage par perceptron sous matlab, et je sais pas d'où commencer, voilà les informations concernant le travail:
    On souhaite réaliser l’apprentissage d’un RN à un seul neurone ayant deux entrées, on doit simuler la fonction ET à l’aide d’un Perceptron, les conditions initiales (w1=0.2, w2=+0.1, µ=0.1), et voilà les exemple de comportement:

    e1 e2 d=e1ETe2
    1 1 1
    -1 1 -1
    -1 -1 -1
    1 -1 -1


    merci pour votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonsoir,

    tu devrais peut-être commencer par te documenter sur le perceptron multicouches, ce n'est pas ce qui manque sur google!

    Par exemple, ceci et le lien donné en bas de page :
    http://fr.wikipedia.org/wiki/Perceptron

    Si tu as les moyens ou une b.u. à disposition, il existe de nombreux livres intéressants sur les réseaux de neurones.

  3. #3
    Membre actif
    Inscrit en
    Mai 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 196
    Points : 202
    Points
    202
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    tu devrais peut-être commencer par te documenter sur le perceptron multicouches, ce n'est pas ce qui manque sur google!
    arij25 nous parle ici de perceptron "simple", et non multicouche. Ce qui n’empêche qu'il existe énormément d'information sur le sujet on the web .

    Citation Envoyé par Aleph69 Voir le message
    Par exemple, ceci et le lien donné en bas de page :
    http://fr.wikipedia.org/wiki/Perceptron
    Le lien est assez concis, et le code plutôt hard pour ce mettre les idees au clair, de plus il semble que le taux d'apprentissage soit fixe, ce qui n'est pas très judicieux.

    Citation Envoyé par Aleph69 Voir le message
    Si tu as les moyens ou une b.u. à disposition, il existe de nombreux livres intéressants sur les réseaux de neurones.
    +1, rien ne vaut le papier (recycle bien sur.)

    Apres avoir bien troller,

    On commence part ce mettre les idées au clair.
    1. Le perceptron est un algorithme d'apprentissage supervise de fonction linéaire.
    -> Supervise car on entraîne l'algorithme grâce a une base de connaissance, couple entre/sortie desiree.

    2. Dans ta consigne tu as:
    - La fonction a apprendre: ET.
    - La base d'apprentissage (couple entre/sortie desiree) -> la table de veriter.
    - Des conditions initiale pour démarrer l'apprentissage.

    3. Comment est definie ton perceptron:
    Tu as deux entrees, et une sortie.
    Ces deux entrees doivent etre agréger afin de donner la sortie. Cette agrégation se fait grace a une somme pondéré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x_1*w_1+x_2*w_2 + ... + x_n*w_n=y
    ou w_i est le poids associe a l'entre i.

    4. Comment apprendre:
    Par essaie erreur.
    On peut commencer par des poids aleatoire, en gros j'essaie un truc au hasard et je me corrigerais, ou alors on peut initialiser les poids par des valeurs determinees, comme ces ton cas.
    a. Dans un cas comme dans l'autre on commence avec les poids initialises, et un couple de donne (pris au hasard ou séquentiellement).

    b. On compare ensuite le resultat obtenu avec la sortie desiree, ce qui nous donne l'erreur:

    c. Si l'erreur est differente de zeros, alors on corrige les poids:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    w_1=w_1+eps*E*x_1
    w_2=w_2+eps*E*x_2

    d. Si le critere d'arret n'est pas satisfait
    - Erreur en dessous d'un seuil
    - Stabilisation de l'erreur
    - Nombre d'iteration max
    - ...
    On prend un nouveau couple et on retourne a a.
    Sinon on s'arrete.

    5. A quoi sert eps? C'est le taux d'apprentissage. Il evite de modifier de façon trop rapide les poids ce qui peut provoquer une divergence de l'erreur, ou une oscillation de l'erreur.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonsoir,

    Citation Envoyé par Clercq Voir le message
    arij25 nous parle ici de perceptron "simple", et non multicouche. Ce qui n’empêche qu'il existe énormément d'information sur le sujet on the web .
    Quand on peut le plus on peut le moins!
    Citation Envoyé par Clercq Voir le message
    Le lien est assez concis, et le code plutôt hard pour ce mettre les idees au clair, de plus il semble que le taux d'apprentissage soit fixe, ce qui n'est pas très judicieux.
    Dommage, tu anéantis une longue recherche bibliographique en une phrase...

    Voilà un document propre :
    http://www.pearsonhighered.com/asset...0131471392.pdf

    Désolé pour la première réponse rapide et bon courage!

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 47
    Points
    47
    Par défaut
    merci bcp pour votre aide
    je trouve des lacunes au niveau de création du code et pas de la documentation, je vais faire un essai de code et le poster ici, si vous arrivez à m'aider à le corriger je serai très reconnaissante...

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 47
    Points
    47
    Par défaut
    bonjour
    voilà le code que j'ai réalisé mais il me donne des erreurs et j'ai pas réussi à les corriger:

    code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    P = [1 -1 -1 1; 1 1 -1 -1]; %les entrées
    T = [1 -1 -1 -1]; %la sortie
     
    net = newp([0 0.2 ;0 0.1],0.1);%création de réseau
    weight_init = net.IW{1,1} %les poids initiaux
    bias_init = net.b{1}%le seuil initial
     
    net.trainParam.epochs = 20;% nbre de cycles d'apprentissage
    net = train(net,P,T);%l'apprentissage
    weight_final = net.IW{1,1}%les poids finaux
    bias_final = net.b{1}%le seuil final
    simulation = sim(net,P)

    voilà l'erreur qu'il me donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ??? Error using ==> newp>new_5p1_size at 159
    Number of neurons is not a positive integer.
     
    Error in ==> newp at 78
      net = new_5p1_size(varargin{:});
     
    Error in ==> perceptron at 28
    net = newp([0 0.2 ;0 0.1],0.1);%création de réseau

    merci pour votre aide

  7. #7
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Qu'est-ce que c'est? du netlab?

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    master informatique
    Inscrit en
    Mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : master informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    voila une solution qui marche tu peux juste changer les données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    P = [0 1 0 1 1 1 0;0 1 1 1 0 0 1;1 1 0 0 1 0 1]; %les entrées
    T = [0 1 1 1 0 1 0]; %les sortie
     
    net = newp(P,T);%création de réseau
     net.IW{1,1,1}=[0.2 0.2 0.2 ]; %les poids initiaux
    net.b{1}=[0.4];%le seuil initial
     net.trainParam.epochs = 2;% nbre d'iterations
    train(net,P,T);%l'apprentissage
    Bon courage

Discussions similaires

  1. Réponses: 9
    Dernier message: 30/08/2007, 02h22
  2. [Algo] Apprentissage par renforcement
    Par adretto dans le forum Méthodes prédictives
    Réponses: 1
    Dernier message: 24/05/2007, 19h25
  3. complexité d'un algorithme par un...algorithme??
    Par afrikha dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 02/11/2005, 00h59
  4. Apprentissage par Renforcement
    Par Le Furet dans le forum Méthodes prédictives
    Réponses: 4
    Dernier message: 11/08/2005, 17h22
  5. [Débuter en Delphi] Apprentissage par Turbo Pascal
    Par tonedeff dans le forum Débuter
    Réponses: 17
    Dernier message: 01/08/2005, 10h08

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