Partage
  • Partager sur Facebook
  • Partager sur Twitter

[IA] Learn to walk

    23 mai 2015 à 15:00:12

    Bonjour,

    Je suis développeur web de métier, je programme aussi en C++ et maintenant en C#.
    Pour les besoins de ce projet j'ai un peu étudié Blender histoire de.
    Je m’intéresse réellement à l'intelligence artificielle et à la vie artificielle depuis maintenant un an mais c'est bien plus tôt que j'ai trouvé ça intéressant avec le jeu "Creatures" de Steve Grand.

    Genèse

    C'est le deuxième projet que je réalise dans ce domaine, le premier mettait en scène des créatures qui devait apprendre à se nourrir, avec des herbivores et des carnivores. L'apprentissage se faisait de génération en génération. Ce projet avait été fait en JavaScript et canvas. Voici le lien vers le projet :

    Wild Neurons

    Généralités et avancement

    Le projet "Learn to walk", comme son nom l'indique, consiste à ce qu'un robot apprenne à se tenir debout et à marcher tout seul.
    Ce projet sera plus gourmand en ressource, le JavaScript n'est plus une option envisageable. Par ailleurs le projet est en 3 dimensions et utilise la physique. J'ai donc fait le choix du moteur de jeu Unity avec C#.

    Voici une vidéo qui montre le robot et un déplacement manuel (sans IA pour l'instant) :

    https://www.youtube.com/watch?v=4876r5tOAo8

    Une autre vidéo qui met le robot en équilibre uniquement via script :

    https://www.youtube.com/watch?v=a7c7DDzghfo

    Objectifs

    L'objectif est un de mettre en place un cerveau artificiel qui commandera de nombreux muscles sur le robot, et celui-ci devra les activer de telle manière qu'il sera en mesure de se déplacer correctement. L'apprentissage doit se faire en temps réel et pour arriver à cela, le cerveau sera à la fois électrique mais aussi chimique pour récompenser le robot lorsqu'il fait des progrès.

    L'intérêt ici c'est de construire un modèle de cerveau qui apprend en temps réel pour l'appliquer par la suite à des tâches plus complexes.


    Le projet et son originalité

    Des projets tournant autour de cette thématique existent. Notamment des projets utilisant des réseaux neuronaux avec apprentissage via un algorithme génétique (comme pour mon projet Wild Neurons cité pus haut), en voici une courte liste :

    Ce type d'apprentissage est facile à mettre en place mais comme ce n'est pas un apprentissage temps réel, il devient vite limité dans les possibilités offertes.

    En apprentissage temps réel, il faut regarder ailleurs dont notamment le travail de Steve Grand, le créateur du jeu "Creatures" qui aujourd'hui travaille sur un projet d'envergure puisqu'il cherche à réaliser des créatures aux comportement réaliste et cela passe par un apprentissage temps réel :

    https://www.kickstarter.com/projects/1508284443/grandroids-real-artificial-life-on-your-pc

    Mon projet ce situe entre ces deux types de projets.

    -
    Edité par loacast 24 juin 2015 à 22:34:30

    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2015 à 12:27:18

      Sujet très intéressant, je m'installe!

      J'ai juste une question, lorsque tu parles de muscles, tu parles de ceux proposés par Unity lors de l'import d'une armature ou tu comptes en programmer toi-même? :)

      Bon courage en tout cas!

      • Partager sur Facebook
      • Partager sur Twitter
      do { Hardwork(); } while (You.Fail == true);
        24 mai 2015 à 12:52:13

        Salut,

        J'ai pensé à deux moyens pour simuler les "muscles".

        A partir d'un modèle ou chaque membre sont séparés les uns des autres et en les réunifiant dans unité via FixedJoint et HingeJoint. Ainsi pour les muscles appliquer une force et un torque.

        L'autre solution serait une armature non animée. Mais là je manque de connaissance à ce niveau là. Faire une armature sous Blender ça ça va mais quelles sont les possibilités offertes par Unity pour agir dessus je ne sais pas.

        Actuellement je teste donc la première solution.

        Merci pour ce retour et si tu as des liens à proposer sur le sujet je suis preneur ^^.



        -
        Edité par loacast 26 mai 2015 à 13:37:41

        • Partager sur Facebook
        • Partager sur Twitter
          24 mai 2015 à 13:01:52

          Je n'avais pas pensé à cette solution... A mon avis ce sera la plus pratique à mettre en oeuvre. Si je trouve des trucs qui peuvent t'intéresser je mettrai les liens ici :)

          En tout cas, je me réjouis de voir ce que ça va donner! Et si tu as des ouvrages de référence à conseiller, hésite pas à en parler car, autant trouver des textes sur l'apprentissage n'est pas si compliqué autant l'apprentissage temps réel...

          • Partager sur Facebook
          • Partager sur Twitter
          do { Hardwork(); } while (You.Fail == true);
            24 mai 2015 à 17:58:55

            @Cirneco_: Concernant l'apprentissage temps réel, je n'ai pas trouvé de ressources intéressantes. J'ai donc cherché du côté du fonctionnement du cerveau, en termes biologiques j'entends. J'ai répertorié un ensemble de règles (réductionnisme du fonctionnement actuel des neurones) qui devrait aboutir à un équilibre. Dans le domaine de la vie artificielle, on appelle cet équilibre un système émergent, c'est à dire qu'en prenant des éléments unitaires ayant des règles connus, en les associant entre eux, doit émerger un comportement nouveau et imprévisible. C'est sur ce pari que je base tout mon projet :D.

            @Update sur l'avancement du projet : Avant d'introduire l'IA, je voulais réussir à mettre le robot en équilibre via des scripts, ça a heureusement fonctionné :

            Vidéo youtube

            ++

            • Partager sur Facebook
            • Partager sur Twitter
              24 mai 2015 à 22:44:30

              J'admire le pari :p

              J'ai une petite question d'ordre pratique, tu comptes utiliser ton script d'équilibre en parallèle à celui de marche? Car au final, apprendre à marcher dépend de la capacité à tenir en équilibre. Ne serait-ce donc pas fausser l'apprentissage que de fournir à ton robot la connaissance de l'équilibre?

              Sinon, pour ne pas être inutile, voilà un petit fichier qui m'a semblé intéressant, j'espère qu'il te plaira :)

              • Partager sur Facebook
              • Partager sur Twitter
              do { Hardwork(); } while (You.Fail == true);
                25 mai 2015 à 2:45:04

                Ok, j'ai lu le document et j'ai rien compris du tout :-°, suis pas mathématicien :D. Je sais pas si t'as vu les formules mais faut s'accrocher deux secondes. Ceci dit on y apprend que l'apprentissage temps réel est un sujet d'étude recherché actuellement et ça c'est bien.

                Pour répondre à ta question, non je n'utiliserais pas ce script pour mon IA, je ne fais que valider des étapes. Cette deuxième étape avait pour but de valider le fait qu'en appliquant des torques sur chaque membre on peut arriver à une posture debout en équilibre.

                Je vais introduire autant d'étapes intermédiaires que possible, c'est le meilleur moyen d'arriver à un résultat plutôt que de me lancer tête baisser et d'être bloqué sans comprendre pourquoi.

                ++

                • Partager sur Facebook
                • Partager sur Twitter
                  25 mai 2015 à 10:29:52

                  loacast a écrit:

                  Ok, j'ai lu le document et j'ai rien compris du tout :-°, suis pas mathématicien :D. Je sais pas si t'as vu les formules mais faut s'accrocher deux secondes. Ceci dit on y apprend que l'apprentissage temps réel est un sujet d'étude recherché actuellement et ça c'est bien.

                  Haha ouais j'ai lu aussi, je n'ai pas mis l'article pour ses formules mais plutôt pour l'approche utilisée et les quelques exemples qui sont mentionnés. Sinon en effet les formules sont un peu indigestes (quoi que bien expliquées je trouve).

                  En tout cas, continue dans ta démarche, et si tu es intéressé, un prof m'avait conseillé un chouette bouquin traitant de métaheuristiques (algorithmes d'optimisations). Il ne parle pas de l'apprentissage en temps réel mais donne des infos vachement claires sur des algos qui peuvent certainement être adaptés à ton projet. Bon par contre c'est une brique donc faut s'accrocher :p

                  loacast a écrit:

                  Je vais introduire autant d'étapes intermédiaires que possible, c'est le meilleur moyen d'arriver à un résultat plutôt que de me lancer tête baisser et d'être bloqué sans comprendre pourquoi.

                  Belle approche!

                  • Partager sur Facebook
                  • Partager sur Twitter
                  do { Hardwork(); } while (You.Fail == true);
                    25 mai 2015 à 13:38:07

                    Beau projet que je vais suivre :) !
                    • Partager sur Facebook
                    • Partager sur Twitter
                    (ಠ_ಠ)  va voir Drozor
                      25 mai 2015 à 18:30:45

                      10/10, meilleur simulateur de QWOP depuis QWOP

                      Pour ce qui est de l'apprentissage temps réel, peut être lui donner un moyen de savoir si il s'approche oui ou non de son objectif ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                      DIESELPUNK
                        25 mai 2015 à 19:36:07

                        Pour ce qui est de l'apprentissage temps réel, peut être lui donner un moyen de savoir si il s'approche oui ou non de son objectif ?

                        Oui en effet, ça va forcément passer par un système de récompense, le cerveau chimique, qui va valider le circuit actuel des neurones (enfin, la partie en activité). sans stimulation chimique, les synapses vont perdre en poids jusqu'à ce détacher (habituation) et se recréer ailleurs (plasticité synaptique).

                        Haha ouais j'ai lu aussi, je n'ai pas mis l'article pour ses formules mais plutôt pour l'approche utilisée et les quelques exemples qui sont mentionnés. Sinon en effet les formules sont un peu indigestes (quoi que bien expliquées je trouve).

                         Je regarderais de nouveau plus sérieusement dans ce cas.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          29 mai 2015 à 8:50:35

                          Excellent !

                          Je vais suivre.

                          Bon courage

                          • Partager sur Facebook
                          • Partager sur Twitter
                            29 mai 2015 à 10:51:44

                            Intéressant, je follow !
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              29 mai 2015 à 23:18:29

                              Très intéressant et surtout bluffant ! Je suis ce projet bien que je n'y connaisse rien aux IA ;) !

                              -
                              Edité par Anonyme 29 mai 2015 à 23:18:43

                              • Partager sur Facebook
                              • Partager sur Twitter
                                29 mai 2015 à 23:26:15

                                Merci tu m'a donné envie de travailler sur les IA :)

                                • Partager sur Facebook
                                • Partager sur Twitter
                                (ಠ_ಠ)  va voir Drozor
                                  30 mai 2015 à 1:25:16

                                  Merci de vos commentaires ^^.

                                  Très intéressant et surtout bluffant !

                                  Comme actuellement il n'y a pas d'IA, je n'ose pas imaginer ce que ce sera quand il y'en aura une :p.

                                  Merci tu m'a donné envie de travailler sur les IA

                                  De par ses documentations obscures et sa difficulté, c'est un domaine assez boudé par les développeurs.
                                  C'est chouette que tu sois de la partie.

                                  -
                                  Edité par loacast 30 mai 2015 à 1:25:39

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    30 mai 2015 à 3:47:32

                                    Merci :)

                                    C'est Wild Neurons qui m'a donné envie de travailler sur les algorithmes de génétique :)

                                    cordialement

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    (ಠ_ಠ)  va voir Drozor
                                      14 juin 2015 à 15:30:28

                                      Du nouveau :) ?
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      (ಠ_ಠ)  va voir Drozor
                                        15 juin 2015 à 2:21:15

                                        Salut,

                                        Le projet est pas mort loin de là, par contre j'ai un boulot que je fais le soir qui m'empêche de travailler sur un projet perso.

                                        Ceci dit, j'ai trouvé comment améliorer grandement le design de mon robot sans perdre la physique actuelle qui fonctionne bien. Dans la prochaine vidéo il y aura donc, à priori :p, un nouveau modèle pour le robot.

                                        ASAP

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          24 juin 2015 à 22:42:14

                                          Salut,

                                          Comme indiqué précédemment, mon mini objectif actuel est d'appliquer les rotations physiques sur un modèle 3D texturé.

                                          On a donc un cube par bone, on applique la rotation du cube pour son bone et on applique des torques sur les cubes ce qui fait bouger le modèle.

                                          J'ai passé pas mal d'heures sans succès avant de comprendre que c'était l'orientation de chaque bone qui posait problème. J'ai donc refait à ma sauce les bones, et ça semble prometteur.
                                          Avant d'avoir un modèle fini et fonctionnel, voici une vidéo intermédiaire qui montre assez bien ce que ça donnera ;) ... enfin si le lutin du serveur n'est pas mal luné.

                                          https://www.youtube.com/watch?v=6gZP1EpCmdE

                                          Sur ce, j'y retourne :D

                                          Edit : une autre vidéo avec un peu plus d'avancement

                                          https://www.youtube.com/watch?v=eYz9gtVM0MM

                                          -
                                          Edité par loacast 26 juin 2015 à 2:19:40

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            3 août 2015 à 20:19:19

                                            Hey !

                                            Projet en stand by pour l'instant (pour les mêmes raisons qu'avant) mais comme le projet me tiens toujours autant à coeur je me permet de vous poster d'autres vidéos de projets plus ou moins en rapport avec celui-ci ;)


                                            Évolution de formes et de comportements (Algorithmes Génétiques & Vie Artificielle)

                                             ---------

                                             ---------

                                            ---------

                                              ---------

                                            -
                                            Edité par loacast 3 août 2015 à 20:21:29

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              3 août 2015 à 22:24:55

                                              Content de voir que le projet continu toujours :) !
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              (ಠ_ಠ)  va voir Drozor

                                              [IA] Learn to walk

                                              × 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