Aller au contenu


Contenu de miq75

Il y a 41 élément(s) pour miq75 (recherche limitée depuis 04-juin 13)



#17651 Bonjour a tous

Posté par miq75 sur 04 août 2010 - 03:54 dans Et si vous vous présentiez?

Peux-tu en dire plus sur tes spécialités ? Parce que le domaine de l'IA, c'est...grand !


En DUT j'ai fait une application de simulation d'une colonie de fourmis (comportement collectif simpliste)
En stage de DEA j'ai fait un système d'apprentissage basé sur une table de connaissance dans une plate forme multi-agents (mais c'était de l'apprentissage individuel, au niveau de l'agent)
Ma thèse est sur la représentation des jeux (à information complète ou incomplète selon un même modèle) et les joueurs automatiques (general gaming) à tous ces jeux. Je dirais que c'est de la représentation de connaissances et de la résolution de problèmes
Je me suis intéressé à la modélisation d'une base de données d'aide à la création de scénarii pour jeux de rôles grandeur nature (avec comme unité élémentaire le couple : joueur/intrigue, sachant qua chaque joueur intervient dans plusieurs intrigues et que chaque intrigue touche plusieurs joueurs). Ce n'est pas une base d'archivage des scénarii, c'est une base permettant d'entrer des intrigues et des points de vue des joueurs sur ces intrigues et de sortir des fiches de perso complètes.
Je me suis aussi intéressé à la modélisation minimaliste de passes de rock'n roll, pour archivage et révision des passes autres que les 5 ou 6 habituelles qu'on pratique. (on a tendance à oublier les autres).

Enfin bref, je dirais que mes spécialités sont la modélisation des connaissances, la résolution de problèmes, les algorithmes (avec un gout léger pour le distribué : bien que je ne le pratique que rarement je pense que c'est un gros morceau de l'avenir de l'IA).

Justement, le "super Lego" dont tu parles existe : ce sont les Lego Mindstorms! La boîte contient des pièces standards, une brique intelligente à la programmation instinctive (interface graphique) qui est aussi bien conçue pour les enfants que pour les "grandes personnes" !^^Je ne sais pas si on peut les appeler "bon marché", mais le prix n'est pas exagéré quand on voit toutes les possibilités offertes par cette fameuses boîte...


Je sais, un de mes copain de DEA a fait son stage dessus. Mais il semblait dire que la programmation (de base, avec l'interface graphique instinctive, comme celle poussée en c, réservée aux spécialistes) en était trop limitée (en terme de fonctionnalités et de ressources machines disponibles) pour que ce soit intéressant. Du coup je ne m'y suis pas plus intéressé sur le moment. À l'occasion, j'y jetterai de nouveau un œuil. Ça a du évoluer depuis...



#17647 Bonjour a tous

Posté par miq75 sur 04 août 2010 - 02:13 dans Et si vous vous présentiez?

Alors:

Salut les geeks et les geeketes

Je m'appelle Michel, j'ai 34 ans, j'habite au nord de l'alsace, je suis étudiant en fin de thèse de doctorat d'IA.
Je ne connait rien en robotique, je ne possède pas de robots, mais je m'intéresse de près à tout ce qui est algorithmique.
Je kiffe les systèmes robotiques distribués et les notions d'intelligence collective, mais aussi simplement la notion d'IA et la représentation des connaissances.

Je suis un grand fan de Ghost in the shell, mais aussi d'Asimov ou encore de Douglas Adams ou de Douglas Hofstadter.

Ce qu'il faudrait, dans le domaine de la robotique, c'est plein de robots bon marché, modulables, dont on puisse s'amuser à flasher le "cerveau" pour tester des programmes dessus sans rien connaitre en robotique (enfin, juste l'interfacage avec le code et les besoins à assouvir du robot). Un peu comme un super légo.

Je prévois dans le futur toute sorte de robots indépendants pour effectuer mille taches que l'homme ne veut ou ne peut accomplir, mais aussi des colonies de robots simplistes ayant une intelligence collective cablée.

Voilà.



#18889 Ne cherchons-nous pas à faire trop complexe en étudiant la pens...

Posté par miq75 sur 12 décembre 2010 - 01:25 dans Intelligence artificielle

L'intelligence artificielle ne se limite pas à la simulation de l'intelligence humaine. C'est un peu le graal. Si certains projets essaient de simuler un comportement qui y ressemble, la plupart d'entre eux s'intéressent profondément à des sous problèmes liés à l'intelligence (prise de décision, résolution de problèmes, représentation des information - les bases de données, par exemple, est un champ applicatif issu de la recherche en IA, logiques floues, systèmes multi-agents et programmation distribuée, etc...).

La pensée de l'homme est celle que l'on comprends le mieux, mais il existe d'autres formes d'intelligence auxquelles nous n'avons pas forcément accès. Personnellement, j'aurais tendance à penser que ce qu'on transpose sur un chien (ou un autre animal), c'est un antropomorphisme de notre propre fonctionnement (ce qui donne l'impression de transcender ses réactions, mais en fait on en est loin). Dans cette optique là, même si ça reste un sujet intéressant, ça ne l'est pas forcément vis a vis de l'objectif à long therme de l'intelligence humaine. Pourtant, c'est bien ce qui est fait (regarde le développement commercial des robots chiens, par exemple).

Ce qui se discute sur cette section du forum, en revanche, c'est la vision globaliste du problème (qui s'oppose à la vision constructiviste, i.e. l'agglomération des sous problèmes résolus individuellement). Les différentes approches sont complémentaires :)



#17653 Jeu de la vie

Posté par miq75 sur 04 août 2010 - 04:28 dans Intelligence artificielle

En fait, on peut simuler une machine de turing grace à ce "jeu de la vie", mais on en peut pas remonter à l'état initial facilement.
Ça le place plutot dans la catégorie des systèmes fondamentaux (comme les langages de bas niveau), pas des sytèmes appliquables (comme les langages de haut niveau).

Donc oui, on peut tout simuler avec ce système. Mais la complexité de cette simulation est énorme, bien au dela de nos capacités.

Sinon, le concept en lui meme d'impact de l'état des cellules a proximité, c'est celui des résaux de neurones. Ce que tu appelle raisonnance, c'est de l'apprentissage (on essaie plein de choses aléatoires, on note les neurones qui ont réagi quand on se rapproche de l'objectif, et on influe sur le hasard des prochains choix en fonction des meilleures notes.)



#52772 Piste pour l'Intelligence Artificielle (IA)

Posté par miq75 sur 10 janvier 2013 - 11:17 dans Intelligence artificielle

C'est bien à LISP ou SCHEME que je pensais. :)/>/>/>
J'ai un peu répondu sur un souvenir de cours, mais je viens de relire l'OP, je vais donc essayer de re-contextualiser ma réponse. En fait, ce type de langage (fonctionnelle) est intéressant pour faire évoluer les programmes : la régularité dans la syntaxe permet d'échanger deux bouts de code sans générer des syntax error. Je m'explique :
...


Attention, les deux exemples que tu donne dans les 2 langages n'ont pas du tout la même portée.
Pour ce code en lisp:
gen_1 : (x (+ 3 5) capteur_mesure)
gen_2 : (ET obstacle_dist avancer_dist)
Ce code implique que x soit un fonction dont une des arité est 2 et que ET soit une fonction d'arité variable (en lisp c'est le cas, toute la parenthèse est sommée) et permuter le premier composant plantera si l'arité de la fonction x n'est pas bonne.

on a ce code en c, en utilisant tout le sucre syntaxique que permet c:
gen 1 : x(3 + 5, capteur_mesure)
gen 2 : obstacle_dist & avancer_dist
ou, ce qui est strictement équivalent et tout aussi correct syntaxiquement en c
gen 1 : x(add(3, 5), capteur_mesure)
gen 2 : et(obstacle_dist, avancer_dist)
Ce code implique les mêmes contraintes syntaxiques que le code précédent en lisp, mis à part la position des parenthèses et l'ordre des mots du langage. Et oui, ça le rends plus compliqué à manipuler que celui en Lisp (du moins dans celui de la première versrion), mais en même temps de forcer à permuter dans des morceaux de syntaxe équivalents (par exemple les paramètres de 2 fonctions) peut donner un meilleur contrôle sur ce que tu fait, ça dépends de comment tu gère tes permutations, et même en lisp tu n'a pas intérêt à le faire de manière totalement aléatoire, mais à les diriger pour maintenir la consistance du programme. Donc c'est discutable, ce qui est mieux. Je pense que c'est un choix personnel après.

Ensuite, l'exemple que tu donne de code en C est instranscriptible directement en lisp (la seconde ligne n'existe pas comme brique élémentaire, affecter, puis muter une var est impossible en lisp). Attention, on peut faire en lisp un programme équivalent à celui en C qui utilisera ton extrait en C, mais on passe alors à un paradigme de liste splitée et de la réccurence, comme pour tout ce qui n'est pas trivial comme opération dans ces langages. La puissance syntaxique n'étant pas la même, c'est difficile de comparer la pertinence du sous ensemble du programme traité. En fait, on ne joue pas avec les mêmes briques élémentaires. Après, c'est peut être intéressant aussi de ne pas avoir de variables a manipuler... Là encore, c'est à voir.

Enfin, le problème de c, c'est surtout que ce code ne fonctionnera pas sans avoir construit la déclaration des variables idoine avant, mais c'est un problème que tu n'aurais pas par exemple, en python, tout en gardant tout le reste (plus le garbage collecting, etc...).



#52760 Piste pour l'Intelligence Artificielle (IA)

Posté par miq75 sur 09 janvier 2013 - 06:49 dans Intelligence artificielle

L'ordre de la notation – préfixe (opérateur var var - par ex LISP ou SCHEME), postfixe (var var opérateur - comme FORTH ou RPL) ou infixe (var opérateur var - comme les maths) – ne change pas la complexité structurelle en fait, ton arbre aura toujours le même nombre de nœuds, c'est l'ordre des branches au sein de l'arbre et leur sens de lecture qui change.

Sortir la parenthèse – (func, arg1, arg2) au lieu de func(arg,arg2) – en revanche, ça peut peut-être faciliter la génération plus automatique du code parce que tu généralise ta notation. Du coup un nœud commencera par "(".

Enfin, utiliser un langage fonctionnel, c'est à dire remplacer des variables par des données fixes, ça implique parfois d'avoir au lieu d'une variable plusieurs données, ou une syntaxe accumulant la même donnée (la liste manipulée). Ce qui est intéressant c'est que tu sors effectivement de la linéarité artificielle de l'exécution du code, ta structure est donc un peu plus libre, mais tu risque de devoir plus charger ton arbre de compilation pour un résultat équivalent.
en scheme :
(define (map f lst)
    (cond ((null? lst) lst)
          (else (cons (f (car lst))
                      (map f (cdr lst))))))
en python :
def map(func, liste):
    res = []
    for elt in liste:
        res.append(func(elt))
    return res

ou (plus pythonique mais strictement équivalent)

def map(func, liste):
    return [func(elt) for elt in liste]

en c++ :
template < class InputIterator, class OutputIterator, class UnaryOperator >
  OutputIterator transform ( InputIterator first1, InputIterator last1,
                             OutputIterator result, UnaryOperator op )
{
  while (first1 != last1)
    *result++ = op(*first1++);  // or: *result++=binary_op(*first1++,*first2++);
  return result;
}
En python ou on C, tu passes par une boucle et tu remplace chaque élément par le résultat de la fonction.
En scheme (le fonctionnel), tu doit faire un appel récursif sur chaque elt de la liste séparé de la liste, donc tu : sépare un élément de la liste, calcule le reste de la liste séparée récursivement, et recolle la liste. Ça me parait un tantinet plus complexe comme arbre de compilation, même si ça supprime effectivement le besoin des nœuds de type 'for' ou 'while' en les remplaçant par des récurrences.


Je ne suis pas certain que tu y gagnes au final.

En revanche, ça peut être intéressant de regarder les langages fortement mais non déclarativement typés, comme le Caml. Imagine la surcharge de devoir gérer la cohérence entre le type d'une var lors de sa déclaration et lors de son usage, alors que tu peut utiliser des typages dynamiquement calculés. Bref, c'est à voir et à soigneusement étudier avant de commencer à te plonger dans du code.

Après, je ne connait que le principe des algo gens et n'en ait jamais programmé moi-même, alors je me trompe peut-être du tout au tout, hein, je ne fais que donner mon humble avis sur comment je commencerais. ;)/>



#52696 Piste pour l'Intelligence Artificielle (IA)

Posté par miq75 sur 06 janvier 2013 - 11:08 dans Intelligence artificielle

C'est même de la programmation génétique, et pas seulement des algos génétiques dont tu parles.

Un algo génétique fait évoluer une population de chromosomes-solutions à un problème. Ces solutions sont fixes en taille et généralement linéaires dans leur application immédiate (Par exemple les valeurs des connexions d'un réseau de neurones, dont le nombre est déterminé. Pour chaque individu, tu attribues ces valeurs une fois à ta grille de neurones et tu en excites les entrées une ou plusieurs fois, selon ton modèle, pour en mesurer les résultats). Permuter 2 gènes, c'est permuter 2 chiffres. ça reste trivial, même si en canaliser les conséquences sur un apprentissage évolutif par un algo gén peut en rendre les conséquences très influentes.

En programmation génétique, c'est un cas particulier : c'est une population de programmes qu'on fait évoluer. Un programme n'est pas délimité par sa taille ni par sa linéarité (même si sa représentation codée est linéaire, ce n'est pas le cas de sa complexité). Il est délimité par un espace d'instructions possibles et la façon dont celles-ci s'imbriquent. Permuter 2 lignes de code, ou 2 lettres dans le nom d'une variable, ça mènera dans la quasi totalité des cas à un plantage syntaxique... Bref, ça reste faisable, mais déterminer un espace d'évolution du programme pertinent est une autre paire de manches. Et je ne te parles pas de l'univers dans lequel ce programme évolue, hein, soyons clairs, mais bien de la matière première que tu vas donner à ton algo gén comme chromosomes.

Tu veut créer de nouveaux individus "intelligents" (trouver de nouvelles "structures de programme" d'intelligence), pourquoi pas, mais tes individus seront-ils intelligents ou appliquerons-t-il seulement un programme, comme un programme joueur d'échec ? Est-ce que l'intelligence ne sera pas dans ton système de programmation génétique au lieu d'être dans les individus ? Est-ce que créer de cette façon des individus réellement intelligents (capables de s'adapter et de s'améliorer par eux même) n'implique pas qu'ils soient eux même capable d'apprendre, donc nécessitant un apprentissage long (lui même sur plusieurs millier d'itérations) à chacune des itération (individu) de ton programme ? comment gérer cette complexité (complexité de l'apprentissage d'un individu × complexité de l'apprentissage évolutif de ton système) ?



#52743 Piste pour l'Intelligence Artificielle (IA)

Posté par miq75 sur 09 janvier 2013 - 11:24 dans Intelligence artificielle

Alors je vais te parler un peu de compilation (programmation de compilateurs):
Un programme vu par un compilateur, c'est un arbre d'instructions dont chaque bloc de code (typiquement les fonctions, ce qui est dans les clauses if, then et else, et ce qui est dans les boucles) est un nœud et dont les branches d'un même nœud sont ordonnées. Toi, ça te paraît linéaire, parce que tu le lit dans un fichier texte qui est linéaire, mais pas pour le compilateur ou l'interpréteur. Et je ne parle pas non plus de la complexité de l'exécution d'un programme, qui est encore un problème différent.

Bref, un simple
if A or B then {
   foo
   bar
}

c'est déjà un arbre avec 4 feuilles (A, B, foo, bar) et 3 nœuds (if-then, or, {}). La complexité de cet arbre augmente assez vite (et encore je n'ai pas défini foo et bar, qui sont probablement eux-même des arbres). C'est ce genre de choses que tu devra manipuler si tu veut faire un "programme" génétique. Pas question par exemple de dire "tiens, choisi 20 instructions parmi celles-là". Le 20 est lui même une chose qui devra être testée mais surtout rendue cohérente avec la recherche.

Si je prends un langage au hasard, par exemple python qui possède une notation relativement allégée par rapport à d'autres et que je compte le nombre de "statement", c'est à dire de mots du langage, j'en ai facilement 20. Les opérateurs y'en a facilement 30, et encore je ne parle pas de l'analyse syntaxique des noms de variable et de fonctions. Bref, un pool de 50 composants qui articulent le programme, plus les variables. Soit 50 type de possibilité pour chaque nœud (un 'or', qui possède une arité de 2 peut contenir 2 feuilles aussi bien que 2 nœuds qui peuvent être n'importe quelle expression bien construite du langage, un '.' bien que son arité soit 1 peut faire appel à n'importe quel attribut ou propriété d'un objet...).

Donc pour un nœud, 50 possibilité de valeur du nœud à multiplier par l'arité du type de nœud et encore à multiplier par la complexité des possibles expressions bien construites qui en découlent...

Je ne cherche pas à te décourager, mais à te faire réaliser la complexité de ce à quoi tu t'attelles. Faire une recherche aléatoire mais dirigée dedans est possible, mais c'est très complexe. Tu devra probablement le faire sur un langage que tu aura construit toi-même, ce qui veut dire un langage qui n'est pas forcément complet...

Après, y'a des astuces pour gérer moins d'instructions, comme par exemple de ne placer les opérateurs logiques que dans les clauses if. Mais ne perds pas de vue que tu auras 2 complexités à gérer, celle de l'univers dans lequel tes créatures évoluerons, et celle du langage qui supportera ton programme génétique.

À mon avis, commence par très petit pour le simulateur et pour le langage, puis quand tu auras un truc qui complet qui tournera (un programmateur génétique ET le simulateur qu'il utilise) alors tu pourra chercher à augmenter les capacités du langage, avant d'augmenter celles de l'espace de simulation. Courage !



#52714 Piste pour l'Intelligence Artificielle (IA)

Posté par miq75 sur 07 janvier 2013 - 07:51 dans Intelligence artificielle

Alors tu es bien dans le paradigme de l'intelligence dans le comportement collectif mais pas de l'évolution d'individus intelligents (ce qui n'étais pas clair vu que tu partait de l'intelligence humaine, qui est individuelle).

Le système que tu décrit me fait plus penser à un système de tableau noir qu'à de la programmation génétique. Une liste de règles (ce que tu appelles méthodes élémentaires) posées et appliquées selon un ordre et un poids. L'ordre et le poids pouvant évoluer avec l'apprentissage. Si ton algo n'est qu'une liste de commandes, sans structures de boucles et de tests, ce n'est plus a proprement parler un programme (bien que le système qui gère cela soit lui un algo gen).

Il existe déjà des systèmes qui permettent de fournir (entre autres) tous les composants de la simulation d'agents basée sur de telles règles (par exemple DIMA, du lip6 (en java), j'y ai intégré un système pour gérer les règles durant mon DEA), mais a ma connaissance ils n'intègrent pas encore les algos gen comme sélecteurs de priorités/poids. Cela dit ils te faciliteraient grandement le travail pour tes simulations, tu devrais y jeter un coup d'œil !



#52698 Piste pour l'Intelligence Artificielle (IA)

Posté par miq75 sur 06 janvier 2013 - 11:42 dans Intelligence artificielle

Et sinon, et ça n'a rien à voir :
J'ai entendu hier une émission sur la façon dont les abeilles communiquaient entre elles dans la ruche sur leurs zones de butinage. C'était comme un apprentissage, avec un individu faisant une danse codée traduisant pour les autres la position du cite intéressant, sa richesse, son danger, etc... Bref, un beau système multi-agents. Et comme dans tout système d'apprentissage, y'a une part d'exploration (certaines abeilles) et une part d'exploitation (certaines abeilles collectent). C'est souvent un point problématique dans un système d'apprentissage, comment déterminer la part d'exploration par rapport à celle d'exploitation. Et j'ai trouvé la solution des abeilles très élégante, parce qu'adaptable. Ce sont les butineuese les plus vieilles de la ruche, qui, passées un certain âge, deviennent exploratrices (et donc celles qui ont le mieux survécues aux péripéties de la collecte toute une vie d'abeille durant.

Bref, à noter : dans un système d'apprentissage ou les individus peuvent mourir à des ages différents, pour résoudre le problème de la part d'exploration par rapport à la part d'exploitation, faire exploiter tous les individus dans leur jeunesse, puis faire explorer les individus à partir d'un peu avant qu'ils n'atteignent l'espérance de vie moyenne de la population.

Vu ton projet, il est possible que ça te serve.



#17721 Le concept du sens

Posté par miq75 sur 11 août 2010 - 02:53 dans Intelligence artificielle

Et si les briques unitaires du sens d'un mot abstrait étaient les mots et le sens complet de ces mots une phrase ou un ensemble de phrases ?
On a déjà des briques unitaires pour le sens de certains mots concrets (par exemple la couleur, ce serait entre autres codage RGB, le verbe etre ce serait un codage d'appartenance à ).
On a la logique mathématique comme agrégant...
La "pensée" serait elle alors une modélisation de certains sens, suivant un modèle logique, représentant un arbre sémantique (ou une structure similaire), construit avec des sens choisi au hasard parmis ceux connus ? Aisni que la déduction d'une nouvelle connaissance ou un ajustement de ces connaissances ?

exemple:
"droite" "ensemble de points alignés"
"segment" "ensemble de points alignés"
"point" "intersection de deux droites"

Une recherche de similitudes dans les définitions pourrait donner :

machine : "droite egal segment ?"
humain : "droite etre infini"
humain : "segment etre fini"

-> création de "fini" et "infini", vierges de sens, ajout de ;"infini" dans droite et de ;"fini" dans segment

machine : "fini ?"
humain : "avoir fin"
machine "infini ?"
humain : "non avoir fin"

-> création des champs sens de fini et infini, détection de l'opposition entre les deux (pour peu que le sens de "non" soit connu)

machine : "droite non egal segment"
humain : "oui"

-> ajout de "non egal segment" a droite et de "non egal droite" a segment

machine : "droite egal ensemble de point alignés infinis ?"
humain : "droite egal esemble infini de points alignés"

-> transformation des 2 premières propriétés connues de la droite en une seule, selon la formule donnée par l"humain, rappel de similarité entre droite et segment :

machine : "segment egal ensemble fini de points alignés ?"
humain : "oui"

-> transformation des 2 premières propriétés connues du segment en une seule ...

Alors, ça ressemble à de la "pensée" ?



#18300 Le concept du sens

Posté par miq75 sur 11 octobre 2010 - 09:31 dans Intelligence artificielle

Le fait est que l'on peut penser sans formuler de mots (les animaux comme tu dit le font très bien) mais en l'occurence, entre humain, dans nos interractions entre nous et dans celles que l'on souhaiterait avec les machines "parlantes", on utilise des mots comme éléments unitaires. Savons nous encore communiquer sans mots ? Savons nous encore organiser nos idées, faire une déduction, sans mots ?

Même s'il y a un mécanisme intrinsèque (pas conscient*) derrière notre formulation de pensée (en mots) je pense que le mot est déjà un bon début de brique unitaire pour faire une machine "parlante", ou plus précisément l'idée qui est derrière le mot (le mot est interchangable - quand on passe d'une langue à l'autre, pas l'idée qu'il représente).

Quand au fait d'avoir la capacité d'être acteur sur le monde, des bras, c'est un plus, mais parler est déjà une action. Est-elle suffisante à elle-même comme action sur le monde extérieur pour un apprentissage d'une représentation complete de ce monde est une bonne question.

* = Je pense que c'est là un nœud du problème, quel est exactement ce mécanisme ? C'est celui là qu'il faut coder en dur. Tout le reste, (les briques élémentaires sémantiques, les règles grammaticales, les règles sociales, etc...), doit pouvoir être appris (l'autre nœud du problème), si on veut pouvoir parler d'intelligence...



#38555 Le concept du sens

Posté par miq75 sur 10 février 2012 - 06:15 dans Intelligence artificielle

Bon, c'est moi qui raccroche le wagon.

J'ai repensé au problème exposé ici et je l'ai formulé ainsi :

Pensée :
Qu'est ce que la pensée ?
Est-ce juste une voix qu'on entends dans sa tête et qui précède (parfois) ce que l'on dit ?
Est-ce simplement un mécanisme constructif des idées ? Est-ce plus complexe que cela ?

Mots :
Quel est le rôle d'un mot, dans le mécanisme de la pensée ?
Est-ce LA brique élémentaire ?
Peut-on penser sans mots ?
Un mot est-il un attribut permettant l'identification, ou encore une définition qu'on associe à un sens, à une idée ? C'est uniquement ça ?

Prenons un exemple simple au sens conceptuel : une pomme. "pomme" est une référence à un objet tangible, palpable. Une construction des caractères/souvenirs de ce que constitue une pomme est une "notion de pomme". C'est une agrégation d'autres "notions" partagées (couleur rouge, texture lisse au toucher, odeur et goût sucrée, élasticité craquante sous la dent, ... des stimuli électriques classés selon leur source, leur forme ?) en une situation précise, celle de la présence de l'objet "une pomme". Le mot sera entendu, puis associé à cette agrégation. Et ce mot reviendra à chaque fois qu'on pensera à cette agrégation. Le mot est-il donc une clé primaire de cette agrégation, de ce concept ? Une idée manipulable de manière unitaire, sans faire appel à l'ensemble des concepts, mais en les gardant à porté en cas de besoin ?


À la relecture de ce fil, j'ai envie d'ajouter les points suivants à la nouvelle ébauche que je viens de reproduire ici.
Effectivement, il faut associer également aux stimuli ressentis des actions correspondantes : la notion de "texture lisse au toucher", ça va avec l'idée de saisir l'objet. Donc l'idée action/ressenti, au lieu de l'idée ressenti.
Effectivement aussi, le mot semble n'être que complémentaire de l'agrégation d'idées action/ressenti qui devrait être réalisée par la machine. Mais si le mot ne vient qu'après la construction de l'agrégation, comment évaluer extérieurement cet apprentissage tant que le mot (clé primaire ?) n'est pas appris ? Est-ce faisable seulement par l'observation extérieure des connections réalisées, jusqu'à un point de complexité ou le mot devient possible ? En fait, plus j'y pense, plus je pense que oui.

Maintenant, ce qui ne me paraît plus si important ni compliqué que ça, c'est tous les modules dont je parlais. Finalement, si on cherche à réaliser une vrai "intelligence" indépendante, est-ce que ces modules ne vont pas tous se décomposer en stimuli/actions et en la construction d'associations entre nœuds conceptuels initialement vierges, comme je suppose que le fait un enfant humain ? Par exemple, la couleur rouge. Est-ce que le concept couleur rouge ne va pas simplement venir de la corrélation trouvée entre les représentations machines de deux images perçues contenant du rouge ? Est-il nécessaire d'écrire un module spécifique pour coder cela, ou celui-ci est-il "appris" simplement en suivant les recherches de similarités ? Est-ce que ce n'est pas cela la clé pour gagner encore un niveau d'abstraction du mécanisme de la pensée, par rapport au paradigme des mots/briques unitaires ? Est-ce que ça marcherais avec tous les modules dont on à parlées avant ? (par exemple l'idée/mot "politique", ça se construirait une fois les mots de base appris, sur des agrégations ayant déjà associées un mot, justement.)

La machine associée devra effectivement disposer de plusieurs interfaces avec le monde extérieur.
-Confort/douleur : niveau de batterie faible = douleur ?
-Vue : pas lue comme une vidéo, lue plutôt en cercles concentriques à partir du centre d'une image capturée (grandissants jusqu'à ce que l'attention soit relâchée ?) sous forme de stimuli élémentaires RGB ?

-et déplacement physique et orientation de "l'œil", toujours selon des mouvements chiffrés ;

-Toucher : l'action, donc un bras/main articulé ?

-et sensation tactiles (codées numériquement, résistance chiffrée sur une durée déterminée, puis grilles plus complexes quand la coordination chiffre de commande de la main/mouvement de la main apparaitra ?

-Odorat et gout ? Est-ce nécessaire ?
-Ouïe : retranscrite en sons (durée, hauteur, longueur et timbre(sinusoïdale complexe, mais ce n'est pas le plus utile à décrypter pour l'apprentissage), sont des données purement chiffrables qui définissent totalement un son). Coder une augmentation du stimuli douleur pour les volumes trop forts peut s'avérer utile...

-et haut parleur.

Voilà pour les modules purement "physiques", auxquels j'ajouterai néanmoins, et ce dans un registre totalement "physique" au sens de la machine aussi.
-une ligne de commande ?

-avec des commandes actions directes sur ses données internes, dans un premier temps
-avec une possibilité de module de dialogue formel, quand on jugera bon d'intégrer des mots sous forme informatique directement sur des concepts ? Est-ce que ce sera nécessaire ? Est-ce que ce sera intéressant en terme de développement ?



Au niveau "cérébral": une structure de développement de connaissances permettant
-la détection de similarité dans des stimuli/actions indépendants ou croisés
-l'enregistrement (création de nœuds identifiants ces similarités pluri-stimuli/actions) lors de ces détections
-un mécanisme de renforcement de ces nœuds lors de leur redétection
-un mécanisme d'oubli progressif si ceux-ci ne sont jamais redétectés
-un mécanisme d'agrégation/généralisation de ces nœuds par similarités entre eux
-un mécanisme de correction ?


Bon, dernier point, je n'ai pas (et n'aurais probablement jamais) la machine qui me permettrai de faire ça, et je n'y connait rien en robotique (d'ailleurs, est-ce nécessaire de donner corps, ou est-ce que l'extraction de donnée accessibles massivement sur internet ne serait pas suffisant ?), mais l'aspect logiciel/intelligence qui est derrière est mon domaine de compétence et m'intéresse particulièrement (et la programmation des filtres tels que celui de l'œil que j'ai décrit, c'est je pense une peccadille). Je pense que j'essaierai de mettre en place un tel système un jour ou j'aurais le temps, donc toute piste d'analyse ou commentaire à ce propos m'intéresse. :)



#17715 Le concept du sens

Posté par miq75 sur 10 août 2010 - 11:24 dans Intelligence artificielle

Effectivement, la question de la brique unitaire se pose.
Le mot est un choix arbitraire. Est il suffisamment élémentaire pour qu'un sens puisse y être associé ? (Sur ce point là, les asiatiques ont peut être une facilité par rapport à nous, avec leurs sinogrammes associés à des idées et leur phrases sans accords ni conjugaisons.)

On pourrai effectivement choisir la lettre comme élément unitaire, et les groupes de lettre représentant des mots appris par la machine par répétition (dans un dialogue textuel avec la machine). L'apprentissage de la grammaire serait peut être plus facile, à moyen terme, vu que les accords seraient intégrés à l'apprentissage dès le premier niveau d'aggrégation "apprise" (le mot).

L'exemple de l'écriture chinoise me donne a penser que le mot serait suffisemment unitaire, à la condition d'écrire et de lire sans accorder ni conjuguer, ce qui serait suffisant pour tester une capacité d'apprentissage du sens. Après, si on veut passer à une machine qui apprends le sens ET lit/écrit correctement, il faudra passer par l'unité lettre, mais c'est déjà un exercice plus compliqué en terme d'apprentissage pour la machine.

Il y a aussi le problème du ressentit, comme tu dit, et des autres organes. Mais dans un premier temps, je pense que je tenterais de me concentrer sur une machine n'ayant comme entrées que quelques senseurs (contacts, accéléromètres, flux texte) et comme sorties quelques éléments de base (flux texte, 2/3 moteurs pour le déplacement, un bras, une pince). Juste de quoi modéliser la sémantique et son apprentissage. Si une telle machine était capable d'apprendre le sens des mots, alors nul doute qu'une plus complexe en organes pourra le faire sous condition de ressources mémoire/temps suffisantes.

La question qui se pose alors est celle de la structure minimaliste de senseurs/moteurs à associer à ses capacités cognitives (mémoire/programme) pour que la machine puisse trouver un intérêt à l'apprentissage (une fonction objectif). Peut être une maximisation des variations énergétiques de sa pile... qui le pousserait à se charger puis se décharger rapidement, avec un bonus pour la longueur de ce cyle... Mais dans tout les cas, il faudra passer par une phase d'apprentissage de la capacité à aller se charger, paf, voilà un module... ;)



Dans un autre ordre d'idée, il est a noter que les mathématiques, qui décrivent les propriétés abstraites de l'univers, ont fait de la "logique" la branche des mathématiques qui décrit les mathématiques. Pourrait on donc s'inspirer de la "logique" pour déterminer une base dans la modélisation de l'apprentissage des différents sous systèmes associés à la représentation du sens dans une IA ? (Attention, je ne parle pas d'utiliser la logique comme LE module sémantique — ce que font déjà certains chatterbots —, mais d'utiliser quelques éléments fondamentaux de la logique — comme le modus-ponens — pour construire des modules allant bien au dela de la logique. Utiliser la logique à un niveau méta, en quelque sorte, sans tomber dans son utilisation habituelle en IA, directement au niveau applicatif)



#17710 Le concept du sens

Posté par miq75 sur 10 août 2010 - 07:24 dans Intelligence artificielle

Bon, et une dernière interrogation maintenant :

Ayant défini une liste de modules nécessiares à une intelligence a peu près complète, comment faire pour que ces modules soient appris (un apprentissage de la machine) et non pas innés (définis par un programeur) ? Quelles sont les éléments unitaires possibles/nécessaires de ces module et comment leur agencement peut définir le "contenu sémantique" de ces modules ?

Voilà, c'est comme ça que je tenterais de créer une IA si j'en avais le projet. Vous en pensez quoi ?



#17687 Le concept du sens

Posté par miq75 sur 06 août 2010 - 04:43 dans Intelligence artificielle

Salut,

Pour faire une IA capable de langage naturel, je pense que la clef du problème est le fait de faire intégrer à cette IA non pas du vocabulaire et des règles grammaticales, mais quelque chose qui correspond à une représentation du sens de ces mots. Et pas une représentation textuelle, mais une représentation "machine".

Dans un chatterbot, par exemple, j'immagine qu'il est possible de modéliser le vocabulaire et les liens logiques entre certains mots (traités comme des prédicats en logique, comme le ferait un moteur d'inférence). Cependant, tant que la machine n'appréhende pas d'une manière ou d'une autre la sens des mots qu'elle manipule, on tombera sur des syllogismes.

Il est certainement possible, par exemple dans une base de données contenant la correspondance mot/sens dans une table, de coder un sens a certains mots appartenants au registre mathématique, si le programme est doté d'un module représentant une part de la logique mathématique dans un langage formel. (par exmeple le sens du verbe "être égal" serait lié à la représentation mathématique du = dans le modèle mathématique formel, de même que le groupe sémantique "est un" serait représenté par l'inclusion à un ensemble). Dans un texte mathématique lu en langage naturel, un moteur de cohérence générale traduirait la compréhension du sens du texte dans le contexte foormel mathématique, et on pourrait parler alors de compréhension du sens.

Cependant, pour un texte descriptif, ou un texte manipulant des notions abstraite, ou phylosophiques, ce système ne serait pas suffisant.

La question quime tarraude est donc la suivante :
Quels modules, à part le moteur générique d'analyse du sens qui lie le tout, un moteur d'inférence logique, une grammaire formelle mathématique, une grammaire ensembliste, une module de représentation du monde physique (et des "organes" associés), seraient nécessiaires pour que l'intelligence soit complète ?

Est ce que l'attachement que je porte à la notion de sens dans le contexte du développement d'une IA vous parrait cohérent ?

À vos ardoises ! ;)



#17698 Le concept du sens

Posté par miq75 sur 07 août 2010 - 10:04 dans Intelligence artificielle

C'est bien ma question : qu'est ce que le "sens" d'un mot ?
-Pour un opératuer mathématique, c'est une notion rattachée à un espace mathématique ;
-pour une couleur, c'est une notion rattachée à un espace de représentation de l'environnement, (une proximité avec une représentation numérique d'une couleur repère) ;
-pour le ciel, c'est une notion rattachée à un lieu (de nouveau un élément particulier de représentation de l'environnement)...
mais la liste est longue.

Comment décrire le sens des mots "paradigme", "interface", "politique", quel module spécialisé y associer, et quelles grammaires dans ces module utiliser pour représenter ces notions particulière ?
C'est cette liste que je voudrais commencer à établir. (Je parle d'une IA générale, celle qu'on s'attendrait à trouver dans un robot humanoide multifonctionnel ;), le chatterbot n'étais qu'un exemple basique pour illustrer le début de mon propos.)



#17713 Robotique et python

Posté par miq75 sur 10 août 2010 - 09:41 dans Programmation

Bonjour,

Je n'y connait rien en robotique, mais je m'y connait en IA, et plus généralement en langages de programmations.
J'ai un faible pour le langage python (que je trouve extrèmement puissant, polyvalent, extrèmement simple d'utilisation et multiplateformes, tout en étant beaucoup plus léger le mastodonte java) pour ce qui est de la programmation.
Est il aisé de controler un robot avec un code en python (des interfaces python/machine(senseurs/activateurs) existent elles déjà) ?
Des projets de robotique codés en python existent ils déjà ?



#17642 Robot "intelligent"

Posté par miq75 sur 04 août 2010 - 01:24 dans Intelligence artificielle

par contre ils sont , du moins pour l'instant, incapables de faire des découvertes scientifiques.

C'est pas tout a fait vrai, on utilise des automates formels pour faire de la preuve et de la découverte mathématique. Ce dont ils ne sont pas capable de se rendre compte, c'est à quel point leurs découvertes sont intéressantes ou pas.



#17641 Robot "intelligent"

Posté par miq75 sur 04 août 2010 - 01:22 dans Intelligence artificielle

Le problème des intelligences purement rationnelles c'est qu'elles ne bougent pas d'elle même. Pour faire tout bien, autant ne rien faire. En effet, une intelligence rationnelle va récupérer des concepts, les associer pour en déduire des relations logiques qui sont consolidées. Seulement, pour acquerir des données, il faut explorer le monde. Qu'est ce qui peut donner du mouvement à une telle intelligence ?

La soif de connaissances ?



#17643 Robot "intelligent"

Posté par miq75 sur 04 août 2010 - 01:32 dans Intelligence artificielle

Il faut donc ajouter à la machine des modules afin qu'elle devienne dépendante, qu'elle fasse une erreur de calcul toutes les 4 secondes


Pas forcément. Je pense que la simple faculté d'oublier (une mémoire à long terme très peu utilisée -un peu comme un cache vidé - ou au contraire une altération aléatoire de mémoire vive, occasionnellement) et un mécanisme alléatoire de test de validité du résultat et de remise en question du calcul sont suffisants (ou en tout cas, déjà très intéressants à tester afin de mieux comprendre notre 'intelligence').



#17650 Robot "intelligent"

Posté par miq75 sur 04 août 2010 - 03:23 dans Intelligence artificielle

:ph34r: Euh, juste un détail : tu n'es pas obligé de poster une nouvelle réponse à chaque citation, hein ;) !

Arf, je ne peut pas éditer pour recoller mon texte (sur d'autres forums, les réponses consécutives du même auteur sont grouppées, je comptais la dessus. :) Et puis j'ai répondu dans l'ordre dans lequel je me faisais ces remarques, en lisant en diagonale les pages...

Pour répondre à ta remarque sur les découvertes scientifiques, j'étais au courant de ce que tu précises ^^. Ce que je voulais dire, c'était que ces robots sont utilisés comme des outils ultra-perfectionnés, mais qu'ils restent des outils, des "moyens" de découverte, un peu comme lorsque les mathématiciens se sont servis des super-ordinateurs pour résoudre certains problèmes, comme celui de trouver la Nième décimale du nombre Pi ou encore pour trouver un contre-exemple à la conjecture d'Euler..., bref, comme tu l'as dit, eux-mêmes ne se rendent pas compte de ce qu'ils font, ce sont les humains qui analysent ensuite leurs résultats.

Heureusement d'ailleurs... :lol:

D'ailleurs je suis très intriguée par le terme "conscience de soi-même", dans ton explication suivante : "pour commencer à faire tendre une IA faible vers une IA forte, il faut lui permettre de travailler sur un espace de représentation du monde suffisamment riche pour qu'elle puisse avoir conscience d'elle même, et il faut lui implémenter (ou lui donner une capacité d'auto implémentation) des mécanismes suffisamment complexes pour qu'elle puisse se les corriger volontairement". N'existe t'il pas déjà des IA capables de s'auto-corriger ?

Oui, elles sont capables de s'auto-corriger, mais ce processus est cablé par le programmeur. C'est une analyse logique du système qu'a fait le programmeur et qui a défini les choses que la machine peut apprendre (la mémoire ou le cablage interne). La machine n'a pas (encore et à ma connaissance) la capacité de sortir de cet espace prédéfini.
L'étape suivante qui arrive, c'est cette capacité de s'adapter selon ses propres règles choisies soit même, et non pas implémentées de l'extérieur. Une capacité qui permettrait de sortir de cet espace prédéfini, quand on le souhaite. Dans l'exemple mathématique, c'est l'humain qui analyse le résultat. Une IA forte devrait ne pas avoir besoin de cet intervenant extérieur, elle devrait analyser son propre raisonnement en modélisant le fait que c'est elle même qui le fait, et donc en ayant entre autres connaissances une représentation d'elle même et de ses capacités. Autrement dit : une conscience de soit.



#17599 Robot "intelligent"

Posté par miq75 sur 30 juillet 2010 - 05:50 dans Intelligence artificielle

J'aurais tendance à dire que "l'intelligence" tiends en plusieurs choses :

- être capable de survivre et de progresser (évoluer vers la complexité ?) de manière autonome
- autrement dit d'être capable de déterminer des objectif à différents termes, et de juger lequel on tente d'appliquer à chaque instant, en les équilibrants
- d'être capable d'apprendre, d'essayer, de commettre des erreurs, de s'en rendre compte et de (en en analysant les mécanismes) ne pas les refaire
- d'une manière générale (puisque c'est déjà le cas pour les deux points précédents) d'être capable de s'abstraire d'un niveau de raisonnement et de s'y remettre au besoin. Ça implique une successions de "niveaux" de raisonnement, et d'être capable de se modéliser son propre raisonnement.



#17645 Robot "intelligent"

Posté par miq75 sur 04 août 2010 - 01:52 dans Intelligence artificielle

La conscience c'est L'IA forte.
Pour l'instant tout les robots sont constitués d'IA faible plus ou moins développé. C'est a dire avec des automatismes
plus ou moins complexe.


Je pense que pour commencer à faire tendre une IA faible vers une IA forte, il faut lui permettre de travailler sur un espace de représentation du monde suffisemment riche pour qu'elle puisse avoir conscience d'elle même, et il faut lui implémenter (ou lui donner une capacité d'auto impléméentation) des mécanismes suffisemment complexes pour qu'elle puisse se les coriger volontairement. Mais cela ne sera pas forcément suffisant (a moins peut être que sa capcité de commettre des erreurs ne découle directement de ces deux composants*)

*: À ce propos : Est ce que les situation provoquées dans une phase d'exploration (qui s'oppose à une phase d'utilisation) lors d'un apprentissage, et qui sont souvent le fruit d'un hasard plus ou moins controlé, peuvent être considérée comme des erreur ? Cela impliquerait que les systèmes d'apprentissage sont capables d'hors et déjà capable d'en commettre...



#17644 Robot "intelligent"

Posté par miq75 sur 04 août 2010 - 01:41 dans Intelligence artificielle

Il reste a décrire l'IA forte, ce que beaucoup ont deja tenté de faire. Un des critères énoncé est la sociabilité.
Je regrette mais certaines personne dans mon lycée font abstraction de ce point mais elles sont quand meme intelligente, enfin..^^
(une petite parenthèse au type qui a mis la vidéo : on dirait une pub pour une secte, ça fait un peu peur ...)

La sociabilité est un des aspects de l'intelligence, mais n'est ni unique, ni systématiquement nécessaire. L'intelligence est un composé de plusieurs choses. Pour s'en convaincre, il suffit de regarder les test d'intelligence : le premier a sortir mesurait le QI (quotient intellectuel) parce qu'on à pensé (à l'époque) que l'intelligence était une capacité purement logique. Maintenant, on en fait pour tout, le quotient émotionnel, le quotient affectif, le quotient linquistique, etc....
Après, chacun a aussi une vision différente de ce qu'est ou doit être l'intelligence.