Partage
  • Partager sur Facebook
  • Partager sur Twitter

Machine learning

Réseau neuronal

    18 août 2017 à 12:38:30

    Bonjour,

    Voilà, j'ai découvert depuis peu le machine learning et notamment les réseaux de neurones. Je me suis mis dans la tête d'essayer d'en faire par moi même, c'est-à-dire sans utiliser de bibliothèques existantes ; j'aimerais reprogrammer un truc pour moi. Problème, je n'arrive pas a trouver de choses vraiment précises quant aux algorithmes/calculs/à la logique auxquels des scientifiques ont déjà pensé (parce qu'il faut pas non plus que je réinvente la roue x) ) et que je devrais utiliser. Si vous avez quelques liens sur le sujet à me proposer, je suis preneur, parce que pour le moment, c'est vraiment pas concluant x)

    Et pour ceux qui se demanderaient pourquoi j'essaie de faire ça (cad reprogrammer ce qui existe déjà), eh ben ... Pour la science ! Plus sérieusement, je pense que ça me permettrait de mieux comprendre comment ça fonctionne, même si au final je n'arrive pas à aller au bout. A mon avis, ça ne peut être que bénéfique.

    Voilà, merci d'avoir lu : ) J'attends vos réponses : )

    EDIT : Alors ... j'ai pas pensé à regarder sur le site du zé... heu ... openclassroom pardon ; J'ai trouvé ça : https://openclassrooms.com/courses/initiez-vous-au-machine-learning/comment-resoudre-un-probleme-de-data-science ; Je viens juste de commencer, donc ce n'est peut-être pas ce que je cherche. Si vous avez d'autres liens à partager, je suis toujours preneur : )

    -
    Edité par Mathiouza 18 août 2017 à 12:54:08

    • Partager sur Facebook
    • Partager sur Twitter
    Apprenez, codez, dessinez, réfléchissez, ... L'important c'est d'aimer ce que l'on fait.
      19 août 2017 à 15:52:33

      Salut,

      Premierement il te faut savoir quel problème tu souhaites résoudre à l'aide de ton réseau de neurones. Ensuite il te faudra comprendre les théories mathématiques qui se cachent derrière, mais une recherche google t'aidera surement. Alors tu pourras passer à la partie programmation.

      Ce cours devrait t'aider pour commencer : http://alp.developpez.com/tutoriels/intelligence-artificielle/reseaux-de-neurones/#LI

      Il fournit les algorithmes en langage naturel donc c'est un peu guidé mais pas trop ;)

      En espérant t'avoir aidé.

      • Partager sur Facebook
      • Partager sur Twitter
        19 août 2017 à 19:15:25

        Salut, et merci de la réponse, je pense que ça m'aidera,

        Mais j'ai finalement fini par trouver par moi même un cours en anglais, j'ai réussi a faire mon code pour le perceptron entrées/sortie sans couches intermédiaires, puis j'ai commencé a faire le perceptron multicouche. Comme exemple, j'ai essayé de faire apprendre au programme la porte logique XOR, ça fonctionne bien.

        Mais du coup j'ai quelques questions.

        Est-il utile de faire un réseau neural de plus de 3 couches (cad inputs-n couches cachées-outputs) ? Et si oui, cela fonctionne-t-il d'une autre façon que seulement le réseau neural à 3 couches ?

        Faire des centaines d'inputs est-il mauvais ? Par exemple pour de la reconnaissance d'image, pour une image de 10x10 pixels seulement totalement noirs ou blancs, doit-on faire bêtement un input par pixel ou doit-on faire autrement ? Cela implique-t-il que pour une image de 200*200 pixels par exemple, il faille 40000 inputs ?

        Aussi, mettre plus d'une cinquantaine de neurones sur une la couche intermédiaire fausse totalement mes résultats. Il est possible de faire avec moins, même si on a un grand nombre d'inputs ? (j'ai notamment essayé de faire de la reconnaissance d'image ; le but était de faire reconnaitre au programme si un rond est dessiné sur l'image. Ça ne fonctionne pas du tout, peut-être cela vient-il d'autre part ? La résolution de l'image, ou peut-être le peu d'exemples différents - je lui ai fait apprendre quelques images en boucle en fait).

        Désolé, je pose beaucoup de questions x) Mais comme j'ai commencé depuis vraiment peu, j'essaie de trouver des réponses où je peux.

        (Et un dernier truc, mais moins important, est-il possible assez simplement de faire le chemin inverse ? De récupérer les entrées idéales pour une sortie donnée ?)

        Merci encore d'avoir répondu : )

        Ceci dit, je vais peut-être voir pour une bibliothèque, pour ensuite comprendre comment ca fonctionne avec celle-ci, peut-être que je comprendrais mieux.

        -
        Edité par Mathiouza 19 août 2017 à 23:26:47

        • Partager sur Facebook
        • Partager sur Twitter
        Apprenez, codez, dessinez, réfléchissez, ... L'important c'est d'aimer ce que l'on fait.
          30 octobre 2017 à 21:56:23

          Bonjour,

          Mathiouza a écrit:

          Est-il utile de faire un réseau neural de plus de 3 couches (cad inputs-n couches cachées-outputs) ? Et si oui, cela fonctionne-t-il d'une autre façon que seulement le réseau neural à 3 couches ?

          Oui biensur que cela sert mais tout dépend ton exercice. Plus tu est profond (avec plusieurs epaisseurs de layers cachés), plus le modèle est lent a entraîner (cf le pb du vanishing gradient). Si tu as des millions de datas, tu peux te le permettre, si tu en as 100 000, c'est a voir...

          Mathiouza a écrit:

          Faire des centaines d'inputs est-il mauvais ? Par exemple pour de la reconnaissance d'image, pour une image de 10x10 pixels seulement totalement noirs ou blancs, doit-on faire bêtement un input par pixel ou doit-on faire autrement ? Cela implique-t-il que pour une image de 200*200 pixels par exemple, il faille 40000 inputs ?

          Tu peux avoir bcp d'input en entrées, tout depend de la taille de ton dataset. Si tu as 400 input de 100 features, ton modele ne marchera pas bien car il lui faut bcp de pts. Pour une img de 10x10 biensur qu'un simple NN fonctionne (par exemple tu peux atteindre 88% de reussite sur la classification de MNIST avec seulement un simple NN de 3 couches de topology 784, 300, 300, 100 , 10). Cela fonctionne car tu as 60000 inputs.

          Cependant les image sont généralement traités avec des Convolutionnal Neural Network car si tu vais ca sur une vrai photo (disons 2000x3000 pxl), ta CG va fondre.

           Mathiouza a écrit:

          Aussi, mettre plus d'une cinquantaine de neurones sur une la couche intermédiaire fausse totalement mes résultats. Il est possible de faire avec moins, même si on a un grand nombre d'inputs ? (j'ai notamment essayé de faire de la reconnaissance d'image ; le but était de faire reconnaitre au programme si un rond est dessiné sur l'image. Ça ne fonctionne pas du tout, peut-être cela vient-il d'autre part ? La résolution de l'image, ou peut-être le peu d'exemples différents - je lui ai fait apprendre quelques images en boucle en fait).

           Une fois de plus ça dépend de la complexité de tes données. Si tu as trop de neurones, tu vas overfitter ton dataset et ca marchera pas bien sur des données inconnues. Il n'existe malheureusement pas encore de fomule miracle sur la topologie a suivre. Plus tu as de neuronnes plus tu vas overfitter, plus tu sera profond, plus tu sera lent a entrainer. Apres pour les images, ils faut passer apr des CNN, c'est fait pour ca.

          Mathiouza a écrit:

          (Et un dernier truc, mais moins important, est-il possible assez simplement de faire le chemin inverse ? De récupérer les entrées idéales pour une sortie donnée ?)

           Oui et non, il existe des modèles fait pour générer de la données sur de input précis (regarde les Generative adversarial networks ou les auto encodeur). Tu trouveras plein de topoly/modele différent en ML (tu peux te reférer au ZOO : http://www.asimovinstitute.org/neural-network-zoo/ )pour voir ce qui existe mais il en sort des nouveaux chaque semaines presque (cf le nouvela algo pour les captchas, le Quasi Recurent Neural Network etc..)

          La route est longue en ML et quand tu aura fais 1km, elle aura avancé de 5 donc tu verras difficilement le bout :)

          -
          Edité par coni63 30 octobre 2017 à 21:56:42

          • Partager sur Facebook
          • Partager sur Twitter
            21 janvier 2018 à 17:43:32

            Salut !

            Merci pour cette réponse que je viens seulement de voir ^^' Ça va énormément m'aider je pense. Je n'ai pas retouché au machine learning depuis un bout de temps, et ça m'a donné envie de m'y remettre, j'espère avoir les quelques billes en plus pour résoudre mes problèmes !

            Merci ^^

            • Partager sur Facebook
            • Partager sur Twitter
            Apprenez, codez, dessinez, réfléchissez, ... L'important c'est d'aimer ce que l'on fait.
              24 février 2018 à 22:39:05

              Le vrai truc c'est que personne ne s'amuse à envoyer une image en input directement. il y a un prétraitement, et c'est le principe du convolutionnal neural network. Après les réseaux de neurones c'est bien, mais ça fait pas tout et il faut avant tout comprendre ce qu'on cherche à faire quand on a un problème de machine learning.

              Aujourd'hui, je n'ai pas connaissance de moyen d'ajouter une information structurelle sur un modèle dans un réseau de neurones. Ca existe peut être, mais l'important est d'utiliser toute l'information disponible.

              • Partager sur Facebook
              • Partager sur Twitter

              Machine learning

              × 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