Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
24 février 2011 4 24 /02 /février /2011 17:53

Faisons le point :

Nous avons vu ensemble comment communiquent et fonctionnent les ordinateurs : avec un système binaire, vous vous rappelez ? Nous avons aussi approché le conflit qui se présente avec les humains, lesquels quant à eux, utilisent le langage parlé, écrit, voir gestuel pour communiquer. Cette simple contradiction implique un problème d’envergure. Comment reproduire une intelligence exprimée en mots et idées dans un programme fait de 0 et de 1 ? La solution décrite dans le chapitre précédent a été d’implémenter des symboles constituant des langages dits de programmation, résumant cette idée ou ce concept. C’est la base de la plupart des programmes d’intelligence artificielle, utilisant une structure symbolique pour fonctionner et même évoluer !

 

symboles

Les symboles : intermédiaires entre les idées et le langage machine.

 

Maintenant que nous avons remémoré à nos lecteurs les bases, nous allons pouvoir passer à la partie principale de ce chapitre : la place de l’intelligence artificielle dans les langages de programmation dont son langage dédié : le Lisp.

 

 

Lisp le langage de programmation pour L’IA :

Lisp a été conçu et développé entre 1956 et 1958 essentiellement par John McCarthy  dans le cadre du projet «Intelligence Artificielle» au MIT.Il constitue l’un des langages les plus connus et utilisés en intelligence artificielle, toutefois il n’est pas le premier dans ce domaine. Avant lui, le précurseur se trouve être IPL, employé à l’époque pour les travaux sur GPS (General Problem Solver). Plus tard en 1972, Prolog, un autre langage sur l’intelligence artificielle, verra le jour mais nous nous intéresserons ici principalement à Lisp.

 

Lisp possède un avantage énorme sur d'autres langages. Il est profondément basé sur la logique. Telles situation impliquent telles réactions ou telles réactions pour telles situations. Au final « l’intelligence » créée a emmagasiné une base de données de comportements à adopter en prévision de toutes les figures qu’elle pourrait être amenée à rencontrer.

La logique par l’exemple :

Pour bien comprendre cette méthodologie, mettons en situation un petit robot mobile très élémentaire que nous supposons :

  • disposer d'un capteur de choc avant gauche

  • disposer d'un capteur de choc avant droit

  • disposer d'un moteur gauche (si seul activé, fait tourner à droite)

  • disposer d'un moteur droit (si seul activé, fait tourner à gauche)

Nous pouvons chercher à décrire son comportement de façon littérale. En énumérant à la suite chaque action que le robot sera capable d'accomplir et en s'imposant une formalisation des règles à découvrir. Par exemple une règle décrivant une action pourra être de la forme :

si ((le robot est dans l'état X) et (l'évènement Y vient de se produire)) alors (passer à l'état Z)

Un état pourra être une action que le robot est en train de réaliser. Un événement pourra être quelque-chose qui le fera réagir.

On peut énumérer les actions que nous souhaitons voir exécuter par le robot (la description est ici décrite en langue française et doit bien sûr être traduite sous la forme d'un programme) :

  • A : le robot avance

  • B : le robot recule puis tourne à gauche

  • C : le robot recule puis fait un tour sur lui même

  • D : le robot recule puis tourne à droite

A l'instar des actions nous pouvons énumérer les évènements (avec les mêmes remarques que pour les actions en ce qui concerne le code) :

  • a : il ne se passe rien

  • b : le capteur droit vient d'être excité

  • c : le capteur gauche et le capteur droit viennent d'être excités

  • d : le capteur gauche vient d'être excité

Utilisons le motif que nous avons déjà donné pour décrire les comportements que nous souhaitons voir exécuter par notre robot :

  • si ((le robot est dans l'état A) et (l'évènement a vient de se produire)) alors (passer à l'état A)
  • si ((le robot est dans l'état A) et (l'évènement b vient de se produire)) alors (passer à l'état B)

Ou plus clairement : si le robot avance et qu'un choc avant droit est détecté alors le robot recule puis tourne à gauche.

  • si ((le robot est dans l'état A) et (l'évènement c vient de se produire)) alors (passer à l'état C)
  • si ((le robot est dans l'état A) et (l'évènement d vient de se produire)) alors (passer à l'état D)

 

Supposons que A est l'état initial du robot et qu'il ne se passe rien. Le robot applique la première règle. Il continue à avancer et est donc toujours dans l'état A. Puis l'évènement d intervient (choc de ses deux capteurs). Alors il n'a pas d'autre choix que d'appliquer la règle 3 : il recule pour faire demi-tour. Il se retrouve dans l'état C et au bout d'un petit moment se met à avancer. Il se retrouve donc de nouveau dans l'état A et ainsi de suite.

 

 

robotActions

 

 

L'intelligence artificielle dans un robot :

Un robot s'apparente typiquement à une machine capable d'évoluée dans un environnement donné. Soit de manière intelligente en réfléchissant au moyen de modifier son comportement (par exemple pour s'adapter à un milieu suivant le terrain et les contraintes qui apparaissent comme des obstacles, des objets, des trous …).

Soit de manière répétitive en effectuant une tâche précise en boucle dans une chaîne de production par exemple.

 

Chez le robot les informations provenant de l’extérieur sont captées par différents moyens de perception. Ces moyens sont bien souvent des imitations de ceux des humains : micros, capteurs, caméras ... Toutes ces informations en provenance des capteurs sont ensuite envoyées à la tête pensante de la machine, comme un cerveau, le plus souvent un ordinateur embarqué. Celui-ci va ensuite traiter les données récoltées lui permettant de se repérer et de disposer d'éléments sur le milieu où il se trouve grâce à des fonctions ou à de nombreux algorithmes embarqués dans son système (assemblage d'instructions permettant l'exécution d'une tâche donnée).

La prise de décision appartient aux algorithmes et lui permettent de réagir en conséquence, en modifiant le comportement de certains de ses composants : moteurs, lumières, circuits … Le robot a dès lors atteint la capacité d'être autonome en milieu inconnu ou bien d'exercer une tache répétitive comme les robots industriels dans les chaînes de montage par exemple.



shemaRobot

Schéma d'un robot avec des capteurs reliés à une carte de contrôle (le cerveau du robot) et qui envoie des instructions aux moteurs.

Source : http://www.roboticus.org/images/stories/robotique/schemabaserobot.gif



Les courants d’intelligences :

Pour le moment l’intelligence artificielle n’a pas de réel impact mais on peut imaginer que dans le futur l’intelligence artificielle pourra accomplir des tâches qui sont pour l’instant mieux gérées par des êtres humains. Celles-ci demandant entre autres des capacités mentales que l’intelligence artificielle n’a pas encore atteintes, tel l’apprentissage d’une situation nouvelle, l’organisation de la mémoire et le raisonnement.

 

C’est ainsi que sont apparus au fil du temps deux courants d’idées, en quelque sorte opposés mais fondamentalement complémentaires : respectivement l'IA Forte ou ascendant et l'IA Faible ou descendant. Parmi ces deux approches visant à créer un programme intelligent, le premier favorise des programmes simples mais évolutifs, tandis que le deuxième se base sur des programmes complexes et spécialisés.

 

Pour mieux comprendre la disparité entre ces deux approches, nous avons décidé de diviser ce chapitre en sous parties, chaque fois suivi par un exemple d'utilisation.

Partager cet article

Repost 0
Published by Julien P - dans Découvrir L'IA
commenter cet article

commentaires