Overblog Suivre ce blog
Administration Créer mon blog
25 février 2011 5 25 /02 /février /2011 18:34

TPE Lycéen de 1ère S sur :

L'Intelligence Artificielle et la Robotique

 

Bienvenue sur notre site dédié au TPE de première, autour du sujet que nous avons retenu : à savoir l'Intelligence Artificielle, aussi surnommée IA.
Les créateurs de ce Blog TPE sont : - Julien P (1èreS2)
                                                  - Yama (1èreS2)

Vous pourrez ici approfondir vos connaissances sur l'Intelligence Artificielle et toutes ses répercutions, tant sur la robotique que sur nos vie, d'après notre travail de TPE (Travaux Pratiques Encadrés) de première S. Années 2010-2011.

 

Nous vous souhaitons une agréable visite et n'hésitez surtout pas à poster tous vos avis et réactions en commentaire à nos articles.

Pour naviguer à travers le TPE, utilisez les liens du menu de gauche.

 

La visite commence ici :

 

Ensemble découvrons la robotique et l'IA

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Voir les commentaires

Partager cet article

Repost 0
Published by Julien P & Yama - dans Découvrir L'IA
commenter cet article
24 février 2011 4 24 /02 /février /2011 18:40

 

Sur la base de l'hypothèse de l'intelligence artificielle faible, une technologie fréquemment utilisée est le système expert, puisque construit selon l'approche descendante. Sa fonction est de reproduire l’expertise d'un expert humain dans un domaine spécifique comme l’assistance en ligne, ou l’aide à la décision.

Né d'une idée dès plus simple : rendre les ordinateurs intelligents en leur fournissant la connaissance des experts. Ceux-ci n'ont cependant pas la prétention d'imiter une quelconque réflexion ou raisonnement comme un réseau de neurones artificiels. Pourtant et tout comme le stipule l'approche descendante, le système expert a pour but de reproduire le résultat et non le fonctionnement. Ce qui ne l'empêche donc pas de fournir des réponses très satisfaisantes à des problèmes posés.

 

 

Le système expert se décompose en trois parties formant des couches :

Premièrement, il y a une base de connaissance portant sur un sujet bien précis et enrichi grâce à des individus qui connaissent bien le domaine à modéliser et capables de transmettre leur savoir.

Ensuite « un moteur d'inférence » : ce composant propose des expressions logiques à partir d'une banque de règles (permettre au système de raisonner d'après des faits "si ... alors ..."). C'est cet ensemble de règles qui va être enchaîné pour simuler le raisonnement d'un expert humain.

Enfin, il y a l’interface utilisateur qui permet de communiquer avec le logiciel.

 

systExpert

  Les parties principales d'un système expert

 

Une fois la base de connaissance suffisamment enrichie à l'aide du savoir d'un spécialiste dans le domaine, l'utilisateur n'a plus qu'à fournir certaines informations généralement sous la forme de questions réponses à propos d’un problème à identifier. A l’aide des règles logiques, le système expert travaille avec la base de données et tire des conclusions. S’il n’y a pas assez d’informations fournis, le système peut alors demander à l’utilisateur de répondre à d'autres questions afin de faire poursuivre la suite des déductions (par exemple dans le cas où le système est incapable de prendre une décision les renseignements fournis par l'utilisateur amènent à être complétés par ce dernier).

 

Généralement conçu pour résoudre des problèmes de diagnostic ou de décision (diagnostic médical, prescription thérapeutique, régulation d'échanges boursiers, ...) ceux-ci sont très appréciés et donc fréquemment utilisés grâce à leur déploiement rapide (mise en activité dès que la base de connaissance a été construite).

Notons que l'état de connaissance des systèmes experts est comparable à nos connaissances actuelles puisque celui-ci est constamment mis à jour.

 

Quelques exemples :

  • Pour prendre un autre exemple concret, on peut imaginer un programme capable de définir quelle est la meilleure voiture pour un usager.
    L'usager renseigne son âge, ses revenus, ses déplacements (les faits) qui sont envoyés au programme. A l'aide d'un moteur d'inférence qui essaie de déduire des conclusions à partir d'une base de connaissances en fonction des faits donnés, il renvoie à l'utilisateur la voiture qui lui convient le mieux.

Partager cet article

Repost 0
Published by Julien P - dans Découvrir L'IA
commenter cet article
24 février 2011 4 24 /02 /février /2011 18:33

 

La nature de l'IA Faible est en quelque sorte plus "raisonnable" que celle de L'IA Forte, vu précédemment. Elle considère qu'un programme peut être capable de raisonner, d'apprendre et même de résoudre des problèmes, mais cette fois, le programme semble agir « comme si » il était intelligent.

C'est toute la différence, puisque l'IA Faible vise principalement à reproduire le plus fidèlement possible, à l'aide d'un programme informatique, le résultat d'un comportement spécifique (et non son fonctionnement) observé à l'avance et ne donnant pas d'application non prévue.

« Pas d'application non prévue », c'est ici que réside la disparité ! Car les programmes de type descendants ne visent pas à évoluer, ils effectuent leurs tâches et uniquement ce pour quoi ils ont été programmés. Leurs concepts sont sans aucun doute plus terre-à-terre, ils ne constituent pas une solution à des problèmes généraux, leurs connaissances et les solutions qu'ils peuvent apporter ne sont concevables que dans le cadre de leurs créations. En terme plus généraux, ils sont très performants dans leur domaine mais restent confinés dans celui-ci car trop spécialisés.

 

IAFaible

Coder le plus fidèlement possible les comportements observés.

 

L'approche descendante relève généralement d'avantage du cas par cas et les programmes battis de manières descendantes sont moins enclins à évoluer ou à apprendre naturellement contrairement aux programmes de type ascendant qui sont des programmes plus adaptatifs et généraux.

 

Pour autant la grande force de ces programmes est qu'ils sont pratiques. Leur réalisation et leur déploiement restent rapides et sont particulièrement intéressants pour les entreprises forcées de rechercher le profit et l'économie de temps plus que le rêve d'aboutir à la véritable intelligence artificielle.

On regrette donc que cette approche s'éloigne un peu du but réel. C'est à dire concrètement, d'atteindre une reproduction parfaite de l'intelligence humaine dans son intégralité car ce système n'apprend pas réellement de lui même.

 

Toutefois donnons un exemple de programme bâti selon l’approche descendante et parmi ceux-ci, on retrouve entre autres : les systèmes experts.

Partager cet article

Repost 0
Published by Julien P - dans Découvrir L'IA
commenter cet article
24 février 2011 4 24 /02 /février /2011 18:23

 

Un bon exemple de programme de type ascendant est un réseau de neurones artificiels.

Comme son nom l’indique, ce type de programme reproduit plus ou moins fidèlement le fonctionnement de plusieurs neurones naturels liés entre eux comme chez l'homme par exemple.

 

* En 1837, le premier neurologiste : Jan Evangelista Purkinje, observe des cellules nerveuses. Elles furent tout d'abord baptisées les cellules de Purkinje.

* Et finalement nommées neurones en 1891.

* Peu après, la théorie du neurone de Waldeyer et Cajal, les décrive comme l'unité du système nerveux.

* En 1943, deux scientifiques pensent qu'il est possible de traduire les fonctions de nos neurones en fonctions mathématiques de façon à adapter le fonctionnement de notre cerveau à un ordinateur. C'est ainsi que le premier modèle mathématique du neurone est mis au point par le neurologue américain Warren Mc Culloch et le mathématicien Walter Pitts.

 

Le neurone formel, utilisé dans le fonctionnement de l'intelligence artificielle, est l'approche mathématique du neurone biologique. Nous étudierons ici les différences avec son homologue nerveux dont il s'inspire dans sa manière de fonctionner.

 

Les neurones biologiques :

 

Un neurone humain est une cellule nerveuse que l'on retrouve notamment dans le cerveau mais aussi dans la moelle épinière et les nerfs optiques. Ses caractéristiques sont d'abord celles d'une cellule. C'est à dire qu'il possède tout naturellement une membrane plasmique, un cytoplasme, des organites, un noyau ... Pourtant il se différencie de ses semblables sous un point. Un neurone permet de transmettre les influx nerveux à d'autres neurones grâce à différentes structures et ceci lui confère le titre de pièce maîtresse dans le fonctionnement de l'organisme humain car sa particularité est unique !

 

Les dites structures qui nous intéressent ici sont les dendrites, l’axone et le noyau.

Les dendrites, jusqu'à plusieurs milliers, sont des prolongements de la cellule. L'axone est quand à lui une passerelle reliant deux neurones, ramifiés à leurs deux extrémités par des connections : les synapses, zones de "contact" entre l'axone des neurones et une dendrite du neurone.

Le noyau «décide» si l’influx nerveux doit être transmis. Si c’est le cas, l’influx traverse l’axone pour se rendre aux dendrites d’un autre neurone, via des connections synaptiques.

 

 

neurone

 

Les parties principales d'un neurone humain


Tous ces éléments sont communs aux différents types de neurones. Il existe en effet des neurones "spécialisés" ayant des fonctions particulières et devant donc répondre à des besoin plus précis.

 

 

Des neurones, dans notre cerveau, il en existe des milliards. Les influx qui y circulent sont, en quelques sortes, à la base de tous les raisonnements, les émotions ou les comportements. Les connections synaptiques sont également essentielles à toute forme de mémoire puisque plus une connexion est utilisée plus elle conduit les influx facilement. Reproduire le fonctionnement d’une telle « communauté » de neurones est donc une excellente stratégie pour parvenir à un programme intelligent.

 

Les neurones formels (artificiels) :

 

Comme nous l'avons introduit : « Le neurone formel, utilisé dans le fonctionnement de l'intelligence artificielle, est l'approche mathématique du neurone biologique ».

Les techniques utilisées pour reproduire un « réseau intelligent » sont basées sur le fonctionnement des neurones du cerveau. L’intérêt principal est de pouvoir simuler les capacités humaines par ordinateur en modélisant mathématiquement les connexions inter neurones du cerveau humain. Notre capacité à apprendre par l’expérience pourrait alors se transmettre et nos neurones informatiques auraient alors la capacité de généraliser et apprendre à partir d’exemples et de données fournis.

 

Pour se faire il faut créer des neurones virtuels et en connecter plusieurs entre eux. Un neurone formel est un système mathématique composé de plusieurs parties. Il possède généralement plusieurs entrées mais une seule sortie. Chaque entrée se trouve associée à un coefficient numérique, ajustée lors d'une phase d’apprentissage. Il est également composé d'une fonction de décision, permettant de traiter l'ensemble des entrées et de n'en tirer qu'une valeur de sortie finale.

 

Dans sa version la plus simple, un neurone formel calcule la somme pondérée des entrées reçues d'après le poids de chaque entrée par lequel sont multipliés les signaux (ou influx) entrant. La valeur finale obtenue à la sortie du neurone, est celle assemblée des valeurs à l'entrée. Si le résultat est assez haut, un signal est transmis aux prochains neurones via les connexions sortantes (vaut 1, sinon 0).

 

neuroneFormel

Les parties principales d'un neurone artificiel

 

Une fois l'assemblage des neurones effectué, ceux-ci forment un réseau à même d'apprendre un tas de chose. La méthode à suivre ensuite, consiste à introduire différents ensembles de données dans le réseau, puis de vérifier la validité du résultat. Dans le cas où celui-ci serait faux, il faut corriger les poids des connexions afin d'arriver progressivement à une réponse correcte. Notons également que le poids d'une connexion fluctue selon son importance et sa moyenne d'utilisation durant le processus. Son poids augmente plus elle est utilisé et inversement.

 

Une fois le processus d’apprentissage achevé, le réseau est amené à accomplir sa tâche, celle pourquoi il a été conçu. Comme exemple, ces réseaux sont fréquemment utilisés dans la reconnaissance de formes comme l'écriture. C'est leurs capacités à s'adapter et à posséder une grande liberté d'interprétation voir d’abstraction des valeurs d'entrées qui en font d’excellents outils. Leurs aptitudes très diverses va jusqu'à reconnaître une lettre d'après les différentes formes possibles de celle-ci fournie en entrée. Celui-ci même avec des formes très diverses, même grossières, ou dénaturées (lettre en italique, gras, avec un style d'écriture particulière) arrive à les décortiquer pour finalement pouvoir les ramener à une valeur plus générale : la lettre recherchée.

La polyvalence est donc une grande force de ces réseaux.

reconnaissanceFormes

La reconnaissance de formes : ici le A sous différentes déclinaisons.

 

L'IA forte est donc une copie conforme de l'Homme. Celle-ci est toute fois abstraite puisque les scientifiques n'ont toujours pas compris tous les aspects de l'homme tel que son cerveau qui est donc pour l’instant impossible à répliquer. L'IA forte reste cependant le rêve d'une grande partie des chercheurs du monde entier.

Partager cet article

Repost 0
Published by Julien P - dans Découvrir L'IA
commenter cet article
24 février 2011 4 24 /02 /février /2011 18:18

 

La dissociation, sous deux formes, de l'intelligence artificielle par les spécialistes, nous conduits à vous présenter dans un premier temps l'IA Forte aussi nommée l'approche ascendante :

 

L'IA dite Forte ou encore ascendante :

 

La première forme étudiée désigne l'intelligence d'un robot égale à celle de l'homme. En effet le courant ascendant est l'approche la plus similaire à l'intelligence des êtres humains puisqu'elle fait commencer le programme avec des choses simples pour arriver au final à des choses compliquées. L'automate serait alors doté d'une réelle conscience et éprouverait des sentiments ; il pourrait penser et son raisonnement serait donc le même que celui d'un être humain lambda.

 

« Le concept d’intelligence artificielle forte fait référence à une machine capable non seulement de produire un comportement intelligent mais aussi d’éprouver une impression d'une réelle conscience de soi, de « vrais sentiments » (quoi qu’on puisse mettre derrière ces mots) et « une compréhension de ses propres raisonnements ».

Citation provenant de : http://fr.wikipedia.org/wiki/Intelligence_artificielle#Intelligence_artificielle_forte

 

Dans cette optique un programme d'intelligence artificielle doit présenter certaines caractéristiques fondamentales. Il doit être en mesure d’emmagasiner de nouvelles informations et même, dans certains cas, modifier son propre fonctionnement. Et le fait que le programme commence avec des concepts simples pour en arriver à des comportements complexes, nous fait tout de suite penser à l'apprentissage logique d'un enfant, comme nous, pour s'adapter et apprendre seul face à des situations, le programme assemble plusieurs éléments simples entre eux pour avoir une idée complexe (la majorité du temps, le fonctionnement du programme dépendra de l'assemblage de ces éléments). L’atout majeur que présente cette approche étant que le programme aura donc des connaissances ou des réactions non prévues initialement.

C'est ainsi que de la même manière nous retenons les conclusions de nos expériences passées. Prenons un exemple tout simple. Un enfant de bas âge fait une bêtise, quelque chose qu'il n'aurait pas dû faire, tout de suite après, si les parents sont responsables, ceux-ci lui donnent une fessé. Si la prochaine fois il est tenté de recommencer il se rappellera de la dernière fois où la situation était similaire : la leçon est retenue. C'est ce qu'on appelle l’apprentissage et si toute fois celui-ci recommence. C'est soit que la règle n'est pas assez imprégnée et il faut persévérer pour qu'à force cela rentre (comme apprendre ses leçons) ou soit l'autorité des parents est mise à mal par l'enfant et là ça nous amène à d'autres questions.

 

IAforte

La plupart des programmes de type ascendant ont une architecture comportant plusieurs éléments simples reliés entres eux. Souvent, c’est l’interaction entre les éléments qui dictera le fonctionnement du programme. Parallèlement, le programme peut évoluer et on peut voir apparaître des comportements émergents, c’est-à-dire des comportements ou des réactions non programmés à l’avance.

 

Le grand avantage de l’intelligence artificielle ascendante, c’est qu’elle peut apprendre ou s’adapter très facilement. Cette approche est également une imitation plus fidèle de la vie que l’approche descendante, puisque généralement, les programmes sont construits en imitant la structure des êtres vivants ou des communautés d’êtres vivants. Cette approche a cependant un défaut : un système intelligent de type ascendant doit d’abord être entraîné à effectuer la tâche désirée. Cela rend ces programmes moins attrayants pour les industriels.

Parmi les types de programmes les plus populaires construits suivant l’approche ascendante, on retrouve les systèmes multi-agents, les algorithmes génétiques, et les réseaux de neurones artificiels. Ce dernier étant l'exemple de notre sous-partie suivante.

Partager cet article

Repost 0
Published by Julien P - dans Découvrir L'IA
commenter cet article
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
21 novembre 2010 7 21 /11 /novembre /2010 19:20

Dotez-vous d’une machine, n’importe quelle marque fera l‘affaire, caressez-la surtout dans le sens du poil et soyez gentil avec elle. Et bien quoi qu’on en dise : jamais ô grand jamais d’un coup celle-ci se dotera d’un esprit de génie et pourra en un claquement de doigt danser la samba ou vous servir un capuccino.

Aussi, même si l’on peut considérer qu’un jour peut-être cela sera possible, soyez sûr que ça demandera nécessairement beaucoup de travail, de temps et d ‘investissement.

Car malheureusement prétendre à simuler une quelconque intelligence est loin d’être simple; commençons dans un premier temps par nous informer un peu de comment tout cela fonctionne ! Ensuite nous pourrons parler des calculettes qui rangent nos chambres.

 

Un domaine, où l’intelligence artificielle est omniprésente, est la robotique. Un robot est par définition un assemblage de pièces mécaniques et électroniques, le tout piloté par une intelligence artificielle leur permettant d’effectuer divers tâches.

Si nous considérons l’IA comme le pilier porteur, alors le robot est en somme la carapace exécutant les interactions que lui dicte l’IA avec le monde qui l’entoure; la comparaison peut-être établie entre le cerveau et notre corps. Notre corps étant sensoriel, il envoie toutes sortes d’informations à notre cerveau : déterminant son environnement, sa situation dans celui-ci, s’il y a danger ou non et notre cerveau, en maître coordinateur, se charge de les analyser et de retourner des instructions en conséquence (notons que l’homme est doté de 5 sens : c’est autant d’informations que le cerveau doit gérer et assembler pour n’en retenir que le plus important afin d’être le plus efficace et réactif au possible).

 

Comment a t'on pu à l'origine créer ces machines complexes, bourrées d’électroniques, de fils et autres composants dont nous ne connaissons ni le nom ni l’utilité. Avec quoi les avons nous «éduquées» pour leur inculquer un semblant «d’esprit» afin que l’on se comprenne et qu’on puisse finalement les faire travailler pour nous. En définitif, qu'est-ce que nous ne savons pas et qui pourtant nous permet aujourd'hui de nous tenir devant notre ordinateur, la souris à la main, leur dictant des ordres du bout de l’index qu’ils exécuteront sans broncher ?

C’est ce que tentera de mettre en lumière ce chapitre anciennement intitulé « Comment ça fonctionne ? », lequel ne vous fera sûrement plus voir du même œil votre si précieux ordinateur. Tout du long, je me propose de vous servir de guide, en espérant accroître la liste de vos connaissances, si ce n’est, au moins, les renforcer dans ce domaine.

 

 

Alors, certes, la souris à la main nous les dirigeons, mais seulement en apparence, car ce sont tous un tas de mécanismes qui prennent le relais dès lors que notre «ordre» est passé et à ce moment là tout se déroule dans l’ombre, à l’insu de chacun; avant que l’on pense déjà à savoir s’ils ont mené à bien leur mission, il faudrait déjà comprendre comment notre relation avec eux est possible.

Si nous approfondissons quelque peu nos recherches, l'on s'aperçoit rapidement que les

robots et les machines, en général, agissent étonnamment. En effet, lorsqu’on s’adresse à eux, ils ne comprennent que lorsqu’on leurs envoie des 0 et des 1. Ainsi si je voulais faire travailler mon ordinateur, je lui dirais : «additionne 3 et 5», mais en langage informatique, le seul langage qu’il peut comprendre, ça pourrait donner quelque chose comme :

 

0010110110010011010011110

 

Parce que votre machine ne parle pas l’Anglais et encore moins le Français : ceci est le seul langage, informatique, binaire, compris par les ordinateurs. Mais pour les néophytes, il est tout simplement incompréhensible.

 

Il est bien sûr inconcevable d’utiliser le langage binaire pour un être humain, car il n'est tous simplement pas possible, ou plus précisément pratique, de transcrire les mots directement en chiffres (il faudrait une table traduisant l’ensemble des langues ce qui en terme de maintenance serait ingérable, pire, le langage parlé n’a aucune restriction car chacun a sa manière de parler pour se faire comprendre et c’est autant de sens en plus qu’il faudrait prévoir). Enfin vous l’aurez compris les informaticiens ont trouvé une autre solution et l’idée qu’ils ont eu a été de créer de nouveaux langages, cette fois ci, universels (c’est à dire que tout le monde comprendrait qu’il soit Français, Anglais, Allemand …) et qui feraient l’intermédiaire entre notre langage et celui de la machine de sorte qu’ils soient utilisés et ensuite traduits en binaire pour celles-ci.

 

La croyance populaire voudrait qu’il existe un seul langage de programmation, ce qui serait en soi logique, à première vue, pourtant ceux-ci abondent de nos jours, chacun spécialisés dans des domaines particuliers : la machine, le web, les bases de données, la gestion … Ce n’est pas tout, il existe donc bien des milliers de langages de programmation et bien souvent, la plupart se partagent un seul et même domaine, mais cela n’a en soi rien d’étonnant car chacun suit sa propre orientation et à ses avantages, ses inconvénients, ses utilisateurs et ses partisans.

 

Ces langages sont pour les plus anciens :

  • 1951 – L’assembleur - langage proche de la machine (avant la programmation s'effectuait directement en binaire.)

  • 1954 – Le FORTRAN - pour les calculs

  • 1958 – LISP - pour l’intelligence artificielle

  • 1959 – Le COBOL - pour la gestion

  • 1964 – Le BASIC - pour les premiers ordinateurs personnels

Ceux-ci ne sont que des exemples parmi d’autres mais constituent tout de même des langages connus et pour certains encore assez répandus aujourd’hui.

C’est notamment le cas pour Lisp qui nous intéresse tout particulièrement car il est un des langages de programmation pilier de l’intelligence artificielle. Dans la même catégorie, il existe également : Prolog et Scheme.

 

Plus récemment ont vu le jour :

·  1970 - Pascal

·  1972 - C                               - un monument des langages de programmation

 

·  1972 - Prolog                          - un autre langage sur l’intelligence artificielle

 

·  1978 – SQL                            - pour les bases de données relationnelles

 

·  1983 - Ada

·  1983 - C++                            - une évolution objet du langage C

 

·  1985 - Eiffel

·  1987 - Perl                             - langage orienté traitement de texte

 

  • 1990 – Haskell - langage très orienté sur le typage

  • 1991 – Python

  • 1991 – Java - le concurrent du C++

  • 1993 – Ruby

  • 1995 – JavaScript - langage script pour le web

  • 1995 – PHP - langage pour le web

  • 2000 – C# - créé par Microsoft, il est dédié à Windows

Ceci n’était qu’un court élargissement de notre sujet initial afin de prendre conscience de l’ampleur du nombre de langages de programmation.

 

Mais revenons donc à nos moutons.

 

Des symboles qui forment des langages :

 

Définir le comportement de la machine se fait, on l’a vu, grâce à un langage informatique, dit de programmation. Celui-ci fonctionne concrètement par la mise en relation de mots construits à partir d’un alphabet : de lettres, de chiffres, d’assemblage de caractères aux significations bien souvent ignorées du néophyte (exemple des opérateurs « = » (affectation), « == » (comparaison), « > » (supérieur), «< » (inférieur), « != » (différent) …) et régis par une syntaxe définissant la structure du langage.

La «grammaire» du langage est de ce fait structurée par des caractères : { } ( ) ;  …, formant des blocs appelés fonctions, méthodes, classes, objets. Des termes bien abstraits en soi que cette courte introduction n’aura pas la prétention de vous en enseigner la signification.

 

Pour bien illustrer mes propos, voici un exemple de sémantique dans le langage web PHP :

 

For($i=0 ;$i<1000;$i++)

{ echo ‘Ceci est du texte qui sera affiché 1000 fois.’;

}

 

Ici, en associant une sémantique (généralement une opération) à chaque mot, on définit le comportement de la machine. La mise en relation de mots va donner un programme informatique.

Ci-dessous le même exemple mais plus compréhensible pour nous :

 

Machine, je t’ordonne d’écrire 1000 fois : « Ceci est du texte qui sera affiché 1000 fois. »

 

Pratique pour les punitions, cette exemple montre bien la facilité à laquelle l’informatique arrive à automatiser une tâche, la plus lourde qui soit (je n’ai pas besoin de préciser que cette exemple sera exécuté par mon ordinateur en à peine le temps pour moi de sortir un «ouf», c’est à dire moins de 0.01s, bref, ce n’est pas le genre de chose qui va l’exténuer).

 

Un autre exemple cette fois ci en Python :

 

i=0

while i<1000:

print("Ceci est du texte qui sera affiché 1000 fois. ")

i+=1

 

Vous remarquez que la syntaxe est totalement différente, pour autant le résultat est le même car la machine quelque soit le code va ensuite le traduire en binaire; un assemblage de 0 et de 1. Le compromis entre notre langue et la sienne est donc tenu !

 

 

Notes :

Pour finir ce chapitre, voici une petite citation tirée du site web de l’«Université de Technologie de Compiègne» :

http://www.utc.fr/~barthes/IA01/CH01-1.html

« Critères de jugement

Les critères de succès en recherche en intelligence artificielle ne sont pas des critères de performance mais des critères de conformité : le système réalisé doit faire aussi bien mais aussi, aussi mal qu'un humain (réaliser un programme champion du monde d'échec n'est pas un problème d'intelligence artificielle, le problème d'intelligence artificielle serait de réaliser un programme qui joue aussi bien mais aussi, aussi mal qu'un individu moyen). Il faut donc savoir modéliser la réalité avec ses contradictions, les différents points de vue des acteurs, les trous (manque de connaissance dans certains domaines),...»


En résumé : on n’évalue pas «l’intelligence» d’un programme sur sa capacité à être au dessus de l’homme en terme de calcul, de vitesse de réflexion et ou de prévision dans un domaine mais d’avantage sur ses aptitudes à rassembler le bon et le mauvais de ce à quoi il doit simuler la ressemblance.

(Remarquez qu’il est ici question des programmes dont le but est clairement de ressembler à l’homme tandis que nous avons vu tout du long de ce chapitre des langages dont la fonction recherchée peut-être tout autre. C’est exactement cette ambiguïté que cherchera à résoudre le sujet de notre seconde partie.)

 

Je vous laisse méditer sur cette citation, en attendant de vous revoir dans le chapitre suivant où nous approfondirons les différences entre les langages, leurs similitudes ainsi que les différentes orientations et «styles» de programmation existants actuellement pour enfin pouvoir déterminer la place de l’intelligence artificielle dans tout ça. Notamment son orientation choisie pour être efficace car différentes solutions peuvent en effet être adoptées pour solutionner un même problème. Nous verrons tout cela très bientôt.

 

En espérant n’avoir perdu personne en route, je vous donne rendez-vous dans une 2ème partie intitulée : « Lisp et les courants d'intelligences. »

Partager cet article

Repost 0
Published by Intelligence artificielle - dans Découvrir L'IA
commenter cet article
7 novembre 2010 7 07 /11 /novembre /2010 17:52

 

L'intelligence artificielle, souvent abrégé par le sigle I.A, est par définition la recherche de moyens pour égaliser voir dépasser les capacités intellectuelles propres à l’homme en dotant des machines, des systèmes informatiques, de la disposition à penser, à assimiler, à réfléchir, à comprendre, à s’adapter, voir même à posséder ses propres sentiments et jugements de façon autonome.

 

Cette recherche d’aptitudes imitées de l’homme ne date pas d’hier et pourtant constitue toujours aujourd’hui l’un des points chauds de la science ; déjà depuis plusieurs siècles l’homme étudie sa propre complexité, car il est inné chez lui que dès sa naissance, il ait des prédispositions dans certains domaines. Le cerveau dont il dispose est notamment d’une complexité extrêmement importante, lui permettant de raisonner et de comprendre par apprentissage ; il lui sert également dans la perception visuelle (interprétation des images et des scènes) et auditive (compréhension du langage parlé).

Il paraît tellement difficile de reproduire les processus de notre cerveau qu’il est sensé de penser que l’égaler ne se fera pas avant des décennies de recherches approfondies.


Pourtant ce tâtonnement dans ce domaine part d’une constatation : l’homme malgré se dont il est doté est dépassé par la complexité de plus en plus grande du monde dans lequel il vit !

Une comparaison bien simple va nous permettre d’éclairer cette observation.

Prenons une calculatrice, personne ne sera étonné à ce qu’elle puisse effectuer des calculs complexes en une fraction de secondes, ce dont nous sommes bien incapables !

Quand bien même nous avons conçu cette calculatrice, que nous lui avons inculqué toute l’arithmétique, toute la connaissance mathématique appartenant à notre savoir : il nous manquera toujours une chose considérable, celle qui nous fait défaut face aux calculatrices (même les plus bas de gammes comme la casio que possédait mon père au collège il y a 40 ans), aux ordinateurs et aux calculateurs : c’est la rapidité à laquelle ils sont capables de traiter l’information ! De résoudre en un claquement de doigt des milliards et des milliards de calculs, quand nous nous n’avons pas encore enlevé le capuchon de notre stylo Bic préféré !

 

Malgré ce fait nous allons tout de suite « casser » la croyance populaire, en effet il ne faut pas confondre intelligence et automatisme. La calculatrice par exemple n’est pas intelligente !

Beaucoup de personnes pensent que parce qu’elle a la capacité de faire telle ou telle chose qui nous parait tout à fait incroyable, elle est intelligente, or ceci est faux : puisqu’elle ne sait pas, elle même, qu'elle fait des calculs !

En somme ici, elle exécute une tâche, n’importe laquelle, du moment qu’on le lui ait demandé et qu’elle en est capable. Elle résout donc une suite algorithmique, comme on le lui a apprise, sans réfléchir d’aucune sorte : « à quoi va donc pouvoir servir ce calcul ? » ou encore « que se passera t-il demain si mes piles s’épuisent ? », « que vais-je devenir ? ». Tout cela passe au dessus d’elle, elle n’est qu’une imitation grossière de notre intelligence, elle est seulement capable de résoudre des problèmes et c’est précisément ce qu’on appelle l’I.A faible !

 

Au contraire de cette I.A faible, pâle copie « simulant l’intelligence » mais qui est pourtant extrêmement présente dans notre société ; notamment dans tous les systèmes en temps réel ayant besoin d’une force de calcul conséquente (calculatrices, ordinateurs et calculateurs) et dans tout ce qui s’apparente à un outil accroissant exponentiellement dans certains domaines notre rapidité de réponse, il y a de l’autre : l’IA forte qui est de ce qu’il y a de plus abouti en terme d’intelligence artificielle ! L’I.A forte peut non seulement "réfléchir" mais aussi éprouver des "sentiments".

En terme général ce genre de machine saura s'adapter et agir seule, intelligemment, à toutes les situations qui se présenteraient. Ces machines ne sont donc plus de simples outils mais bien des intelligences à proprement parlées, dotées d’une conscience tout comme l’homme ainsi que de tous ses attraits et qui s’orientent d’avantage vers un modèle idéal d’intelligence :

 

« Supposons qu’existe une machine surpassant en intelligence tout ce dont est capable un homme, aussi brillant soit-il. La conception de telles machines faisant partie des activités intellectuelles, cette machine pourrait à son tour créer des machines meilleures qu’elle-même ; cela aurait sans nul doute pour effet une réaction en chaîne de développement de l’intelligence, pendant que l’intelligence humaine resterait presque sur place. Il en résulte que la machine ultra intelligente sera la dernière invention que l’homme aura besoin de faire, à condition que ladite machine soit assez docile pour constamment lui obéir. ».

Description d’un possible avenir de l’intelligence artificielle faite par le professeur I. J. Good.

 

Mais pour le moment, aucun programme n'est réellement capable de répondre pleinement à l’I.A forte. Depuis le milieu du XXème siècle l'I.A est pourtant en constante évolution, ses capacités ont fait d'elle le « phénomène » du siècle dernier. Ainsi remonter aux origines nous permettra peut-être de comprendre son évolution, ses ambitions, son utilité, car tout ce que nous connaissons aujourd'hui et qui se rapporte à l'I.A est le fruit de nombreuses recherches dont la naissance date du XXème siècle.

Alors, l'évolution de l'intelligence artificielle, intimement liée à l'essor des capacités matérielles de cette époque, a t-elle impliqué un bouleversement dans la société du XXème siècle ?

Animé dans cet esprit, c'est précisément ce qu'essayera de mettre en lumière ce blog TPE. Nous tenterons donc de déterminer précisément son impact sur la société du XXème siècle. En effet, les avancées d'hier collaborent aux inventions et progrès de demain. Ceci après avoir introduit son fonctionnement suivant notamment les deux approches introduites plus haut : j'ai nommé l'IA Forte et l'IA Faible.

 

Bonne lecture : « C'est pas sorcier : les langages de programmation ». 

 

Note :

Un ordinateur typique de 1970 effectuait 107 opérations logiques par seconde tandis que le cerveau humain en effectue grossièrement 2 x 1014 par seconde.

En 2005, un microprocesseur typique en réalisait 1011par seconde...

Ainsi aujourd'hui le superordinateur le plus avancé au monde, situe ses opérations en pétaflop, précisément 2,566  pétaflop, c'est à dire près de 2.5*1015opérations logiques par seconde. (Petite anecdote : l'équivalent d'une journée de travail de "RoadRunner"(son nom) serait possible si : «  les 6 milliards d'êtres humains de cette planète calculaient 7 jours sur 7 et 24 heures sur 24 pendant 46 ans » )...

 

Partager cet article

Repost 0