Partage
  • Partager sur Facebook
  • Partager sur Twitter

Perceptron multicouches pour résoudre XOR

Sujet résolu
    22 septembre 2019 à 17:46:12

    Bonjour, débutant actuellement dans les réseaux de neurones, j'essaye de mettre en place un perceptron multicouches basique pour résoudre le problème de la porte XOR, cependant je rencontre un problème pour la mise en place de l'apprentissage par rétropropagation.

    Je crée mon perceptron sur Excel afin de bien comprendre et visualiser tout ce que je fais, actuellement j'ai :

    Pour faire apprendre mon réseau j'utilise le principe de rétropropagation de l'erreur afin d'adapter les poids Wi et les biais W0.

    Les poids et les biais de base sont tous initalisés aléatoirement à la ligne 3, puis les formules de mise à jours des poids via retropagation de l'erreur sont écrites dans les poids et biais suivants.

    J'utilise comme formule de l'erreur :

    donc pour la cellule AB3 : =(1/2)*(C3-Z3)^2

    J'utilise comme fonction d'activation de mes neurones, la fonction sigmoide.

    Pour corriger les poids ou les biais j'utilise comme formule :

    valeur du poids précedent - alpha * (dErreur/dPoids)

    Avec alpha égal à mon taux d'apprentissage.

    Dans le cas de la couche de sortie dErreur/dPoids =

    =

    Avec t qui correspond à la valeur de sortie attendue, Yo est la valeur de sortie du neurone de sortie et X0 la valeur passant par ce poids (valeur sortant du neurone que relie le poids en question au neurone de sortie, par exemple la sortie du neurone caché 1 pour le poids W7 reliant le neurone caché 1 au neurone de sortie).

    Dans le cas de la couche caché dErreur/dPoids =


    =

    Ou W0 est le poids reliant ce neurone au neurone suivant dans le cas du neurone caché 1 ce sera W7.

    X0 est la valeur sortante du neurone de la couche caché en question.

    Xh est la valeur d'entrée de ce neurone passant par le poids en question par exemple X1 en A3 pour W1.

    Pour corriger le biais de mon neurone de sortie j'ai par exemple :

    Pour corriger le poids W4 de mon neurone caché 2 j'ai :

    Pour corriger le poids W1 de mon neurone caché 1 j'ai :

    Chaque formule prend en compte le résultat de la ligne du dessus (cellules colorées).

    Le problème que je rencontre est que mon réseau n'apprend pas et ne se rapproche pas des valeurs qu'il devrait, au contraire dans le cas ou l'exemple est correct (résultat attendu 1 valeur obtenue en sortie 1) l'erreur est faible (logique), si l'exemple est faux (exemple valeur attendue 1 résultat obtenue 0) l'erreur est plus élevé (logique).

    Cependant plus l'apprentissage de mon réseau progresse, plus l'erreur dans le cas des exemples valides va diminuer (devenir encore meilleur là ou il est déjà bon), et plus l'erreur dans le cas des exemples non valide va augmenter, donc mon réseau devient encore plus mauvais là ou il est déjà pas bon (pas logique, car elle devrait diminuer au fur et à mesure que le réseau progresse).

    Exemple, dans les premières itérations j'ai :

    L'erreur (valeur du millieu) est cohérente vis à vis de la validé ou non des résultats.

    Puis après un certain temps d'apprentissage :

    L'erreur à augmenté pour les deux résultats invalides, au lieu de réduire, et l'erreur à continuer de réduire pour les résultats valides.

    Je ne comprend absolument pas ce que je fais mal, j'ai fais beaucoup de recherches et d'études sans succès...

    Merci pour votre aide, j'éspère que la présentation de mon excel n'est pas trop compliqué à comprendre

    -
    Edité par AntoninJvlt 22 septembre 2019 à 18:08:34

    • Partager sur Facebook
    • Partager sur Twitter
      23 septembre 2019 à 14:53:15

      Une chose me chiffonne : si \(Error=\frac{1}{2}(t-y_{0})^2\), alors :\[\frac{\partial Error}{\partial y_{0}}=-(t-y_{0})=y_{0}-t\]

      Pourtant tu prends \((t-y_{0})\) ?

      -
      Edité par Zachee54 23 septembre 2019 à 14:53:54

      • Partager sur Facebook
      • Partager sur Twitter
        24 septembre 2019 à 11:22:22

        En effet, j'ai fais une erreur, mais même après correction le problème est toujours le même, mise à part que les erreurs sont quasiment les mêmes pour les cas valides et les cas invalides (ce qui n'est pas logique) :


        Après quelques itérations :

        EDIT : J'ai passé le taux d'apprentissage à 0.8 et après environ 1000 itérations j'obtiens 0% d'erreurs :

        Merci beaucoup

        -
        Edité par AntoninJvlt 24 septembre 2019 à 11:26:20

        • Partager sur Facebook
        • Partager sur Twitter

        Perceptron multicouches pour résoudre XOR

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown