LES SYSTEMES EXPERTS
Les Systèmes Experts en détail
Les types de SE
Les SE sont classés selon la complexité des variables et du langage d'évaluation. On en distingue 3 principaux types :
- 0 : Faits booléens sans variable. Si la voiture ne démarre pas et les phares ne s'allument pas alors il n'y plus de batterie.
- 0+ : Symboliques, Réels, Priorités. Si Age > 17 Alors statut = « Majeur ».
- 1 : Variables et Quantificateurs. Si Commutateur[M].status = libre alors Exec(PriseEnCharge, M).
Il s'agit ici d'une version primaire des SE qui n'est capable que d'évaluation binaire. Ses capacités sont limitées mais ses performances sont en général excellentes.
Ce type de SE assimile la notion de priorité qui permet de faire passer certains tests ou évaluations avant d'autres, leurs importances étant plus grande. Il intègre aussi l'arrivée de nombres réels et les évaluations symboliques (<, >, =, !=).
A ce niveau de complexité, les SE savent gérer des variables (donc stocker des informations pendant une évaluation) et peuvent utiliser des quantificateurs (évaluation des connaissances incertaines) ou états (ex : libre, occupé, transféré, en attente...).
Comme pour toute application, plus elle est complexe, plus elle est lente. La forte augmentation des puissances des gros systèmes permet de palier à ce problème. Néanmoins cette complexité implique l'utilisation de langages de haut niveau (donc un peu plus lent) et l'accès à une quantité d'information telle qu'on se retrouve rapidement avec une SE tortue. L'utilisation d'une excellente algorithmique est donc fondamentale dans la création des SE, ce qui limite ceux de niveau 1.
Composants
Tout Système Expert est composé de 3 principaux éléments : une base de connaissances, un moteur d'inférence et une interface graphique.
- Base de connaissances
- Les standards d'engagement (connaissances de l'expert) Cette partie représente les informations de base et de configuration du système : mesures (parfois en direct), lois, paramètres, données contractuelles.
- Les règles d'inférence (savoir faire) Cette partie représente l'ensemble des règles logiques de déduction utilisées par le moteur d'inférence.
- La base de faits (expérience) Historisation et statistique des faits effectifs, des décisions et des buts.
- Moteur d'inférence
- Interface graphique
La base de connaissance est l'ensemble des données qui sont utilisées par le moteur d'inférence. Cette base est divisée en 3 parties :
(cf. Définition dans les pré-requis)
Le moteur d'inférence est un mécanisme qui permet d'inférer des connaissances nouvelles à partir de la base de connaissances du système. Il est basé sur des règles d'inférence qui régissent son fonctionnement. Il a pour fonction de répondre à une requête de la part d'un utilisateur ou d'un serveur afin de déclencher une réflexion définie par ses règles d'inférence qui utiliseront la base de connaissance. Il peut alors fonctionner en chaînage avant ou chaînage arrière. Il est a noter toutefois qu'il reste important que la base de connaissance reste indépendante du moteur d'inférence (sauf si elle contient les règles d'inférence elles-mêmes).
Même si son importance est de taille dans tout application cliente, elle l'est d'autant plus ici qu'un SE doit parfaitement s'intégrer à un milieu professionnel et aux habitudes de ses experts. Si celui-ci n'est pas capable de s'approprier naturellement le logiciel, c'est que l'interface graphique n'est pas correcte. La priorité est donc à l'intuitivité et à la représentation fidèle de l'environnement.
Metadata/Metarules
(cf. Définition dans les pré-requis)
Les metadata (ou méta-données en français) sont un des points névralgiques d'un système expert. Elles sont en partie responsables de la vitesse d'accès aux données (pour les metadata de la base de connaissances). Leurs qualités pour le moteur d'inférence définissent sa vitesse et la puissance de calcul (il s'agit souvent du langage de programmation). Il est donc peu étonnant de retrouver les langages de programmation les plus rapide pour leur niveau de complexité (assembleur, C, C++).
Les metarules (ou méta-règles en français) sont les règles permettant de régir l'utilisation des règles d'inférence. Elles sont fortement liées au système de priorité qui permet de savoir dans quel ordre appliquer les évaluations et tests. Elles forment un pré-mécanisme de déduction des règles à appliquer qui les rendent directement responsables des performances du SE.
Mise en place
Dans cette partie, nous allons pouvoir voir comment mettre en place un Système Expert dans un milieu professionnel. Cela se fait en 5 étapes :
- Etude de faisabilité La mise en place d'un SE ne peut se faire que dans le cadre d'un domaine d'expertise dont les connaissances et le savoir-faire est formalisable. C'est à dire un domaine qui n'a pas trop attrait à la sensibilité humaine. L'investissement en temps et (donc) en argent, pour la mise en place d'un SE, est énorme et nombreux sont les entreprises qui souhaiteraient s'en doter mais tous les domaines d'expertise ne sont pas formalisables. Le premier travail du cogniticien est donc d'évaluer le domaine et les risques d'échecs de la mise en place et de succès de l'outil auprès des professionnels et futurs utilisateurs.
- Extraction des données Une fois l'assurance que cette mise en place est possible, la partie la plus importante de la mise en place va commencer. Il s'agit d'un dialogue entre le cogniticien et l'expert afin d'extraire de ce dernier toutes ses connaissances et son savoir-faire. Un tel objectif est évidemment impossible à atteindre, mais le cogniticien va tenter de s'en approcher au maximum. Il devra pour cela faire preuve d'une grande compréhension des informations qui lui seront transmises (les experts n'étant pas forcément bon pédagogue) et d'un certain sens de la psychologie pour faire parler un expert qui aura tout naturellement le sentiment de se faire très prochainement remplacer par un système informatique.
- Formalisation Après et pendant l'extraction des données, le cogniticien devra formaliser les connaissances qu'il a glané. Pour cette partie, il peut alors commencer à se tourner vers les développeurs et autres professionnels techniques de l'informatique afin de commencer à définir le cahier des charges précis, la base de connaissance et les règles d'inférence. A partir de cette étape, on a déjà un pied dans la technique.
- Design et développement Une fois la base de connaissances et les règles d'inférences définies, le cogniticien peut alors se retourner vers l'équipe technique qui va définir l'architecture technique nécessaire. Le cogniticien aura à partir de là le rôle de lien entre l'équipe d'experts et l'équipe de développement afin de peaufiner le cahier des charges et d'optimiser les méta-données et méta-règles.
- Tests et optimisations Naturellement la mise en place se termine par une série de tests auprès des experts mais aussi auprès d'utilisateurs lambdas qui sont sensés à partir de cet outil fournir les résultats d'un expert débutant. De par la nature du système(immergé dans le domaine professionnel) les tests sont généralement plus longs.