11/09/2012
Le terme « intelligence artificielle », créé par John McCarthy, est souvent abrégé par le sigle « IA » (ou « AI » en anglais, pour Artificial Intelligence). Il est défini par l’un de ses créateurs, Marvin Lee Minsky, comme « la construction de programmes informatiques qui s’adonnent à des tâches qui sont, pour l’instant, accomplies de façon plus satisfaisante par des êtres humains car elles demandent des processus mentaux de haut niveau tels que : l’apprentissage perceptuel, l’organisation de la mémoire et le raisonnement critique »2,3. On y trouve donc le côté « artificiel » atteint par l'usage des ordinateurs ou de processus électroniques élaborés et le côté « intelligence » associé à son but d'imiter le comportement. Cette imitation peut se faire dans le raisonnement, par exemple dans les jeux ou la pratique de mathématiques, dans la compréhension des langues naturelles, dans la perception : visuelle (interprétation des images et des scènes), auditive (compréhension du langage parlé) ou par d'autres capteurs, dans la commande d'un robot dans un milieu inconnu ou hostile.
Même si elles respectent globalement la définition de Minsky, il existe un certain nombre de définitions différentes de l'IA qui varient sur deux points fondamentaux4 :
Les définitions qui lient la définition de l'IA à un aspect humain de l'intelligence, et celles qui la lient à un modèle idéal d'intelligence, non forcément humaine, nommée rationalité.
Les définitions qui insistent sur le fait que l'IA a pour but d'avoir toutes les apparences de l'intelligence (humaine ou rationnelle), et celles qui insistent sur le fait que le fonctionnement interne du système IA doit ressembler également à celui de l'être humain ou être rationnel.
Le but d’un système d’intelligence artificielle est d’aider à la résolution d’un problème posé par l’utilisateur. Mais qu’est-ce qu’un problèmes (comment d´écrire le problème, connaissances a priori) ? Quel est le niveau d’autonomie de l’IA (peut-il y avoir interaction entre l’utilisateur et le système et de quelle manière) ? Le système doit il gérer un problème particulier ou le spectre de résolution est il large (peut on généraliser le problème, quelle est l’influence du changement d’echelle, y’a-t’il plusieurs solutions, veut-on la meilleure solution ou une bonne solution) ? Quel est le degré d’évolutivité du système (peut-il assimiler de nouvelles données/apprendre) ?
Répondre à ces questions nous oriente vers un type de résolution de problèmes adapté (optimisation, recherche dans un espace d’états, logique, réseaux de neurones supervisés ou non). Toutefois, il est parfois encore possible de résoudre le problème de différentes manière. Le choix se fait alors en fonction de 2 types d’approches :
• Une approche analytique et formelle
• Une approche holiste essayant d’intégrer la complexité
Ces 2 approches sont souvent contradictoires car elle amène, pour la première, à décomposer le probléme en partant d’une description abstraite puis en la raffinant petit à petit (approche “top-down”) alors que la deuxième tente plutôt de construire un système en intégrant hiérarchiquement des mécanismes de plus bas niveau (approche “bottom-up”)
La décision finale est alors laissée à la discrétion du programmeur en fonction de ses habitudes, de ses gouts ou de ses convictions !