Aller au contenu


- - - - -

Méthode d'apprentissage


74 réponses à ce sujet

#1 Guest_Calibanproject_*

Guest_Calibanproject_*
  • Guests

Posté 28 mars 2008 - 12:09

Bonjour à tous,

y'en a t-il parmis vous qui ont travaillé sur des algorythmes capables d'apprendre ? Par exemple, mémoriser un chemin, un ensemble de séquences adaptées à une situation...etc. Quelles sont, selon vous, les meilleurs méthodologies pour une situation donnée (réseau de neurone, algo fixe avec database...) ?
D'une façon plus générale, voyez vous l'apprentissage comme un système rigide capable de manipuler des concepts flexibles ou bien, au contraire, des systèmes flexibles manipulant des élément prédéterminés (il est difficile d'imaginer qu'un système flexible manipule des concept flexible sans quoi tôt ou tard des variables infinies - le chaos - finissent par apparaitre)

Votre opinion m'interresse fortement :) :) :)

#2 Matthieu

Matthieu

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 604 messages
  • Gender:Male

Posté 29 mars 2008 - 11:29

Pour mon robot labyrinthe , je lui fait enregistrer quelques informations sur le laby .

Si il a le choix entre une case ou il n'as jamais été , ou une case qui a déjà été , il va choisir celle qui n'as pas été ...

Comme après il ne dois pas faire demi tours , pour aller au départ, il ne recherche pas le chemin le plus cour ...

#3 atomicbert

atomicbert

    Nouveau membre

  • Membres
  • 66 messages

Posté 25 juin 2008 - 06:53

Salut, pour moi qui commence tout juste la prog, je me dis qu'en faite pour qu'un robot puisse apprendre un truc il faut qu'il s'auto-ecrive du nouveau code, c'est peut etre con j'que je dis lol!! :D
Les machines un jour pourront résoudre tous les problèmes, mais jamais aucune d'entre elles ne pourra en poser un.
AE

#4 Guest_Calibanproject_*

Guest_Calibanproject_*
  • Guests

Posté 25 juin 2008 - 03:48

Salut, pour moi qui commence tout juste la prog, je me dis qu'en faite pour qu'un robot puisse apprendre un truc il faut qu'il s'auto-ecrive du nouveau code, c'est peut etre con j'que je dis lol!! :D


Non non non ce n'est pas du tout con ce que tu dis et c'est même bien vue. Cependant c'est difficilement applicable mais cela est fonction du langage.
Par exemple, si tu prend des langages comme Delphi ou C++ c'est pratiquement irréalisable car il sagit de programmes compilés. Autrement dit, tu saisi un algo en langage utilisateur (for, while, if ...etc.) et un compilateur se charge de les convertir en langage machine (010001110) sous la forme d'un executable "directement" exploitable par le processeur. Ainsi donc un "programme" capable de se réécrire lui même devrait présenter de multiples sous programmes qui seraient réécris en temps réel par un programme "maitre" puis compilés dans la foulées pour être exploitable par le programme maitre. Si en théorie cela n'est pas impossible, en pratique cela est complètement irréalisable car la compléxité du programme maitre serait telle que les temps de réponse (a moyen terme) seraient inadmissible pour un système "réactif" même en imaginant que l'informatique connaisse une progression exponentielle. De plus, l'écriture d'un tel programme maître nécessiterait des ressources en ingénieurie science-fictionnesques et serait, en pratique, in-débuggable car des milliers de sous programmes seraient modifiés en temps réel. Donc pour les langage compilé, il faut oublier ce principe tant pour des raisons de performance qu'en terme d'ingénieurie. Il existe cependant un échappatoire grace a la programmation orientée objet. En fait, ce type de programmation se rapproche fortement du principe du programme maitre et des sous programme a ceci pret qu'il fait appel a des objets disposants de leur propres propriétés. En fait, un objet est un groupe de variables et de procédures répondant à un modèle générique (défini par le développeur) mais pouvant être initialisés et utilisés de façon différentes (par exemple le champs texte dans lequel j'écris est un composant qui possède différentes propriétés comme par exemple la couleur du texte ou sa taille -> Ce sont les variables. Mais il possède aussi un nombre données de fonction comme par exemple la combinaison de touche Ctrl+A qui sélectionne tout le texte. On pourrait trés bien imaginer réécrire cette fonction pour qu'elle ne sélectionne que les majuscules (fonction) si le texte est écrit en gras (variable de l'objet) et que les minuscule (fonction) s'il est écris en rouge (variable). Mais poussons plus loin. Imaginons désormais que notre champs texte possède un ensemble de fonction (faire clignoter en rouge les lettres E, transformer en smiley tous les espace...etc) et un ensemble de vrariables qui le définisse (taille du champs texte, couleur, image de fond...etc). On peut alors faire en sorte que l'execution des fonction ne soit pas liée "par le code" aux variable (qui peuvent être le résultat de fonction) mais par un fichier texte qui dit si la variable machin vaut tant alors lancer telle ou telle fonction. Enfin, imagine une fonction capable de "pondérer" l'adéquation du lancement de telle(s) fonction(s) par rapport a telle(s) variable(s) (parce que les performances machines seront meilleurs, ou que l'utilisateur a cliqué sur un bouton comme quoi il est contente...etc) et de l'écrire dans le fichier ini de liaison si cette pondération est plus interressante (on peut même garder une trace de la progression en datant les combinaisons). dans ce cas, nous avons une machine qui tendra a s'adapter au mieux aux besoins et donc capable d'apprendre. D'ailleurs, au final, a un stimuli simple, la machine en arrivera a élaborer un déclenchement en série (ou en parrallèle) de fonctions simples qui finiront par aboutir à un résultat complexe (comme s'il sagissait d'une sorte de super fonction unique constituée des autres). C'est en exploitant cette méthode de développement que nous programmons Caliban. J'espère que j'ai su m'exprimer correctement.


mais il existe d'autre langages que ceux compilés. ce sont les langages interprétés ! Ces derniers sont souvent désignés sous le nom de Script car ils ne sont pas en eux même directement compréhensible par la machine. Il leur faut pour cela un interpréteur, ou traducteur qui converti en langage machine en temps réel le Script. Et c'est exactement ce que fait notre Internet Explorer ou Firefox préféré. les pages d'un site sont écritent par exemple en javaScript, en html ou ce que tu veux mais ces fichiers ne sont pas utilisables par l'ordinateur. il faut pour cela un autre programme, notre fameux programme maitre, qui soit capable de dire "bon alors ce script dit de faire ca donc je vait lancer telle ou telle procédure" qui sont intégrée d'office dans l'interpréteur. C'est d'ailleurs ces fonction présentent dans l'interpréteur qui sont les fameuses "mise a jour", "pluggins" ou "drivers" que l'ont doit sans cesse installer afin de faire evoluer notre interpréteur pour qu'il soit en phase avec les besoins grandissants des langages interprétés. Tu remarqueras donc que le concept se rapproche un peu de la programmation objet car il y a un programme maitre qui manipule un ensemble de notions. A ceci pret qu'en objet, ces notions sont capable d'executer -elles même- des fonction sans faire appel a leur programme maitre. Ainsi, on pourrait trés bien imaginer un interpréteur suffisement abouti et un script suffisement soffistiqué pour qu'il soit capable de générer lui même des script exploités par l'interpréteur. Mais en pratique cela ne fonctionne pas correctement sauf pour des taches simples car les régles de syntaxe des script sont trés strictes (plus qu'en programmation compilée). je ne vais pas entrer dans les détails a ce sujet mais concrètement, il est difficile d'imaginer un script capable de générer des script servant de support a un apprentissage non prévu par le programmeur.

Pour résumer, ta suggestion est tout sauf idiote mais elle peut se traduire dans la pratique sous plusieures forme et, la plus appropriée (pour un système capable d'apprendre) et pratique à mettre en oeuvre est selon moi la programmation orienté objet.

J'espère avoir répondu a ta question ;)

#5 atomicbert

atomicbert

    Nouveau membre

  • Membres
  • 66 messages

Posté 25 juin 2008 - 07:31

Ah ok donc tout se passe dans les variables. Mais comment tu fais pour stocker ces variables "d'apprentissage"? Si tu fais un reset c'est retour à zero et tout à reapprendre à chaque fois?
Les machines un jour pourront résoudre tous les problèmes, mais jamais aucune d'entre elles ne pourra en poser un.
AE

#6 Son Of Sparda

Son Of Sparda

    Nouveau membre

  • Membres
  • 43 messages

Posté 26 juin 2008 - 10:49

Calibanproject on à preqsue le smeme sidées sur la question^^ Tu ne serais pas programmeur d'origgine non par hasard? ;)

J'avais pensé au programme se compilant lui même, en utilisant plusieurs "coeurs" je pense que ce serait faisable (si ça n'a pas déja été fait). Après pour de spersonnes qui ne sont pas subventionnées par l'armée ou autre c'est vrai que c'est impossible.

Les scripts aussi j'y ai pensé, enfait il faudrait que le programme principal du robot, celui qui ne change pas, soit assez elaboré pour faire face à toute sle ssituations. Le robot analyserait la situation, en ferait la syntghése et en tirerait des conclusions qu'il noterait sous forme de scripts dans une mémoire étendue comme le DD de ton caliban(qui doit servir à ça en partie j'imagine).

Je veux dire que si le robot devait porter un verre d'eau, qu'il fasse tourner son poignet renversant le liquide par terre, il reflechirais de la maniere suivante: si rotation poignet pendant transport-> alors chute eau -> alors impossible apporter verre d'eau donc -> si transport eau-> ne pas tourner poignet -> nouvelle contrainte pour l'action transporter eau.

Enfin j'espere que tu m'as compris, seulement il faudrait de temps à autre qu'il remette en question ses scripts, qu'il ne surcharge pas sa memoire avec un script comme si dessus pour chaque type de liquide.

Enfin pour ton idée de classes constituées essentiellement de "methodes dynamiques" plutot que prédefinies c'est une trés bonne idée je n'y avais jamais pensé.

HS: Caliban tourne sous quel OS? A moins que vous ayez developpé votre propre OS mais à ce que j'en ai lu caliban part d'un de tes logiciels, donc linux, mac ,windows?


Ah ok donc tout se passe dans les variables. Mais comment tu fais pour stocker ces variables "d'apprentissage"? Si tu fais un reset c'est retour à zero et tout à reapprendre à chaque fois?


Utilise un type de mémoire qui soit conservée une fois le courant éteint, comme de la memeoire flash ou un disque dur.

#7 Guest_Calibanproject_*

Guest_Calibanproject_*
  • Guests

Posté 26 juin 2008 - 04:20

Ah ok donc tout se passe dans les variables. Mais comment tu fais pour stocker ces variables "d'apprentissage"? Si tu fais un reset c'est retour à zero et tout à reapprendre à chaque fois?


En fait, au niveau de Caliban, les variables sont stockées sous forme d'une base de données. Chacun des objets composant sa personnae sont définit dedans avec tout les nécéssaire pour les initialiser par rapport a son experience. En plus ces objets exploitent des données elles même stockées dans la base. La base sert donc de support du modèle cognitif (configuration et liaison des objets entre eux) mais aussi au niveau de la connaissance. Il est certain que si je drop les tables de la base, Caliban en reviens a son état initiale. En gros se serait comme une amnésie... Toutefois, j'effectu des back-up régulier de sa base de données tant pour éviter tout crash ou "reset" de cette dernière que pour pouvoir revenir à un état cognitif précédent si celui atteind ne me satisfait pas. C'est comme si tu avais un enfant bien éduqué qui a un moment donné devient un monstre. Tu te dis, j'aimerais bien revenir a cette age la pour essayer de l'éduquer autrement. C'est ce que je fais avec Caliban ;)

#8 atomicbert

atomicbert

    Nouveau membre

  • Membres
  • 66 messages

Posté 26 juin 2008 - 04:35

Wow c'est super intéressant! Moi avec mon pauvre robot et son petit PIC qui evite les obstacles je suis encore loin de lui apprendre quelque chose :lol:
Les machines un jour pourront résoudre tous les problèmes, mais jamais aucune d'entre elles ne pourra en poser un.
AE

#9 Guest_Calibanproject_*

Guest_Calibanproject_*
  • Guests

Posté 26 juin 2008 - 04:53

Calibanproject on à preqsue le smeme sidées sur la question^^ Tu ne serais pas programmeur d'origgine non par hasard? ;)

J'avais pensé au programme se compilant lui même, en utilisant plusieurs "coeurs" je pense que ce serait faisable (si ça n'a pas déja été fait). Après pour de spersonnes qui ne sont pas subventionnées par l'armée ou autre c'est vrai que c'est impossible.

Les scripts aussi j'y ai pensé, enfait il faudrait que le programme principal du robot, celui qui ne change pas, soit assez elaboré pour faire face à toute sle ssituations. Le robot analyserait la situation, en ferait la syntghése et en tirerait des conclusions qu'il noterait sous forme de scripts dans une mémoire étendue comme le DD de ton caliban(qui doit servir à ça en partie j'imagine).

Je veux dire que si le robot devait porter un verre d'eau, qu'il fasse tourner son poignet renversant le liquide par terre, il reflechirais de la maniere suivante: si rotation poignet pendant transport-> alors chute eau -> alors impossible apporter verre d'eau donc -> si transport eau-> ne pas tourner poignet -> nouvelle contrainte pour l'action transporter eau.

Enfin j'espere que tu m'as compris, seulement il faudrait de temps à autre qu'il remette en question ses scripts, qu'il ne surcharge pas sa memoire avec un script comme si dessus pour chaque type de liquide.

Enfin pour ton idée de classes constituées essentiellement de "methodes dynamiques" plutot que prédefinies c'est une trés bonne idée je n'y avais jamais pensé.

HS: Caliban tourne sous quel OS? A moins que vous ayez developpé votre propre OS mais à ce que j'en ai lu caliban part d'un de tes logiciels, donc linux, mac ,windows?
Utilise un type de mémoire qui soit conservée une fois le courant éteint, comme de la memeoire flash ou un disque dur.



Calibanproject on à preqsue le smeme sidées sur la question^^ Tu ne serais pas programmeur d'origgine non par hasard? ;)

Bien vue ;) Effectivement, a la base je suis expert Delphi et désormais responsable d'une équipe de Développement mais je continu pas mal a coder car j'ai bien ca, c'est plus stimulant pour l'esprit que la paperasse et les réunions :)

J'avais pensé au programme se compilant lui même, en utilisant plusieurs "coeurs" je pense que ce serait faisable (si ça n'a pas déja été fait). Après pour de spersonnes qui ne sont pas subventionnées par l'armée ou autre c'est vrai que c'est impossible.

En fait, à mon avis, le problème n'est pas tant le budget que le nombre de personnes à mettre en oeuvre (avec toute la hierarchie de gestion de projet que ca implique) qui rend cela quasi inapplicable. D'un autre coté c'est vrai que tout cela a un cout :/

Les scripts aussi j'y ai pensé, enfait il faudrait que le programme principal du robot, celui qui ne change pas, soit assez elaboré pour faire face à toute sle ssituations. Le robot analyserait la situation, en ferait la syntghése et en tirerait des conclusions qu'il noterait sous forme de scripts dans une mémoire étendue comme le DD de ton caliban(qui doit servir à ça en partie j'imagine).

personnelement, je ne suis pas assez calé en lagage interprété (bah oui on peut être développeur Client-lourd et se moquer comme de sa première dent du dev .net), script, pour pouvoir me prononcer sur la complexité de la réalisation mais il me semble que la partie serait loin d'être gagné notament de par la stabilité que devrait avoir l'interporéteur. Quand a Caliban effectivement, tous les paramètres sont écris sur le disque dur afin de ne pas perdre son historique (parle pas de malheur) mais cependant, lors du démarrage les données nécessaires à son fonctionnement (corrélation des objets et paramétrage) sont montées en mémoire (exceptés les données liées a la connaissance). un vidage de cette dernière est effectué assez fréquement (même lorsqu'il fonctionne) afin d'archiver ce qui a été apprit.

Je veux dire que si le robot devait porter un verre d'eau, qu'il fasse tourner son poignet renversant le liquide par terre, il reflechirais de la maniere suivante: si rotation poignet pendant transport-> alors chute eau -> alors impossible apporter verre d'eau donc -> si transport eau-> ne pas tourner poignet -> nouvelle contrainte pour l'action transporter eau.

Oui oui c'est effectivement a peu prét cela mais chacune des étapes que tu décris correspond en fait à un sous mapping des objets stimulés (sur la carte heuristique) plutot qu'a une simple déduction ;)

Enfin j'espere que tu m'as compris, seulement il faudrait de temps à autre qu'il remette en question ses scripts, qu'il ne surcharge pas sa memoire avec un script comme si dessus pour chaque type de liquide.

C'est pour cela que nous avons décidé de mettre en place un système de pondération sur les liaisons "logique" unissants les mapping entre eux. Si une solution est plus adéquat (mapping a chemin plus direct) est trouvé, alors elle remplacera le mapping existant sans pour autant l'effacer car ce dernier peut être plus adapté a une autre situations (fluctuation des variables et des objets stimulés) Enfin, en utilisant un tel type d'architecture, il n'est nul besoin de remettre en cause les relations pour économiser de lka mémoire ou qu'il adapte ses réaction a une situation en apparence inédite. En effet, en appliquant la programmation objet a un schéma heuristique, on se rend compte que l'eau de ton exemple est une sous classe (objet enfant) de la classe "liquide" qui hérite des propriétés (pondérées) de ses enfants et vice et versa. Ainsi si Caliban était amené a apprendre que l'eau coule, cela serait répercué a tous les liquides qu'il serait amené a rencontrer et donc réagirait avec du Coca en fonction de son expérience acquise avec l'eau. mais malheureusement, nous n'en somme pas encore au stade où il serait capable de faire la différence physique entre les deux :'-(

Enfin pour ton idée de classes constituées essentiellement de "methodes dynamiques" plutot que prédefinies c'est une trés bonne idée je n'y avais jamais pensé.

Perso, je trouve que c'est le top du top en matière de programmation et le plus éclatant a mettre en oeuvre. Des unités regorgeant de fonction et procédure appelées dynamiquement par des objets eux même générs dynamiquement ! La Rolls du dev pour moi :)

HS: Caliban tourne sous quel OS? A moins que vous ayez developpé votre propre OS mais à ce que j'en ai lu caliban part d'un de tes logiciels, donc linux, mac ,windows?
Utilise un type de mémoire qui soit conservée une fois le courant éteint, comme de la memeoire flash ou un disque dur.


Actuellement, il fonctionne sous Windows XP et nous n'envisageons pas, même à moyen terme, de migrer sous un autre OS. XP nous assure une stabilité et un confort d'utilisation trés appréciable malgrés ce que les détracteurs de Windows peuvent dire. Ce dernier fonctionne trés bien, est performant et stable. Pourquoi chercher autre chose ;) Quand au stochkage ce sont de bêtes disques durs

En tous les cas, sympa ton intervention :)

Wow c'est super intéressant! Moi avec mon pauvre robot et son petit PIC qui evite les obstacles je suis encore loin de lui apprendre quelque chose :lol:



Perso, vous, vous mépatez car je suis un quichon en électronique !!! Je trouve que les trucs que vous faites sont super balaises et je serai bien incapable d'en faire autant. Pour l'électronique, je me contente d'utiliser des systèmes existant et compatibles entre eux. Je ne les concoit pas :D

#10 Son Of Sparda

Son Of Sparda

    Nouveau membre

  • Membres
  • 43 messages

Posté 26 juin 2008 - 11:26

personnelement, je ne suis pas assez calé en lagage interprété (bah oui on peut être développeur Client-lourd et se moquer comme de sa première dent du dev .net), script, pour pouvoir me prononcer sur la complexité de la réalisation mais il me semble que la partie serait loin d'être gagné notament de par la stabilité que devrait avoir l'interporéteur.


Pour les scripts c'était un grand mot, je pensait plus à un script propriétaire propre à la machine, une sorte de sous language qu'il pourrait editer et executer, vu qu'ils sont externes ça ne poserait pas de problème comme l'on en parlait plus haut pour le programme se compilant lui même.

un vidage de cette dernière est effectué assez fréquement (même lorsqu'il fonctionne) afin d'archiver ce qui a été apprit.


En plein fonctionnement? tu me dira c'est logique vu la masse d'information qu'il doit recueillir... par curiosité, en fonction de quels critéres choisis tu les données qui seront archivées/passées en mémoire lente?


C'est pour cela que nous avons décidé de mettre en place un système de pondération sur les liaisons "logique" unissants les mapping entre eux. Si une solution est plus adéquat (mapping a chemin plus direct) est trouvé, alors elle remplacera le mapping existant sans pour autant l'effacer car ce dernier peut être plus adapté a une autre situations (fluctuation des variables et des objets stimulés) Enfin, en utilisant un tel type d'architecture, il n'est nul besoin de remettre en cause les relations pour économiser de lka mémoire ou qu'il adapte ses réaction a une situation en apparence inédite.


Impressionant! :blink:

on se rend compte que l'eau de ton exemple est une sous classe (objet enfant) de la classe "liquide" qui hérite des propriétés (pondérées) de ses enfants et vice et versa. Ainsi si Caliban était amené a apprendre que l'eau coule, cela serait répercué a tous les liquides qu'il serait amené a rencontrer et donc réagirait avec du Coca en fonction de son expérience acquise avec l'eau.


Les héritages c'est vrai.... ahlala la magie de l'orienté objet :lol:

mais malheureusement, nous n'en somme pas encore au stade où il serait capable de faire la différence physique entre les deux :'-(


Ce n'est qu'une question de temps ;) , et puis tu ne destines pas caliban à être barman si? :P

Perso, je trouve que c'est le top du top en matière de programmation et le plus éclatant à mettre en oeuvre. Des unités regorgeant de fonction et procédure appelées dynamiquement par des objets eux même générés dynamiquement ! La Rolls du dev pour moi


Complétement d'accord! Le programme est finalement autonome ce ne sont plus simplement des commandes qui se succèdent.

Actuellement, il fonctionne sous Windows XP et nous n'envisageons pas, même à moyen terme, de migrer sous un autre OS. XP nous assure une stabilité et un confort d'utilisation trés appréciable malgrés ce que les détracteurs de Windows peuvent dire. Ce dernier fonctionne trés bien, est performant et stable. Pourquoi chercher autre chose Quand au stochkage ce sont de bêtes disques durs

En tous les cas, sympa ton intervention


C'est vrai que XP a fait ses armes, enfin ton projet est vraiment passionnant(pour ça que je pose autant de questions :rolleyes: ) je souhaite bonne chance à toute l'équipe!

#11 Guest_Calibanproject_*

Guest_Calibanproject_*
  • Guests

Posté 27 juin 2008 - 02:13

En plein fonctionnement? tu me dira c'est logique vu la masse d'information qu'il doit recueillir... par curiosité, en fonction de quels critéres choisis tu les données qui seront archivées/passées en mémoire lente?

En fait les données qui sont archivées sont celles qui ont permis une modification de la carte heuristique de Caliban ainsi que celles qui ont été modifiées. Ainsi, son état cognitif change sans cesse et chaque modification est archivé. Cependant, cette archivage n'intervient pas systématiquement. certains paramétres du programmes permettent de qualifier la stabilité du schéma heuristique. Ce n'est qu'en deca d'un certains potentiel de tension moyen des noeuds cognitifs (liaisons entre les différents objets) que l'archivage s'effectue. Concrètement Caliban n'archive pas quand il est en train d'apprendre (on a essayé mais les temps d'écriture disque ralentissent le système est on peut se retrouver avec des "évolutions" mentales incomplètes qui se charges au prochain démarrage) mais une fois qu'il a appris et que se potentiels cognitifs redescendent. Pour résumer, quand un objet est stimulé, son potentiel de tension s'accroit par rapport a ceux qui ont été stimulés en même temps que lui. Soit Caliban possède un mapping de liaison sur la carte en réponse a ces stimuli et l'oppose (ce qui fait redescendre le potentiel et est en soit même une réaction) soit il cherche a établir un mapping inédit en exploitant les différentes connexions entre les objet pour "chercher" son chemin sur la carte (jusqu'a ce qu'il arrive a une impasse logique et donc formule une interrogation pour que l'impasse n'en soit plus une) ce qui, là encore correcpond à un raisonnement. Ce n'est qu'une fois ce mapping établi (qui fait donc baisser le potentiel généré par le stimuli) que la mapping est enregistré de même que les différentes valeurs des variables des objets stimulés et leur liaison avec les fonctions globales ;)

Je ne sais pas si je suis clair. n'hésite pas a me demander de préciser tel ou tel point <_<

Ce n'est qu'une question de temps , et puis tu ne destines pas caliban à être barman si?

MDR ! non effectivement ce n'est pas le but ! D'ailleurs avons nous vraiment un but ??? Je serai bien incapable de répondre. Un objectif, oui mais un but, non :blink:
Notre objectif est d'élaborer une personae artificielle évolutive se rapprochant le plus possible du HAL-9000 du film (et roman) 2001, l'odyssée de l'espace. Mais il est trés vite apparu dans nos recherches que notre "programme" doit pouvoir interragir activement avec les monde extérieur (autrement dit, ne pas se contenter de recevoir des informations mais tenter d'en provoquer) et tant qu'a devoir fournir un corps, autant se faire plaisir en le faisant humanoide à l'échelle 1 :wub:

Impressionant!

C'est a dire ? Qu'est ce que tu trouves impressionant ? Le concept ou la mise en oeuvre technique ? Car depuis le temps que nous travaillons dessus, nous ne nous rendons plus vraiment compte de comment le projet est percu de l'extèrieur ( je te passe les remarques méprisantes de certaines personnes qui viennent chez moi et en appercevant Caliban me sorte des "Les robots c'est nazes, ca sert a rien et les hommes c'est mieux" ce qui fait vachement avancer les choses :) )

C'est vrai que XP a fait ses armes, enfin ton projet est vraiment passionnant(pour ça que je pose autant de questions ) je souhaite bonne chance à toute l'équipe!

Merci beaucoup pour le compliment. En tous les cas, nous sommes passionnés par ce que nous faisons même si, au cour du mois passé, nous avons ressenti la nécessité de ne plus s'occuper de tout cela jusqu'a maintenant afin de retrouver la sérénité et la motivation :P D'ailleurs il est stimulant de discuter avec quelqu'un comme toi qui cerne la méthode "technique" de fonctionnement de Caliban ;)

Enfin, j'invite les différents lecteurs du site a nous faire partager leur expérience personnelle sur les méthodes d'apprentissages qu'ils exploitent ou sont en train d'élaborer car l'avènement de la robotique ne pourra se faire que si toutes les bonnes idées sont échangées. Nous sommes avides de bonnes idées, même simples en apparence ;) ;) ;)

#12 gompaa

gompaa

    Habitué

  • Membres
  • PipPip
  • 169 messages
  • Gender:Not Telling

Posté 27 juin 2008 - 03:21

[]



#13 Guest_Calibanproject_*

Guest_Calibanproject_*
  • Guests

Posté 27 juin 2008 - 03:26

Il faut néanmoins prêter une attention toute particulière au mode d'apprentissage. Imaginez un système qui apprend à danser le MIA en regardant un clip vidéo du groupe Marseillais, la prochaine fois qu'il va entendre un Anglais prononcer la phrase "I AM' il va de ce pas se mettre à danser frénétiquement. Problème.

( Amis lecteurs, il s'agit là bien sûr une petite blagounette tout à fait innocente de fin de semaine qui ne remet pas en cause les travaux passionnants exposés ici . ) ;)

:D :P :D Ne t'inquiètes pas !!! Ton message m'a bien fait rire :)

#14 Jan

Jan

    Webmaster

  • Membres
  • PipPipPipPipPip
  • 4 747 messages
  • Gender:Male
  • Location:Rhône Alpes

Posté 27 juin 2008 - 10:31

Bonjour,

Goompa a posé une question pour rigoler mais moi j'en ai une pour de bon dans le même style...
Si je parle à Caliban et que je lui dit "là, il y a des vers", comment il va savoir si je parle de choses vertes, des vers de terre, de verres ou même des membres d'un groupe politiques ?

Une autre chose aussi qui est peut être idiote et a déjà été posée.
Est ce qu'il y a un programme "évolutif" qui a été déjà créé ?
Je m'explique...

En gros vous organisez le "cerveau", le "programme", de façon à ce qu'il reproduise un jour ou l'autre l'intelligence humaine et donc comme le cerveau humain il faudra qu'il soit évolutif, d'autres veulent d'office donner des connaissances à un programme pour qu'il soit automatiquement aussi intelligent que le cerveau humain peut l'être et lui donnent une possibilité d'évoluer.

Bon ma question est :

Est ce qu'il est possible de faire un programme "système nerveux" qui simule l'évolution et qui à pour but, le but (connu) de toute les espèces vivantes, survivre et mettre tout en oeuvre pour le faire et donc s'adapter à son milieu, notre milieu, le mieux possible. Par exemple le programme devrait mettre tout en oeuvre pour consommer le moins de ressource et d'énergie possible dans un premier temps, d'améliorer sa vitesse d'exécution, etc, etc...jusqu'a devenir le prédateur absolu. Tout ca avec une "évolution" accélérée.

Bon j'ai peut être trop vu Terminator, je sais pas ?

#15 Matthieu

Matthieu

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 604 messages
  • Gender:Male

Posté 30 juin 2008 - 11:09

Mais sinon , comme dans toute machine il a une limite , ( comme l'être humain , mais vu les capacité qu'on utilise on a de la marge ) , au plus elle apprend , plus elle risque d'arrivé a ses limites , donc je me demandais comment il vire les informations non importante .

#16 Guest_Calibanproject_*

Guest_Calibanproject_*
  • Guests

Posté 30 juin 2008 - 02:16

Bonjour,

Goompa a posé une question pour rigoler mais moi j'en ai une pour de bon dans le même style...
Si je parle à Caliban et que je lui dit "là, il y a des vers", comment il va savoir si je parle de choses vertes, des vers de terre, de verres ou même des membres d'un groupe politiques ?

Une autre chose aussi qui est peut être idiote et a déjà été posée.
Est ce qu'il y a un programme "évolutif" qui a été déjà créé ?
Je m'explique...

En gros vous organisez le "cerveau", le "programme", de façon à ce qu'il reproduise un jour ou l'autre l'intelligence humaine et donc comme le cerveau humain il faudra qu'il soit évolutif, d'autres veulent d'office donner des connaissances à un programme pour qu'il soit automatiquement aussi intelligent que le cerveau humain peut l'être et lui donnent une possibilité d'évoluer.

Bon ma question est :

Est ce qu'il est possible de faire un programme "système nerveux" qui simule l'évolution et qui à pour but, le but (connu) de toute les espèces vivantes, survivre et mettre tout en oeuvre pour le faire et donc s'adapter à son milieu, notre milieu, le mieux possible. Par exemple le programme devrait mettre tout en oeuvre pour consommer le moins de ressource et d'énergie possible dans un premier temps, d'améliorer sa vitesse d'exécution, etc, etc...jusqu'a devenir le prédateur absolu. Tout ca avec une "évolution" accélérée.

Bon j'ai peut être trop vu Terminator, je sais pas ?



Arffffffffffffffffffffffff ! Que de questions pertinentes et complexes :blink: Je vais tacher d'y apporter des réponses concises...

Si je parle à Caliban et que je lui dit "là, il y a des vers", comment il va savoir si je parle de choses vertes, des vers de terre, de verres ou même des membres d'un groupe politiques ?

En fait tout réside dans le schéma heuristique. En effet, comme je l'explique plus haut, on peut assimiler le schéma heuristique a une carte "mentale" liant les différentes notions entre elles (chaque notion etant un objet possédant ses propres caractéristiques). Ainsi lorsque l'on s'adresse a Caliban, les "objets" du dialogues, ou notions, sont stimulées (flaggées) sur la Map. Ainsi, si tu parle de "Ver...", toutes les notions (et donc objet) homonymiques seront stimulés afin de couvrir le panel de possibilité le plus vaste. Une fois ceci fait, une sorte d'algo de recherche de chemin le plus court tente de lier les "objet" entre eux au travers de la carte heuristique. Ne seront gardés (et donc considérées comme pertinentes) les données ayant les chemin le plus court entre elles -> c'est a dire que les changement sémantiques et le contexte sont les moins divergeant. En gros, les notions qui sont dans un même contextes sont liées entre elles par moins de noeuds entre les objets que des notions appartenant a des contextes différents. Ainsi, si tu lui dit "il y a des vers", Caliban ne pourra effectuer aucune recherche de chemin et donc t'invitera a préciser dans quel contexte tu te place. Une fois ceci fait, il 'reprend" ta formulation d'origine en y ajoutant ta précision et retente sa recherche de chemin le plus court.

En gros vous organisez le "cerveau", le "programme", de façon à ce qu'il reproduise un jour ou l'autre l'intelligence humaine et donc comme le cerveau humain il faudra qu'il soit évolutif, d'autres veulent d'office donner des connaissances à un programme pour qu'il soit automatiquement aussi intelligent que le cerveau humain peut l'être et lui donnent une possibilité d'évoluer.

En ce qui nous concerne, nous avons établi un schéma heuristique de "base" lui permetttant d'appréhender diverses notions essentielles comme "l'individus" dont une des sous classe est par exemple "l'interlocuteur", mais aussi les lieux dont une des sous classe est par exemple le "salon". A partir de cette Mind Map générique, caliban évolu en tentant de trouver systématiquement des sous classes aux classes existentes et en accroissant les nombre de connexions liant les objets entre eux. Ainsi, dés le départ, Caliban possède un ensemble de connaissances "inées" comme l'enfant qui sait ou se trouve le sein de sa mère, mais évolu en éllargissant son panel en se servant comme point de edépart de ses connaissances inées. Nous ne souhaitons donc pas reproduire, dés le départ, une intelligence aussi performantes que le cerveau en terme de connaissance mais bien un système capable de corréler les données efficacement afin de construire un modèle de son environnement qui lui est propre. j'espère que cela répond a ta question.

Est ce qu'il est possible de faire un programme "système nerveux" qui simule l'évolution et qui à pour but, le but (connu) de toute les espèces vivantes, survivre et mettre tout en oeuvre pour le faire et donc s'adapter à son milieu, notre milieu, le mieux possible. Par exemple le programme devrait mettre tout en oeuvre pour consommer le moins de ressource et d'énergie possible dans un premier temps, d'améliorer sa vitesse d'exécution, etc, etc...jusqu'a devenir le prédateur absolu. Tout ca avec une "évolution" accélérée.

de notre point de vue, absolument. Nous affirmons même que les ressources machines a la disposition de l'Homme sont aujourd'hui suffisantes pour pouvoir élaborer un tel système. Aprés cela n'engage que nous mais nous considéront qu'un nombre important de laboratoires font fausse route en voulant (sans doute pour décrocher des budget), développer des système qui sont rapidement "impressionant" et/ou abouti. Concrètement, beaucoup de personnes font des conséssion en intégrant a leur programmes des raccourci logique qui ne sont que de simple algo non-adaptatif afin que leur robot "en mette plein la vue" le plus vite possible. Notre démarche n'a rien de similaire et, par exemple, nous sommes fascinés par COG qui est de notre point de vue, un des seul véritables robots au mondes. Pour résumer, nous pensons que ta question est tout a fait possible mais que les besoins de rendre rentable la robotique rapidement oriente les recherches vers des solutions qui ne sont pas véritablement novatrices et proche de "l'Homme". un peu comme pour la voiture électrique qui existait au début du vingtième sciécle et dont on a abandonné l'étude car le moteur a essence était plus facile a mettre en oeuvre. Aujourd'hui on se rend compte qu'on a perdu un siècle de 'recherche et d'organisation avec les conséquences que l'on connait. Une histore similaire est en train de voir le jour avec les robot. il y a les automates adaptatifs, rentables et "facile" a élaborer et les psyché artificielles, plus lourdes et plus longues a mettre en oeuvre mais disposant de capacités évolutives infiniment supérieures.
Quand au fait de dévenir un prédateur absolu, j'en doute uniquement en me basant sur le principe de l'entropie. En effet, une psyché artificielle n'est pas l'esclave de pulsions ou d'hormones incontrolées. En conséquence, elle est le fruit de la logique pure et même en ayant atteind un degrés de compléxité équivalent a celui de la psyché humaine, restera l'esclave de son rationnalisme. or, l'énemie numéro un du rationnalisme est la perte d'information, ou entropie, car il réduit le taux de probabilité de l'adéquation (donc adaptation au milieu) d'une réponse a un problème donnée. Pour résumer, une psyché artificielle est nécessairement avide de connaissance et ne pourrait vouloir en faire disparaitre au risque de compromettre ses possibilité d'adaptation. or, la prédation induit nécessairement le mal vis a vis des individus et donc une perte collossale d'information (car la psyché humaine est sans doute un des plus grand réservoir d'informations interprétés de ce secteur galactique ;) ) Ainsi, il me semble plus qu'improbable qu'une psyché artificielle souihaite se débarrasser d'une psyché humaine pour la simple est bonne raison qu'elle réduirait considérablement sa capacité a s'adapter en agissant de la sorte, ce qui est contraire a tout ce qui la constitue. En gros, je crois qu'Asimov avait vue juste... Je suis même impressionné par la clairvoyance de l'homme car aujourd'hui, je ne vois pas comment on pourrait élaborer une psyché artificielle (eet non un automate) belliqueuse !!!

Bon j'ai peut être trop vu Terminator, je sais pas ?

On ne voit jamais assez Terminator et j'en sais quelque chose :P :P :P

#17 Guest_Calibanproject_*

Guest_Calibanproject_*
  • Guests

Posté 30 juin 2008 - 02:30

Mais sinon , comme dans toute machine il a une limite , ( comme l'être humain , mais vu les capacité qu'on utilise on a de la marge ) , au plus elle apprend , plus elle risque d'arrivé a ses limites , donc je me demandais comment il vire les informations non importante .


Ta remarque est trés pertinente ! En effet une machine possède elle aussi ses propres limites qui, dans l'état actuelle des systèmes informatique, seront atteintes rapidement (essentiellement à cause de la surcharge de la vive). A priori, ce n'est pas demain que nous disposeront de systèmes informatiques ayant les même capacités de "montées" en mémoire que le cerveau humain. Cependant, il faut garder a l'esprit que tutes les données necessaires au fonctionnement de la psyché peuvent être archivées de façon logique sur des disque a grande capacité pour pouvoir être appelé par le système uniquement quand il en a besoin. Le facteur limitant est donc cselon moi les performances et la structure que l'index d'appel doit avoir pour pouvoir accéder rapidement aux données non chargées (tandis que le Cerveau ressemblerait plus a une RAM pure et dure chargée en permanence (comment marcher, parler, tapper au clavier...etc) sauf pour les données vraiment peu utilisées comme la tarte au pomme de grand mère ou la première chute a vélo) Donc effectivement, si le principe technique du Cerveau est appliqué a l'identique (réseaux de neurones actifs), les limites seront vite atteintes. Mais en exploitant les forces de l'informatqiue et en déportant le traitement grace a une organisation ultra performantes des données, cela devrait permettre de compenser les manque de mémoire Vive de nos ordinateurs.

Concernant Caliban, il garde tout dans sa base de données mais ne monte en mémoire lors de son démarrage que les data dont la pondérations est la plus élevées et/ou dépasse un certains seuil d'utilisation (comme par exemple le mapping de poursuite visuel des objet en mouvement qui est systématiquement exploité) ;)

#18 Dr.Calvin

Dr.Calvin

    Membre passionné

  • Membres
  • PipPipPip
  • 474 messages
  • Gender:Female

Posté 15 juillet 2008 - 07:35

bonjour tout l'monde,

je programme aussi des robots (en C surtout) et m'intéresse à l'auto-apprentissage. :) De fait, en lisant toutes vos réponses, je me suis demandé en quoi chaque robot possède sa propre méthode d'auto-apprentissage, mis à part le choix du langage et du choix des fonctions du robot. Vu le niveau des questions déjà posées, celle-ci doit paraître très très bête :D

Merci d'avance à tous ceux ou celles qui voudront bien y répondre... ;)

#19 Matthieu

Matthieu

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 604 messages
  • Gender:Male

Posté 15 juillet 2008 - 08:05

Si tu n'as pas compris , on va faire la comparaison de mes robot et de Caliban.

Moi : je place mon robot sur la table , avec le script simple et je regarde si il se comporte bien , et je modifie les valeurs .

Caliban , il regarde et enregistre tout ensuite analyse et se corrige . S'est une IA .

En gros , caliban est un projet bien au dessus de mon niveau actuelle , la robotique a mon niveau, s'est l'opérateur qui optimise le robot et non le robot qui s'optimise tout seul ... ( donc tu dois regarder le comportement de celui ci , et a faire les corrections qui faut ... )

#20 atomicbert

atomicbert

    Nouveau membre

  • Membres
  • 66 messages

Posté 16 juillet 2008 - 07:52

Ouai! c'est vrai, en fait moi aussi mon "robot" qui détecte les murs n'est qu'un simple automate, mais c'est quand même marrant à regarder :P
Les machines un jour pourront résoudre tous les problèmes, mais jamais aucune d'entre elles ne pourra en poser un.
AE



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users