Académique Documents
Professionnel Documents
Culture Documents
0. INTRODUCTION
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)
"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)
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
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.
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.
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.
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.
Les disciplines suivantes ont contribué avec des idées, points de vue et techniques au
développement de l'IA.
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 ?
Quelles règles formelles sont adéquates pour obtenir des conclusions valides ?
Que peut être traité ?
Comment raisonnons-nous avec l'information incertaine ?
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.
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).
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
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é
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.
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.
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.
Les environnements de travail sont essentiellement les "problèmes" pour lesquels les
agents rationnels sont des "solutions".
D'AGENT DE
RENDEMENT
classifiés
dans les
cubes corrects
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 9
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.
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
3. statique ou dynamique:
4. discret ou continu
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.
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
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.
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:
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:
….
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:
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
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
ENVIRONNEMENT
monde
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
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 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
monde
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.
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.
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.
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
prévoient pas une indication de la réussite de l'agent. Il est donc très important de fixer
le niveau d'agissement.
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.
• la vision artificielle,
• le langage naturel,
• la compréhension,
• la parole,
• la robotique,
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
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
• Danger réduit : Les systèmes experts peuvent être utilisés dans des
environnements qui pourraient être dangereux pour un être humain.
• 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.
• 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.
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
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
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
Un système expert peut être conçu pour qu'il ait les caractéristiques générales
suivantes:
• Fiabilité : le système expert doit être fiable et ne doit pas connaître des "failles"
sinon il ne sera pas utilisé.
• Justifier les questions que le programme fait à l'utilisateur pour obtenir plus
d'information.
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
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.
Année Evénement
(Quillian)
Simon)
XCON/R1
(Forgy)
1980 Symbolics, LMI est fondé pour fabriquer les machines LISP
Net;
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:
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.
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.
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.
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
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
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
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.
SYSTEMES EXPERTS
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
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.
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).
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
Nom Chimie
Nom Ingénierie
Nom Géologie
minerais
Cours de l’Intelligence Artificielle Ass 2 Taylor NTAMBUE , Année 2022-2023 Page 33
Nom Médecine
Nom Ordinateurs
DEC
Nom Electronique
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.
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.
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.
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.
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.
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.
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.
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
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:
Règle: Lumière_rouge SI
Règle: Lumière_verte SI
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
SI
ALORS
Il y a une faible évidence qui suggère (.4) l'identité de l'organisme est pseudomone
SI
Il y a une unité de disque avec port dual qui n'a pas été assigné et
ALORS
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).
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
Résolution de conflit: s'il y a des activations, alors sélectionner celle ayant la priorité
plus élevée
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.
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
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 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:
• 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.
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.
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.
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
Les règles de production peuvent aussi avoir de multiples antécédents. Par exemple :
Le patient a la fièvre et
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.
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 :
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.
AxB → BxA
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
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
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)!
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.
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.
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
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.
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.
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.
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 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
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.
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.
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).
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.
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.
4.1. INTRODUCTION
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 :
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
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
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
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.
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.
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.
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>.
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.
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.
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 :
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.
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
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.
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"
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 :
Pour les entiers longs de 32-bits, ceci correspond à un rang de nombres : -2,147,483,648
… 2,147,483,647
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 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.
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
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
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.
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 :
(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
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.
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.
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.
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 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
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.
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
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
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
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
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.
?<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
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
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
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.
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 :
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.
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.
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.
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
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
(default 80)))
(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
BIBLIOGRAPHIE
1. CASTILLO Enrique, GUTIERREZ J.M. et HADI Ali S., "Sistemas Expertos y Modelos de
Redes Probabilísticas", ed. academia de Ingeniería,
3. DETILF et al., "Foundations of Neuro-Fuzzy Systems", ed. John Wiley & sons, 1997,
305 p.