Vous êtes sur la page 1sur 96

Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 1

0. INTRODUCTION

Le domaine de l'intelligence artificielle tente de comprendre comment les hommes


pensent et s'efforce de construire des entités intelligentes. C'est une des sciences
récentes qui ont vu le jour après la Seconde Guerre Mondiale. Le nom "Intelligence
Artificielle" naquit en 1956.

L'IA synthétise et automatise des tâches intellectuelles et est donc potentiellement


relevant pour tout domaine de l'activité intellectuelle humaine.

0.1. QU'EST-CE QUE L'IA ?

Tout au long de l'histoire, L'IA a été définie selon quatre approches que nous présentons
dans le tableau ci-après. Les définitions da la partie supérieure du tableau se réfèrent
au processus mentaux ou au raisonnement alors que les définitions de la partie
inférieure mettent en exergue la conduite. D'autre part, les définitions de la gauche du
tableau mesurent la réussite en terme de fidélité à la manière d'agir des humains, alors
que ceux de la droite prennent comme référence un concept idéal de l'intelligence, que
nous appellerons rationalité. Un système est rationnel s'il fait ce qui est "correct" en
fonction de sa connaissance.

SYSTEMES QUI PENSENT COMME LES HUMAINS SYSTEMES QUI PENSENT RATIONNELLEMENT

"Le nouveau et excitant effort de faire que les "L'étude des facultés mentale à l'aide de l'usage
ordinateurs pensent… machines avec pensées, au des modèles computationnels" (Charniak et
sens littéral le plus ample" (Haugeland, 1985) McDermott, 1985)

"[l'automatisation des] activités que nous lions au "L'étude des calculs qui rendent possibles
processus de pensée humaine, activités comme la percevoir, raisonner et agir" (Winston, 1992)
prise de décisions, résolution des problèmes,
apprentissage,…" (Bellman, 1978)

SYSTEMES QUI AGISSENT COMME LES HUMAINS SYSTEMES QUI AGISSENT


RATIONNELLEMENT

"L'art de développer des machines avec capacité "L'intelligence computationnelle est l'étude de la
pour réaliser des fonctions qui, quand elles sont conception des agents intelligents" (Poole et al.,
réalisées par des personnes, exigent de 1998)
l'intelligence" (Kurzweil, 1990)

"l'étude de comment réussir que les ordinateurs "IA… est en rapport avec la conduite intelligente
réalisent les tâches que, pour le moment, les homme des automates" (Nilson 1998)
réalisent mieux" (Rich et Knight, 1991)

Quelques définitions de l'intelligence artificielle organisées en quatre catégories

Comportement humain: l'approche du Test de Turing

Le Test de Turing, proposé par Alan Turing (1950), fut conçu pour fournir une définition
opérationnelle et satisfaisante de l'intelligence. Au lieu de fournir une longue liste et
peut-être controversée des qualités nécessaires pour obtenir l'intelligence
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 2

artificiellement, il proposa un test basé sur l'incapacité de distinguer des entités


indiscutablement intelligentes des êtres humains. L'ordinateur réussit au test si un
évaluateur humain n'est pas capable de distinguer si les réponses à une série des
questions posées sont d'une personne ou non. Pour réussir ce test, l'ordinateur devrait
posséder les capacités suivantes :

 Traitement du langage naturel qui lui permet de s'exprimer parfaitement en


anglais ;
 Représentation de la connaissance pour stocker (retenir) ce qu'il connaît ou sent ;
 Raisonnement automatique pour utiliser l'information stockée en vue de répondre
aux questions et tirer des nouvelles conclusions.
 Apprentissage automatique pour s'adapter aux nouvelles circonstances et pour
détecter et extrapoler des modèles.

Le Test de Turing évita délibérément toute interaction physique directe entre


l'évaluateur et l'ordinateur. Toutefois, le Test Général de Turing inclut un signal de
vidéo qui permet à l'évaluateur d'évaluer la capacité de perception de l'évalué et donne
aussi la possibilité à l'évaluateur de passer des objets physiques à travers une petite
fenêtre. Pour réussir le Test Général de Turing, l'ordinateur doit être doté de

 Vision computationnelle pour percevoir les objets.


 Robotique pour manipuler et déplacer les objets.

Ces six disciplines constituent la majeure partie de l'IA et Turing mérite d'être reconnu
pour avoir conçu un test qui se conserve en vigueur après 50 ans.

 Penser comme un humain : approche du modèle cognitif

Pour pouvoir dire qu'un programme donné pense comme un humain, il est nécessaire
d'avoir un mécanisme pour déterminer comment pensent les hommes. Il est nécessaire
de pénétrer dans le fonctionnement des pensées humaines. Il y a eu façons de le
faire : moyennant l'introspection (en essayant d'attraper nos pensées au fur et à mesure
qu'elles apparaissent) et moyennant des expériences psychologiques. Dès qu'on a une
théorie suffisamment précise sur le fonctionnement de la pensée, on pourra exprimer
cette théorie sous forme d'un programme d'ordinateur. Si les données d'entrée/sortie du
programme et les temps de réaction sont similaires à ceux d'un humain, il y a évidence
que certains des mécanismes du programme peuvent se comparer à ceux qu'utilisent les
êtres humains.

Dans le domaine interdisciplinaire de la science cognitive convergent des modèles


computationnels de l'IA et des techniques expérimentales de psychologie essayant de
d'élaborer des théories précises et vérifiables sur le fonctionnement de la pensée
humaine.

 Pensée rationnelle : l'approche des "lois de la pensée"

Le philosophe grec Aristote fut un des premiers à essayer de codifier "la manière
correcte de penser", c'est-à-dire, un processus de raisonnement irréfutable. Ses
syllogismes sont des schémas de structure d'argumentation à travers lesquels on arrive
toujours à des conclusions correctes si l'on part des prémisses correctes. Ces ois de
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 3

pensée gouvernent la manière d'opérer de la pensée ; son étude fut le début d'un
nouveau domaine appelé logique.

 Agir de manière rationnelle : l'approche de l'agent rationnel

Un agent est quelque chose qui raisonne. Mais l'on attend des agents informatiques qu'ils
aient d'autres attributs qui les distinguent des "programmes" conventionnels : qu'ils
soient dotés des contrôles autonomes qui perçoivent leur environnement, qu'ils
persistent durant une période de temps prolongée, qu'ils s'adaptent aux changements et
qu'ils soient capables d'atteindre des objectifs différents. Un agent rationnel est celui
qui agit avec l'intention d'atteindre le meilleur résultat ou, quand il y a incertitude, le
meilleur résultat espéré.

Dans ce cours, nous nous concentrerons sur les principes qui régissent les agents
rationnels et sur les éléments nécessaires pour les construire.

0.2. LES FONDEMENTS DE L'INTELLIGENCE ARTIFICIELLE

Les disciplines suivantes ont contribué avec des idées, points de vue et techniques au
développement de l'IA.

0.2.1. PHILOSOPHIE (DE 428 AV. J.C. JUSQU'A PRESENT)

Les questions philosophiques suivantes ainsi que leur réponse ont contribué au
développement de l'IA :

 Les règles formelles peuvent-elles être utilisées pour tirer des conclusions valides ?
 Comment l'intelligence mentale se génère-elle à partir d'un cerveau physique ?
 D'où vient la connaissance ?
 Comment passe-t-on de la connaissance à l'action ?

0.2.2. MATHEMATIQUES (APPROXIMATIVEMENT DE L'AN 800 JUSQU'A PRESENT)

 Quelles règles formelles sont adéquates pour obtenir des conclusions valides ?
 Que peut être traité ?
 Comment raisonnons-nous avec l'information incertaine ?

1.2.3. ECONOMIE (DE 1776 JUSQU'A PRESENT)

 Comment réaliser le processus de prise de décision pour maximiser le rendement ?


 Comment réaliser des actions quand les autres ne collaborent pas ?
 Comment réaliser des actions dont les résultats s'obtiennent dans un futur lointain ?

La théorie de la décision qui combine la théorie de la probabilité avec la théorie de


l'utilité fournit un cadre complet et formel pour la prise de décisions dans l'incertitude.

Neuroscience (de 1861 jusqu'à présent)

Comment le cerveau humain traite-il l'information?


Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 4

La Neuroscience est l'étude du système neurologique et spécialement du cerveau. La


manière précise selon laquelle la pensée est générée dans le cerveau est l'un des grands
mystères de la science. Il a été observé durant des milliers d'années que le cerveau était
d'une certaine manière impliqué dans le processus de la pensée puisque des forts coups
à la tête peuvent occasionner des défaillances mentales.

L'étude de Paul Broca (1824 - 1880) sur l'aphasie (difficulté pour parler) dans les patients
avec cerveaux abîmés, en 1861, donna force à ce domaine et convainquit la société
médicale de l'existence des zones localisées dans le cerveau responsables des fonctions
cognitives spécifiques. En particulier, il montra que production du parler est localisée
dans la partie de l'hémisphère gauche.

A cette époque, il était déjà connu que le cerveau était formé des cellules nerveuses ou
neurones, mais ce ne fut que jusqu'à 1873 quand Camillo Golgi (1843-1926) développa
une technique de coloration qui permit l'observation des neurones individuels dans le
cerveau.

Psychologie (de 1879 jusqu'à présent)

Comment pensent les hommes et les animaux?

La conceptualisation du cerveau comme un dispositif du traitement de l'information,


caractéristique principale de la psychologie cognitive, remonte aux œuvres de William
James (1842-1910). Helmhotz met aussi l'emphase que la perception entraîne un certain
type d'inférence logique inconsciente.

Ingénierie computationnelle (de 1940 jusqu'à présent)

Comment construire un ordinateur efficace?

Pour que l'intelligence artificielle puisse arriver à être une réalité, deux choses sont
nécessaires: l'intelligence et une machine. L'ordinateur a été la machine choisie.
L'ordinateur digital moderne fut inventé de manière indépendante et presque
simultanée par les scientifiques dans les trois pays impliqués dans la Seconde Guerre
Mondiale (cfr. historique de l'informatique).

Théorie de contrôle et cybernétique (de 1948 jusqu'à présent)

Comment les automates peuvent-ils opérer sous leur propre contrôle?

La figure centrale du développement de ce qu'on appelle aujourd'hui théorie de


contrôle fut Norbert Wiener (1894-1964). Wiener fut un mathématicien brillant qui
travailla sur les systèmes de contrôle biologiques et mécaniques et sur leurs liens avec la
cognition.Wiener et ses collègues Arthur Rosenblueth et Julian Bigelow voyaient le
comportement déterministe comme quelque chose émergeant d'un mécanisme
régulateur qui tente de minimiser l'"erreur" (la différence entre l'état présent et l'état
objectif). A la fin des années 40, Wiener, ensemble avec Warren McCulloch, Walter Pitts
et John Von Neumann organisèrent une série des conférences dans lesquelles étaient
exploités des nouveaux modèles cognitifs mathématiques et computationnels et
influencèrent beaucoup d'autres chercheurs dans le domaine de la science du
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 5

comportement. Le livre de Wiener, Cybernetics (1948) fut un bestseller et révéla au


public la possibilité des machines avec intelligence artificielle.

La théorie du contrôle moderne, spécialement la branche connue comme contrôle


optimal stochastique a comme objectif la conception des systèmes qui maximisent une
fonction objectif dans le temps.

Linguistique (de 1957 jusqu'à présent)

Comment le langage est-il en relation avec la pensée?

La linguistique moderne et l'IA naquirent et se développèrent ensemble, donnant lieu à


un domaine hybride appelé linguistique computationnelle ou traitement du langage
naturel. Le problème de la compréhension du langage se montra rapidement beaucoup
plus complexe de ce qu'on avait pensé jusqu'en 1957. La compréhension du langage
exige la compréhension de la matière sous étude, et de son contexte et non seulement
la compréhension de la structure des phrases. La grande partie des premiers travaux de
recherche dans le domaine de la représentation de la connaissance étaient liés au
langage et à la recherche d'information dans le domaine du langage.

Chapitre PREMIER : AGENTS INTELLIGENTS

1.1. Agents et leur environnement

Un agent est quelque chose capable de percevoir son environnement avec l'aide des
capteurs et agir sur cet environnement en utilisant des effecteurs.

AGENT Capteurs
Environnement

?
Effecteurs

Figure 2.1. Les agents interagissent avec l'environnement grâce aux capteurs et effecteurs

Exemple: un agent humain a des yeux, des oreilles et autres organes sensoriels comme
capteurs, les mains les pieds et d'autres parties du corps pour agir (effecteurs).

Le terme perception est utilisé dans ce contexte pour indiquer que l'agent peut recevoir
des entrées à tout instant. La suite des perceptions d'un agent reflète l'historique
complet de ce que l'agent a reçu. En général, un agent pendra une décision en un
moment donné en fonction de la suite complète des perceptions jusqu'à cet instant. En
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 6

termes mathématiques on peut dire que le comportement de l'agent est donne par la
fonction de l'agent qui projette une perception donnée sur une action.

La fonction qui décrit le comportement d'un agent peut se présenter sous forme d'une
table. Etant donné un agent, sur lequel on veut expérimenter, on peut construire cette
table en tenant en compte toutes les séquences des perceptions et en déterminant
quelle action l'agent réalise en réponse. La table est une caractérisation externe de
l'agent. Initialement la fonction de l'agent pour un agent artificiel est implémentée dans
le

1.2. BON COMPORTEMENT : LE CONCEPT DE RATIONALITE

Un agent rationnel est celui qui agit correctement. Que signifie agir correctement ?
Comme première approximation, ce qui est correct est ce qui permet à l'agent d'obtenir
des meilleurs résultats, de réussir. Il y a donc nécessité de déterminer le moyen de
mesurer la réussite.

Mesures de rendement

Les mesures de rendement incluent les critères qui déterminent la réussite dans le
comportement de l'agent. Quand l'agent se situe dans un environnement, il génère une
suite d'actions conformément aux perceptions qu'il reçoit. Cette suite d'actions fait que
son habitat passe par une suite d'états. Si la suite est celle voulue, alors l'agent aura agi
correctement.

Mais il n'y a pas une unique mesure adéquate pour tous les agents. En règle générale, il
est mieux de concevoir des mesures d'utilité en accord avec ce que l'on veut dans
l'environnement, plus que conformément à comment on croit que l'agent devrait se
comporter

Rationalité

La rationalité en un moment donné dépend de quatre facteurs:

 La mesure de performance qui décrit le critère de réussite


 La connaissance de l'environnement accumulée par l'agent
 Les actions que l'agent peut accomplir
 La suite de perceptions de l'agent jusqu'à ce moment.

Ceci nous conduit à la définition de l'agent rationnel:

Dans chaque suite possible des perceptions, un agent rationnel devra entreprendre des
actions qui maximisent sa mesure de rendement, en se basant sur les évidences
apportées par la séquence des perceptions et sur la connaissance que l'agent a stockée.

Omniscience, apprentissage et autonomie

Il est nécessaire de faire attention en distinguant la rationalité de l'omniscience. Un


agent omniscient connaît le résultat de son action et agit en conséquence. Mais en
réalité l'omniscience n'est pas possible.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 7

La rationalité est différente de la perfection. La rationalité maximise le rendement


attendu, alors que la perfection maximise le résultat réel.

Donc la définition proposée pour la rationalité n'exige pas l'omniscience, puisque le


choix rationnel dépend seulement de la suite de perceptions reçues jusqu'à une date
donnée.

Un agent rationnel est aussi celui qui apprend le maximum possible de ce qu'il perçoit.
La configuration initiale d'un agent peut refléter une connaissance préliminaire de
l'environnement, mais au fur et à mesure que l'agent acquiert l'expérience, sa
connaissance peut se modifier et augmenter. Il y a des cas exceptionnels où l'on connaît
totalement l'environnement a priori. Dans ces cas, l'agent n'a pas besoin de percevoir ni
d'apprendre; il agit simplement de manière correcte.

Mais ces agents sont très fragiles.

L'agent rationnel divise en trois périodes différentes les tâches du calcul de la fonction
de l'agent: Lors de la conception de l'agent pendant lequel les concepteurs de l'agent
sont chargés de réaliser ces calculs; lorsqu'il est entrain de penser à l'opération suivante,
l'agent réalise beaucoup de calculs; et quand il apprend à partir de l'expérience, l'agent
réalise beaucoup de calculs pour décider comment modifier son comportement.

Un agent manque d'autonomie quand il s'appuie plus sur sa connaissance initiale que lui
fournit son concepteur que sur ses propres perceptions. Un agent rationnel doit être
autonome, doit savoir apprendre à déterminer comment compenser une connaissance
incomplète ou initialement partielle.

Dans la pratique, c'est peu de fois qu'une autonomie complète est exigée dès le
commencement: quand l'agent a peu ou pas d'expérience, il devra agir de manière
aléatoire à moins que le concepteur ne lui ait fournit une aide.

1.3. LA NATURE DE L'ENVIRONNEMENT

Les environnements de travail sont essentiellement les "problèmes" pour lesquels les
agents rationnels sont des "solutions".

Spécification de l'environnement de travail

Les mesures de performance (ou de rendement), l'environnement, les effecteurs et les


capteurs

(ou senseurs) forment ce qu'on appelle environnement de travail en sigle REES


(Rendement, Environnement, Effecteurs, Senseurs). Dans la conception d'un agent, la
première étape doit toujours être la spécification de l'environnement de travail de
manière la plus complète possible.

Considérons le problème d'un taximan automatique. La tâche de conduire une


automobile dans sa totalité est extrêmement illimitée. Il n'y a pas de limite sur le
nombre des nouvelles combinaisons des circonstances qui peuvent surgir. La figure 2.2
résume la description REES pour l'environnement de travail de quelques agents
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 8

TYPE MESURES ENVIRONNEMENT EFFECTEURS CAPTEURS

D'AGENT DE

RENDEMENT

Taximan Sûr, rapide, Artères, autre Direction,


légal, voyage trafic, piétons, accélérateur, Caméras,
confortable, clients frein, signal, taximètre,
maximisation visualisation visualisation
du bénéfice d'accélération,
senseurs de
moteur

Système de Patients sains, Patients, hôpital,


réduire les personnel Visualiser, Clavier pour
diagnostic coûts, questions, l'entrée des
médical demandes tests, symptômes,
diagnostics, conclusions,
traitements, réponses des
cas patients

Robot pour la Pourcentage Bande des Bras et mains Caméra,


sélection des des articulés senseur
composants composants composants, cube angulaire

classifiés

dans les

cubes corrects
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 9

Professeur Maximiser la Ensemble des Visualiser les Clavier


d'anglais cotation des étudiants, agence exercices, d'entrée
étudiants aux examinatrice suggestions,
examens corrections

Parmi les agents, on peut aussi compter les agents software ou softbots (software
robots) qui sont des programmes qui opèrent dans la totalité de l'environnement
artificiel défini par les entrées à partir du clavier et les caractères imprimés à l'écran.

Propriétés des environnements de travail

L'environnement de travail peut être

1. totalement observable ou partiellement observable:

Si les senseurs de l'agent lui fournissent l'accès à l'état complet de l'environnement à


tout moment alors l'environnement est totalement observable. Un environnement de
travail est totalement observable si les senseurs détectent tous les aspects qui sont
relevants dans la prise de décision. Un environnement peut être partiellement
observable à cause des bruits et de l'existence des senseurs peu exacts.

déterministe ou stochastique

Si l'état suivant du milieu est totalement déterminé par l'état actuel et l'action exécutée
par l'agent, alors l'environnement est déterministe; sinon, il est stochastique.

2. épisodique ou séquentiel

Dans un environnement de travail épisodique, l'expérience de l'agent se divise en


épisodes atomiques. Chaque épisode consiste en la perception de l'agent et la réalisation
d'une unique action postérieure. Les épisodes sont indépendantes les unes des autres.
Dans les environnements séquentiels, la décision présente peut affecter les décisions
futures.

3. statique ou dynamique:

Si l'environnement peut changer quand l'agent est entrain de délibérer, alors


l'environnement est dynamique pour l'agent, autrement, l'environnement est statique.

4. discret ou continu

La distinction entre discret et continu peut s'appliquer à l'état du milieu, à la manière


dont manipuler le temps et aux perceptions et actions de l'agent. Un milieu est discret
s'il a un nombre fini de perceptions et actions, comme le jeux des échecs. Mais un
taximan conduisant définit un état continu et un problème de temps continu. Les image
prises par des caméras digitales sont discrètes au sens strict mais sont traitée comme
des représentations continues de localisations et intensités variables.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 10

5. Environnement à agent individuel ou à multi agents

Un environnement est à agent individuel s'il y a un seul agent. Un environnement est à


multi agents s'il y a plusieurs agents travaillant en compétition ou en coopération.

Un environnement multi agents est compétitif lorsque l'agent B cherche à maximiser sa


mesure de rendement, laquelle, selon les règles minimise la mesure de rendement de A.
Dans un environnement coopératif, chaque agent cherche à maximiser la mesure de
rendement de tous les autres agents de l'environnement. Par exemple un système de
diagnostic médical est dans un environnement à agent individuel tandis que le joueur
aux échecs est dans un environnement multi agents compétitif. Dans un système de
communication, les agents sont dans un environnement multi agents coopératif. Les
taximen, en évitant les fautes et les dérangements les uns aux autres, sont dans un
environnement semi coopératif avec une certaine compétition parce qu'un seul taxi doit
occuper une place de stationnement.

2.4. STRUCTURE DES AGENTS

Le travail de l'intelligence artificielle c'est de concevoir le programme de l'agent qui


implémente la fonction de l'agent laquelle projette les perceptions sur les actions. Il est
supposé que le programme s'exécutera sur un certain type d'ordinateur doté des senseurs
physiques (capteurs) et effecteurs (architecture).

Agent = architecture + programme

Programmes des agents

Les programmes des agents que nous décrirons dans ce cours ont la même architecture:
ils reçoivent les perceptions actuelles comme entrées des senseurs (capteurs) et
retournent une action aux effecteurs.

Algorithme de description en pseudocode

Nous décrivons les algorithmes en pseudocode qui doit être familier pour les utilisateurs
des langages Java, C++ et Lisp. Mais nous devons signaler quelques idiosyncrasies:

Variables statiques. Nous utilisons le mot clé statique pour dire qu'une variable reçoit
une valeur initiale la première fois qu'une fonction est appelée et retient cette valeur
dans les prochains appels de la fonction.

Fonctions comme valeurs. Fonctions. Les fonctions et les procédures ont des noms
en majuscules, et les variables ont des noms en italique et minuscule. Un appel d'une
fonction est similaire à FN(x).

Les tables commencent avec 1. le premier indice d'une table est 1 comme dans la
notation mathématique usuelle, et non 0 comme en Java et en C++.

L'indentation est significative. L'indentation est utilisé pour marquer le domaine d'une
boucle ou conditionnel, comme dans le langage Python, contrairement au langage Java
et C++ (qui utilisent des accolades) ou Pascal et Visual Basic (qui urilisent end).
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 11

Exemple du programme d'un agent

Le programme AGENT-DIRIGE-MOYENANT-TABLE qui est appelé à chaque nouvelle


perception et retourne une action à chaque moment. Le programme stocke une suite de
perceptions en utilisant sa propre structure de données privée.

fonction AGENT-DIRIGE-MOYENNANT-TABLE(perception) retourne une action


variables statiques:perceptions, une suite, vide initialement

table, une table d'actions, indexée par les suites de perceptions,


totalement définie initialement.

ajouter la perception i à la fin des


perceptions action ←
CONSULTATION(perceptions, table) retourner
action

Ce pseudocode montre le programme d'un agent très simple qui stocke la suite des
perceptions et après, les compare avec les suites stockées dans la table d'actions pour
décider ce qu'il doit faire.

La table représente explicitement la fonction qui définit le programme de l'agent. Pour


construire un agent rationnel de cette façon, les concepteurs doivent réaliser une table
qui contienne les actions associées à chaque suite possible des perceptions.

Mais à cause des dimensions exagérément grandes des tables, il est pratiquement
impossible de concevoir des agents dirigés moyennant des tables.

Ainsi, nous présentons les quatre types fondamentaux des programmes des agents qui
incarnent les principes fondamentaux de tous les agents intelligents:

• Agents réactifs simples

• Agents réactifs basés sur les modèles

• Agents basés sur les objectifs

• Agents basés sur l'utilité.

AGENTS REACTIFS SIMPLES

Le type d'agent le plus simple est l'agent réactif simple. Ce type d'agent choisit les
actions en fonction des perceptions actuelles, ignorant le reste des perceptions
historiques. Par exemple, l'agent Aspirateur dont la fonction d'agent peut se présenter
dans une table partielle ci-après:

Suite des perceptions Actions


Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 12

[A, propre] Droite

[A, sale] Aspirer

[B, propre] Gauche

[B, sale] Aspirer

[A, propre], [A, propre] Droite

[A, propre], [A, sale] Aspirer

[B, propre], [B, propre] Gauche

[B, propre], [B, sale] Aspirer

….

[A, propre], [A, propre], [A, propre] Droite

[A, propre], [A, propre], [A, sale] Aspirer

[B, propre], [B, propre], [B, propre] Gauche

[B, propre], [B, propre], [B, sale] Aspirer

L'agent Aspirateur est un agent réactif simple parce qu'il prend ses décisions en se
basant sur l'état de la localisation actuelle. Son programme d'agent se présente comme
suit:

Fonction AGENT_ASPIRATEUR_REACTIF([localisation, état]) retourne une action

Si état = sale alors retourner Aspirer

Autrement si localisation = A alors retourner Droite

Autrement si localisation = B alors retourner Gauche

AGENTS REACTIFS BASES SUR LES MODELES

La manière la plus effective pour les agents de manipuler la visibilité partielle est de
stocker l'information sur ces parties du monde qu'ils ne peuvent pas voir. L'agent doit
donc maintenir un certain type d'état interne qui dépend de l'histoire perçue qui puisse
refléter au moins les aspects non observables de l'état actuel. L'utilisation de
l'information de l'état interne au fur et à mesure que passe le temps exige de codifier
deux types de connaissance dans le programme de l'agent:
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 13

La connaissance concernant comment évolue le monde indépendamment de


l'agent; L'information sur comment les actions de l'agent affectent le monde.

Cette connaissance sur comment fonctionne le monde, qu'elle soit implémentée avec un
circuit booléen simple ou avec des théories scientifiques complètes, s'appelle "modèle
du monde". Un agent qui utilise ce modèle est un agent basé sur les modèles.

La structure d'un agent réactif simple avec état interne se présente comme suit :

Senseurs

état

Comment est le monde


Comment évolue le actuellement ?

ENVIRONNEMENT
monde

Quels effets mes


actions provoquent

Quelle action dois-je


Règles de production prendre?

Effecteurs

Cette structure montre comment la perception actuelle se combine avec l'état interne
ancien pour générer la description actualisée de l'état actuel. Le programme de l'agent
se présente comme suit

fonction AGENT-REACTIF-AVEC-ETAT(perception) retourne une


action statique: état, une description actuelle de l'état du
monde règles, un ensemble de règles condition-
action action, l'action plus récente, initialement
aucune

état ACTUALISER-ETAT(état, action,


perception) règle REGLE-
COINCIDENCE(état, règles) action REGLE-
ACTION[règle]
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 14

retourne action

Un agent réactif basé sur les modèles, qui stocke l'information sur l'état
actuel du monde en actualisant un modèle interne. Ensuite choisit une
action de la même façon que l'agent réactif.

La partie intéressante est celle correspondant à la fonction ACTUALISER-ETAT, qui


responsable de la création de la nouvelle description de l'état interne. Outre
l'interprétation de la nouvelle perception à partir de la connaissance existante sur l'état,
elle utilise l'information relative à la manière dont évolue le monde pour en savoir plus
sur les parties du monde qui ne sont pas visibles; pour cela elle doit connaître quel est
l'effet des actions de l'agent sur l'état du monde.

AGENTS BASES SUR LES OBJECTIFS

La connaissance sur l'état actuel du monde n'est pas toujours suffisante pour décider
quoi faire. Par exemple, dans un croisement de chemins, le taximan peut virer à gauche,
virer à droite ou continuer droit. La décision correcte dépend de où veut aller le taxi. En
d'autres termes, outre la description de l'état actuel, l'agent a besoin d'une certaine
information sur son objectif qui décrive les situations qui sont désirables, par exemple,
arriver à la destination proposée par le passager. Le programme de l'agent peut se
combiner avec l'information sur les résultats des actions possibles (la même information
utilisée pour actualiser l'état interne dans le cas de l'agent réactif) pour choisir les
actions qui permettent d'atteindre l'objectif. La structure de l'agent basé sur les
objectifs se présente comme suit :

Senseurs

état

Comment est le monde


Comment évolue le actuellement ?
ENVIRONNEMENT

monde

Comment est le monde


Quels effets mes actuellement ?
actions provoquent

Objectifs Quelle action dois-je


prendre maintenant ?

Agent
Effecteurs

Agent basé sur les objectifs et basé sur les modèles, qui stocke l'information de l'état
du monde ainsi que l'ensemble des objectifs qu'il tente d'atteindre, et qui est
capable de choisir l'action qui éventuellement le guidera vers l'atteinte de ses
objectifs.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 15

Dans quelques occasions, le choix des actions basées sur les objectifs est directe, quand
atteindre les objectifs est le résultat immédiat d'une action individuelle. Dans d'autres
occasions, ce choix peut être compliqué, quand l'agent doit considérer des séquences
complexes pour trouver le chemin qui lui permette de trouver l'objectif. La recherche
et la planification sont les sous domaines de l'Intelligence Artificielle qui se focalisent
sur comment trouver les séquences des actions qui permettent aux agents d'atteindre
leurs objectifs.

Il faut considérer que la prise de décisions de ce type est fondamentalement différente


des règles de condition – action décrites antérieurement, dans lesquelles il faut tenir
compte des considérations sur le futur (telles que "que se passera-t-il si je fais ceci ou
cela?" et "ceci me rendra-t-il heureux?"). Dans les conceptions des agents réactifs, cette
information n'est pas représentée explicitement, parce que les règles que manipule
l'agent projettent directement les perceptions sur les actions. L'agent réactif freine
quand il voit les lumières de frein. Un agent basé sur les objectifs, au début, peut
raisonner que si le véhicule qu'il voit devant a des lampes de frein allumées, donc il est
entrain de réduire sa vitesse. Etant donné la manière dont le monde évolue
normalement, l'unique action qui permet d'atteindre l'objectif de ne pas se cogner
contre d'autres véhicules, c'est de freiner.

Bien que l'agent basé sur les objectifs puisse paraître moins efficient, il est plus flexible
puisque la connaissance qui supporte sa décision est représentée explicitement et peut
être modifiée. S'il commence à pleuvoir, l'agent peut actualiser sa connaissance sur
comment se comportent les freins; ce qui impliquera que toutes les manières relevantes
d'actualiser s'altèrent automatiquement pour s'adapter aux nouvelles circonstances. Pour
l'agent réactif, d'autre part, on devra ré-écrire beaucoup de règles de condition-action.
Le comportement de l'agent basé sur les objectifs peut changer facilement pour qu'il se
dirige à une localisation différente. Les règles des agents réactifs en rapport avec quand
virer et quand continuer tout droit sont valides seulement pour une destination concrète
et doivent être modifiées chaque fois que l'agent se dirige à une autre destination.

AGENTS BASES SUR L'UTILITE

Les objectifs seuls en soi ne sont pas suffisants pour générer un comportement de
grande qualité dans la majorité des environnements. Par exemple, il y a beaucoup de
séquences d'actions qui conduiront le taxi à sa destination (et par tant à atteindre son
objectif), mais certaines sont plus rapides, plus sures, plus fiables, ou moins coûteuses
que d'autres. Les objectifs seuls fournissent une distinction binaire crue entre les états
de "félicité" et "tristesse", alors qu'une mesure d'efficience plus générale devrait
permettre une comparaison entre différents états du monde par rapport au niveau exact
de félicité que l'agent atteint quand il arrive à un état ou autre. Comme le terme
"félicité" ne sonne pas plus scientifique, la terminologie traditionnelle utilise dans ces
cas pour indiquer qu'on préfère un état du monde est qu'un état a plus d'utilité qu'un
autre pour l'agent.

Une fonction d'utilité projette un état (ou une séquence d'états) sur un nombre réel qui
représente un niveau de félicité. La définition complète d'une fonction d'utilité permet
de prendre des décisions rationnelles dans deux types de cas dans lesquels les objectifs
sont inadéquats, quand il y a conflit d'objectifs et que seulement certains d'entre eux
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 16

doivent être atteints (par exemple, vitesse et sécurité), la fonction d'utilité détermine
l'équilibre adéquat. Deuxièmement, quand il y a plusieurs objectifs et qu'aucun d'eux ne
peut être atteints avec certitude, l'utilité fournit un mécanisme pour pondérer la
probabilité de réussite en fonction de l'importance des objectifs.

AGENTS QUI APPRENNENT

Un agent qui apprend peut être divisé en quatre composants conceptuels tel que le
montre la figure suivante :

Niveau d'agissement

Critique Capteurs

ENVIRONNEMENT
rétroalimentation

changements
Elément Elément
d'apprentissage d'agissement
connaissance
Objectifs à
apprendre

Générateur de
problèmes Effecteurs

Agent
Structure générale des agents qui apprennent

La distinction plus importante entre l'élément d'apprentissage et l'élément


d'agissement est que le premier est responsabilisé pour faire des améliorations et le
second se responsabilise pour le choix des actions externes. L'élément d'agissement est
ce qu'on avait considéré antérieurement comme l'agent complet: il reçoit les stimuli et
détermine les actions à réaliser. L'élément d'apprentissage se réalimente des critiques
sur l'agissement de l'agent et détermine comment l'élément d'agissement doit se
modifier pour fournir des meilleurs résultats dans l'avenir.

La conception de l'élément d'apprentissage dépend beaucoup de la conception de


l'élément d'agissement. Quand on tente de concevoir un agent qui a la capacité
d'apprendre, la première question à laquelle répondre est "comment enseigner à
apprendre?" sinon "De quel type d'élément d'agissement a besoin l'agent pour accomplir
son objectif, quand il a appris comment le faire ?". Etant donné une conception pour un
agent, on peut construire les mécanismes d'apprentissage nécessaires pour améliorer
chacune des parties de l'agent.

La critique indique à l'élément d'apprentissage comment l'agent agit par rapport à un


niveau d'agissement fixé. La critique est nécessaire parce que les perceptions en soi ne
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 17

prévoient pas une indication de la réussite de l'agent. Il est donc très important de fixer
le niveau d'agissement.

Le dernier composant de l'agent qui apprend est le générateur des problèmes. Il


suggère des actions qui conduiront l'agent vers des expériences nouvelles et
informatives. Ce qui est intéressant est que si l'élément d'agissement suit son chemin, il
peut continuer à accomplir des meilleures actions, étant donné sa connaissance. Mais si
l'agent est disposé à explorer un peu, et accomplir des actions qui ne sont pas
totalement optimales à court terme, il peut découvrir des meilleures actions à long
terme. Le travail du générateur des problèmes c'est de suggérer ces actions
exploratoires. C'est ce que les scientifiques font quand ils réalisent des
expérimentations.

Pour réaliser une conception complète, on peut réutiliser l'exemple du taxi automatisé.
L'élément d'agissement consiste en la collection des connaissances et procédures qu'a le
taxi pour choisir ses actions de conduite. Le taxi se met en marche et circule en utilisant
cet élément d'agissement. La critique observe le monde et fournit l'information à
l'élément d'apprentissage. Par exemple, après que le taxi va à bande opposée (c'est-à-
dire à sa gauche) de manière rapide, la critique observe le langage scandaleux
qu'utilisent d'autres conducteurs. A partir de cette expérience, l'élément d'apprentissage
est capable de formuler une règle qui indique que "passer rapidement à la bande
opposée" est une mauvaise action, et l'élément d'agissement se modifie en incorporant
la nouvelle règle. Le générateur des problèmes doit identifier certaines zones de
comportement qui doivent s'améliorer et suggérer des expériences.

L'élément d'apprentissage peut faire des échanges dans n'importe lequel des composants
de "connaissance" qui se montrent dans les diagrammes de l'agent. Les cas plus simples
incluent l'apprentissage direct à partir des séquences perçues. L'observation d'un certain
nombre d'états successifs de l'environnement peut permettre que l'agent apprenne
"comment le monde évolue", et l'observation des résultats de ses actions peut permettre
que l'agent apprenne "que font ses actions". Par exemple, si le taxi exerce une certaine
pression sur les freins quand il est entrain de circuler sur une route mouillée, il
connaîtra comment le véhicule décélère. En clair, ces deux tâches d'apprentissage sont
plus difficiles si il y a seulement une vue partielle de l'environnement.

Les sortes d'apprentissage montrées dans les paragraphes précédentes ne nécessitent


pas l'accès aux niveaux d'agissement externe, d'une certaine manière, le niveau est celui
utilisé universellement pour faire des pronostics conformément à l'expérimentation. La
situation est légèrement plus complexe pour un agent basé sur l'utilité qui désire
acquérir l'information pour créer sa fonction d'utilité.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 18

CHAPITRE DEUXIEME : INTRODUCTION AUX SYSTEMES EXPERTS

2.1. QU'EST-CE QU'UN SYSTEME EXPERTS?

L'intelligence Artificielle (AI) a plusieurs branches notamment:

• la vision artificielle,

• le langage naturel,

• la compréhension,

• les systèmes artificiels neuronaux,

• la parole,

• la robotique,

• les systèmes experts.

Le professeur Edward Feigenbaum de l'université de Stanford, pionnier en technologie


des systèmes experts les a définis comme "un programme de traitement intelligent qui
utilise la connaissance et les procédures d'inférence pour résoudre des problèmes qui
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 19

sont tellement difficiles qu'ils exigent une expérience humaine significative pour leur
solution" (Feigenbaum 82).

Un système expert est donc un système de traitement qui émule l'habileté de prendre
des décisions d'un spécialiste humain. Le terme émuler signifie que le système expert a
l'objectif d'agir dans tous les aspects comme un spécialiste humain.

Les systèmes experts sont une branche de l'intelligence artificielle qui fait ample usage
de la connaissance spécialisée pour résoudre des problèmes comme un spécialiste
humain. Ce dernier est une personne qui a une connaissance développée dans un
domaine donné. Le spécialiste a donc des connaissances ou habiletés spéciales que la
majorité ne connaît pas, il peut résoudre des problèmes que la majorité ne peut pas
résoudre, ou il les résout avec beaucoup plus d'efficience.

Les termes systèmes experts ou système basé sur la connaissance ou système expert
basé sur la connaissance s'utilisent comme synonymes.

La figure 1.1. illustre le concept de base d'un système expert. Il comprend deux
composants principaux. La base de connaissance contient la connaissance qui permet
au mécanisme d'inférence de tirer des conclusions; celles-ci sont des réponses du
système expert à la consultation spéciale de l'utilisateur.

Faits
Base de connaissance

Utilisateur
Mécanisme d'inférence
Aptitudes
expertes

Figure 1.1. Concept de base de fonctionnement d'un système expert

Contrairement aux techniques de la solution générales des problèmes, la connaissance


d'un spécialiste se concentre spécifiquement sur le domaine du problème, comme la
médecine, les finances, les sciences, l'ingénierie, etc., dans lequel le spécialiste peut
résoudre des problèmes avec facilité. Les systèmes experts sont conçus spécialisés dans
un domaine du problème.

La connaissance du spécialiste pour résoudre des problèmes spécifiques s'appelle


domaine de connaissance de l'expert.

Dans son domaine de connaissance, un système expert raisonne ou fait des inférences
de la même façon qu'un spécialiste humain inférerait la solution d'un problème. C'est-à-
dire, étant donnés certains faits, on infère une solution.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 20

3.2. Avantages d'un système expert

Les systèmes experts ont plusieurs caractéristiques attrayantes:

• Grande disponibilité : L'expérience est disponible pour tout matériel de


traitement adéquat. Dans un sens plus réel, un système expert est la production massive
de l'expérience.

• Coût réduit : Le coût de mettre l'expérience à la disposition de l'utilisateur est


réduit énormément.

• Danger réduit : Les systèmes experts peuvent être utilisés dans des
environnements qui pourraient être dangereux pour un être humain.

• Permanence : L'expérience est permanente. Contrairement aux spécialistes


humains qui peuvent se retirer, renoncer ou mourir, la connaissance d'un système expert
durera indéfiniment.

• Expérience multiple : La connaissance des plusieurs spécialistes peut être


disponible pour travailler simultanément et continuellement sur un problème, à toute
heure de la nuit ou du jour. Le niveau d'expérience combinée de beaucoup de systèmes
experts peut dépasser celui d'un seul spécialiste humain (Harmon 85).

• Explication : Le système expert peut expliquer clairement et en détail le


raisonnement qui conduit à une conclusion, cela augmente la confiance que la décision
prise était correcte. Un être humain peut être fatigué, peut renoncer ou ne pas être
capable de le faire toujours.

• Réponse rapide : Une réponse rapide ou en temps réel peut être nécessaire pour
certaines applications. En fonction du logiciel ou matériel utilisé, un système expert
peut répondre plus rapidement et être pus disposé qu'un spécialiste humain, de telle
sorte qu'un système expert en temps réel constitue un bon choix (Hugh 88, Ennis 86).

• Réponses solides, complètes et sans émotions, en tout moment : Ceci peut être
très important en temps réel et en des situations d'émergence, quand un spécialiste
humain ne fonctionnera pas avec toute sa capacité à cause de la pression et de la
fatigue.

• Enseignement intelligent : Un système expert peut agir comme un enseignant


intelligent en laissant que l'étudiant exécute des programmes d'exemple et en
expliquant le raisonnement du système.

• Base de données intelligente : Les systèmes experts peuvent être utilisés pour
avoir accès à une base de données de manière intelligente.

3.3. Concept généraux des systèmes experts

La connaissance d'un système expert peut être représentée de plusieurs manières (elle
peut être encapsulée dans les règles et les objets). Une méthode commune de
représenter la connaissance est sous forme des règles du type SI … ALORS, par exemple :
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 21

SI la lumière est rouge ALORS arrêtez-vous.

Un système expert classique embarque une connaissance non écrite qui doit être
obtenue d'un spécialiste à travers d'intenses interviews par un ingénieur de
connaissance (cogniticien) pendant une longue période. Le processus de la construction
d'u système expert s'appelle ingénierie de connaissance (Michie 73) et consiste en
l'acquisition de la connaissance auprès d'un spécialiste humain ou d'une autre source, et
sa codification dans le système expert.

Les étapes générales du développement d'un système expert sont développées dans la
figure 1.2 ci-après :

Spécialiste humain

Dialogue

Ingénieur de
connaissance

Explicitation en règles

Base de connaissance
du système expert

L'ingénieur de connaissance établit d'abord un dialogue avec un spécialiste pour obtenir


sa connaissance. Ensuite, l'ingénieur de connaissance codifie explicitement la
connaissance dans la base de connaissance sous forme des règles. Le spécialiste évalue
alors le système expert et présente des critiques à l'ingénieur de connaissance. Ce
processus se répète jusqu'à ce que l'expert juge satisfaisant le comportement du
système expert.

Les systèmes experts sont souvent conçus de manière différente à celle des programmes
conventionnels parce que les problèmes n'ont généralement pas une solution
algorithmique et dépendent des inférences pour obtenir une solution raisonnable, en
considérant la solution obtenue comme la meilleure à laquelle on puisse s'attendre s'il n'
y a pas d'algorithme conduisant la solution optimale. Puisque le système expert dépend
de l'inférence, il doit être capable d'expliquer son raisonnement pour qu'il soit vérifié. La
facilité d'explication fait partie intégrale des systèmes experts sophistiqués.

Certains systèmes experts permettent même que le système apprenne des règles à
travers l'exemple en utilisant l'induction des règles à partir des tables des données.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 22

3.4. Caractéristiques d'un système expert

Un système expert peut être conçu pour qu'il ait les caractéristiques générales
suivantes:

• Haut rendement : Le système doit avoir la capacité de répondre à un niveau de


compétence égal ou supérieur à celui d'un spécialiste du domaine. Cela signifie que la
qualité de conseil donné par un système doit être très haute.

• Temps de réponse adéquat : Le système doit agir en un temps raisonnable,


comparable ou meilleur au temps exigé par un spécialiste, pour prendre une décision.

• Fiabilité : le système expert doit être fiable et ne doit pas connaître des "failles"
sinon il ne sera pas utilisé.

• Compréhensible : le système doit être capable d'expliquer les étapes de son


raisonnement pendant qu'elles s'exécutent, au lieu d'être seulement une boîte noire qui
produit une réponse miraculeuse.

• Flexibilité : Vu la grande quantité de connaissance qu'un système expert peut


avoir, il est important d'avoir un mécanisme efficient pour ajouter, modifier, et éliminer
la connaissance. Une raison de la popularité des systèmes experts basés sur les règles est
la capacité de stockage efficiente et modulaire des règles.

En fonction du système expert, un mécanisme d'explication peut être simple ou élaboré.


Un mécanisme d'explication simple dans un système expert basé sur les règles peut
présenter une liste de tous les faits qui ont fait que la dernière règle s'exécute. Les
systèmes plus élaborés peuvent agir de la manière suivante :

• Enumérer toutes les raison en faveur ou contre un hypothèse particulière,

• Enumérer toutes les hypothèses qui peuvent expliquer l'évidence observée,

• Expliquer toutes les conséquences d'une hypothèse

• Donner un pronostic ou prédiction de ce qui adviendra si l'hypothèse est vraie.

• Justifier les questions que le programme fait à l'utilisateur pour obtenir plus
d'information.

• Justifier la connaissance du programme.

Dans ce cas, le programme cite une métarègle, une connaissance au sujet d'une règle
(le préfixe méta signifie "par-dessus", "au-delà").

La connaissance peut croître facilement dans un système basé sur les règles. Ceci veut
dire que la base do connaissance peut croître petit à petit au fur et mesure qu'on ajoute
les règles, de telle sorte que l'exécution et la correction du système peuvent être
révisées continuellement. Si les règles sont conçues adéquatement, les interactions
entre elles se minimiseront ou s'élimineront comme protection contre les effets non
attendus. La croissance de connaissance facilite la construction rapide des prototypes
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 23

de manière que l'ingénieur de connaissance puisse montrer tôt au spécialiste un


prototype de travail du système expert. Ceci est une caractéristique importante parce
qu'il maintient l'intérêt du spécialiste et de l'organisation sur le projet. La construction
rapide des prototypes montre aussi rapidement les lacunes, inconsistances ou erreurs
dans la connaissance du spécialiste ou du système, pour qu'elles puissent être corrigées
rapidement.

3.5. Le développement de la technologie des systèmes experts

L'IA a beaucoup de branches en rapport avec la parole, la robotique, la compréhension


et l'apprentissage du langage naturel, les systèmes experts, etc. les racines des systèmes
experts embarquent beaucoup de disciplines; en particulier, une des racines principales
des systèmes experts est le domaine de traitement de l'information humaine, appelé la
science cognitive. La cognition est l'étude de la manière dont les hommes traitent
l'information. En d'autres termes, la cognition est l'étude de la manière dont les hommes
pensent, spécialement à l'heure de résoudre des problèmes.

L'étude de la cognition est très importante si l'on prétend réussir des ordinateurs qui
émulent les spécialistes humains. Souvent, les spécialistes ne peuvent pas expliquer
comment ils résolvent des problèmes (simplement, les solutions leur arrivent). Si le
spécialiste ne peut pas expliquer comment se résout un problème, il n'est pas possible
de codifier la connaissance dans un système expert basé sur la connaissance explicite.
Dans ce cas, l'unique possibilité est les programmes qui apprennent par eux-mêmes à
émuler le spécialiste. Ce sont des programmes basés sur l'induction et sur les systèmes
neuronaux artificiels.

La solution humaine des problèmes et productions

Le développement de la technologie des systèmes experts a plusieurs antécédents. La


table suivante est un bref résumé de certains développements importants qui ont
convergé en systèmes experts modernes. Quand c'est possible, nous donnons les dates de
début des projets, et même quand beaucoup d'eux se sont étalés sur plusieurs années.
La meilleure référence des premiers systèmes c'est les trois volumes du Manuel
d'Intelligence Artificielle (Feigenbaum 81).

Année Evénement

1943 Règles de production ; modèle neuronal de McCulloch et Pitts

1954 Algorithme de Markov pour contrôler l'exécution des règles

1956 Conférence de Darmouth, théoricien logique; recherche

heuristique, le terme Intelligence Artificielle.

1957 Perceptron inventé par Rosenblatt; début du GPS (General

Problem Solver) Newell, Shaw et Simon)

1958 Langage LISP d'intelligence artificielle (McCarthy)


Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 24

1962 Principes de neurodynamique (principles of Neurodynamics)

dans la perception, de Rosenblatt

1965 Méthode de solution pour la vérification automatique des

théorèmes (Robinson). Logique floue pour le raisonnement


sur les objets flous (Zadeh). Débuts des travaux sur le
DENDRAL, le premier système expert (Feigenbaum,
Buchanan, et al.)

1968 Réseaux sématiques, modèle de mémoire associative

(Quillian)

1969 MACSYMA, système expert en mathématiques (Martin et


Moses)

1970 Début des travaux sur PROLOG (Colmerauer, Rousell, et al.)

1971 HEARSAY I pour la reconnaissance de


la parole.

Humain Problem solving popularise les règles (Newell et

Simon)

1973 MYCIN, système expert pour le diagnostique médicale


(Shortliffe et al.) qui conduit à GUIDON, enseignement intelligent
(Clancey).

TEIRESIAS, concept de mécanisme d'explication (Davis) et


HEARSAY II, modèle de tableau de coopération multiple
entre spécialistes.

1975 Marcos, représentation de la connaissance (Minsky)

1976 AM (Artificial mathematician), découverte créative


des concepts mathématiques (Lenat)

Théorie de l'évidence de Drempster-Shafer pour


le raisonnement sous l'incertitude

Début des travaux sur le PROSPECTOR, système expert pour


l'exploration minière (Duda, Hart et al.)

1977 OPS (ou Amazon) shell du système expert (Forgy), utilisé en

XCON/R1

1978 Début des travaux en XCON/R1 (McDermott, DEC) pour


Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 25

configurer les sytèmes d'ordinateurs DEC Meta-


DENDRAL, métarègles et induction des règles
(Buchanan)

1979 Algorithme Rete pour la correspondance rapide de modèles

(Forgy)

Début de la commercialisation de l'IA

Inference Corp se forme (elle libère ART, outil de système expert


en 1985)

1980 Symbolics, LMI est fondé pour fabriquer les machines LISP

1982 Systèmes experts en mathématiques SMP; Hopfield Neural

Net;

Projet japonais de la cinquième génération pour développer les


ordinateurs intelligents

1983 KEE, outil de système expert (Intellicorp)

1985 CLIPS outil de système expert (NASA)

Table 5.1. Certains événements importants dans l'histoire des systèmes experts

A la fin des années 50 et débuts des années 60, plusieurs programmes furent écrits qui
étaient orientés vers la solution des problèmes en général. Le plus fameux de ces
programmes fut le Solutionneur Général des Problèmes, créé par Newell et Simon et
décrit dans une série d'articles qui débouchèrent sur le travail monumental de 920 pages
sur la cognition, Human Problem Solving (Newell 72).

Un des résultats plus significatifs démontrés par Newell et Simon fut que la grande
partie de la solution humaine de problèmes ou cognition peut s'exprimer par des règles
de production du type SI…ALORS. Une règle correspond à une petite collection
modulaire de connaissance appelée fragment. Les fragments s'organisent en une
disposition libre, avec des liens vers les fragments de connaissance apparentée. Une
théorie soutient que toute la mémoire humaine est organisée en fragments.

Exemple:

SI l'automobile n'avance pas et l'indicateur de combustible est sur


vide

ALORS charge le carburant

Newell et Simon popularisèrent l'usage des règles pour représenter la connaissance


humaine y montrèrent comment on peut raisonner avec elles. Les psychologues cognitifs
ont utilisé des règles comme modèles pour expliquer le traitement humain de
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 26

l'information. L'idée de base est que l'entrée sensorielle fournit le stimulus au cerveau,
le stimulus éclate les règles appropriées de la mémoire à long terme, et produit la
réponse convenable. La mémoire à long terme est où notre mémoire est stockée.

La mémoire à long terme inclut plusieurs règles qui une structure simple SI…ALORS. Par
contre, la mémoire à court terme est utilisée pour le stockage temporel de
connaissance pendant la solution du problème. Bien que la mémoire à long terme puisse
stocker des centaines des milliers ou plus de fragments, la capacité de la mémoire
active est étonnamment petite, de quatre à sept fragments.

Une théorie propose que la mémoire à court terme représente le nombre de fragments
qui peuvent être actifs simultanément, et considère la solution humaine des problèmes
comme la dissémination des fragments actifs dans la mémoire. Eventuellement, un
fragment peut s'activer avec une intensité telle que qu'il génère une pensée consciente.

L'autre élément nécessaire pour la solution humaine des problèmes est un processeur
cognitif, qui tente de trouver les règles qui s'activeront avec le stimulus approprié.
Alors, les actions de la règle avec grande priorité s'exécuteront avant les autres. Le
mécanisme d'inférence des systèmes experts modernes correspond au processeur
cognitif.

Le modèle de Newell et Simon pour la solution humaine des problèmes selon la


perspective de la mémoire à long terme (règles), de la mémoire à court terme (mémoire
active) et d'un processeur cognitif (mécanisme d'inférence) est la base des systèmes
experts modernes basés sur les règles.

Des règles comme celles-ci sont une espèce des systèmes de production. Aujourd'hui,
les systèmes de production basés sur les règles sont une méthode populaire pour
implanter des systèmes experts. Les règles individuelles qui constituent un système de
production sont les règles de production. En concevant un système expert, un facteur
important est la quantité de connaissance ou granularité des règles. Très peu de
granularité rend difficile la compréhension d'une règle sans relation avec d'autres.
Beaucoup trop de granularité fait que le système expert soit difficile à modifier à cause
de la grande quantité de fragments entremêlés dans une règle.

Jusqu'au milieu des années soixante, une des principales recherche en IA était de
produire des systèmes intelligents qui dépendaient peu du domaine de connaissance et
plus de méthodes puissantes de raisonnement. Même le nom de Solutionneur Général
des problèmes illustre la concentration des machines qui n'étaient pas conçues pour un
domaine spécifique mais qui aveint pour but de résoudre beaucoup de sortes de
problèmes. Bien que les méthodes de raisonnement utilisées par les Solutionneurs des
Problèmes fussent puissantes, les machines restaient des éternels apprentis. Quand un
nouveau domaine se présentait, elles devaient découvrir tout à partir de ses principes de
base et elles n'étaient pas aussi bonnes que les spécialistes humains qui dépendaient du
domaine de connaissance pour des actions de haut niveau.

Un exemple du pouvoir de la connaissance est le jeu d'échecs. Bien que les ordinateurs
rivalisent aujourd'hui les humains, les gens jouent bien, peu importe le fait que
l'ordinateur peut faire des calculs des millions de fois plus rapides. Les études ont
démontré (Chase 73) que les joueurs experts aux échecs n'ont pas de superpouvoirs de
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 27

raisonnement, mais ils dépendent de leur connaissance sur les modèles de pièces du jeu,
acquise avec des années d'expérience. Comme mentionné antérieurement, la
connaissance d'un joueur expert en jeu d'échecs s'estime à 50.000 modèles et les êtres
humains sont très bons pour reconnaître des modèles comme ceux du jeu d'échecs. Au
lieu de raisonner anticipativement sur dix ou vingt mouvements pour chaque pièce,
comme le fait un ordinateur, l'homme analyse le jeu à partir des modèles qui révèlent
des menaces à long terme pendant qu'il se maintient en alerte contre des mouvements
imprévus à court terme.

Bien que la connaissance du domaine soit puissante, elle se limite généralement au


domaine. Par exemple, une personne qui se convertit en joueur expert aux échecs, ne
devient pas en même temps un expert pour résoudre des problèmes mathématiques, ni
un expert en dame. Bien qu'une partie de la connaissance puisse porter sur un autre
domaine, comme la planification attentive des mouvements, celle-ci est plutôt une
habileté qu'une expérience géniale.

Aux débuts des années 70, il fut évident que la connaissance du domaine était la clé
pour construire des machines qui résoudraient des problèmes et qui pourraient
fonctionner au niveau des spécialistes humains. Même si les méthodes de raisonnement
sont importantes, les études avaient montré que les spécialistes ne dépendent pas
primordialement du raisonnement pour résoudre un problème ; en réalité, le
raisonnement peut jouer un rôle mineur dans la solution. Au lieu de cela, les experts
dépendent d'une vaste connaissance de l'heuristique et de l'expérience acquise pendant
des années. Si un spécialiste ne peut pas résoudre un problème en se basant sur son
expérience, alors il doit raisonner en partant des principes de base et la théorie (ou, en
grande probabilité, en demandant à un autre expert). Généralement, l'habileté de
raisonner d'un spécialiste n'est pas meilleure que celle d'une personne moyenne devant
une situation non familière. Les premiers essais pour construire des puissants
solutionneurs des problèmes basés uniquement sur le raisonnement, ont démontré que
ceux-ci étaient incomplets s'ils dépendaient seulement du raisonnement.

Le discernement que le domaine de connaissance était la clé pour construire des


solutionneurs des problèmes réels conduisit à la réussite des systèmes experts. Ainsi, les
systèmes experts qui ont eu du succès au jour d'aujourd'hui sont des systèmes basés sur
la connaissance, plus que les solutionneurs des problèmes généraux. En plus, la même
technologie qui conduisit au développement des systèmes experts, a conduit aussi au
développement des systèmes basés sur la connaissance et qui ne contiennent pas
nécessairement de l'expérience humaine.

Bien que l'expérience soit considérée comme une connaissance spécialisée connue par
seulement peu de personnes, la connaissance se trouve souvent dans des livres, revues,
journaux et autres ressources amplement disponibles. Par exemple, la connaissance de
comment résoudre une équation du second degré ou les intégrales et les dérivées, est
amplement disponible. Il y a des programmes d'ordinateur basés sur la connaissance,
comme MACSYMA et SMP, pour exécuter de manière automatique des opérations
mathématiques avec des opérandes numérique et symboliques. D'autres programmes
basés sur la connaissance peuvent exécuter des processus de contrôle des usines
manufacturières. Actuellement, les termes programmation basée sur la connaissance
et systèmes experts s'utilisent comme synonymes. En réalité, les systèmes experts sont
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 28

considérés aujourd'hui comme un modèle de programmation alternatif ou paradigme


pour la programmation algorithmique ou conventionnelle.

L'ascension des systèmes basés sur la connaissance.

Avec l'acceptation du paradigme basé sur la connaissance durant les années 70,
plusieurs prototypes des systèmes experts furent créés avec succès. Ces systèmes
pouvaient interpréter des spectrogrammes des masses pour identifier les composants
chimiques (DENDRAL), diagnostiquer des maladies (MYCIN), analyser des données
géologiques pour la recherche de pétrole (DIPMETER) et de minerai (PROSPECTOR), et
configurer des systèmes de traitement (XCON/R1). La nouvelle selon laquelle
PROSPECTOR découvrit un dépôt de minerais d'une valeur supérieur à cent millions de
dollars et que XCON/R1 épargnait à DIGITAL Equipment Corporation(DEC) des millions de
dollars par an, détacha un intérêt sensationnel sur la nouvelle technologie des systèmes
experts en 1980. la branche de l'IA qui commença aux années 50 comme une étude du
traitement humain de l'information avait crû jusqu'à atteindre le succès commercial par
le développement des programmes pratiques dans la vie réelle.

Le système expert MYCIN fut important pour plusieurs raisons. En premier lieu, il
démontra que l'IA pouvait s'utiliser dans des problèmes pratiques réels. En deuxième
lieu, MYCIN fut le champ des tests pour des nouveaux concepts comme le mécanisme
d'explication, l'acquisition automatique des connaissances et la tutelle (enseignement)
intelligente, qu'on trouve dans beaucoup des systèmes experts actuels. La troisième
raison de l'importance du MYCIN est qu'il démontra la viabilité du shell du système
expert.

Les systèmes experts antérieurs, comme le DENDRAL, étaient les seuls systèmes dans
lesquels la base de connaissance était entremêlée avec le logiciel qui appliquait la
connaissance: le mécanisme d'inférence. MYCIN sépara explicitement la base de
connaissance du mécanisme d'inférence. Ceci fut très important pour le développement
de la technologie des systèmes experts parce qu'il signifiait que le noyau essentiel du
système expert pouvait être réutilisé. C'est-à-dire, un nouveau système expert pouvait
être construit avec beaucoup de rapidité qu'un système du type

DENDRAL, en vidant la vieille connaissance et en introduisant la connaissance


concernant nouveau domaine. La partie du MYCIN en rapport avec l'inférence et
l'explication, le shell, pouvait alors être remplie avec de la connaissance concernant le
nouveau système. Le shell obtenu en éliminant la connaissance médicale du MYCIN
s'appelait EMYCIN (MYCIN essentiel ou vide).

A la fin des années 70, les trois concepts de base avaient convergé pour la grande partie
des systèmes experts actuels, comme le montre la figure 1.3 suivante. Ces trois
concepts sont: les règles, le shell et la connaissance.

Dans les années 1980, des nouvelles compagnies commencèrent à sortir les systèmes
experts du laboratoire universitaire et à fabriquer des produits commerciaux; un
nouveau logiciel s'introduisit avec des multiples options pour le développement des
systèmes experts, incluant l'Outil
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 29

Automatique de Raisonnement (Automated Reasoning Tool, ART) de la Inférence Corp.,


la Knowledge Engineering Tool (KEE) de IntelliCorp, et Rulemaster de radian Corp. En
plus, un nouveau hardware spécialisé fut développé pour exécuter le logiciel avec
beaucoup de vitesse qu'avant. Des compagnies comme Symbolics et LMI introduisirent
des ordinateurs considérés comme machines LISP, parce qu'ils étaient conçus pour LISP,
le langage fondamental de base du logiciel développé pour les systèmes experts. Dans
ces machines, le langage assembleur natif, le système d'exploitation et tous les autres
codes fondamentaux furent créés en LISP.

Malheureusement, cette haute technologie avait un prix très élevé. Bien qu'une machine
LISP pour un seul utilisateur était beaucoup plus puissante et productive qu'une machine
aux fins générales, la machine et la licence du logiciel pour un seul utilisateur coûtaient
100.000 dollars. Etablir un laboratoire d'IA avec six programmeurs pouvait coûter
facilement 500.000 dollars.

Production des règles Séparation de la Connaissance


comme pour le modèle humain connaissance et clé de
l'expérience de solution des mécanisme d'inférence,
problèmes le shell

SYSTEMES EXPERTS

Figure 1.3 Convergence de trois facteurs importants dans la création


du système expert moderne basé sur les règles

Ces objections furent surpassées au milieu des années 80 par l'introduction d'un nouveau
et puissant logiciel, CLIPS de la NASA. CLIPS était écrit en C pour avoir la vitesse et la
mobilité, il utilise un puissant accoupleur des modèles appelé Algorithme Rete, il est
gratuit pour les utilisateurs et employés gouvernementaux; il est disponible à un coût
nominal pour d'autres utilisateurs de COSMIC, qui distribue le logiciel développé par la
NASA; les universitaires peuvent l'obtenir à la moitié du prix. CLIPS est un logiciel libre
et quiconque obtient une copie légale de COSMIC peut le distribuer gratuitement.

CLIPS peut être installé dans n'importe quel compilateur C de Kernighan et Ritchie. Il a
été installé dans les PC et compatibles IBM,Vax, Hewlett Packard, Sun, Cray et beaucoup
d'autres fabricants.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 30

COSMIC dispose des versions pour Windows de Macintosh et autres.

3.6. Applications et domaines des systèmes experts

Les programmes de traitement conventionnels s'utilisent pour résoudre beaucoup de


types de problèmes. En général, ces problèmes ont des solutions algorithmiques qui se
prêtent bien aux programmes et langages de programmation conventionnels comme
FORTRAN, Pascal, Ada, C++, Java, etc. dans beaucoup de domaines d'application comme
les affaires, l'ingénierie, les calculs numériques, ils sont d'une importance primordiale.
Par contre les systèmes experts sont destinés principalement au le raisonnement
symbolique.

Bien que des langages comme LISP et PROLOG soient aussi utilisés pour la manipulation
symbolique, ils servent aux fins plus générales que les shells des systèmes experts. Ceci
ne signifie pas qu'il ne soit pas possible de construire des systèmes experts en LISP et
PROLOG, en réalité, beaucoup de systèmes experts ont été construits avec ces
langages. Surtout PROLOG a beaucoup d'avantages spéciaux pour les systèmes de
diagnostic à cause de son chaînage arrière intégré. Toutefois, il est plus convenant et
efficient de construire les grands systèmes experts avec des shells et programmes à shell
conçus spécifiquement pour les systèmes experts. Au lieu de "réinventer la roue" chaque
fois qu'on construit un nouveau système expert, il est plus efficient d'utiliser les outils
spécialisés.

Applications des systèmes experts

Les systèmes experts se sont appliqués à presque tous les champs de connaissance.
Certains ont été conçus comme outils de recherche, pendant que d'autres satisfont
d'importantes fonctions commerciales et industrielles. Un exemple de système expert
utilisé dans les affaires de routine est le XCON de Digital Equipemnt Corporation (DEC).
Ce système appelé originalement R1 fut développé par McDermott, de l'Université
Carnegie-Mellon, et c'est un système expert pour la configuration des systèmes de
traitement (McDermott 84).

La configuration d'un système de traitement signifie que, quand un consommateur fait


une commande, on lui fournit toutes les parties correctes (software, hardware et
documentation). Pour les grands systèmes, le système du consommateur se configure
dans l'usine de fabrication et est testé pour s'assurer qu'il remplit toutes les exigences du
client. Contrairement à l'achat d'un téléviseur ou d'un ordinateur domestique, un grand
système de traitement permet une grande quantité d'options et interconnexions. En
assemblant un grand système, il ne suffit pas d'envoyer le nombre sollicité de CPU,
unités de disque, terminaux et autres, l'on doit aussi fournir les interconnexions et le
câblage approprié, en plus de réviser le système pour vérifier qu'il fonctionne
adéquatement.

Le système XCON est probablement un des systèmes experts d'usage routinier ayant le
plus de succès et épargne au DEC des millions de dollars chaque année, il réduit le
temps pour configurer les demandes et améliore son exactitude. XCON peut configurer
un ordre moyen à chaque 2 minutes, 15 fois plus rapide qu'un être humain. En plus,
pendant que les humains configurent les ordres correctement 70% de fois, XCON a une
efficience de 98%. Pour cela configurer un système de traitement complexe dans une
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 31

usine constitue un grand effort. Il est coûteux de configurer partiellement un système


pour ensuite
Type Domaine general découvrir qu'il
n'accomplit
pas les
Configuration Assembler correctement les composants appropriés d'un
exigences du
système
client, ou que
d'autres
Diagnostic Inférer les problèmes sous-jacents en se basant sur composants
l'évidence observée sont
nécessaires et
que la
Instruction Enseignement intelligent pour qu'un étudiant pour qu'un livraison doit
étudiant puisse poser pourquoi, comment et que se être retardée
passerait-il si comme il le ferait avec un professeur jusqu'à ce
humain qu'arrivent les
pièces.
Interprétation Expliquer les données observées
Des centaines
des systèmes
Supervision Comparer les données observées avec les données experts ont
attendues pour juger un comportement été construits
et commentés
dans les
Pronostic Prédire le résultat d'une situation donnée publications,
revues et
Remède Prescrire un traitement pour un problème conférences
sans compter
les systèmes
Contrôle Réguler un processus. Le problème peut exiger une experts
interprétation, diagnostic, supervision, pronostic, inédits des
remède. systèmes et
organisations
militaires. En nous basant sur les systèmes experts décrits dans la littérature publique,
nous pouvons discerner une grande gamme d'applications pour les systèmes experts,
comme montré dans les tableaux suivants :

Table 5.2. Domaines systèmes experts

Nom Chimie

Interpréter la structure tridimensionnelle d'une


CRYSALIS
protéine
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 32

DENDRAL Interpréter la structure moléculaire

Remédier le spectromètre massif triple et quadruple


TQMSTUNE
Toms

CLONER Concevoir des nouvelles molécules biologiques

MOLGEN Concevoir des expériences pour le clonage des gênes

SECS Concevoir des molécules organiques complexes

SPEX Planifier des expériences en biologie moléculaire

Nom Ingénierie

REACTOR Diagnostiquer/remédier les accidents du réacteur

DELTA Diagnostiquer/remédier les locomoteurs GE

STEAMER Instruire en opération sur l'énergie à vapeur

Nom Géologie

DIPEMETER Interpréter les registres du mesureur de Profondeur

LITHO Interpréter les données du registre des puits pétrolier

MUD Diagnostiquer/remédier les problèmes de perforation

PROSPECTOR Interpréter les données géologiques pour chercher les

minerais
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 33

Nom Médecine

PUFF Diagnostiquer les maladies des poumons

VM Superviser les patients en thérapie intensive

ABEL Diagnostiquer électrolytes/acide base

AI/COAG Diagnostiquer les maladies du sang

AI/REUHM Diagnostiquer les maladies rhumatismales

CADUCEUS Diagnostiquer les maladies de médecine interne

ANNA Superviser la thérapie des doigts

BLUE BOX Diagnostiquer/remédier la depression

MYCIN Diagnostiquer/remédier les infections bactériennes

ONCOCIN Rem2dier/administrer les patients de chimiothérapie

ATTENDING Assister en administration anesthésique


Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 34

Nom Ordinateurs

PTRANS Donner le pronostic pour l'administration des


ordinateurs.

DEC

BDS Diagnostiquer les parties déficientes dans le réseau de


commutation

XCON Configurer les systèmes de traitement. DEC

XSEL Configurer les ordres de vente des ordinateurs DEC

XSITE Configurer le site client pour les ordinateurs DEC

Superviser/contrôler le système d'exploitation MVS de


YES/MVS
IBM

TIMM Diagnostiquer les ordinateurs DEC

Nom Electronique

ACE Diagnostiquer les failles d'un réseau téléphonique

IN-ATE Diagnostiquer les failles d'un oscilloscope

NDS Diagnostiquer le réseau de communication national

EURISKO Concevoir la microélectronique pour la


troisième dimension

PALLADIO Concevoir et tester les circuits VLSI

SOPHIE Instruire en diagnostic de faille de circuit


Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 35

Domaines appropriés pour les systèmes experts

Avant de commencer à construire un système expert, il est essentiel de décider si c'est


le paradigme approprié. Par exemple, une préoccupation c'est si l'on doit utiliser un
système expert au lieu d'un paradigme alternatif, comme la programmation
conventionnelle. Le domaine approprié d'un système expert dépend de plusieurs
facteurs:

• Le problème peut-être résolu efficacement avec la programmation


conventionnelle? Si la réponse est oui, alors un système expert n'est pas le meilleur
choix. Par exemple, considérons le problème de diagnostiquer un certain équipement; si
tous les symptômes de dysfonctionnement sont connus d'avance, alors ce qui est adéquat
c'est une simple recherche de la faille dans une table ou un arbre de décision. Les
systèmes experts sont plus adéquats pour des situations dans lesquelles il n'y a pas une
solution algorithmique efficiente. Ces cas sont appelés problèmes de structure nocive
et seul le raisonnement peut offrir des espoirs d'une solution adéquate.

S'agissant des problèmes de structure nocive, i existe le danger que le système expert
puisse accidentellement donner une solution identique à une algorithmique; c'est-à-dire,
le système expert peut découvrir d'une manière inattendue une solution algorithmique.
Un indicateur qu'une telle solution a été donnée est qu'on puisse trouver une solution qui
requiert une structure de contrôle rigide. C'est-à-dire, l'ingénieur de connaissance
oblige que les règles s'exécutent dans une séquence déterminée, en ajustant
explicitement les priorités de plusieurs règles. En forçant une structure de contrôle
rigide dans le système expert, on supprime un des principaux avantages de sa
technologie, qui est celui en rapport avec les entrées inattendues qui ne suivent pas un
modèle prédéterminé (Parrello 88). C'est-à-dire, les systèmes experts réagissent de
manière opportune devant ses entrées, quelles qu'elles soient. Les programmes
conventionnels attendent souvent que l'entrée suive une certaine séquence. Un système
expert avec beaucoup trop de contrôle indique souvent un algorithme caché et peut être
un bon candidat à recodifier comme un programme conventionnel.

• Le domaine est-il bien délimité ? Il est important d'avoir des limites bien définies
sur ce que auquel on s'attend que le système expert sache et sur les aptitudes qu'il doit
avoir. Par exemple, supposons que l'on désire créer un système expert pour
diagnostiquer les douleurs de la tête. C'est certain que la connaissance médicale d'un
médecin devrait être placée dans la base de connaissance. Toutefois, pour une
compréhension plus profonde des maux de tête, on doit peut-être aussi la connaissance
de neurochimie, ensuite son domaine père, la biochimie, ensuite la chimie, la
biophysique moléculaire et ainsi de suite jusqu'à arriver à la physique sous nucléaire.
D'autres domaines comme la rétro alimentation biologique, la psychologie, la
psychiatrie, la physiologie, l'exercice, le yoga et la manipulation du stress peuvent
contenir aussi de la connaissance pertinente concernant les maux de tête. Le point est :
jusqu'à quand cesser d'ajouter des domaines? Plus il y a des domaines, plus complexe
devient le système expert.

• Y a-t-il nécessité et désir d'avoir un système expert ? Bien que construire un


système expert soit une grande expérience, il n'a pas d'importance s'il n'y a personne
disposée à l'utiliser. S'il y a beaucoup de spécialistes humains, il est difficile de justifier
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 36

un système expert en se basant sur le manque de l'expérience humaine. En plus, si les


experts ou les utilisateurs ne veulent pas du système, celui-ci ne sera pas accepté
quoiqu'il soit nécessaire.

L'administration doit spécialement être disposée à appuyer le système. Ceci est encore
plus critique pour les systèmes experts que pour les programmes conventionnels, parce
que les systèmes experts sont une nouvelle technologie, ce qui signifie qu'il y a peu de
gens expérimenté sur cette technologie et beaucoup d'incertitude concernant ce qu'on
peut en obtenir. Toutefois le domaine des systèmes experts requiert beaucoup d'appui,
parce qu'il s'agit de résoudre des problèmes que les programmes conventionnels ne
peuvent pas. Les risques sont grands, mais aussi les récompenses.

• Y a-t-il au moins un spécialiste disposé à coopérer ? Il doit y avoir un spécialiste


disposé à s'impliquer et de préférence enthousiasmé au projet; puisque ce ne sont pas
tous les spécialistes qui sont disposés à ce qu'on examine leur connaissance en quête de
failles et ensuite la placer dans un ordinateur. Même s'il y a beaucoup de spécialistes
disposés à coopérer, il serait peut-être sage de limiter le nombre de spécialistes qui
doivent participer puisqu'ils peuvent avoir différentes manières de résoudre un
problème, comme l'application de différents tests diagnostics, et même arriver à des
conclusions différentes. Tenter de codifier plusieurs méthodes pour résoudre des
problèmes dans une seule base de connaissances peut créer des conflits internes et
d'incompatibilités.

• L'expert peut-t-il expliquer la connaissance de manière compréhensible à


l'ingénieur de connaissance? Bien que le spécialiste soit disposé à coopérer, il peut avoir
des difficultés en exprimant la connaissance en termes explicites. Un exemple simple de
cette difficulté: pouvez-vous expliquer avec des mots comment déplacezvous un doigt?
L'autre difficulté de communication entre le spécialiste et l'ingénieur de connaissance
est que ce dernier ne connaît pas la terminologie technique du spécialiste, problème qui
s'accentue avec la terminologie médicale. Ce peut prendre une année ou plus pour que
l'ingénieur de connaissance comprenne ce de quoi parle le spécialiste, hormis la
traduction de la connaissance en un code explicite d'ordinateur.

• La connaissance pour résoudre le problème est-elle heuristique ou incertaine? Les


systèmes experts sont appropriés quand la connaissance du spécialiste est très
heuristique ou incertaine. C'est-à-dire la connaissance peut être basée sur l'expérience,
elle s'appelle connaissance empirique, et le spécialiste peut essayer plusieurs méthodes
au cas où une ne fonctionne pas. En d'autres termes, sa connaissance peut être une
méthode d'essai erreur au lieu d'être basée sur une logique et des algorithmes. Si le
problème peut être résolu uniquement avec la logique et les algorithmes, c'est mieux de
le manipuler comme un programme conventionnel.

3.7. Langages, shells et outils

Bien que les systèmes experts soient une branche de l'IA, il existe des langages
spécialisés pour systèmes experts qui sont complètement différents des langages
communs de l'IA, comme LISP et PROLOG. Bien que beaucoup d'autres aient été
développés, comme IPL-II, SAIL, CONNIVER, KRL et Samlltalk, peu sont utilisés
amplement, excepté pour des fins de recherche (Scown 85).
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 37

Un langage pour systèmes experts est langage d'ordre plus élevé que les langages comme
LISP ou C parce qu’il permet de faire certaines choses avec beaucoup de facilités, mais
aussi il permet d'attaquer un rang très petit de problèmes. Ceci signifie que la nature
spécialisée de ces langages les rend adaptables pour élaborer des systèmes experts, mais
non pour la programmation en général. Dans beaucoup de cas, il est même nécessaire de
sortir temporellement du langage pour système expert et exécuter une fonction dans un
langage de traitement conventionnel.

La principale différence fonctionnelle entre ces langages, c'est l'approche de la


représentation. Les langages procéduraux se concentrent à fournir des techniques
flexibles et robustes pour représenter les données. Par exemple, les structures de
données comme les matrices, les registres, les listes chaînées, les piles, les files
d'attente et les arbres sont créées et manipulées facilement. Les langages modernes
comme Modula-2, Ada, C++, Java, etc. sont conçus pour faciliter l'abstraction des
données, en fournissant des structures pour leur encapsulation comme des modules ou
paquets. Ceci fournit un niveau d'abstraction qui est ensuite implanté avec des
méthodes comme des opérateurs et des instructions de contrôle pour produire un
programme. Les données son étroitement liées avec des méthodes qui les manipulent.
Par contre, les langages pour systèmes experts se concentrent à fournir des formes
robustes et flexibles pour représenter la connaissance; le paradigme des systèmes
experts permet deux niveaux d'abstraction: abstraction des données et abstraction de
connaissance. Les langages pour systèmes experts séparent spécifiquement les données
des méthodes pour les manipuler. Un exemple de cette séparation est celle des faits
(abstraction des données) et des règles (abstraction de connaissance) qui emploie u
langage pour système expert basé sur les règles.

La différence d'approche fournit aussi la différence de méthodologie de conception du


programme. A cause de l'étroite liaison entre les données et la connaissance dans les
programmes orientés traitement, les programmeurs doivent décrire soigneusement les
séquences d'exécution. Toutefois, la séparation explicite des données et de la
connaissance dans les langages pour systèmes experts requiert un contrôle beaucoup
moins rigide de la séquence d'exécution. En général, on utilise une pièce de code
complètement séparée, le mécanisme d'inférence, pour appliquer la connaissance aux
données; cette séparation entre connaissance et données permet un degré élevé de
parallélisme et modularité.

En choisissant un langage, une question fondamentale doit être si le problème exige plus
de connaissance ou d'intelligence. Les systèmes experts dépendent d'une grande
quantité de connaissance spécialisée ou expérience pour résoudre un problème, pendant
que l'IA met l'emphase sur une méthode pour la solution du problème. Il et commun que
les systèmes experts dépendent de la correspondance des modèles dans un domaine de
connaissance restreint pour guider leur exécution, pendant que l'IA se concentre
d'habitude en la recherche de paradigmes dans des domaines moins restreints.

La manière habituelle pour définir s'il y a nécessité d'un système expert est de décider si
l'on veut programmer l'expérience d'un spécialiste humain, au cas où celui-ci existe et
veut coopérer. C'est alors qu'une proposition du système expert peut avoir du succès.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 38

Le chemin pour choisir un langage pour système expert est plein de confusions. Il y a
quelques années, le choix d'un langage pour système expert était très direct, il y avait
seulement près de 6 langages disponibles et étaient en général gratuits ou coûtaient un
prix nominal qui se payait à l'université où ils se développaient.

Toutefois, avec l'explosion commerciale croissante dans le champ des systèmes experts,
depuis les années 70, le choix d'un langage n'est plus simple. Actuellement, il y a des
douzaines de langages disponibles, avec des prix qui arrivent jusqu'à 75.000 $ US. Bien
qu'il soit encore possible d'obtenir gratuitement certains des vieux langages comme le
OPS5.

En plus de la confusion de choix parmi les langages disponibles, la terminologie utilisée


pour les décrire est confuse. Certains vendeurs parlent d'"outils", pendant que d'autres
parlent de shells et certains autres d'"environnements intégrés". Pour garder la clarté,
ces termes se définiront comme suit:

Langage: c'est un traducteur de commandes écrit avec une syntaxe spécifique. Un


langage pour système expert fournit aussi un mécanisme d'inférence qui exécute les
instructions du langage. En fonction de la manière dont il est implémenté, le mécanisme
d'inférence peut fournir le chaînage avant, arrière ou les deux à la fois. D'après cette
définition, LISP n'est pas un langage pour système expert, mais PROLOG, oui. Toutefois,
il est possible d'écrire un langage de système expert en utilisant LISP et l'IA en PROLOG.
On peut même écrire un langage pour systèmes experts ou l'IA en assembleur. Les
questions concernant le temps de développement, la convenance, le conservation,
l'efficacité et la vitesse déterminent dans quel langage doit être écrit le logiciel.

Outil: est un langage additionnellement associé aux outils pour faciliter le


développement, la dépuration et l'usage des programmes d'application. Les outils
peuvent comprendre les éditeurs de texte et d'images, les dépurateurs, les gestionnaires
de fichiers et même les générateurs de code. On peut aussi s'approprier d'assembleurs
de plateforme croisée pour transporter le code de développement à un hardware
différent. Par exemple, un système expert peut être développé dans un VAX de DEC et
ensuite être assemblé pour s'exécuter dans un Motorola 68000. Certains outils peuvent
même admettre l'usage de paradigmes différents, comme le chaînage avant et arrière
dans une application.

Shell: outil aux fins spéciales, conçu pour un certain type d'applications dans lesquelles
l'utilisateur doit seulement fournir la base de connaissance. L'exemple classique est le
shell de EMYCIN (MYCIN vide) qui fut réalisé en éliminant la base de connaissance
médicale du système expert MYCIN.

3.8. Eléments d'un système expert

La figure 5.4 montre les éléments d'un système expert typique. Dans un système basé
sur les règles, la base de connaissance contient la connaissance de domaine nécessaire
pour résoudre les problèmes codifiés sous forme de règles. Tandis que les règles sont un
paradigme populaire pour représenter la connaissance, d'autres types de systèmes
experts utilisent différentes représentations.

Un système expert comprend les éléments suivants:


Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 39

Interface utilisateur : le mécanisme qui permet la communication entre l'utilisateur et


le système expert.

Moyen d'explication : explique à l'utilisateur le raisonnement du système.

Mémoire active : Une base de données globale des faits utilisés par les règles.

Mécanisme d'inférence : fait des inférences en décidant quelles règles satisfont les faits
ou les objets, donne priorité aux règles satisfaites et exécute la règle avec la priorité la
plus élevée.

Agenda : créée par le mécanisme d'inférence, l'agenda est une liste avec des priorités
assignées aux règles dont les modèles satisfont les faits ou les objets de la mémoire
active.

Moyen d'acquisition de connaissance : voie automatique pour que l'utilisateur


introduise de la connaissance dans le système, sans avoir l'ingénieur de connaissance
pour qu'il codifie la connaissance de manière explicite.

MECANISME
D'INFERENCE
BASE DE MEMOIRE
CONNAISSANCE ACTIVE
(REGLES) (FAITS)

AGENDA

MOYEN MOYEN
D'EXPLICATION D'ACQUISITION DE
CONNAISSANCE

INTERFACE
UTILISATEUR

Figure 1.5. Structure d'un système expert basé sur les règles

En fonction de l'implantation du système, l'interface utilisateur peut être un simple


écran de texte ou un écran très sophistiqué, de haute résolution,avec des mappes de
bits qui en général, s'utilise pour simuler un panneau de contrôle avec des boutons et
des fenêtres.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 40

Dans un système expert basé sur les règles, la base de connaissance reçoit aussi le nom
de mémoire de production. Prenons comme exemple le problème de décider sur la
traversée d'une rue. La production pour les deux règles est comme suit, où les flèches
signifient que le système exécutera les actions qui se trouvent à droite de la flèche si les
conditions de à gauche sont vraies:

La lumière est rouge → s'arrêter

La lumière est verte → traverser

La production de règles peut s'exprimer en un pseudocode équivalent au format SI…


ALORS, comme suit:

Règle: Lumière_rouge SI

la lumière est rouge


ALORS s'arrêter

Règle: Lumière_verte SI

la lumière est verte


ALORS traverser

Chaque règle s'identifie par un nom, suivi de la partie SI de la règle. La section entre les
parties SI et ALORS porte plusieurs noms comme antécédent, partie conditionnelle,
modèle ou côté droit. La condition individuelle

la lumière est verte

s'appelle élément conditionnel ou modèle.

Certains exemples des règles des systèmes experts réels sont :

Système MYCIN pour le diagnostic du méningites et infections bactériennes.

SI

Le milieu de culture est le sang, et

L'identité de l'organisme n'est pas connue avec certitude,et

La coloration de l'organisme est gramnégative, et

La morphologie de l'organisme est en bâtonnets, et

Le patient présente une élévation de la température


Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 41

ALORS

Il y a une faible évidence qui suggère (.4) l'identité de l'organisme est pseudomone

Système XCON/R1 pour configurer les systèmes de traitement VAX de DEC.

SI

Le contexte actuel est l'assignation des dispositifs aux modules Unibus et

Il y a une unité de disque avec port dual qui n'a pas été assigné et

Le type de contrôleur requis est connu et

Il y a deux contrôleurs et aucun d'eux n'a un dispositif assigné et

Le nombre de dispositifs que ces contrôleurs peuvent supporter est connu

ALORS

Assigner l'unité de disque à chacun des contrôleurs, et

Réviser que les deux contrôleurs ont été associés et que chacun supporte un drive

Dans un système basé sur les règles, le mécanisme d'inférence détermine quels
antécédents de règle, s'il y en a, ont été satisfaits par les faits. Deux méthodes
générales d'inférence qui s'utilisent avec fréquence comme stratégies pour la solution
des problèmes avec les systèmes experts sont : le chaînage avant et le chaînage
arrière. D'autres méthodes utilisées pour des nécessités plus spécifiques peuvent inclure
l'analyse des moyens et fins, la réduction du problème, la localisation en envers, le test
de génération des plans, la planification hiérarchique du problème, etc.

Le chaînage avant est le raisonnement allant des faits aux conclusions qui en résultent.
Par exemple, si vous voyez qu'il est entrain de pleuvoir avant de sortir de la maison
(fait), alors vous devez partir avec un parapluie (conclusion).

Le chaînage arrière implique un raisonnement inverse allant d'une hypothèse visant à


vérifier une conclusion possible, aux faits. Par exemple, si vous n'avez pas regardé
dehors et quelqu'un entre avec des chaussures mouillées et un parapluie, votre
hypothèse sera qu'il est entrain de pleuvoir ; pour l'appuyer vous pourriez demander à la
personne si en vérité il est entrain de pleuvoir, si la réponse est oui, alors l'hypothèse
est vraie et se convertit en un fait. Comme dit avant, une hypothèse peut être vue
comme un fait dont la véracité est en doute et nécessite d'être rétablie. L'hypothèse
peut s'interpréter alors comme un objectif à vérifier.

En fonction de la conception, un mécanisme d'inférence réalisera le chaînage avant ou le


chaînage arrière. Par exemple, OPS5 et CLIPS sont conçus pour réaliser le chaînage
avant, alors que MYCIN exécute le chaînage arrière, et d'autres types de mécanismes
d'inférence, comme ART et KEE réalisent les deux. Le choix de mécanisme d'inférence
dépend du type du problème. Le diagnostic des problèmes se résout mieux avec le
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 42

chaînage arrière, tandis que la supervision et le contrôle se réalisent mieux moyennant


le chaînage avant.

La mémoire active peut contenir des faits qui contemplent l'état actuel de la lumière,
comme "la lumière est verte" ou "la lumière est rouge". Un de ces faits ou tous peuvent
être dans la mémoire active en même temps. Si le sémaphore fonctionne normalement,
seulement un de ces faits sera dans la mémoire. Toutefois, il est possible que deux faits
soient dans la mémoire s'il y a un dysfonctionnement dans le sémaphore. Notez qu'il y a
une différence entre la base des connaissances et la mémoire active. Les faits ne
peuvent pas interagir entre eux; le fait "la lumière est verte" n'a pas d'effet sur le fait "la
lumière est rouge"; par contre notre connaissance du sémaphore dit que si les deux faits
sont présents de manière simultanée, alors il y a une faille dans le sémaphore.

S'il y a un fait "la lumière est verte" dans la mémoire active, le mécanisme d'inférence se
rendra compte que ce fait satisfait la partie conditionnelle de la règle de lumière verte
et mettra cette règle dans son agenda. Si une règle a plusieurs modèles, alors tous
doivent être satisfaits de manière simultanée pour que la règle passe à l'agenda.
Certains modèles peuvent être satisfaits en spécifiant l'absence de certains faits dans la
mémoire active.

Quand tous les modèles d'une règle sont satisfaits, on dit qu'elle est activée ou initiée.
Plusieurs règles activées peuvent être dans l'agenda en même temps, dans lequel cas, le
mécanisme d'inférence doit choisir une règle de décharge. Le terme décharger vient de
la neurophysiologie, l'étude du système nerveux. Une cellule nerveuse individuelle ou
neurone émet un signal électrique quand il est stimulé; le manque de beaucoup de
stimulus peut provoquer que le neurone se décharge encore pendant une brève période;
ce phénomène s'appelle réfraction. Les systèmes experts basés sur les règles sont
construits en utilisant la réfraction dans le but de prévenir des embrouillements triviaux.
C'est-à-dire, que si la règle de la lumière verte continue à se décharger plusieurs fois sur
le même fait, le système expert ne réalisera pas un travail utile.

Plusieurs méthodes ont été inventées pour obtenir la réfraction. Dans un langage pour
systèmes experts appelé OPS5, chaque fait reçoit un identificateur unique, connu
comme étiquette de temps, quand il est introduit dans la mémoire active. Après que
une règle a déchargé un fait, le moteur d'inférence ne déchargera plus sur le même fait
parce que son étiquette de temps a déjà été utilisée.

Après la partie ALORS d'une règle, il y a une série d'actions qui s'exécuteront quand la
règle se décharge. Cette partie de la règle est connue comme la conséquence ou côté
droit (RHS). Quand la règle de la lumière rouge se décharge, son action est traverser. En
général, les actions spécifiques incluent l'addition ou la suppression des faits dans la
mémoire active ou des résultats d'impressions. Le format de ces actions dépend de la
syntaxe du langage utilisé ; par exemple, en OPS5, ART et CLIPS, l'addition d'un nouveau
fait appelé "s'arrêter" à la mémoire active serait (affirmer arrêter). Dû à leur
prédécesseur LISP, ces langages ont été conçus pour requérir des parenthèses autour des
modèles et des actions.

Le mécanisme d'inférence opère en cycles. Plusieurs noms ont été donnés pour décrire
le cycle, comme cycle acte-reconnaissance, cycle sélection-exécution, cycle
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 43

situation-réponse et cycle situation-action. Peu importe le nom, le mécanisme


d'inférence exécutera un groupe de quelques tâches répétées jusqu'à ce que certains
critères provoquent l'arrêt de l'exécution. Les tâches d'un cycle pour OPS5, un shell de
système expert typique, se montrent dans le pseudocode suivant comme résolution de
conflit, acte, correspondance et vérification des interruptions.

TANT QUE rien ne se fait

Résolution de conflit: s'il y a des activations, alors sélectionner celle ayant la priorité
plus élevée

Acte : exécuter séquentiellement les actions du côté droit de l'activation sélectionnée.


Celles qui changent la mémoire active ont un effet immédiat dans ce cycle. Eliminer de
l'agenda l'activation qui vient de se décharger.

Correspondance : mettre à jour l'agenda en révisant si le côté gauche d'une règle


quelconque est satisfait. Dans ce cas, activer la règle. Eliminer les actions si les côtés
gauches des règles ne sont plus satisfaits.

Vérification des interruptions : si une action d'interruption s'exécute ou une commande


de rupture est donnée, alors les exécuter.

FIN - TANT QUE

Accepter les ordres du nouvel utilisateur.

Plusieurs règles peuvent s'activer et passer à l'agenda pendant un cycle. Les activations
des cycles antérieurs resteront aussi dans l'agenda à moins que qu'elles aient été
désactivées parce que leurs côtés gauches ne sont lus satisfaits. Ainsi, le nombre
d'activations dans l'agenda variera pendant l'exécution. En fonction du programme, une
activation peut être toujours dans l'agenda mais jamais sélectionnée pour se décharger;
de la même manière, certaines règles peuvent ne jamais être activées. Dans ces cas, les
objectifs de ces règles devraient être réexaminés parce que soit elles ne sont pas
nécessaires, soit leurs modèles n'avaient pas été bien conçus.

Le mécanisme d'inférence exécute les actions de l'activation ayant le degré de priorité


le plus élevé dans l'agenda, ensuite, celles de la suivante en degré de priorité et ainsi
de suite jusqu'à ce qu'il n'y ait aucune activation. Divers schémas de priorité ont été
conçus dans les shells des systèmes experts. En général, tous les shells permettent que
l'ingénieur de connaissance définisse la priorité des règles.

Les conflits dans l'agenda arrivent quand différentes activations ont le même degré de
priorité et que le mécanisme d'inférence doit décider quelle règle décharger. Les
différents shells ont des manières différentes de traiter ce problème : dans le paradigme
original de Newell et Simon, les règles qui entrèrent les premières dans le système ont la
priorité prédéterminée la plus élevée (Newell 72, p. 33); en OPS5, les règles avec des
modèles plus complexes ont la priorité la plus élevée; en ART et CLIPS, les règles ont la
même priorité prédéterminée à moins que l'ingénieur de connaissance leur assigne des
priorités distinctes.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 44

Pour ce moment, le contrôle retourne au niveau maximal d'interprète des commandes


pour que l'utilisateur donne plus d'instructions au shell du système expert. Le niveau
maximal est la manière prédéterminée dans laquelle l'utilisateur se communique avec le
système expert, et elle est indiquée par la tâche "Accepter des nouveaux ordres de
l'utilisateur".

Le niveau maximal est l'interface utilisateur avec le shell pendant qu'une application de
système expert se développe. Régulièrement des interfaces utilisateurs plus
sophistiquées sont conçues pour faciliter l'opération des systèmes experts. Par exemple
un système expert pour contrôler une usine de fabrication peut avoir une interface
utilisateur qui montre le diagramme à barres de l'usine, avec affichage de haute
résolution de mappe de bits en couleurs. Les avertissements et les messages d'état
peuvent apparaître en couleurs brillantes, avec des boutons et échelles simulés. En
réalité, le plus grand effort peut être consacré à la conception et l'implémentation de
l'interface utilisateur, et non à la base de connaissance du système expert, surtout
quand il s'agit d'un prototype. En fonction des capacités du shell, l'interface utilisateur
peut être implémentée à partir des règles ou en autre langage appelé par le système
expert.

Un moyen d'explication doit admettre que l'utilisateur pose la question comment le


système est arrivé à une certaine conclusion ou pourquoi une certaine information est
nécessaire. Pour un système expert basé sur les règles, la question de savoir comment le
système est arrivé à une certaine conclusion est facile de répondre parce qu'il est
possible de garder dans un panneau une histoire des règles activées et du contenu de la
mémoire active. Les moyens d'explication sophistiqués permettent que l'utilisateur pose
des questions du type "que se passerait-il si…?" pour explorer les chemins de
raisonnement qui s'alternent à travers le raisonnement hypothétique.

3.9. Systèmes de production

Un des types les plus populaires des systèmes experts actuellement est celui basé sur les
règles. Les règles sont populaires pour diverses raisons:

• Modularité. Ceci rend plus facile d'encapsuler la connaissance et d'étendre le


système expert à partir d'un développement croissant.

• Moyens d'explication. Il est simple de construire des moyens d'explication avec des
règles parce que les antécédents d'une règle spécifient exactement ce qui est nécessaire
pour l'activer. En gardant le registre des règles qui se déchargèrent, un moyen
d'explication peut présenter la chaîne de raisonnement qui conduisit à une certaine
conclusion.

• Similitude au processus cognitif humain. En se basant sur le travail de Newell et


Simon, les règles apparaissent comme un modèle naturel de la manière dont les humains
résolvent les problèmes. La représentation SI … ALORS des règles facilite l'explication
des spécialistes concernant la structure de la connaissance qu'on tente d'obtenir d'eux.
D'autres avantages des règles se décrivent dans Hayes-Roth (85).

Les règles sont un type de production dont les origines remontent aux années 50. Dû à
l'importance des systèmes basés sur les règles, il vaut la peine d'examiner le
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 45

développement du concept de la règle. Ceci donnera une meilleure idée sur pourquoi les
systèmes basés sur les règles sont si utiles pour les systèmes experts.

Systèmes de production de Post

Les systèmes de production furent utilises d'abord en logique symbolique par Post, ce qui
donna l'origine à son nom (Post 43). Il vérifia l'important et surprenant résultat que
quelconque système mathématique ou logique pourrait s'écrire comme un certain type
de système des règles de production. Ce résultat établissait la grande capacité des
règles de production pour représenter des classes de connaissance plus grandes au lieu
d'être limitées à quelques types. Sous le terme de réécrire des règles, celles-ci
s'utilisent aussi en linguistique comme une manière de définir la grammaire d'un
langage. Les langages d'ordinateur se définissent d'habitude en utilisant la forme Backus-
Naur (BNF) des règles de production.

L'idée de base de Post était que quelconque système mathématique ou logique


représentait seulement un ensemble de règles qui spécifiaient comment changer une
suite de symboles en une autre. C'est-à-dire que, étant donné une suite d'entrée,
l'antécédent, une règle de production pourrait produire une nouvelle suite, la
conséquence. Cette idée est aussi valide avec des programmes et des systèmes experts
dans lesquels la suite initiale des symboles est constituée par les données d'entrée et la
suite de sortie est une transformation de ce qui a été introduit.

Comme un cas très simple, supposons que la chaîne d'entrée est "le patient a la fièvre",
alors la chaîne de sortie pourrait être "prenez une aspirine". Notez qu'il n'y a aucune
signification qui lie les deux chaînes. C'est-à-dire la manipulation des chaînes se base sur
la syntaxe et non sur la sémantique ou sur la compréhension de ce que signifient fièvre,
patient ou aspirine. Un humain sait ce que signifient ces chaînes en termes du monde
réel, mais un système de production Post est seulement une manière de transformer une
chaîne en une autre. Une règle de production pour cet exemple pourrait être:

Antécédent → Conséquence

le patient a la fièvre → qu'il prenne une aspirine où la flèche indique la transformation


d'une chaîne en une autre. Cette règle peut s'interpréter en termes de la notation plus
familière SI … ALORS de cette manière:

SI le patient a la fièvre ALORS qu'il prenne une aspirine

Les règles de production peuvent aussi avoir de multiples antécédents. Par exemple :

Le patient a la fièvre et

La fièvre est à plus de 39 → qu'il voie le docteur

Notez que le connecteur spécial "et" ne fait pas partie de la suite, il indique simplement
que la règle a plusieurs antécédents.

Un système de production de Post consiste en un groupe de règles de production,


comme les suivantes (les chiffres entre parenthèses y sont pour des fins d'analyse) :
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 46

(1) la voiture ne démarre pas → réviser la batterie

(2) la voiture ne démarre pas → réviser le carburant

(3) réviser la batterie et si la batterie est mauvaise → remplacer la batterie

(4) réviser le carburant et s'il n'y a pas de carburant → remplir le réservoir de


carburant

S'il y a une chaîne "la voiture ne démarre pas", il est possible d'utiliser les règles (1) et
(2) pour générer les chaînes "réviser la batterie" et "réviser le carburant", toutefois, il n'y
a pas un mécanisme de contrôle les deux règles sur la chaîne. On peut seulement
appliquer une règle, ou les deux, ou aucune. S'il y a une autre chaîne "la batterie est
mauvaise" et une chaîne "réviser la batterie", alors la règle (3) peut s'appliquer pour
générer la chaîne "remplacer la batterie".

L'ordre dans lequel les règles ont été écrites n'a pas une signification spéciale. Celles de
notre exemple pourraient aussi s'écrire dans l'ordre suivant et le système continuerait
d'être le même :

(4) réviser le carburant et s'il n'y a pas de carburant → remplir le réservoir de


carburant
(2) la voiture ne démarre pas → réviser le carburant
(1) la voiture ne démarre pas → réviser la batterie
(3) réviser la batterie et si la batterie est mauvaise → remplacer la batterie
En dépit du fait que les règles de production de Post étaient utiles dans la mise en place
de la partie fondamentale des systèmes experts, elles n'étaient pas adéquates pour
écrire des programmes pratiques. La limitation fondamentale des règles de production
de Post pour la programmation est le manque d'une stratégie de contrôle pour guider
l'application des règles. Un système Post permet que les règles s'appliquent de
quelconque manière sur les suites de symboles parce qu'il n'y a pas une spécification
donnée concernant comment elles devraient s'appliquer.

Comme analogie, supposons que quelqu'un va à la bibliothèque pour chercher un livre


sur les systèmes experts. Une fois dans la bibliothèque, il commence à regarder
aléatoirement les livres ; si la bibliothèque est très grande, trouver le livre dont il a
besoin peut prendre beaucoup de temps. Même s'il trouve la section des livres sur les
systèmes experts, sa décision suivante peut l'amener par accident à une section
complètement différente, comme celle de la cuisine congolaise.

ALGORITHMES DE MARKOV

L'avancé suivant dans l'application des règles de production fut fait par Markov, qui
spécifia une structure de contrôle pour les systèmes de production (Markov 54). Un
algorithme de Markov est un groupe ordonné des productions qui s'appliquent dans
l'ordre de priorité sur une suite d'entrée. Si la règle de priorité la plus élevée n'est pas
applicable, alors la règle suivante s'applique et ainsi de suite. L'algorithme de Markov
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 47

termine si (1) la dernière production n'est pas applicable sur une suite ou (2) une
production qui termine avec un point s'applique.

Les algorithmes de Markov peuvent aussi s'appliquer aux sous suites d'une suite en
commençant par la gauche. Par exemple, le système de production qui inclut seulement
la règle AB → HIJ quand il s'applique sur la suite d'entrée GABKAB produit la nouvelle
suite GHIJKAB. Puisque la production s'applique maintenant sur la nouvelle suite, le
résultat final est GHIJKHIJ.

Le symbole spécial ^ représente la suite nulle sans caractères. Par exemple, la


production A → ^ efface les apparitions du caractère A dans une suite.

D'autres symboles spéciaux représentent quelconque symbole individuel et sont indiqués


par les lettres minuscules a, b, c, etcetera. Ces symboles représentent des variables de
caractères individuels et font partie importante des langages pour les systèmes experts
modernes. Par exemple, la règle

AxB → BxA

inversera les caractères A et B.

Les lettres grecques α, β et les suivantes s'utilisent pour la ponctuation spéciale des
chaînes. Les lettres grecques s'utilisent parce qu'elles sont différentes de l'alphabet
ordinaire.

Un exemple d'un algorithme de Markov qui déplace la première lettre d'une suite
d'entrée au dernier emplacement est le suivant comme le montre Elson (73). Les règles
sont ordonnées en termes de priorité la plus élevée (1), la suivante (2) et ainsi de suite.
Les règles reçoivent la priorité suivant l'ordre dans lequel elles étaient introduites.

αxy

yαx α
→^

^→α

La trace de l'exécution se montre dans la table 5.9 pour la chaîne d'entrée ABC

Règle Réussite ou échec Suite


1 E ABC
2 E ABC
3 R αABC
1 R BαAC
1 R BCαA
1 E BCαA
2 R BCA
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 48

TABLE 5.9. TRACE DE L'EXECUTION D'UN ALGORITHME DE MARKOV

Remarquez que le symbole α agit de manière analogue à la variable temporelle dans un


langage de programmation conventionnelle. Toutefois, au lieu de stocker une valeur, le
symbole α s'utilise pour séparer des lieux et marquer la progression des changements
dans la chaîne d'entrée. Une fois que le travail est fait, la règle 2 élimine le symbole α.
Le programme s'arrête alors quand la règle 2 s'applique.

ALGORITHME RETE

Vous pouvez noter qu'il y a une stratégie de contrôle définitive pour les algorithmes de
Markov, avec les règles de priorité plus élevée ordonnées en premier lieu. D'abord la
règle avec la plus haute priorité est traitée, sinon, l'algorithme teste les règles de
priorité directement inférieure. Bien que l'algorithme de Markov puisse être utilisé
comme la base d'un système expert, il est très peu efficace dans des systèmes avec
beaucoup de règles. Le problème de l'efficience est d'une grande importance si nous
voulons créer des systèmes experts pour des problèmes réels qui contiennent des
centaines ou des milliers de règles. Peu importe combien bon soit tout le reste dans un
système expert, si l'utilisateur doit attendre beaucoup de temps une réponse, le système
ne s'utilisera pas. Ce qui est vraiment nécessaire, c'est un algorithme qui connaisse
toutes les règles et puisse appliquer quelconque règle sans avoir à essayer chacune de
manière séquentielle.

Une solution pour ce problème est l'algorithme Rete développé en 1979 par Charles L.
Forgy à l'Université Carnegie-Mellon pour sa thèse de doctorat en philosophe, dans le
shell du système expert OPS (Official Production System) de cette institution.
L'algorithme Rete est un puissant accoupleur des modèles qui obtient sa vitesse du
stockage d'information concernant les règles d'un réseau. Au lieu d'avoir à égaler les faits
avec toutes les règles dans n'importe quel cycle actereconnaissance, l'algorithme Rete
cherche seulement les changements dans les correspondances de chaque cycle. Ceci
accélère en grande mesure la correspondance des faits avec les antécédents, parce que
les données statiques qui n'ont pas changé d'un cycle à un autre peuvent se passer d'un
cycle à l'autre. (ce thème sera abordé en détails dans les chapitres qui parlent du
CLIPS). Les algorithmes d'égalisation rapide comme l'algorithme Rete complétèrent les
bases pour l'application pratique des systèmes experts. Dans la figure 5.6 sont résumés
les fondements de la technologie des systèmes experts modernes basés sur les règles.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 49

3.10. SYSTEMES NEURONAUX ARTIFICIELS

Durant les années 80 surgit un nouveau développement dans la programmation des


paradigmes, les systèmes neuronaux artificiels (ANS, artificial neural systems), basés
sur la manière dont le cerveau traite l'information. Ce paradigme est parfois appelé
connexionisme, parce qu'il modélise les solutions aux problèmes en entraînant des
neurones simulés, connectés à un réseau de travail. Beaucoup de chercheurs sont
entrain d'étudier les réseaux neuronaux, car les réseaux ont un grand potentiel face aux
systèmes experts qui requièrent des quantités massives d'entrée au travers des capteurs,
outre des réponses en temps réel.

LE PROBLEME DE L'AGENT VOYAGEUR

L'ANS a eu un succès notable en fournissant des réponses en temps réel à des problèmes
complexes de reconnaissance des modèles. En une occasion, un réseau neuronal
s'exécutant dans un microordinateur ordinaire obtint une très bonne solution au
problème de l'agent voyageur en 0,1 secondes, comparée à la solution optimale qui
exige une heure de temps CPU dans un mainframe (Port 86). Le problème de l'agent
voyageur est important parce qu'il s'agit d'un problème classique qui s'affronte avec
l'optimisation du chemin des signaux dans un système de télécommunications. Optimiser
la route est important pour minimiser le temps de voyage et, ainsi, l'efficience et la
vitesse.

Le problème fondamental de l'agent voyageur est celui de calculer les chemins les plus
courts à travers une liste de villes donnée. La table 5.10 montre les chemins possibles
d'une à quatre villes. Observez que le nombre de chemins est proportionnel au factoriel
du nombre des villes moins un, (N-1)!

Nombre de villes Chemins


1 1
2 1-2-1
3 1-2-3-1
4 1-3-2-1
1-2-3-4-1
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 50

1-2-4-3-1
1-3-2-4-1
1-3-4-2-1
1-4-2-3-1
1-4-3-2-1
TABLE 5.10. CHEMINS DU PROBLEME DE L'AGENT VOYAGEUR

Pendant que 9! = 362880 chemins pour 10 villes, il y a 29! = 8.8E30 chemins possibles
pour 30 villes. Ce problème est un exemple classique de l'explosion combinatoire,
parce que le nombre de chemins possibles s'incrémente d'une façon tellement rapide
qu'il n’y a pas de solutions pratiques pour une quantité réaliste de villes. Si résoudre ce
problème pour 30 villes prend une heure de CPU d'un mainframe, il prendrait 30 heures
pour 31 villes et 330 heures pour 32 villes. Ce sont des chiffres très petits en réalité
comparés aux milliers d'interrupteurs de télécommunications et les villes qui s'utilisent
dans l'assignation des chemins pour les paquets des données et articles réels.

Un réseau de neurones peut résoudre le cas de 10 villes avec la même vitesse que pour
30 villes, pendant qu'un ordinateur conventionnel prend beaucoup plus. Pour le cas de
10 villes, le réseau neuronal donna un des deux meilleurs chemins, pour le cas de 30
villes, il donna un des 100.000.000 des meilleurs chemins. C'est très impressionnant si
l'on se rend compte que cette solution se trouve parmi les IE-22 meilleures solutions. En
dépit du fait que les réseaux neuronaux n'obtiennent pas toujours des solutions
optimales, ils peuvent fournir la meilleure conjecture en temps réel. Dans beaucoup de
cas, il est mieux d'avoir des réponses à 99.99999999 pourcent correctes en un
milliseconde qu'une réponse à cent pour cent correcte dans 30 heures.

ELEMENTS D'UN SYSTEME NEURONAL ARTIFICIEL

Un ANS est fondamentalement un ordinateur analogue qui utilise des éléments de


traitement simples, connectés de manière hautement parallèle. Les éléments de
traitement exécutent sur leurs entées des fonctions booléennes ou arithmétiques
simples. Les poids associés à chaque élément constituent la clé pour le fonctionnement
d'un ANS, ce sont ces poids qui représentent l'information stockée dans le système.

La figure 5.7 montre un neurone artificiel typique, il peut avoir des multiples entrées
mais seulement une sortie. Le cerveau humain contient près de 10 10 neurones et un
neurone peut avoir des milliers de connexions avec d'autres. Les signaux d'entrée au
neurone se multiplient par les poids et se somment pour obtenir l'entrée totale du
neurone, I. Les poids peuvent se représenter comme une matrice et s'identifier comme
des sous indices.

I ≡ entrée du neuronei =∑Wij I j

Sortie du neurone =
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 51

Wi1
Wi2

Noyeau
Wi3 ө

Wi4
Wi5
Figure 5.7. Elément de traitement d'un neurone

Souvent, la sortie du neurone est considérée comme une fonction sigmoïde de l'entrée.
La sigmoïde est représentative des neurones réels qui s'approchent aux limites pour des
entrées très petites ou très grandes, et s'appelle fonction d'activation, et une fonction
d'usage très général est (1+e−x )−1. Chaque neurone a aussi une valeur d'entrée associée,
θ, qui se soustrait de l'entrée totale, I. La figure 5.8 montre un ANS qui peut calculer le
OU exclusif (XOR) de ses entrées, en utilisant une technique appelée propagation
arrière. Le XOR donne une sortie vraie seulement quand ses entrées ne sont pas toutes
vraies ni toutes fausses. Le nombre de nœuds dans la strate cachée variera en fonction
de l'application et la conception.

Couche de sortie

Couche cachée

Couche d'entrée

Figure 5.8. Réseau de propagation arrière

Les réseaux neuronaux ne sont pas programmés dans le sens conventionnel: près de 13
algorithmes d'apprentissage sont connus pour les réseaux de neurones, comme la
propagation de compteur et la propagation arrière pour entraîner les réseaux. Le
programmeur "programme" le réseau seulement en substituant l'entrée et les données de
sortie correspondantes. Le réseau apprend en ajustant automatiquement les poids dans
le réseau de travail qui relie les neurones. Les poids et les valeurs de noyaux des
neurones déterminent la propagation des données à travers le réseau et, ainsi, sa
réponse correcte aux données d'entraînement. Entraîner le réseau pour qu'il obtienne
des réponses correctes peut prendre des heures ou des jours, en fonction du nombre des
modèles que le réseau devra apprendre, le hardware et le software. Toutefois, une fois
que se réalise l'apprentissage, le réseau répond avec rapidité.

Si la simulation du logiciel n'est pas assez rapide, l'ANS peut être fabriqué en
microplaquettes pour qu'il réponde en temps réel. Une fois que le réseau de travail a été
entraîné et les poids déterminés, on peut construire une microplaquette. AT&T et
d'autres compagnies sont entrain de fabriquer des microplaquettes expérimentales pour
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 52

des réseaux neuronaux qui contiennent des centaines des neurones et même des milliers
des neurones.

Caractéristiques des Systèmes Neuronaux Artificiels

L'architecture de l'ANS est très différente de celle des ordinateurs conventionnels. Dans
un ordinateur conventionnel il est possible de mettre en rapport de l'information
discontinue avec les cellules de la mémoire. Par exemple, le numéro de sécurité sociale
peut être stocké comme code ASCII dans un groupe contigu des cellules de la mémoire,
en examinant ce groupe contigu, on peut reconstruire directement le numéro de
sécurité sociale; cette reconstruction est possible parce qu'il y a une relation de un à un
entre chaque caractère du numéro de sécurité sociale et la cellule de mémoire qui
contient le code ASCII de ce caractère.

Les ANS étaient modélisés à partir de la théorie actuelle du cerveau, où l'information se


représente par les poids. Toutefois, il n'existe pas un rapport direct entre un poids et un
article spécifique de l'information stockée. Cette information distributive de
l'information est similaire à celle d'un hologramme, dans lequel les lignes agissent
comme un treillis de diffraction pour reconstruire l'image stockée quand la lumière du
laser la traverse.

Un réseau neuronal est une bonne option quand il y a une quantité considérable de
données empiriques et qu'il n'y a pas d'algorithme qui fournisse une vitesse et une
précision suffisantes. Les ANS ont beaucoup d'avantages en comparaison avec le
stockage des ordinateurs conventionnels.

Le stockage est tolérant aux failles. Des parties du réseau peuvent s'éliminer et il y a
seulement une dégradation dans la qualité des données stockées. Ceci arrive parce que
l'information est stockée de manière distributive.

La qualité de l'image stockée se dégrade peu à peu proportionnellement à la quantité


du réseau qui s'élimine. Il n'y a pas de perte catastrophique de l'information. Le stockage
et qualité des fonctions sont aussi caractéristiques des hologrammes.

Les données sont stockées naturellement sous forme de mémoire associative. Une
mémoire associative est celle dans laquelle les données partielles suffisent pour
rappeler l'information complète stockée. C'est différent de la mémoire conventionnelle
dans laquelle les données sont rappelées en spécifiant leur adresse. Une entrée partielle
ou avec bruit peut continuer à produire l'information originale complète.

Les réseaux peuvent s'extrapoler ou s'interpoler à partir de leur information stockée.


L'entraînement enseigne à un réseau à chercher des traits significatifs ou des relations
entre les données; après, le réseau peut extrapoler pour suggérer des relations avec des
nouvelles données. Dans une expérimentation (Hinton 86), un réseau neuronal fut
entraîné sur les relations familiales de 24 personnes hypothétiques; ensuite le réseau put
aussi répondre correctement concernant les relations sur lesquelles il n'avait pas été
entraîné.

Les réseaux ont une plasticité. Bien que plusieurs neurones s'éliminent, le réseau peut
s'entraîner encore à son niveau original d'habileté, s'il reste des neurones suffisants.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 53

C'est aussi une caractéristique du cerveau, dans lequel, si certaines parties se


détruisent, les niveaux originaux d'habileté peuvent se réapprendre.

Ces caractéristiques rendent les ANS très attractifs pour les navettes spatiales
robotisées, les dispositifs sous-marins, équipements des champs pétroliers, contrôles de
traitement et autres applications qui nécessitent de fonctionner longtemps dans des
milieux hostiles sans réparations. Hormis la fiabilité, les ANS offrent la possibilité d'être
maintenables à moindres coûts à cause de leur plasticité. Bien que des réparations
hardware soient possibles, il est probablement plus rentable de reprogrammer le réseau
neuronal au lieu de le remplacer

Les ANS ne sont pas généralement adéquats pour des applications qui requièrent le
traitement des nombres ou une solution optimale. En plus, s'il existe une solution
algorithmique pratique, un ANS n'est pas un bon choix.

Développement de la technologie des ANS

Les origines des ANS se trouvent dans le modèle mathématique des neurones fait par
McCulloh et

Pitts en 1943 (McCulloh 43). Hebb expliqua en 1949 comment les neurones apprennent
(Hebb 49). Dans l'apprentissage hebbien, l'efficience d'un neurone pour stimuler un autre
s'incrémente avec la décharge. Le terme décharge signifie qu'un neurone émet une
signal électrochimique qui peut stimuler d'autres neurones qui lui sont connectés. Il est
évident que la conductivité des connexions entre neurones, appelée synapse,
s'incrémente avec les décharges. Dans les ANS, le poids des connexions entre neurones
change pour simuler la conductivité changeante des neurones naturels.

En 1961, Rosenblatt publia un livre de grande influence qui traitait du nouveau type de
système des neurones artificiels sur lequel il investiguait, appelé perceptron (Rosenblatt
61). Le perceptron était un dispositif notable qui montrait des aptitudes pour
l'apprentissage et la reconnaissance des modèles ; il consistait fondamentalement en
deux couches des neurones et un algorithme d'apprentissage simple. Les poids devaient
être assignés manuellement, contrairement aux ANS modernes qui assignent les poids
par eux-mêmes, basés sur leur entraînement. Beaucoup de chercheurs entrèrent dans le
champ des ANS et commencèrent à étudier les perceptrons durant les années soixante.

L'ère initiale des perceptrons termina en 1960, quand Minsky et Papert publièrent un
livre, perceptrons, qui montrait les limitations théoriques des perceptrons comme
machines de calcul général (Minsky 69). Ils signalèrent une déficience du perceptron : il
était capable de calculer seulement 14 des 16 fonctions logiques de base, ce qui signifie
qu'un perceptron n'est pas un dispositif de calcul aux fins générales ; ils prouvèrent, en
particulier, qu'un perceptron ne peut pas reconnaître le OU exclusif. Bien qu'ils n'aient
pas investigué sérieusement sur les perceptrons multicouches, ils exprimèrent la vision
pessimiste que les multiples couches ne réussiraient pas probablement le problème XOR.
Les fonds gouvernementaux pour la recherche des ANS favorisèrent la méthode
symbolique de l'IA en utilisant des langages comme LISP et des algorithmes. Durant les
années 70, des nouvelles méthodes se popularisèrent pour représenter l'information
symbolique en IA à travers les cadres, inventés par Minsky. On a continué à travailler sur
les perceptrons, et des nouveaux types de ceux-ci ont réussi à surpasser les objections
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 54

de Minsky (Reece 87). Grâce à leur simplicité, il est facile de construire des perceptrons
et autres systèmes ANS avec la technologie moderne des circuits intégrés.

La recherche sur les ANS continua en petite échelle durant les années 70. Toutefois, le
champs entra finalement en renaissance initiée par le travail de Hopfield en 1982
(Hopfield 82). Il donna aux ANS une base théorique solide avec le réseau de Hopfield de
deux capes et démontra comment les ANS peuvent résoudre une ample variété des
problèmes. La figure 5.9 montre la structure générale d'un réseau de Hopfield.

Figure 5.9. Réseau artificiel neuronal de Hopfield

Applications de la technologie de ANS

Un exemple significatif de l'apprentissage par propagation arrière fut démontré avec un


réseau neuronal qui apprit la prononciation correcte des mots pris d'un texte (Sejnowsky
86). L'ANS fut entraîné en corrigeant sa sortie avec l'usage d'un dispositif de texte à
prononciation de DEC appelé DECTalk. L'investigation linguistique prit 20 ans pour
déterminer les règles pour prononciation correcte qu'utilisa DECTalk. L'ANS apprit les
habiletés de prononciation équivalentes en une nuit, en écoutant uniquement la
prononciation correcte des paroles à partir d'un texte; on ne programma aucune habileté
linguistique dans l'ANS.

Il y a des recherches sur les ANS orientées vers la reconnaissance des blancs de radar, au
travers des ordinateurs électroniques et optiques (Farhat 86). Les nouvelles
implantations des réseaux neuronaux artificiels, utilisant des composants optiques,
promettent des ordinateurs optiques avec des vitesses des millions de fois supérieures à
celles des ordinateurs électroniques. L'implantation optique des ANS est attractive à
cause du parallélisme inhérent à la lumière. C'est-à-dire, les rayons lumineux
n'interfèrent pas entre eux pendant leur voyage; il est possible de générer et manipuler
facilement des grandes quantités de photons avec des composants optiques comme les
miroirs, les lentilles, les modulateurs de lumière spatiale de haute vitesse
programmable, des séries de dispositifs optiques bistables qui peuvent fonctionner
comme des neurones optiques, et des treillis de diffraction. Les ordinateurs optiques
conçus comme des ANS semblent se compléter; les avancés futurs des ANS semblent
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 55

prometteurs (Giarratano 90 a). En particulier, les ANS sont utiles pour contrôler des
systèmes dans lesquels les suggestions conventionnelles ne sont pas satisfaisantes
(Giarratano 91 b).

DEVELOPPEMENT COMMERCIAL DES ANS

Plusieurs nouvelles compagnies et d'autres déjà existantes se sont organisées pour


développer la technologie et les produits pour les ANS. Nestor commercialise un produit
ANS appelé

NestorWriter, qui peut reconnaître des entrées manuscrites et les convertir en texte en
utilisant un

PC. D'autres compagnies comme TRW, SAIC, HNC, Synaptics, Neural Tech, Revelations
Research et Texas Instruments, commercialisent divers simulateurs ANS et des cartes
accélératrices de hardware pour accélérer l'apprentissage. Une des meilleures occasions
pour entrer dans la computation neuronale est le volume trois des œuvres de Rumelhart
sur le traitement distribué en parallèle (éditorial MIT Press). Le livre décrit une demi-
douzaine des simulateurs ANS et inclut aussi une disquette avec logiciel pour une
machine compatible avec IBM-PC pour $27,50. En acquérant une carte accélératrice,
l'utilisateur peut avoir un puissant système pour ANS à moindre coût.

3.11. SYSTEMES EXPERTS INTERCONNECTES ET APPRENTISSAGE INDUCTIF

Il est possible de construire des systèmes experts en utilisant les ANS. Dans un système,
l'ANS est la base de connaissance, construite moyennant des exemples d'entraînement,
pris de la médecine (Gallant 88). Dans ce cas, les systèmes experts tentent de classifier
une maladie, au moyen de leurs symptômes, dans une des maladies connues dans lequel
le système a été entraîné. Un mécanisme d'inférence comme MACIE (Matrix Controlled
Inference Engine: mécanisme d'inférence contrôlé par matrice) fut conçu pour utiliser la
base de connaissance ANS. Le système utilise le chaînage avant pour faire des inférences
et le chaînage arrière pour demander à l'utilisateur n'importe quelle donnée
additionnelle nécessaire pour arriver à la réponse. Bien que les ANS ne puissent pas
expliquer par eux-mêmes la raison pour laquelle ils se sont assignés certaines valeurs à
leurs poids, MACIE peut interpréter les ANS et générer des règles SI … ALORS pour
expliquer sa connaissance.

Un système expert ANS comme celui-ci utilise l'apprentissage inductif; c'est-à-dire, le


système induit l'information dans sa base de connaissance à travers des exemples.
L'induction est le processus d'inférer des cas généraux à partir des cas particuliers. Outre
les ANS, il y a dans le marché plusieurs structures des systèmes experts qui, de manière
explicite, génèrent des règles à partir des exemples. Le but de l'apprentissage inductif
est de réduire ou éliminer la difficulté que représente l'acquisition de la connaissance.
En plaçant l'effort d'acquisition de connaissance dans le système expert, il est possible
de réduire le temps de développement et augmenter la fiabilité si le système induit des
règles inconnues par l'homme. Les systèmes experts se sont combinés avec les ANS.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 56
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 57

Partie 2: CONSTRUCTION DES SYSTEMES EXPERTS EN CLIPS

CHAPITRE TROISIEME : LES FAITS

4.1. INTRODUCTION

Nous utiliserons ici le langage de Programmation appelé : CLIPS.

CLIPS est un type de langage de programmation conçu pour implémenter des systèmes
experts. Un système expert est un programme spécialement conçu pour modéliser une
expertise ou connaissance humaine.

CLIPS est appelé outil pour système expert parce que c'est un environnement complet
pour développer des systèmes experts, incluant des caractéristiques telles qu'un éditeur
intégré et un outil de débogage. Le mot shell est réservé à cette portion de CLIPS qui
réalise des inférences ou du raisonnement. Le shell du CLIPS fournit les éléments de
base d'un système expert, à savoir :

 La liste de faits, et la liste d'instances : la mémoire globale pour les données;

 La base de connaissance : contient toutes les règles, c'est la base de règles;

 Le moteur d'inférence: contrôle l'exécution des règles.

Un programme écrit en CLIPS peut consister en règles, faits, et objets. Le mécanisme


d'inférence décide sur quelles règles exécuter et quand. Un système expert écrit en
CLIPS est un programme orienté donnée où les faits et/ou les objets sont les données qui
stimulent l'exécution via le moteur d'inférence.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 58

4.2. DEBUT ET FIN DE SESSION CLIPS

Se rendre au site suivant ou un autre, puis télécharger l’exécutable de CLIPS :


https://telecharger.freedownloadmanager.org/Windows-PC/CLIPS/GRATUIT-6.41.html
et suivre le chemin jusqu’au téléchargement et installation.

Pour commencer CLIPS, entrez la commande run appropriée pour votre système. Sous
Windows cliquer sur démarrer/exécuter, faire : C:\Program Files (x86)\CLIPS, puis
cliquer sur ENTER

 Cliquer sur le bouton OK, la fenêtre suivante apparaitra :

 Dans la fenêtre qui s’affiche, cliquer sur l’icône CLIPSDOS32


 Une fenêtre s’affiche :

A ce point vous pouvez commencer à entrer directement des commandes dans CLIPS.
Le mode dans lequel vous entrez directement des commandes est appelé le top niveau.
Si vous avez une version Windows di CLIPS, vous pouvez juste sélectionner la commande
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 59

en utilisant la souris ou les touches de direction au lieu de taper des commandes.


Toutefois, c'est cette dernière option que nous utilisons dans ce cours.

Pour sortir de CLIPS, on tape la commande (exit) en réponse à l'invite du CLIPS :

4.3. DRESSER UNE LISTE DE FAITS

Pour mettre des données dans la liste de faits, vous pouvez utiliser la commande
(assert).

Exemple, pour affirmer (c'est-à-dire ajouter dans la liste de faits) le fait "feu rouge", la
commande (assert) est passée de la manière suivante :

Ici, la commande assert prend (feu rouge) comme son argument. Il faut toujours taper la
touche Enter pour envoyer la ligne à CLIPS. La réponse du CLIPS est <Fact-1> indiquant
que CLIPS a stocké le fait feu rouge dans la liste de faits et lui a donné l'identificateur
1. CLIPS désigne automatiquement les faits en utilisant un nombre croissant
séquentiellement et affiche l'indice du fait le plus élevé quand un ou plusieurs faits sont
affirmés.

Il faut noter que la commande doit être enfermée dans des parenthèses, l'argument de
la commande également. C'est une syntaxe héritée du LISP

4.4. CONSULTATION DE LA LISTE DE FAITS

La consultation de la liste de faits se fait avec la commande (facts) tapée en réponse à


l'invite du CLIPS et celui-ci affiche la liste des faits :
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 60

Le terme f-0 est l'identificateur de fait à l’initial que CLIPS a assigné au fait. Tout fait
inséré dans la liste de faits reçoit un unique identificateur de fait commençant par la
lettre "f" suivi d'un entier appelé l'indice de fait. En démarrant le CLIPS, et après
certaines commandes telles que (clear) et (reset), l'indice de fait est mis à zéro, et
ensuite incrémente de un chaque fois qu'un nouveau fait est affirmé. La commande
(reset) insère aussi un fait (initial-fact) comme f-0. Ce fait est souvent utilisé pour
activer initialement les règles. Voici ce qui arrive lorsque la commande (reset) est
passée en premier lieu :

Remarquez que l'indice de fait est <fact-1> après que le fait feu rouge est affirmé parce
qu'il y a maintenant deux faits dans la mémoire de travail et feu rouge reçoit l'indice 1.

Qu'arrive-t-il si vous mettez un second feu rouge dans la liste de faits?


Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 61

CLIPS retourne le message FALSE pour indiquer qu’il n’est pas possible d'exécuter cette
commande. Vous ne verrez que l'ancien "f-1 indiquant ainsi le feu rouge". Ceci montre
que CLIPS n'accepte pas une entrée dupliquée d'un même fait.

Ensuite, vous pouvez ajouter d'autres faits différents :


Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 62

Remarquez que le fait (feu vert) est maintenant dans la liste de faits.

Des faits peuvent être supprimés ou rétractés. Quand un fait est rétracté, les autres
faits ne changent pas leurs indices, et ainsi il peut y avoir des indices de fiats
manquants.

4.5. SUPPRESSION DE LA LISTE DE FAITS

La commande (clear) efface tous les faits de la mémoire :

La commande (clear) restaure CLIPS à son état original de démarrage. Elle nettoie la
mémoire de

CLIPS et remet l'identificateur de fait à zéro. Outre la suppression de tous les faits, la
commande (clear) supprime aussi toutes les règles, comme vous le verrez au point 4.2.

L'exemple suivant montre comment trois faits sont affirmés, et la commande (facts)
utilisée. La commande (clear) est utilisée pour supprimer tous les faits dans la mémoire
et remettre l'indice de faits à zéro (f-0) :
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 63

Remarquez que seulement une commande (assert) est utilisée pour affirmer trois faits
(didi), (koko) et (ewaso). L'indice de fait le plus élevé est 3 et est retourné par CLIPS
dans le message informationnel <Fact-3>.

4.6. LES CHAMPS

Les faits tels que (didi), (koko) ou (ewaso) consistent en un seul champ. Un champ est
une zone mémoire (portant ou pas un nom) qui peut avoir une valeur associée.

Les champs nommés sont utilisés seulement avec la commande (deftemplates) que nous
verrons plus loin. Le fait (a) a un seul champ, ne portant pas de nom et dont la valeur
est a. Ceci est un exemple d'un fait à un seul champ.

L'ordre des champs non nommés est significatif et donc important.

En effet, si un fait était défini (feu rouge) et interprété par une règle comme "le feu est
rouge", alors le fait (rouge feu) signifierait que "le rouge est feu". Par contre, l'ordre des
champs nommés n'est pas significatif ni important, comme vous le verrez avec
deftemplate.

Actuellement, c'est une bonne pratique programmatique de commencer le fait par une
relation qui décrit les champs.

Par exemple (Assistant-cours Intelligence Artificielle) qui implique que le premier champ
est Assistant et le second est le cours.

Une liste est un groupe d'éléments sans aucun ordre impliqué. Dire qu'une liste est
ordonnée signifie que la position dans la liste est significative. Un multichamp est une
suite de champs pouvant avoir chacun une valeur. Des exemples comme (feu rouge) et
(feu vert) sont des faits à champs multiples. Si un champ n'a pas de valeur, le symbole
spécial nil, qui signifie "rien" peut être utilisé.

Par exemple, (feu nil) signifierait un cas où les feux de signalisation ne fonctionnent pas
et que par conséquent il n'y a pas de feu quelconque de signalisation. Le conducteur
devra tenir compte de la règle de priorité, par exemple.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 64

Remarquez que le mot nil est nécessaire pour désigner une place mémoire, même si elle
n'a pas de valeur. Sans mot clé nil, le fait devient un fait à champ unique, (feu). Si une
règle dépend de deux champs, elle ne fonctionnera pas avec un seul champ seulement.

Il y a plusieurs différents types de champs : float, integer, symbol, string, external-


address, factaddress, instance-name et instance-address. Le type de chaque champ
est détermine par le type de valeur stocké dans le champ. Dans un champ non nommé,
le type est déterminé implicitement par le type de donnée placée dans le champ. Dans
les deftemplates, on peut explicitement déclarer le type de valeur qu'un champ
contiendra.

Un symbole est un type de champ qui commence par un caractère ASCII imprimable et
est suivi optionnellement par zéro ou plusieurs caractères imprimables. Les champs sont
généralement délimités par un ou plusieurs espaces ou par des parenthèses.

Par exemple, (Assistants Taylor Guy Ado) a quatre champs pour indiquer les Assistants
d'une promotion. Dans ce fait, les champs sont délimités par des espaces, la parenthèse
d'ouverture et celle de fermeture.

NB : Les faits ne peuvent pas contenir d'autres faits. Par exemple, voici un fait
ordonné incorrect :

(Assistants (Taylor Guy Ado))

Cependant, il peut être un fait deftemplate correct si "Assistants" était défini comme le
nom d'un champ et " Taylor Guy Ado " les valeurs associées au champ nommé.

CLIPS est sensible à la casse. En outre, certains caractères ont une signification spéciale
pour CLIPS.

"()&|<~;?$

Les caractères "&", "|", et "~" peuvent être utilisés comme des symboles à part entière
ou comme une partie quelconque d'un symbole.

Certains caractères servent de délimiteurs en terminant un symbole. Les caractères


suivants agissent comme délimiteurs des symboles.

 Tout caractère ASCII non imprimable, incluant les espaces, les retours chariots, les
tabulations.
 Les double guillemets, ".
 Les parenthèses d'ouverture et de fermeture, ().
 L'ampersand, &.
 La barre verticcale, |.
 Inférieur à, <. Il doit être le premier caractère d'un symbole.
 Le tilde, ~.
 Le point-virgule, ; indique le commencement d'un commentaire terminé par un
retour chariot.
 ? et $? ne peuvent pas commencer un symbole mais peuvent être à l'intérieur d'un
symbole.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 65

Le point-virgule agit comme le début d'un commentaire en CLIPS.

A l'exception de "&", "|", et "~", on peut utiliser les autres caractères tels que décrits.
Mais un tel programme peut semer des confusions dans le lecteur qui tente de
comprendre ce que fait le programme. En général, c'est mieux d'éviter ces caractères
dans les symboles.

Voici l'exemple de quelques symboles :

feu rouge feu_de_position feu-rouge


d!?#%^

Le second type de champ est le string. Un string doit commencer et terminer par les
doubles guillemets. Les doubles guillemets font partie du champ. Zéro ou plusieurs
caractères de tout type peuvent apparaître entre les doubles guillemets. Voici quelques
exemples de string : "feu"

"rouge" "rouge/vert" "feu rouge" "feu vert!!!"

Les troisièmes et quatrièmes types de champ sont des champs numériques. Un champ
qui représente un nombre peut être un champ de type aussi bien entier que point
flottant. Un type point flottant est généralement appelé float.

Tous les nombres sont traités en CLIPS comme des entiers longs ou flottants double
précision. Les nombres ayant un point décimal sont traités comme des entiers sauf s'ils
sont hors du rang des entiers. Le rang est le nombre de bits dépendant de la machine, N,
utilisé pour représenter l'entier :

- 2N-1 ... 2N-1-1

Pour les entiers longs de 32-bits, ceci correspond à un rang de nombres : -2,147,483,648
… 2,147,483,647

En guise d'exemple, affirmez les données suivantes où la dernière est en notation


exponentielle, et utilisez le "e" ou "E" pour les puissances de dix :
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 66

Comme vous pouvez bien le constater, CLIPS affiche le nombre entré en notation
exponentielle comme 350000.0 parce qu'il convertit du format puissance de dix au point
flottant si le nombre est trop petit.

Remarquez que chaque nombre doit commencer par un symbole tel que "nombre", "x",
"y", etc. Avant la version 6.0 de CLIPS, il était possible d'entrer seulement un nombre
comme un fait. Mais, maintenant un symbole est requis comme premier champ. En
outre, certains mots réservés utilisés par CLIPS ne peuvent pas être utilisés comme
premier champ, mais peuvent être utilisés comme autres champs. Par exemple les noms
des fonctions prédéfinies de CLIPS, defconstructs, etc.

Un fait consiste en un ou plusieurs champs enfermés dans les parenthèses gauche et


droite.

Un fait peut être ordonné ou non ordonné. Tous les exemples vus ci-dessus sont des
faits ordonnés parce que l'ordre de champs fait la différence. Par exemple, CLIPS
considère les faits suivants comme différents biens qu'ayant les mêmes valeurs "1", "2" et
"3".

f-6 (coordinates 1 2 3)

f-7 (coordinates 1 3 2)
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 67

Les faits ordonnés utilisent absolument la position du champ pour définir les données. En
guise d'exemple, le fait ordonné (feu rouge) a deux champs ainsi que le fait (rouge feu).
Cependant, ils sont considérés comme deux faits différents par CLIPS parce que l'ordre
des valeurs des champs est différent. Par contre, le fait (feu-rouge) a seulement un
champ à cause du trait "-" qui concatène les deux valeurs.

Les faits définis avec la commande Deftemplate, décrits en détails plus loin, sont des
faits non ordonnés parce qu'ils utilisent des champs nommés pour définir les données.
Ceci est analogue à l'usage des enregistrements en Pascal et d'autres langages.

Plusieurs champs sont normalement séparés par des espaces blancs consistant en un ou
plusieurs espaces, tabulations, retours chariot, retours à la ligne.

Les retours chariot peuvent être aussi utilisés pour améliorer la lisibilité. Dans l'exemple
suivant, un retour chariot et tapé après chaque champ et le fait affirmé reste le même
qu'avant quand le fait était en une ligne.

Cependant, il faut faire attention en introduisant un retour chariot dans une chaîne de
caractères, comme le montre l'exemple suivant :
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 68

Le retour chariot introduit dans les doubles guillemets est retourné en sortie de telle
sorte que le guillemet suivant apparaît dans la deuxième ligne. C'est important parce
que CLIPS considère les faits f-1 et f-2 comme différents.

CLIPS est sensible à la casse parce qu'il fait une distinction entre les lettres majuscules
et les lettres minuscules. Par exemple, les faits (feu) et (Feu) sont différents.

L'exemple suivant est un cas réaliste de l'usage des retours chariot pour améliorer la
lisibilité d'une liste. Exemple, dans le fait suivant, les retours chariot et les espaces sont
utilisés pour mettre les champs aux places appropriées sur les différentes lignes. Les
traits de soulignement ou les traits d'union sont utilisés intentionnellement pour créer
des champs composés de plusieurs mots, de telle sorte que CLIPS traitera des éléments
tels que "sel_de_table" comme un seul champ.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 69

CLIPS remplace les retours chariot et les tabulations par des espaces simples.

Pendant que l'usage des espaces blancs dans la séparation de faits contribue à la
lisibilité du programme, ils sont convertis en des espaces simples par CLIPS.

4.7. PROBLEME DU STYLE

Un bon style de programmation consiste à utiliser le premier champ d'un fait pour
décrire la relation des champs suivants. Utilisé de cette façon, le premier champ est
appelé relation.

Les autres champs du fait sont utilisés pour des valeurs spécifiques. Par exemple le fait
(déjeuner café-au-lait Pain-beurré Omelette jus-de-tomate jambon).

Une bonne documentation est encore plus importante dans un système expert que dans
des langages tels que Pascal, C, Ada, etc. parce que les règles d'un système expert ne
sont pas généralement exécutées de manière séquentielle. CLIPS aide le programmeur
en écrivant des faits descriptifs comme ce dernier par le moyen de deftemplates.

Un autre exemple de faits en relation est (canard), (cheval) et (boeuf). Il est mieux
d'écrire

(animal-est canard)
(animal-est cheval)
(animal-est boeuf)

Ou comme un seul fait (animaux canard cheval boeuf) parce que animal-est ou animaux
décrit leur relation et fournit ainsi quelque documentation au lecteur du code.

Puisque les espaces sont utilisés pour séparer plusieurs champs, il s'ensuit que les
espaces ne peuvent pas faire partie des faits. Par exemple :

Seulement un fait, (cochon-est animal), est affirmé parce que CLIPS ignore les espaces
et considère que tous ces faits sont équivalents. Ainsi, CLIPS retourne le message FALSE
quand on tente d'entrer les trois derniers faits dupliqués.

Pour inclure les espaces dans un fait, on doit utiliser les doubles guillemets. Par
exemple,
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 70

Les espaces rendent ces faits différents quoique signifiant la même chose chez une
personne.

On peut introduire des doubles guillemets dans un fait. La meilleure façon de le faire
est d'utiliser le backslash, "\", comme l'illustre l'exemple suivant

4.8. RETRACTATION DE FAITS

Supprimer les faits de la liste de faits est appelé rétractation et est faite avec la
commande retract. Pour rétracter un fait, l'on doit spécifier l'indice du fait comme
argument de la commande retract.

Par exemple, nous constituons d'abord notre liste de fait de la manière suivante
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 71

Pour effacer le dernier fait avec indice f-2, nous passons la commande retract et
vérifions la liste de fait de la manière suivante.

Qu'arrive-t-il si l'on tente de rétracter un fait déjà rétracté ou un fait non existent?
Voyons

CLIPS affiche un message d'erreur si l'on tente de rétracter un fait non existent. La
philosophie sous-jacente est qu'on ne peut pas récolter ce qu'on n'a pas semé.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 72

On peut rétracter plusieurs faits à la fois, comme l'illustre l'exemple suivant:

Pour rétracter plusieurs faits, il suffit de fournir la liste de leurs indices comme
argument de la commande retract. On peut utiliser (retract *) pour rétracter tous les
faits, où le "*" indique tout.

4.9. VOIR LES FAITS

CLIPS fournit plusieurs commandes pour déboguer les programmes. Une commande
permet de voir continuellement les faits qui sont en train d'être affirmés ou rétractés.
Ceci est plus commode qu'avoir à passer à tout moment la commande (facts) pour avoir
une idée sur ce qui a changé dans la liste de fait.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 73

Pour commencer à voir les faits, il suffit de passer la commande (watch facts), comme
l'illustre l'exemple suivant.

Le symbole de double fleche orientée à droite, ==>, signifie qu'un fait est entrain
d'entrer dans la mémoire alors que la double flèche orientée à gauche indique qu'un
fait est entrain de sortir de la mémoire, comme le montre l'exemple ci-après :

La commande (watch facts) fournit un enregistrement qui montre l'état dynamique ou


changeant de la liste de faits. Par contre, la commande (facts) montre l'état statique de
la liste de fait puisqu'il affiche le contenu courant de la liste de faits. Pour arrêter de
voir les faits, on passe la commande (unwatch facts).

On peut voir beaucoup de choses notamment celles montrées ci-dessous. Le


commentaire en CLIPS commence par un point-virgule. Tout ce qui vient après le point-
virgule est ignoré par CLIPS.

(watch facts)
(watch instances) ; utilisé pour les objets
(watch slots) ; utilisé pour les objets
(watch rules)
(watch activations)
(watch messages) ; utilisé pour les objets
(watch message-handlers) ; utilisé pour les objets
(watch generic-functions)
(watch methods) ; utilisé pour les objets
(watch deffunctions)
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 74

(watch compilations) ; utilisé par défaut


(watch statistics)
(watch globals)
(watch focus)
(watch all) ; voir tout

CHAPITRE QUATRIEME : LES REGLES

4.10.1. CONSTRUCTION D'UNE REGLE

Pour faire un travail utile, le système expert doit avoir aussi bien des règles que des
faits. Une règle est similaire à une instruction SI ALORS dans un langage procédurale
comme C, Pascal, Java.

Une règle SI ALORS peut s'exprimer de la manière suivante :

SI certaines conditions sont vraies

ALORS exécuter les actions suivantes.

Un autre terme pour l'instruction ci-dessus est celui de pseudocode, qui signifie
littéralement faux code. Bien qu'un pseudocode ne puisse pas être directement
exécutable par un ordinateur, il sert de guide utile à l'écriture du code exécutable. Le
pseudocode est aussi utile dans la documentation des règles.

Une traduction des règles du langage naturel au CLIPS n'est pas très difficile si l'on garde
à l'esprit cette analogie SI ALORS.

On peut taper des règles directement dans CLIPS ou charger des règles à partir d'un
fichier de règles créé par un éditeur de texte.

Le pseudocode concernant le feu rouge doit être


SI le feu est rouge
ALORS passez

Voici ci-après un fait et une règle nommée feu qui est le pseudocode ci-dessus exprimé
en CLIPS. Le nom de la règle suit immédiatement le mot clé defrule Bien qu'on puisse
entrer une règle en une seule ligne, il est de coutume de mettre différentes parties de
la règle sur différentes lignes pour faciliter la lisibilité.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 75

Si la règle est tapée correctement, l'invite de CLIPS réapparaîtra, sinon CLIPS affichera
un message d'erreur.

La même règle est montrée ci-dessous avec des commentaires ajoutés pour rencontrer
toutes les parties de la règle. Le commentaire optionnel d'en-tête de la règle dans les
guillemets est aussi montré. Il peut y avoir seulement un seul commentaire d'en-tête de
la règle et doit être placé après le nom de la règle et avant le premier modèle.

Bien qu'il soit maintenant question de modèles s'égalant aux faits, plus généralement un
modèle peut s'égaler à une entité de modèle. Une entité de modèle est aussi bien un
fait qu'une instance de classe définie par l'utilisateur. Les modèles s'égalant aux objets
seront abordés plus tard.

CLIPS tente d'égaler le modèle de la règle à une entité de modèle. Evidemment, les
espaces blancs, c'est-à-dire, les espaces, les tabulations et les retours chariots peuvent
être utilisés pour séparer les éléments d'une règle pour améliorer la lisibilité. D'autres
commentaires commencent par u point-virgule et continue jusqu'à ce qu'un retour
chariot soit tapé pour terminer une ligne. Les commentaires sont ignorés par CLIPS.

Seulement un seu nom de la règle doit exister à la fois en CLIPS.

Entrer le même nom de la règle, dans ce cas "feuRouge», remplacera une règle existante
quelconque avec le même nom. C'est-à-dire, tant qu'il y aura des règles en CLIPS, il peut
y avoir seulement une règle qui est nommée "feuRouge". Ceci est analogue à d'autres
langages de programmation dans lesquels un nom de procédure peut être utilisé
uniquement pour identifier une procédure.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 76

La syntaxe générale de d'une règle est montrée comme suit :

(defrule nom_de_la_règle "commentaire optionnel"

(modèle_1) ; commentaire optionnel


(modèle_2) ; commentaire optionnel
.
.
.
(modèle_N) ; commentaire optionnel
=>
(action_1) ; commentaire optionnel
(action_2) ; commentaire optionnel
.
.
.
(action_M)) ; commentaire optionnel

La règle entière doit être entourée par des parenthèses. Chacun des modèles de la règle
et les actions doivent être entourés par des parenthèses. Une action est actuellement
une fonction qui typiquement n'a aucune valeur de retour, mais réalise quelque action
utile, telle qu'un n(assert) ou (retract). Par exemple une action peut être (assert (feu)).
Ici le nom de la fonction est "assert" et son argument est "feu". Il est à noter qu'on n'a
pas besoin d'une quelconque valeur de retour telle qu'un nombre. On veut plutôt que le
fait feu soit affirmé. En CLIPS, une fonction est un morceau de code exécutable
identifié par un nom spécifique, qui retourne une valeur importante ou produit un effet
secondaire important, tel que (printout).

Une règle a souvent plusieurs modèles et actions. Le nombre de modèles et celui des
actions n'ont pas à être égaux, c'est pourquoi les indices M et N étaient choisis pour les
modèles et les actions de la règle.

Zéro ou plusieurs modèles peuvent être écrits après l'en-tête de la règle. Chaque modèle
consiste en un ou plusieurs champs. Dans la règle feuRouge, le modèle est (feu rouge) où
les champs sont "feu" et "rouge". CLIPS tente d'égaler les modèles des règles avec les
faits dans la liste des faits. Si tous les modèles d'une règle s'égalent aux faits, la règle
est activée et mise dans l'agenda. L'agenda est une collection des activations qui sont
ces règles qui s'égalent aux entités de modèle. Il peut y avoir zéro ou plusieurs
activations dans l'agenda.

Le symbole "=>" qui suit les modèles dans ue règle est appelé une flèche. La flèche
représente le début de la partie ALORS d'une règle SI-ALORS (et se lit "implique").

La dernière partie d'une règle est la liste de zero ou plusieurs actions qui seront
executes quand la règle se décharge. Dans notre exemple, une seule action est
d'afficher "passez". Le treme se décharger signifie que CLIPS a choisi une certaine règle
de l'agenda pour exécution.

Un programme cessera l'exécution lorsqu'il n'y aura aucune activation dans l'agenda.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 77

Quand il y a plusieurs activations dans l'agendaCLIPS détermine automatiquement


l'activation appropriée pour se décharger. CLIPS ordonne les activations dans l'agenda en
terme de priorité croissante.

La partie de la règle avant la flèche est appelée la partie gauche de la règle, en anglais
left-ahand side (LHS) et la partie de la règle qui vient après la flèche est appelée partie
droite de la règle ou right-hand side (RHS). Si l'on entre une commande (reset), la
mémoire de CLIPS est effacée et le fait spécial (initial-fact) est toujours placé dans la
liste de faits avec l'identificateur de fait "f-0". Si aucun modèle n'est spécifié, le modèle
(initial-fact) est utilisé pour la LHS.

4.10.2. L'AGENDA

CLIPS exécute toujours les actions de la RHS de la règle ayant la plus haute priorité dans
l'agenda. Cette règle est alors supprimée de l'agenda et les actions de la nouvelle règle
ayant la plus haute sallie sont exécuté. Ce processus continue jusqu'à ce qu'il n'y ait plus
d'activations ou si une commande pour arrêter l'exécution est rencontrée.

On peut vérifier ce qu'il y a dans l'agenda avec la commande (agenda). Par exemple :

Le premier nombre "0" est la priorité de l'activation de la règle "feuVert", et "f-0" est
l'identificateur de fait du fait (feu-vert), qui s'égale au modèle de la règle activée. Si la
priorité d'une règle n'est pas déclarée explicitement, CLIPS lui assigne une valeur par
défaut de zéro, où les valeurs possibles de priorité vont de -10,000 à 10,000.

S'il y a seulement une règle dans l'agenda, cette règle se déchargera. Puisque le modèle
de la LHS de la règle feuVert est (feu vert), ce modèle sera satisfait par le fait (feu vert)
et ainsi la règle feuVert devra se décharger.

Chaque champ du modèle est une contrainte littérale. Le terme liitéral signifie avoir
une valeur constante, contrairement à une variable dont la valeur peut changer. Dans ce
cas, les littéraux sont "feu" et "vert".

Pour faire tourner un programme, il suffit de passer la commande (run). On tape (run)
et la touche de retour chariot.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 78

On peut sauvegarder une règle avec la commande save. Il suffit de passer une
commande telle que (save "feuvert.clp") pour sauvegarder la règle de la mémoire de
CLIPS au disque et donner au fichier le nom de "feuvert.clp" où ".clp" est l'extension
convenable pour rappeler qu'il s'agit d'un fichier de code source CLIPS.

Il est à noter que sauvegarder le code de la mémoire de CLIPS de cette façon préservera
seulement le commentaire optionnel d'en-tête dans les guillemets et non les
commentaires de points-virgules.

4.10.3. L'EXECUTION DES REGLES

Une intéressante question peut se poser :

Qu'arrive-t-il si nous exécutons encore la règle ?

Il y a une règle et un fait qui satisfait la règle pour que celle-ci se décharge. Cependant
si l'on tente d'exécuter encore la règle, celle-ci ne s'exécutera plus. En effet une règle
est activée si ses modèles sont satisfaits par

1. Une nouvelle entité de modèle qui n'existait pas avant ou,


Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 79

2. une entité de modèle qui existait avant mais a été rétratée et réaffirmée, c'est-
àdire, un "clone" de l'ancienne entité de modèle, qui devient maintenant une nouvelle
entité de modèle.

La règle et les indices des modèles qui la satisfont constituent l'activation. Si soit règle,
soit l'entité de modèle change, l'activation est supprimée. Une activation peut aussi être
supprimée par une commande ou une action d'une autre règle qui s'est déchargée avant
et a supprimée les conditions nécessaires pour l'activation.

Le moteur d'inférence trie les activations selon leur priorité. Ce processus de trie est
appelé conflit de résolution parce qu'il élimine le conflit en décidant quelle est la
prochaine règle à se décharger. CLIPS exécute la RHS de la règle ayant la plus haute
priorité dans l'agenda, et supprime l'activation. Cette exécution est appelée décharger
la règle en analogie avec la décharge d'un neuronne. Un neuronne émet une impulsion
électrique quand un stimulus est appliqué. Après qu'un neuronne s'est déchargé, il subit
une réfraction et ne plus se décharger durant une certaine période de temps. Sans la
réfraction, les neuronnes continueraient à se décharger indéfiniment sur exactement un
même stimulus.

Sans la réfraction, les systèmes experts seraient pris dans des boucles triviales. C'est-à-
dire, aussitôt qu'une règle s'est déchargée, elle continuerait à se décharger indéfiniment
sur ce même fait. Dans le monde réel, le stimulus qui a provoqué la décharge devrait
éventuellement disparaître. Cependant, dans l'ordinateur, il reste là jusqu'à ce qu'il soit
supprimé explicitement. L'exemple suivant montre les activations et la décharge d'une
règle. Il faut remarquer que les commandes (watch) sont utilisées pour montrer très
clairement chaque fait et activation. La flèche allant à droite signifie l'entrée d'un fait
ou d'une activation tandis que la flèche à gauche signifie la sortie d'un fait ou d'une
activation.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 80

On peut encore exécuter la règle si l'on rétracte le fait et le réaffirme comme un


nouveau fait.

4.10.4. VOIR LE CODE D'UNE REGLE

Quelques fois on cherche à voir une règle pendant qu'on est dans CLIPS. Il y a une
commande appelée ppdefrule –pretty print rule – qui affiche une règle. Pour voir une
règle, il faut spécifier le nom de la règle comme argument à ppdefrule. Par exemple,

CLIPS met les différentes parties de la règle sur différentes lignes par souci de lisibilité.
Les modèles avant la flèche sont encore considérés comme la LHS et les actions après la
flèche sont encore considérées comme la RHS de la règle. Le terme MAIN réfère au
module MAIN dans lequel se trouve par défaut. L'on peut définir des modules pour y
mettre des règles similairement aux instructions qui peuvent être placées dans
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 81

différents packages, modules, procédures ou fonctions dans d'autres langages de


programmation. L'utilisation des modules rend plus facile l'écriture des systèmes experts
qui ont beaucoup de règles puisqu'elles doivent être groupées ensemble avec leurs
propres agendas pour chaque module.

Comment afficher une règle s'il l'on ne se rappelle pas son nom? Il suffit juste d'utiliser la
commande rules en réponse au prompt de CLIPS et CLIPS affichera les noms de toutes
les règles. Par exemple

Write to Me

Outre l'affirmation de faits dans la RHS des règles, on peut aussi imprimer des
informations en utilisant la fonction printout. CLIPS a aussi un mot clé pour le retour
chariot appelé crlf qui est très utile dans l'amélioration de l'apparence de l'affichage en
le formatant sur différentes lignes.

Exemple,

La sortie est le texte entre les doubles guillemets. Il faut toujours taper la lettre t après
la commande printout pout r que CLIPS envoie la sortie à l'unité standard de sortie de
l'ordinateur. Généralement, l'unité standard de sortie est le terminal (d'où la lettre "t"
après printout.) Cependant pour que l'unité standard de sortie soit une autre unité
comme le modem, ou ble disque, elle doit être rédéfinie.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 82

4.11. UTILISATION DES VARIABLES

Comme dans d'autres langages de programmation, CLIPS utilise des variables pour
stocker des valeurs.

Contrairement au fait, qui est statique ou inchangeable, le contenu d'une variable est
dynamique parce que les valeurs lui assignées changent.

Par contre, une fois qu'un fait est affirmé, ses champs ne peuvent être modifiés qu'en
rétractant le fait et en affirmant un nouveau fait avec les champs modifiés. Même
l'action modify (décrit plus loin dans le chapitre sur deftemplate) fonctionne par
rétractation et affirmation d'un fait modifié, comme on peut le constater à partir des
indices de faits.

Le nom d'une variable, ou identificateur de variable, est toujours écrit comme un


symbole précédé d'un point d'interrogation. Le format général est

?<nomDeLaVariable>.

Les variables globales, qui seront décrites plus loin, ont une syntaxe légèrement
différente.

Comme dans d'autres langages de programmation, les noms de variables doivent être
significatifs, pour une raison de bon style. Quelques exemples des noms valides de
variables sont :

?x ?nom ?couleur

?capteur ?valve ?feu-allume

Avant qu'elle ne soit utilisée, une variable doit avoir une valeur assignée. Voici un
exemple du cas où une valeur n'est pas assignée à une variable et CLIPS retourne un
message d'erreur :
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 83

CLIPS retourne un message d'erreur quand il ne peut pas trouver une valeur liée à ?x. Le
terme lier signifie l'assignation d'une valeur à une variable. Seules les variables globales
sont liées dans toutes les règles. Toutes les autres variables ne sont liées que dans une
règle. Avant et après que la règle a brûlé, les variables non globales ne sont plus liées et
ainsi CLIPS retournera un message d'erreur si l'on tente de faire une requête concernant
une variable non liée.

Un usage courant des variables est d'obtenir une valeur dans la partie LHS de la règle et
ensuite affirmer cette varaible liée dans la partie RHS de la règle. Par exemple :
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 84

On peut, bien entendu, utiliser une variable plus d'une fois, comme le montre l'exemple
suivant :

Les variables sont aussi généralement utilisées lors de l'affichage des sorties, comme
dans cet exemple :
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 85

Comment peut-on modifier la règle pour mettre les doubles guillemets autour de rouge à
l'affichage ? Plus d'une variable peuvent être utilisées dans un modèle, comme dans
l'exemple suivant.

La rétraction est très utile dans les systèmes experts et est faite dans la partie droite de
la règle (RHS) plutôt qu'au top niveau (sur la ligne de commande). Avant qu'un fait ne
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 86

soit rétracté, il doit être spécifié à CLIPS. Pour rétracter un fait d'une règle, l'adresse
du fait doit d'abord être liée à une variable dans la partie.

Il y a une grande différence entre lier une variable au contenu d'un fait et lier une
variable à l'adresse d'un fait. Dans les exemples précédents tels que (feu ?feu), une
variable était liée à la valeur d'un fait. Cependant, si l'on vaut supprimer un fait dont le
contenu est connu, on doit d'anbord dire à CLIPS l'adresse de ce fait.

L'adresse est spécifiée en utilisant la fleche gauche "<-". L'exemple suivant illustre la
rétraction de fait :

Des variables peuvent être utilisées pour obtenir la valeur d'un fait en même temps
qu'une adresse de fait, comme l'illustre l'exemple suivant.

CLIPS a aussi une fonction appelée fact-index qui peut être utilisée pour retourner
l'indice de fait d'une adresse de fait

Un champ non vide quelconque


Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 87

On peut utiliser le point d'interrogation seul pour spécifier un champ non vide
quelconque, comme l'indique l'exemple suivant

Dans cet exemple, le fait satisfaisant la règle doit être un fait à deux champs, le
premier champ doit être feu, peu importe le second. Chaque fois qu'un tel fait est
rencontré, la règle brûlera.

Chaque point d'interrogation représente spécifie un champ non vide. L'exemple suivant
concerne une règle qui est exécutée autant de fois qu'il y a des faits à trois champs dont
le premier est feu:
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 88

Une autre possibilité intéressante se présente si tous les noms ayant comme premier
nom, par exemple Nduadi, mais avec deux ou trois postnoms doivent être acceptables.
Une façon de résoudre ce problème est d'écrire deux règles. Par exemple
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 89

Spécification des champs multiples quelconques non vides.

Au lieu d'écrire des règles séparées pour manipuler des nombre différents champs
multiples on peut utiliser la combinaison des symboles $? pour représenter zéro ou
plusieurs champs quelconques, comme l'illustre l'exemple suivant :
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 90

La représentation des champs non vides par les caractères ? et/ou $? A une autre
utilisation importante parce que des champs ainsi représentés peuvent être attachés à
un champ symbolique pour créer une variable telle que ?x, $?x, ?nom ou $?nom.

La variable peut être une variable à champ un seul champ ou une variable à champs
multiples selon qu'un ? ou un $? est utilisé dans la partie LHS de la règle. Il faut
toutefois noter que dans la partie RHS o va seulement utiliser un ?x quelque soit la
variable. Le caractère $ peut être considéré comme une fonction dont l'argument est
une variable à un seul champ et retourne une variable à champs multiples.

L'exemple suivant illustre une variable à champs multiples :


Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 91

A supposer qu'on veuille rencontrer tous les noms qui ont un Nduadi quelque part, pas
nécessairement comme premier nom. La version suivante de la règle s'égalera à tous les
faits avec un Nduadi et affichera les noms :

Le modèle s'égale à quelques noms qui contiennent un Nduadi quelque part. La


représentation d'un champ unique ou celle de multiples champs peuvent être
combinées. Par exemple, le modèle (nom ? $? Nduadi ?) signifie que le premier et le
dernier nom peuvent être n'importe lesquels mais que l'avant dernier nom doit être
Nduadi. Ce modèle requiert aussi que le fait s'égalant au modèle ait au moins quatre
champs puisque le symbole $? s'égale à zéro ou plusieurs champs et tous les autres
doivent s'égaler exactement quatre.

Bien que les variables à champs multiples puissant être essentielles pour la satisfaction
des modèles dans beaucoup de cas, leur utilisation abusive consomme beaucoup
d'espace mémoire et provoque la lenteur dans l'exécution du système.

En règle général, l'usage de $? doit se faire en cas de non connaissance de la longueur


des variables.

Les variables utilisées dans les modèles ont une propriété importante et utile qui peut
être énoncée comme suit :

La première fois qu'une variable est liée, elle retient cette valeur seulement dans la
règle, aussi bien dans la partie LHS que dans la partie RHS, bien que changeable dans la
partie RHS. Par exemple, dans la règle suivante
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 92

La règle peut être activée seulement par le pair f-1, f-2, et par l'autre pair f-3, f-4,
c'est-à-dire le fait f-1 ne peut pas aller avec f-3 parce que quand ?nombre est lié à zéro
dans le premier modèle, la valeur de ?nombre dans le second modèle doit aussi être 0.
Mêmement, quand ?nombre est lié à 1 dans le premier modèle, la valeur de ?nombre
dans le second modèle doit aussi être de 1. La règle sera donc activée deux fois par ces
quatre faits: une activation pour le pair f-1, f-2 et l'autre activation pour le pair f3, f-4.

4.12. LES FAITS NON ORDONNES

Dans ce chapitre, nous allons apprendre un mot clé appelé deftemplate, qui signifie
for define template. Ceci permet d'écrire des règles dont les modèles on tune
structure bien définie.

Deftemplate est analogue à la structure d'un enregistrement en Pascal. C'est-à-dire, le


deftemplate définit un groupe de champs correspondants dans un modèle. Un
deftemplate est une liste de champs nommés appelés slots.

Deftemplate permet l'accès par le nom au lieu de spécifier l'ordre de champs.

Un slot est un champ unique (slot) ou un multichamps (multislot) nommé. Un slot unique
ou simplement slot contient exactement un champ tandis qu'un multislot contient zéro
ou plusieurs champs. Dans un deftemplate, on peut utiliser autant de slots et multislots
qu'on veut. Pour écrire un slot, on donne le nom du champ (attribut) suivi de la valeur
du champ.

Exemple, considérons les attributs et leurs valeurs pour un cours enseigné à l'université
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 93

Attributs Valeur
Code IA01
Intitulé Intelligence
Titulaire artificielle
NTAMBUE

Un deftemplate peut être définie pour la relation cours de la manière suivante, où


espace blanc et commentaire sont utilisés pour lisibilité et explication.

Dans cet exemple, les composants de deftemplate sont structurés de la manière


suivante :

 Un nom de relation deftemplate


 Les attributs appelés champs
 Le type de champ, qui peut être un des types suivants :
 SYMBOL, STRING, NUMBER, et les autres vus précédemment.
 La valeur par défaut du champ
 Ce deftemplate en particulier a trois rainures à un seul champ appelés Code, Titre,
Titulaire et volume.

Les valeurs par défaut du deftemplate sont insérées par CLIPS quand un (reset) est
faite s'il n'y a pas de valeurs explicites définies. Par exemple, affirmons un cours sans
définition des valeurs des champs prévues dans le deftemplate :
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 94

Différents types ont différents symboles par défaut tels que la chaîne vide, "", pour
STRING; l'entier 0 pour INTEGER; le flottant 0.0 pour FLOAT, etc.

Le mot clé ?DERIVE choisit le type de contrainte approprié pour cette rainure, exemple,
la chaîne vide , "", pour une rainure de type STRING.

On peut explicitement mettre les valeurs des champs, comme l'exemple suivant l'illustre

L'on doit noter que l'ordre des champs n'est pas important car il s'agit ici des faits non
ordonnés. Exemple, si nous réaffirmons le fait ci-dessus avec un ordre différent des
champs, il s'agira toujours d'un même fait, et CLIPS retournera un message d'erreur,
FALSE.

Dans le deftemplate, il est important de réaliser que NUMBER n'est pas un type primitif
comme symbol, string, integer, et float. NUMBER est réellement un type de groupe
composé qui peut être entier ou flottant. Il est utilisé dans les cas où l'utilisateur
n'attache pas d'importance sur le type de nombre à stocker. Une alternative à NUMBER
serait de spécifier les types de la manière suivante : (slot age

(type INTEGER FLOAT)

(default 80)))

En général, un deftemplate avec N rainures a la structure générale suivante :

(deftemplate <nom>
(slot-1)
(slot-2)
(slot-N))

Dans un deftemplate les valeurs de l'attribut peuvent être spécifiées plus précisément
qu'une simple valeur telle que 80 ou riche. Par exemple, dans ce deftemplate, un type
de valeur est spécifié.
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 95

Les valeurs du champ peuvent être spécifiées aussi bien en les listant explicitement ou
en donnant un rang de valeurs. Les valeurs autorisées peuvent être n'importe quel type
primitif tel que

SYMBOL, STRING, INTEGER, FLOAT etc. Par exemple,

Valeurs énumérées de deftemplate Exemple


Symboles-autorisés riche très-riche étudiant
Chaînes-autorisées "David" "Daniel" "Dorcas"
Nombres-autorisés 1 2 3 4.5 -2.001 1.3e-4
Entiers-autorisés -100 53
Flottants-autorisées -2.3 1.0 300.00056
Valeurs-autorisées "David" riche 99 1.e9
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 96

BIBLIOGRAPHIE

1. CASTILLO Enrique, GUTIERREZ J.M. et HADI Ali S., "Sistemas Expertos y Modelos de
Redes Probabilísticas", ed. academia de Ingeniería,

2. DEAN Thomas, ALLEN James et ALOIMONOS Yiannis, "Artificial Intelligence, Theory


and Practice", The benjamin/Cumming editions, 1995, 563 p.

3. DETILF et al., "Foundations of Neuro-Fuzzy Systems", ed. John Wiley & sons, 1997,
305 p.

4. GIATARRANO et RILEY, "Sistemas Expertos, Principios y Programación", International


Thomson editores, 1998.

5. KUSIAK Andrew, "Computational Intelligence in design and manufacturing", ed. John


Wiley & Sons, 2000, 535 p.

6. LUGER George F. et STUBBLEFIELD Wiliam A., "Artificial Intelligence and the


Design of expert Systems", ed. Benjamin Cummings, 1989, 659 p.

7. RUSSEL Stuart et NORVIG Peter, "Artificial Intelligence, a modern approach", Ed.


Prentice Hall International editions, 1995, 922 p.

8. RUSSEL Stuart et NORVIG Peter, "Inteligencia Artificial, un enfoque moderno", Ed.


Pearson, 2005, 1212 p.

Vous aimerez peut-être aussi