# Système expert

Un système expert est un outil capable de reproduire les mécanismes cognitifs d'un expert, dans un domaine particulier. Il s'agit de l'une des voies visant l'intelligence artificielle.
Plus précisément, un système expert est un logiciel capable de répondre à des questions, en effectuant un raisonnement à partir de faits et de règles connues. Il peut servir notamment comme outil d'aide à la décision. Le premier système expert a été Dendral. Il permettait d'identifier les constituants chimiques.

## Composition

Un système expert se compose de trois parties :
* une base de faits ;
* une base de règles ;
* un moteur d'inférence.
Le moteur d'inférence est capable d'utiliser faits et règles pour produire de nouveaux faits, jusqu'à parvenir à la réponse à la question experte posée.
La plupart des systèmes experts existants reposent sur des mécanismes de logique formelle et utilisent le raisonnement déductif. Pour l'essentiel, ils utilisent des règles d'inférence de la forme suivante (syllogisme) :
* si P est vrai (fait ou prémisse) et si on sait que P implique Q (règle) alors, Q est vrai (nouveau fait ou conclusion).
Les plus simples des systèmes experts s'appuient sur la logique des propositions (dite aussi « logique d'ordre 0 »). Dans cette logique, on n'utilise que des propositions, qui sont vraies, ou fausses. D'autres systèmes s'appuient sur la logique des prédicats du premier ordre (dite aussi « logique d'ordre 1 »), que des algorithmes permettent de manipuler aisément.
Il faut maintenir une certaine cohérence de l'ensemble des règles :
* Incompatibilité (R1: Si A et B alors C; R2: Si A et B alors D;)
* Redondance (R1: Si A alors B; R2 : Si C alors B; Sauf si on applique des coefficients de certitude différents)
* Bouclage (R1: Si A alors B; R2: Si B alors C; R3: Si C alors A;)
Enfin, pour faciliter la description de problèmes réels sous forme de règles logiques, on a recours à des opérateurs ou des valeurs supplémentaires (notions de nécessité/possibilité, coefficients de plausibilité, etc.).

## Moteurs d'inférence

Il existe de nombreux types de moteurs, capables de traiter différentes formes de règles logiques pour déduire de nouveaux faits à partir de la base de connaissance.
On distingue souvent trois catégories, basées sur la manière dont les problèmes sont résolus :
* les moteurs - dits à « chaînage avant » - qui partent des faits et règles de la base de connaissance, et tentent de s'approcher des faits recherchés par le problème ;
* les moteurs - dits à « chaînage arrière » - qui partent des faits recherchés par le problème, et tentent par l'intermédiaire des règles, de « remonter » à des faits connus ;
* les moteurs - dits à « chaînage mixte » - qui utilisent une combinaison de ces deux approches chaînage avant et chaînage arrière.
Certains moteurs d'inférence peuvent être partiellement pilotés ou contrôlés par des méta-règles qui modifient leur fonctionnement et leurs modalités de raisonnement.
Pour répondre à des objectifs spécifiques, ces moteurs d'inférence peuvent être doublés dans certains Systèmes Experts dits « inverses » ou « bimoteurs », ou encore être complétés par d'autres systèmes d'analyse pour constituer des Systèmes Experts dits « hybrides ».

## Acquisition des connaissances

Si les algorithmes de manipulation de faits et de règles sont nombreux et connus, la détermination de l'ensemble des faits et règles qui vont composer la base de connaissances est un problème délicat. Comment décrire le comportement d'un expert face à un problème particulier, et sa manière de le résoudre, là est la question. Car ce que l'on souhaite obtenir n'est ni plus ni moins que l'expérience, la connaissance pratique de l'expert, et non la théorie que l'on peut trouver dans les livres ni exclusivement les règles logiques d'inférence. Équivalents des méthodes d'analyse de l'informatique traditionnelle, des méthodes d'acquisition des connaissances sont développées.
Les systèmes d'apprentissage automatique constituent une voie nouvelle d'acquisition des connaissances.

## Complexité et contrôle des systèmes experts

En pratique, dès que l'on dépasse la centaine de règles, il devient très difficile de suivre comment le système expert « raisonne » (manipule faits et règles en temps réel), et donc d'en assurer la mise au point finale, puis la maintenance.
L'intelligence artificielle permettra peut-être de résoudre le problème de la complexité, mais avec le risque d'une perte de contrôle des systèmes dits « intelligents ».

## Historique

Le premier système expert fut Dendral en 1965, créé par les informaticiens Edward Feigenbaum, Bruce Buchanan, le médecin Joshua Lederberg et le chimiste Carl Djerassi. Il permettait d'identifier les constituants chimiques d'un matériau à partir de spectrométrie de masse et de résonance magnétique nucléaire, mais ses règles étaient mélangées au moteur. Il fut par la suite modifié pour en extraire le moteur de système expert nommé Meta-Dendral.
En 1972-73 fut créé Mycin (en), un système expert de diagnostic de maladies du sang et de prescription de médicaments, avec un vrai moteur et une vraie base de règles. Ses règles étaient affectées de coefficients de vraisemblance affectant chacune d'entre elles d'un poids relatif aux autres. Le moteur produisait un chaînage avant simple tout en calculant les probabilités (au sens bayésien) de chaque déduction, ce qui rendait difficile d'expliquer la logique de son fonctionnement et encore plus d'en détecter les contradictions. Quant aux experts, ils étaient obligés de trouver des poids de vraisemblance pour chacune de leurs inférences, démarche complexe, peu naturelle et éloignée de leur mode de raisonnement, en tout cas conscient.
Opérationnel dans les années 1990 le projet Sachem (Système d'Aide à la Conduite des Hauts fourneaux En Marche, chez Arcelor) était conçu pour piloter des hauts-fourneaux en analysant les données fournies en temps réel par un millier de capteurs. Le projet a coûté entre 1991 et 1998 environ 30 millions d'euros, et le système économise environ 1,7 euro par tonne de métal.

## Applications

Les systèmes experts sont utilisés dans de nombreux domaines. En voici quelques exemples :
* des moteurs de recherche sur Internet, qui permettent à partir d'une requête, de trouver les pages Web correspondantes ;
* des outils spécialisés pour aider un médecin à diagnostiquer une maladie ;
* des outils utilisés dans l'aide au diagnostic des pannes automobiles ;
* des outils spécialisés pour aider un ingénieur à concevoir un produit. Les premiers ont été développés par l'IBM et baptisés Dendral, puis Mycin, etc. ;
* des programmes destinés aux joueurs d'échecs ou de go (comme le programme Deep Blue), qui peuvent analyser les positions du jeu et proposer le meilleur coup possible pour le joueur ou l'ordinateur ;
* des outils destinés à l'aide à la décision pour les entreprises ;
* des systèmes de recommandation (pour les achats en ligne par exemple) utilisant la logique floue et un chaînage arrière ;
* le logiciel OpenCog Prime, projet open source visant à construire une intelligence artificielle générale, dont la partie principale est basée sur un système expert hétérogène, utilisant différents types de moteurs d'inférence$^,$ ;
* des systèmes permettant la reconnaissance vocale ;
* des systèmes permettant la traduction automatique ;
* des systèmes permettant le traitement du langage naturel ;
* etc.