Article de reference

Moteur d'inférence

Dans le domaine de l'intelligence artificielle , un moteur d'inférence est un composant logiciel d'un système intelligent qui applique des règles logiques à la base de connaissa...

Dans le domaine de l'intelligence artificielle , un moteur d'inférence est un composant logiciel d'un système intelligent qui applique des règles logiques à la base de connaissances pour déduire de nouvelles informations. Les premiers moteurs d'inférence étaient des composants de systèmes experts . Le système expert typique était composé d'une base de connaissances et d'un moteur d'inférence. La base de connaissances stockait des faits sur le monde. Le moteur d'inférence appliquait des règles logiques à la base de connaissances et en déduisait de nouvelles connaissances. Ce processus s'itérait car chaque nouveau fait dans la base de connaissances pouvait déclencher des règles supplémentaires dans le moteur d'inférence. Les moteurs d'inférence fonctionnent principalement dans l'un des deux modes suivants : règle spéciale ou faits : enchaînement avant et enchaînement arrière . L'enchaînement avant commence par les faits connus et affirme de nouveaux faits. L'enchaînement arrière commence par les objectifs et fonctionne en arrière pour déterminer quels faits doivent être affirmés pour que les objectifs puissent être atteints.

De plus, le concept d'« inférence » s'est élargi pour inclure le processus par lequel les réseaux neuronaux formés génèrent des prédictions ou des décisions. Dans ce contexte, un « moteur d'inférence » pourrait faire référence à la partie spécifique du système, voire au matériel, qui exécute ces opérations. Ce type d'inférence joue un rôle crucial dans diverses applications, notamment (mais sans s'y limiter) la reconnaissance d'images , le traitement du langage naturel et les véhicules autonomes . La phase d'inférence dans ces applications est généralement caractérisée par un volume élevé d'entrées de données et des exigences de traitement en temps réel.

Architecture

La logique utilisée par un moteur d'inférence est généralement représentée sous forme de règles IF-THEN. Le format général de ces règles est IF <expression logique> THEN <expression logique>. Avant le développement des systèmes experts et des moteurs d'inférence, les chercheurs en intelligence artificielle se sont concentrés sur des environnements de démonstration de théorèmes plus puissants qui offraient des implémentations beaucoup plus complètes de la logique du premier ordre . Par exemple, des énoncés généraux qui incluaient la quantification universelle (pour tout X, une certaine déclaration est vraie) et la quantification existentielle (il existe un X tel qu'une certaine déclaration soit vraie). Les chercheurs ont découvert que la puissance de ces environnements de démonstration de théorèmes était également leur inconvénient. En 1965, il était beaucoup trop facile de créer des expressions logiques qui pouvaient prendre un temps indéterminé ou même infini pour se terminer. Par exemple, il est courant dans la quantification universelle de faire des énoncés sur un ensemble infini tel que l'ensemble de tous les nombres naturels. De tels énoncés sont parfaitement raisonnables et même requis dans les preuves mathématiques, mais lorsqu'ils sont inclus dans un démonstrateur de théorème automatisé exécuté sur un ordinateur, ils peuvent faire tomber l'ordinateur dans une boucle infinie. En se concentrant sur les instructions IF-THEN (ce que les logiciens appellent modus ponens ), les développeurs disposent toujours d'un mécanisme général très puissant pour représenter la logique, mais qui peut être utilisé efficacement avec des ressources informatiques. De plus, certaines recherches psychologiques indiquent que les humains ont également tendance à privilégier les représentations IF-THEN lors du stockage de connaissances complexes.

Un exemple simple de modus ponens souvent utilisé dans les livres d'introduction à la logique est « Si vous êtes humain, alors vous êtes mortel ». Cela peut être représenté en pseudo-code comme suit :

Règle 1 : Humain (x) => Mortel (x) 

Voici un exemple simple de la manière dont cette règle serait utilisée dans un moteur d'inférence. Dans le chaînage avant , le moteur d'inférence trouverait tous les faits dans la base de connaissances qui correspondent à Humain(x) et pour chaque fait trouvé, ajouterait la nouvelle information Mortel(x) à la base de connaissances. Ainsi, s'il trouvait un objet appelé Socrate qui était humain, il en déduirait que Socrate était mortel. Dans le chaînage arrière , le système se verrait attribuer un objectif, par exemple répondre à la question Socrate est-il mortel ? Il chercherait dans la base de connaissances et déterminerait si Socrate était humain et, si tel était le cas, affirmerait qu'il est également mortel. Cependant, dans le chaînage arrière, une technique courante consistait à intégrer le moteur d'inférence à une interface utilisateur. De cette façon, plutôt que d'être simplement automatisé, le système pourrait désormais être interactif. Dans cet exemple simple, si le système se voyait attribuer l'objectif de répondre à la question de savoir si Socrate était mortel et qu'il ne savait pas encore s'il était humain, il générerait une fenêtre pour poser à l'utilisateur la question "Socrate est-il humain ?" et utiliserait ensuite ces informations en conséquence.

Cette innovation consistant à intégrer le moteur d'inférence à une interface utilisateur a conduit à la deuxième avancée précoce des systèmes experts : les capacités d'explication. La représentation explicite des connaissances sous forme de règles plutôt que de code a permis de générer des explications pour les utilisateurs : à la fois des explications en temps réel et après coup. Ainsi, si le système demandait à l'utilisateur « Socrate est-il humain ? », l'utilisateur pourrait se demander pourquoi on lui posait cette question et le système utiliserait la chaîne de règles pour expliquer pourquoi il essayait actuellement de vérifier ce morceau de connaissance : c'est-à-dire qu'il devait déterminer si Socrate est mortel et pour ce faire, il devait déterminer s'il était humain. Au début, ces explications n'étaient pas très différentes des informations de débogage standard que les développeurs traitent lorsqu'ils déboguent un système. Cependant, un domaine de recherche actif utilisait la technologie du langage naturel pour poser, comprendre et générer des questions et des explications en utilisant des langages naturels plutôt que des formalismes informatiques.

Un moteur d'inférence passe par trois étapes séquentielles : faire correspondre les règles , sélectionner les règles et exécuter les règles . L'exécution des règles entraîne souvent l'ajout de nouveaux faits ou objectifs à la base de connaissances, ce qui déclenche la répétition du cycle. Ce cycle se poursuit jusqu'à ce qu'aucune nouvelle règle ne puisse être mise en correspondance.

Dans la première étape, les règles de correspondance , le moteur d'inférence recherche toutes les règles déclenchées par le contenu actuel de la base de connaissances. Dans le chaînage avant, le moteur recherche les règles dont l'antécédent (côté gauche) correspond à un fait dans la base de connaissances. Dans le chaînage arrière, le moteur recherche les antécédents qui peuvent satisfaire l'un des objectifs actuels.

Dans la deuxième étape, sélectionnez les règles , le moteur d'inférence classe par ordre de priorité les différentes règles qui ont été mises en correspondance pour déterminer l'ordre dans lequel les exécuter. Dans la dernière étape, exécutez les règles , le moteur exécute chaque règle mise en correspondance dans l'ordre déterminé à l'étape deux, puis revient à l'étape un. Le cycle continue jusqu'à ce qu'aucune nouvelle règle ne soit mise en correspondance.

Implémentations

Les premiers moteurs d'inférence se concentraient principalement sur le chaînage avant. Ces systèmes étaient généralement implémentés dans le langage de programmation Lisp . Lisp était une plate-forme fréquente pour les premières recherches en IA en raison de sa forte capacité à effectuer des manipulations symboliques. De plus, en tant que langage interprété, il offrait des environnements de développement productifs adaptés au débogage de programmes complexes. Une conséquence nécessaire de ces avantages était que les programmes Lisp avaient tendance à être plus lents et moins robustes que les langages compilés de l'époque tels que C. Une approche courante à cette époque consistait à prendre une application de système expert et à reconditionner le moteur d'inférence utilisé pour ce système en tant qu'outil réutilisable que d'autres chercheurs pouvaient utiliser pour le développement d'autres systèmes experts. Par exemple, MYCIN était un des premiers systèmes experts pour le diagnostic médical et EMYCIN était un moteur d'inférence extrapolé à partir de MYCIN et mis à la disposition d'autres chercheurs.

À mesure que les systèmes experts sont passés du stade de prototypes de recherche à celui de systèmes déployés, l'accent a été mis sur des questions telles que la vitesse et la robustesse. L'un des premiers et des plus populaires moteurs de chaînage avant était OPS5 , qui utilisait l' algorithme Rete pour optimiser l'efficacité du déclenchement des règles. Une autre technologie très populaire qui a été développée était le langage de programmation logique Prolog . Prolog se concentrait principalement sur le chaînage arrière et proposait également diverses versions commerciales et optimisations pour l'efficacité et la robustesse.

Les systèmes experts suscitant un intérêt considérable de la part du monde des affaires, diverses entreprises, dont beaucoup ont été fondées ou dirigées par d'éminents chercheurs en IA, ont créé des versions produites de moteurs d'inférence. Par exemple, Intellicorp a été initialement dirigée par Edward Feigenbaum . Ces moteurs d'inférence étaient également souvent développés en Lisp au début. Cependant, la demande de plates-formes plus abordables et commercialement viables a fini par rendre les plates-formes d'ordinateurs personnels très populaires.

Implémentations open source

ClipsRules et RefPerSys (inspirés de CAIA et des travaux de Jacques Pitrat ). L'analyseur de code source statique Frama-C utilise également certaines techniques de moteur d'inférence.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index