Overblog Suivre ce blog
Administration Créer mon blog
24 février 2011 4 24 /02 /février /2011 19:14

Afin de comprendre les objectifs de l'IA et ses performances aux fils des époques, il est nécessaire d'en dresser l'évolution.

Le chapitre sur l'évolution des capacités matérielles de l'époque était capitale afin de pouvoir bien replacer les origines de l'IA dans le contexte technique et matériel de l’époque. Il est important de se rendre conte que les ressources n'étaient pas les même qu'aujourd'hui et que bien souvent les avancés dans le domaines de l'IA sont dictés par celles d'autres domaines...

 

Durant la seconde guerre mondiale, d'énorme progrès ont été faits en cryptographie et en décryptage. Les efforts pour surprendre les transmissions ennemies ont amené à utiliser de plus en plus de machines et à en concevoir de toujours plus puissantes afin de constamment mieux déchiffrer... ; sans le savoir, les savants de l'époque construisaient les premiers ordinateurs.

7 histoireIA 1Une machine à décrypter de la 2e guerre mondiale


Un peu plus tard, on se rendit compte de l’immense potentiel des ordinateurs, qui n'étaient jusqu’alors que d’énormes machines à calculer, dépourvue d’interactivité.

Au même moment, certains commencèrent à se pencher sur une idée bien spéciale : insuffler un souffle de vie à un ordinateur. Une nouvelle discipline allait émerger : l’intelligence artificielle !

Officiellement, l'intelligence artificielle a vu le jour à l'occasion des conférences de Dartmouth durant l'été 1956, réunissant des scientifiques de haut niveau, dont McCarthy, Minsky, Shannon, Newell et Simon qui se proposaient de réaliser des programmes d'ordinateur doués d'intelligence. A cette occasion l'expression « Intelligence Artificiel » fut choisie par John McCarthy, qui introduit également en 1958 le langage LISP.

 

Quelque temps auparavant, en 1950 : le mathématicien britannique Alan Turing publie, dans le journal philosophique Mind, un article intitulé Computing Machinery and Intelligence. Dans cet article, il décrit un test (Test de Turing). Ce test consiste à faire communiquer un individu avec un interlocuteur invisible à travers un terminal d'ordinateur. L'individu doit alors deviner si son interlocuteur est un être humain ou un système imitant la forme d'intelligence d'un être humain. Le but du test est de déterminer si le système d'IA est intelligent. Considéré par beaucoup comme l'un des fondateurs de l'informatique, Turing est également un des précurseurs de l'IA . Le teste sera analysé plus en profondeur dans une partie suivante.

 

Les premiers chercheurs en intelligence artificielle commencèrent par limiter leurs recherches à des domaines précis, le tout par essais et erreurs. En résumé, ils voulaient délimiter, à l’époque, ce qui était possible de ce qui ne l’était pas. De nombreux programmes expérimentaux ont vu le jour. On cite entre autres « Logic Theorist » de Hebert Simon et Allen Newell, qui pouvait démontrer des théorèmes mathématiques. Ensuite, ils se penchèrent sur une partie fondamentale de l’intelligence : l’apprentissage. Leurs recherches se soldèrent par des programmes pouvant jouer au échecs ou aux dames et des programmes pouvant reconnaître des formes.

 

 

Appartenant aux dates importantes, on notera en 1959 l'élaboration du GPS (General Problem Solver), dans le but de construire un résolveur de problème universel. N'importe quel problème formalisé pourait en principe être résolu par GPS, par exemple des preuves de théorèmes, des problèmes géométriques et des parties d'échecs...

L'échec du GPS, abandonné en 1967, marquera le début d'une période où l'IA perdra de sa gloire, il y sera particulièrement dénoncer les sommes importantes dépensées par le gouvernement US pour le développement de l'IA. Les premiers succès auront vite montré leurs limites, et beaucoup de biologistes et d'informaticiens jugeront les objectifs premiers de l'IA trop optimistes.

Durant les années 70, de nombreuses nouvelles méthodes de développement de l'IA sont testées. En 1971, le langage PROLOG est crée par Colmerauer, comme Lisp, celui-ci est portée sur l'intelligence artificielle.

1974 verra l'avènement des premiers systèmes experts , dont le plus célèbre MYCIN (Edward H. Shortliffe), conçu pour l'aide au diagnostic et au traitement de maladies bactériennes du sang. En 1979, Mycin sera considéré par le "Journal of American Medical Assoc" comme aussi bon que les experts médicaux.

La même année, le premier robot piloté par ordinateur est conçu.

On notera également dans les années 70, l'abandon des subventions versées par les gouvernements (US pour la plupart) pour quelques programmes de recherche en IA.

 

 

Avec l'efficacité prouvée des systèmes experts, les ventes de matériels IA (hardware ou logiciel) grimpent en flèche. L'IA commence à intéresser les grandes firmes (Boeing, General Motors, etc).

De nouvelles branches de l'IA font leur percée sur le marché, notamment celui de la vision par ordinateur. Ces travaux visent à relier l'ordinateur avec le monde qui l'entoure, tout particulièrement avec l'utilisation d'une caméra coordonnée à l'ordinateur et l'emploie de la reconnaissance de formes mais aussi de la reconnaissance vocale... Ces procédés simulent une interaction avec l’environnement, un projet récent très réussi, utilisant cette technologie est le projet natale surnommé par la suite Kinect. C'est un équipement ajouté à la console Xbox 360 de Microsoft permettant de jouer avec son corps, c'est à dire sans manette, rien que par reconnaissance de mouvement de la machine. Une vidéo est disponible dans les liens du menu.

 

L’intelligence artificielle, marqué par le démarrage de la discipline, a connu un essor important pendant les années 1960, avec des résultats significatifs. Durant les années 70 se posent les bases en ce qui concerne la représentation de la connaissance, le raisonnement et la robotique, les attentes restent grandes, supportée par l'optimisme exagéré des chercheurs. Les années 80 sont marquées par l'arrivée de l'intelligence artificielle dans la vie économique, mais à la suite de résultats décevants par rapport aux capitaux investis dans le domaine, son succès s’estompa dès le milieu des années 1980, s'accompagnant d'une désillusion de la part de la population face aux réalisations pratiques de l'IA qui furent en deçà des espérances...

 


Au début des années 90, les progrès ont repris sur le mode exponentiel avec la généralisation des ordinateurs de bureau, des réseaux de télécommunications et des matériels incorporant de plus en plus de solutions IA liées à des besoins. De nouvelles techniques de programmation ont évolué ou se sont développées grâce à l'intelligence artificielle. Le but étant de simuler l'intelligence, certains programmes s'inspirent par exemple du fonctionnement des neurones dans le cerveau humain.


De nos jours, l'intelligence artificielle est en pleine expansion et a pris une place importante dans la culture populaire, notamment à travers les œuvres de science-fiction.

Les sous disciplines de l’intelligence artificielle se multiplient et celle-ci devient de plus en plus spécialisée. Plusieurs approches sont utilisées pour construire des machines intelligentes et les objectifs se font plus spécifiques, la plupart du temps. Toutefois, bien que nous ayons plusieurs robots répondant aux critères de l’intelligence artificielle faible : joueur de flûte, serveuse, ..., aucun n'a su se montrer à la hauteur d’un être humain et correspondre au rêve des scientifiques et des romanciers : une intelligence autonome, intuitive et adaptée à toutes les situations ; que nous ne vivons pour le moment que dans la fiction.

Partager cet article

Repost 0
24 février 2011 4 24 /02 /février /2011 18:56

Comme exemple pratique, voici un article consacré tout spécialement à l'histoire de la robotique, domaine ou l'intelligence artificielle a eu ses prémisses.

Nous avons ensuite choisi de présenter le robot Puma de General Motors, l'un des tout premier de l'histoire industrielle ! Son fonctionnement vous sera décortiqué afin de clore par un exemple pratique cette première partie (cette partie est donc une vision technique de l'intelligence artificielle : comment autrement que par un terminal, un robot peut-il interagir avec son environnement).


Pour ceux que ça intéresseraient, voici la principale différence entre un automate et unrobot:

Un automate est une machine programmée pour effectuer une tâche précise dans un environnement donné :
- métier à tisser
- imprimante
Un
robot est un automate doté de capteurs et d'actionneurs lui donnant une capacité d'adaptation et de déplacement proche de l'autonomie.
- robot aspirateur
- avion ou hélicoptère drone de reconnaissance ou de combat

 

 

 

Dans les années 40, l’ère des ordinateurs modernes commença avec les grands développements dès la Seconde Guerre Mondiale. Les circuits électroniques, tubes à vide,condensateurs et relais remplacèrent leurs équivalents mécaniques et le calcul numérique remplaça le calcul analogique. Les ordinateurs conçus à cette époque forment la première génération d’ordinateurs.

 

 

En 1947 suite aux travaux sur les semi-conducteurs, le transistor a été inventé par les Américains John Bardeen, William Sholckley et Walter Brattain, des chercheurs de la compagnie Bell Téléphone. Le transistor est un composant électronique utilisé principalement comme interrupteur et pour l’amplification mais aussi pour stabiliser une tension, moduler un signal ainsi que de nombreuses autres utilisations.

C’est suite aux développements de l’ordinateur, permettant de pouvoir utiliser des langages informatiques et aussi grâce à l’invention du transistor durant les années 40 que Georges DEVOL a pu réaliser son brevet sur la robotique en 1954.

 

puma1

 

 

Ce brevet est très important dans le monde de la robotique car il symbolise un des aboutissements majeur dans ce domaine. C'est à cette date précise que la robotique a vu le jour.

Dans ce brevet Devol a conçu un robot qu’il a intitulé Unimate, dès lors il chercha une compagnie qui pourrait lui financer les développements de ses systèmes. Mis en relation avec Joseph Engelberger, ce dernier était très intéressé par le brevet de Devol et en 1961 Devol accepta de lui vendre sa compagnie UNIMATION ainsi que son brevet plus quelques futurs brevets du même domaine.

Devol et Engelberger se sont associés et c’est dans la même année que le premier Unimate fut utilisé dans les usines de GENERAL MOTORS.

 

puma2

 

 

General Motors est une entreprise multinationale américaine de construction automobile, basée aux Etats Unis à Détroit dans le Michigan. Elle fut fondée par William Crapo Durant, le petit fils du gouverneur du Michigan de l’époque, le 16 septembre 1908.

 

 

En 1961 le premier robot de l’entreprise Unimation : Unimate fut embarqué de Danbury dans le Connecticut, puis mis en application dans une des usines de General Motors se situant à Parkway Avenue dans la banlieue de Trenton. Ce robot grâce à son bras articulé de 1,5 tonnes était capable de manipuler des pièces de fonderie pesant 150 kg.

 

En 1966 Unimation continue de développer des robots et élaborent notamment des robots permettant de faire d’autres tâches, comme des robots de manipulation matérielle ou encore des robots conçus pour la soudure ou pour d’autres applications de ce genre.

 

puma3

 

La robotique eu un grand succès au niveau industriel, son taux de production était tellement élevé qu’il apportait des bénéfices incroyables. En 1978 un nouveau robot est conçu par Unimation Inc avec la précieuse aide de General Motors. Ensemble ils conçurent le robot PUMA 500. Le robot PUMA (Programmable Universal Machine for Assembly) a été conçu par Vic Schienman et fut financé par General Motors et par The Massachussets Institute of Technology au milieu des années 70. Le robot est muni d’un bras manipulateur permettant d’assembler des composants industriels. Les robots PUMA vont être les robots les plus répandus dans les universités et vont être les robots d’assemblage les plus utilisés dans l’industrie.

GENERAL MOTORS eu une grande influence sur ses concurrents car quelques années plus tard les autres industries d’autres pays vont copier cette idée et vont même jusqu'à créer une association de la robotique au niveau national. C’est le cas du japon qui eu son association de la robotique industrielle (JIRA) en 1971, tandis que les Etat-Unis fondent leur association de la robotique industrielle en 1975.

En 1973, on pouvait recenser 71 entreprises qui développaient des robots. En 1974, Joe Engelberger avait fait des prévisions indiquant que l'industrie de la robotique représenterait pour 1990 un chiffre d'affaire annuelle de 3 milliards de dollars. Sa prévision était correcte, l'industrie valait effectivement 3 milliards de dollars en 1990, mais il n'avait pas prévu qu'elle serait contrôlée à 70 % par le Japon.

 

Le Robot PUMA

Le robot PUMA est un robot conçu par l’entreprise UNIMATION et par General Motors. Ce robot est un robot d’assemblage et c’est le robot d’assemblage le plus rependu dans l’industrie des années 70.

Le système de ce robot est composé de deux parties différentes :

  • Le robot ou bras manipulateur

  • Et son ordinateur de commande

Le bras manipulateur

puma4Le bras manipulateur est le composant mécanique du système et comporte 6 axes de rotation, chacun de ces axes sont contrôlés par un servomoteur a courant continu.

Un servomoteur est un système motorisé capable d’atteindre des positions prédéterminée puis de les maintenir. Dans le cas du robot PUMA, il est capable d’atteindre des positions d’angles.

Toutes les parties du bras manipulateur sont connectées entre eux grâce à des articulations.

Le robot possède aussi des réducteurs permettant de contrôler le rapport de vitesse et le couple entre l’axe d’entrée et l’axe de sortie du mécanisme.

 

La rotation des articulations du bras manipulateur est effectuée grâce à l’action du servomoteur à courant continu et à l’aimant permanent, par l’intermédiaire d’un réducteur. Chaque moteur du bras articulé est associé à un codeur incrémental et à un potentiomètre.

Le codeur incrémental est un type de codeur rotatif qui permet de donner des informations précises sur le déplacement du bras articulé, grâce à un système de traitement. Et le potentiomètre est un type de résistance variable dont la valeur peut varier.

Le bon fonctionnement du bras articulé nécessite un contrôle de la position et de la vitesse de rotation de chaque articulation du robot.

Les changements de position de chaque membres articulés sont fournis grâce aux codeurs, alors que l’information de la vitesse de rotation est calculée par l’ordinateur du robot.

 

Les servomoteurs des trois axes principaux (axe 1, 2 et 3) sont équipés de freins électromagnétiques. Ces freins sont activés lorsque l’alimentation des ces moteurs est coupée, et maintiennent le bras articulé en position fixe. Ceci est une sécurité destinée à éviter les risques de blessures ou de casse sur le robot lorsque l’alimentation est coupée accidentellement (coupure de courant …)

 

L’ordinateur de contrôle

puma5

Le contrôleur est le composant électrique du système. Toutes les informations venant et allant vers les différents actionneurs du robot sont traitées par le contrôleur qui calcule en temps réel les ordres de commande. Les commandes manuelles donc tout ce qui est boutons et voyants sont situées sur la face avant du contrôleur. Et sur la face arrière du contrôleur on peut trouver les connections pour le bras manipulateur, le terminal (clavier + écran) et le lecteur de disquettes.

Le logiciel de programmation est enregistré dans la mémoire centrale de l’ordinateur. Ce logiciel permet d’interpréter les instructions de commande et le contrôleur transmet ces instructions de la mémoire centrale vers les différents actionneurs du robot. Grâce aux codeurs incrémentaux et aux potentiomètres, le contrôleur reçoit des informations de position pour chacun des axes. Ceci permet un control en boucle fermée des mouvements du robot. Et il y’a un lecteur de disquettes pour les enregistrements des programmes.

 

L’ordinateur de contrôle est équipé d’une télécommande qui peut être utilisée pour positionner manuellement le robot, en contrôlant directement les articulations.

Plusieurs modes de contrôle sont disponibles depuis la télécommande :

 

- On peut effectuer des positions spécifiques du bras manipulateur enregistrées dans la mémoire centrale par l’intermédiaire d’un appui sur le bouton « RECORD » de la télécommande.

- Ou alors contrôler manuellement le robot grâce à la télécommande.

Dans les deux modes de contrôle, deux systèmes d’axes peuvent être choisis :

  • Le système d’axe central ou World Mode (les trois axes de ce repère sont représentés sur la figure ci-dessous)

puma6World Mode

 

  • Le système d’axe outil ou Tool Mode

Les axes de référence pour ce mode sont alignés avec le plan de montage de l'outil, avec leurs origines au centre de la semelle de montage de l'outil.
Les trois axes de ce repère sont représentés sur la figure suivante :

puma7

Tool Mode

Partager cet article

Repost 0
24 février 2011 4 24 /02 /février /2011 18:48

 

L'idée d'insuffler la vie à une machine et lui permettre notamment de penser par elle même, ne date pas d'hier. L'idée est en effet intimement liée à l'apparition des premiers ordinateurs vers 1943. Ceux-ci permettant une nouvelle puissance de calcul mais aussi l'amélioration des façons de calculer de l'époque (gains de temps, moins d’erreurs ...).

 

Les premières machines à calculer :

 

A l'origine, le boulier inventé vers l'an 700 constitue la première façon de calculer intelligemment.

Plus proche de notre époque, vint le logarithme que l'on attribue généralement à l'écossais John NEPER. En effet c'est en 1614 que celui-ci démontra que la multiplication et la division pouvaient se ramener à une série d'additions. Ceci permit dès 1620 l'utilisation de la règle à calcul.

Pour autant le vrai père de cette théorie est un savant arabe (pour vous éviter son nom : « Mohamed Ybn Moussa Al-KHAWAREZMI » ) également à l'origine de l'Algèbre, activité ayant dès lors permis de résoudre des systèmes complexes basés sur la recherche d'une variable inconnue X afin d'équilibrer les calculs.

 

Puis historiquement :

Ce n'est qu'en 1642 que fut créé par Blaise Pascal la première machine à calculer dite machine d'arithmétique, baptisée par son créateur : la Pascaline.

Pascaline

Cette machine(que vous pouvez voire sur l'image ci dessu), fruit d'un assemblage d'engrenage, était capable d'effectuer des additions et des soustractions, et destinée à l'origine à aider le père du jeune créateur, un percepteur de taxes...
Ce fut le premier pas dans la réalisation d'une IA. Une machine était capable de faire ce que seul un homme pouvait alors effectuer.
Leibnitz proposa en 1673 une amélioration de la Pascaline en lui dotant de deux nouvelles fonctions : la multiplication et la division.

 

cannard

En 1738, Jacques de Vaucanson apporta une première avancée notable dans la conception d'automates. C’est son célèbre canard qui avait l'étonnante capacité de bouger, cancaner, barboter, boire et digérer comme un véritable canard ; le tout programmable grâce à un mécanisme interne de pignons.

 


Enfin 1834 constitue un tournant majeur : Charles Babbage apprend qu'une machine à tisser est programmée à l'aide de cartes perforées. Il se lance donc dans la construction d'une machine à calculer exploitant cette idée révolutionnaire.

 

Les premières vagues d'ordinateurs :

 

C'est en 1820 qu'apparaissaient les premiers calculateurs mécaniques. Ceux-ci possédaient alors quatre fonctions de base : l'addition, la soustraction, la multiplication et la division.  

Conformément à l'idée de Charles Babbage (cf. plus haut) le premier ordinateur programmable qui suivi fonctionnait en batch. C'est à dire avec des cartes perforées. On apportait son lot (batch) de cartes perforées contenant le programme puis un opérateur insérait les lots de cartes en attente dans l'ordinateur qui alors faisait tourner le programme et donnait le résultat le plus souvent sur une imprimante. L'utilisateur ne récupérait généralement le résultat que le lendemain, le temps que son lot de cartes passe dans l'ordinateur.

Ces cartes perforées sont fréquemment considérées, et à juste titre, comme les prémisses de la programmation par ordinateur. Leur fonctionnement, des plus rudimentaires, n’empêchait pas d'être fonctionnel. Une série de cartes, attachée les unes aux autres formant une bande de plusieurs mètres, était préalablement trouées à des emplacements stratégiques. Ces trous constituaient, une fois rentrés dans l'ordinateur une suite logique d'instructions à interpréter et composaient le programme dans son intégralité. Ces trous était un langage à part entière compris par l'ordinateur.

 

La suite est bien connue du grand public. Nous sommes passé, en un demi-siècle, des ordinateurs encombrants de la taille d'un amphithéâtre, à des ordinateurs «personnels»  accessibles aux particuliers et qui aujourd'hui d’ailleurs équipent la plupart des familles :

 

Maintenant que l'électronique a fait des progrès suffisants et que les premiers calculateurs ont fait leurs preuves, les ordinateurs vont pouvoir apparaître en masse, nés du besoin de réaliser des opérations de plus en plus complexes.

 

eniac

 

En 1943, le premier ordinateur ne comportant plus aucune pièce mécanique est créé par P. Eckert et J. Mauchly : l'ENIAC (Electronic Numerical Integrator And Computer). Il est composé de 18000 lampes à vide, occupe une place de 1500 m² et pèse plus de 30 tonnes. Sa vitesse de calcul : environ 330 multiplications par seconde et fut utilisé pour mettre au point la bombe H.
Son principal inconvénient était sa programmation : l'ENIAC était en effet uniquement programmable manuellement avec des commutateurs ou en recablant entre eux ses différents éléments.

Anecdote : La première erreur informatique est due à un insecte qui, attiré par la chaleur, était venu se loger dans les lampes et avait créé un court-circuit. Ainsi le terme anglais pour « insecte » étant « bug », le nom est resté pour désigner une erreur informatique. Le terme bug a été francisé par la suite en bogue.

 

Le transistor

En 1948, le transistor est créé dans les laboratoires de la firme Bell Labs (grâce aux ingénieurs John Bardeen, Walter Brattain et William Shockley). Il permet dans les années 50 de rendre les ordinateurs moins encombrants, moins gourmands en énergie électrique et donc moins coûteux. C'est la révolution dans l'histoire de l'ordinateur qui vaudra l'apparition des micro-ordinateurs apparue dès 1971 dont les fameux ordinateurs personnels accessibles à la population car plus petits que leurs ancêtres. (Il se trouve que mon père a eu son premier ordinateur personnel, l'un des premier, en 1981 : un Commodore fourni avec un programme d’échec. Une chose encore assez rare à l'époque, du moins dans les ménages français.)

 

 

  deepBlue

Deep Blue d'IBM est le premier ordinateur à battre un champion du monde d'échecs en titre (Garry Kasparov) en 1990.

Toutefois Deep Blue reste un simple calculateur évaluant 200 millions de positions à la seconde, sans conscience du jeu lui-même et faisant donc appel à la puissance de calcul plus que de l'intelligence artificielle à proprement parler.

Partager cet article

Repost 0
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