Vous êtes sur la page 1sur 28

Cognition et connaissance

Objectifs de l’enseignement
Les étudiants devront savoir expliquer, savoir décrire comment fonctionne une
inférence ontologique, comment fonctionne un raisonnement analogique,
devront savoir présenter les différentes facettes d’un problème d’ingénierie des
connaissances. Les étudiants doivent aussi à travers ce module savoir comment
faire une bonne gestion des connaissances au niveau d’une organisation.

Chapitre 1 introduction à l’intelligence Artificielle


1.1 Historique de l’IA

Les recherches en intelligence artificielle (IA) visent à concevoir et à développer


des logiciels capables d’effectuer des tâches qui requièrent une certaine forme
d’intelligence humaine. Plusieurs techniques ont été développées permettant de
programmer des systèmes capables, dans une certaine mesure, de raisonner,
d’apprendre, de planifier, de prendre des décisions rationnelles dans plusieurs
domaines ou de comprendre ou de parler un langage naturel.
Les technologies actuelles issues de l’intelligence artificielle comprennent les
interfaces vocales, les systèmes experts, les robots mobiles et les assistants
intelligents sur le Web.
Pour concevoir des systèmes dits intelligents, capables de traiter des problèmes
difficilement résolubles d’une manière similaire à celle qu’adopterait l’être
humain. La mise en application de l’intelligence artificielle exige des
connaissances de la perception, du raisonnement, du traitement des informations
et de l’apprentissage.

1
Plusieurs pays, comme les Etats Unis, la Chine, l’Angleterre, l’Allemagne et la
France, ont déjà investi des sommes considérables pour la recherche et le
développement des systèmes intelligents dans différents domaines tel que la
médecine, l’économie, l’industrie et beaucoup d’autre...
Tout commence vers la fin des années 40, l’idée de faire le lien entre le
fonctionnement des machines et des êtres humains. L’objectif ultime de Norbert
Wiener, pionnier de la cybernétique, était d’allier différents domaines qui sont
les mathématiques, l’électronique et l’automatisation tout en conjuguant la
dimension animale. Ce projet avait déjà été entamé par les scientifiques Warren
McCulloch et Walter Pitts en créant le tout premier neurone biologique modélisé
mathématiquement par un neurone formel.
Donald Hebb, neuropsychologue, invente en 1949, la règle du neurone formel
doté de capacités d’apprentissages. Selon lui, quand un axone d’une cellule A
est assez près d’une cellule B, de manière répétitive, un processus de croissance
et de métabolisme de changement se mettent en place, ce qui augmente
l’efficacité de ces cellules.
En 1950, la logique décimale et la logique binaire se mettent en place dans des
machines automatisées, les premiers véritables ordinateurs, qui permettent
d’exécuter ce qu’on leur a programmé. Le scientifique qualifie cet effet de « jeu
de l’imitation ». Il entame le débat sur le questionnement de la limite entre
l’humain et la machine.
Entre 1980 et 1990 apparaissent les systèmes experts qui s’appuient sur un «
moteur d’inférence », c’est à dire un logiciel qui correspond à un algorithme de
simulation des raisonnements déductifs, qui était programmé pour être un miroir
logique d’un raisonnement humain. De ce fait, en entrant des données, le moteur
fournit des réponses d’un haut niveau d’expertise.

- Le système expert DENDRAL, a été conçu dans les années 60 pour aider les
chimistes à identifier la structure de molécules organiques.

- MYCIN, été un système expert qui permettait d’aider le médecin dans son
diagnostic médical.
Depuis quelques années, l’Intelligence Artificielle (IA) connaît un regain
d’intérêt sans précédent grâce à d’importantes avancées technologiques,
notamment dans le domaine de l’apprentissage machine (machine learning), qui
étendent les capacités des ordinateurs et accroissent leurs performances dans un
grand nombre de domaines (traitement du langage naturel, compréhension de la
parole, reconnaissance d’images, robotique, etc.). Ces avancées ouvrent de
vastes perspectives en termes d’innovation technologique et d’automatisation.

2
Depuis l’année 2010, un nouvel essor est apparu, il est dû à la collecte de
données massives et d’une nouvelle puissance de calcul, c’est le Big Data, ou
volumes massifs de données, qui se traduit par une explosion quantitative de
données numériques. Il s’agit de stocker un nombre infini d’informations, ou
métadonnées, sur une base numérique.

1.2 Apport de l’IA à l’entreprise

Les travaux réalisés en IA, symbolique notamment, ont progressivement abouti


à des applications pratiques pour les situations de travail, en particulier sous la
forme de systèmes dits « experts ». Un système expert est supposé reproduire
l’expertise cognitive d’un humain, en particulier ses raisonnements et ses
connaissances, dans un domaine particulier. L’expertise est modélisée comme
un ensemble de règles de type « si-alors ». Ces systèmes ont été développés dans
de nombreux secteurs (médecine, industrie, etc.) avec différentes finalités
(diagnostic, résolution de problèmes, prise de décision, etc.).

Dès l’an 2010, l’IA suscite une forte attention avec les performances obtenues
grâce à l’apprentissage machine (machine learning) et, plus particulièrement,
l’apprentissage profond (deep learning) qui repose sur des réseaux de neurones
artificiels (approche connexionniste). De façon générale, l’apprentissage
machine, parfois appelée apprentissage statistique, consiste à apprendre à une
machine à réaliser des tâches (par exemple : reconnaissance d’objets dans des
images) en l’entraînant sur des données du domaine concerné (par exemple, des
images qui comportent des voitures). Dans ce domaine, on distingue
habituellement les algorithmes des modèles d’apprentissage.
3
Un modèle résulte de l’apprentissage qui se construit à partir de l’application des
algorithmes aux données utilisées dans la phase d’apprentissage. Ce modèle peut
être vu comme un arrangement et une mise en relation mathématique complexe
de paramètres ou coefficients.

L’apprentissage profond (deep learning), dont on parle beaucoup aujourd’hui,


est une technique qui se distingue par l’utilisation de plusieurs couches de
réseaux de neurones artificiels qui extraient et traitent de manière successive des
informations spécifiques d’une entrée (par exemple, une image). Cette technique
n’est pas nouvelle puisque son développement est amorcé à la fin des années 80
avec notamment les réseaux convolutifs, mais a été délaissé entre le milieu des
années 90 et 2012 du fait de la difficulté à la faire fonctionner avec les
ordinateurs de cette époque, car ils n’étaient pas assez puissants. L’année 2012
est importante, car c’est le moment où ces réseaux de neurones ont permis
d’atteindre des performances inédites (dans la reconnaissance vocale et la vision
par ordinateur), notamment grâce à l’augmentation importante des capacités de
calcul des machines informatiques et la disponibilité de volumes de plus en plus
grands de données (Big Data). Cette technique, qui prend une place
prépondérante en IA, est de plus en plus utilisée dans la conception
d’applications ou de produits (par exemple, les assistants vocaux, les véhicules
autonomes, les robots dits « sociaux », ou les systèmes d’analyse d’images
comme dans l’imagerie médicale). Enfin, avec les performances atteintes par les
machines apprenantes actuelles ressurgit le débat concernant la possible
émergence d’une IA générale, autrement dit qui serait la même que celle de
l’humain ou la dépasserait « Superintelligence ».

Chapitre 2 Rappel sur les bases logiques de l'IA


2.1 Les fondements logiques de l'IA

L'Intelligence Artificielle (IA) se propose de modéliser de manière formelle nos


connaissances et de simuler nos raisonnements.

L'Intelligence Artificielle a, dans de nombreux domaines, utilisé des théories et


des méthodes issues d’autres disciplines, en les adaptant à sa propre
problématique. Les mathématiques jouent bien sûr un rôle essentiel dans ces

4
développements, apportant notamment une méthodologie générale de
formalisation et une approche rigoureuse des concepts.

C’est donc dans ce cadre que les liens entre la logique mathématique et
l'Intelligence Artificielle se sont établis, faisant apparaître de nombreuses
préoccupations communes aux deux disciplines. Très tôt, la logique s’est
trouvée étroitement liée à l’informatique, tant au niveau de la conception des
machines que de l’informatique théorique. Ce mariage de longue date entre les
deux disciplines s’est donc prolongé de façon naturelle avec les développements
de l'Intelligence Artificielle. De plus, ces rapports ne s’effectuent pas en sens
unique : si la logique a indiscutablement apporté, au départ, des outils et des
résultats fondamentaux, mis en place indépendamment de toute considération
liée à l’informatique, l'Intelligence Artificielle, à son tour, a mis en évidence un
certain nombre de problèmes, liés à la logique. Cela a conduit non seulement à
un renouveau de certaines théories logiques, mais parfois même à des
développements théoriques entièrement originaux au sein de la logique formelle.
C’est donc plutôt comme une suite d’échanges que l’on doit désormais
envisager les rapports entre la logique et l’Intelligence Artificielle, de la même
façon, par exemple, qu’entre les mathématiques et la physique. Comme nous
l’avons dit, de nombreux ponts ont été je tés entre la logique et l’informatique, et
ce depuis l’origine de cette dernière. Cependant, si l’IA a poursuivi cette
tendance, c’est, dans l’ensemble, pour des raisons très différentes de celles de
l’informatique traditionnelle. Les développements logiques en IA ont été
davantage motivés par des besoins de formalisations théoriques, rejoignant des
préoccupations philosophiques plus anciennes. Deux aspects fondamentaux de
la logique en ont fait un outil privilégié dans de nombreux domaines d’IA : son
aspect déductif et son aspect représentation des connaissances. Rappelons, sans
prétendre être exhaustif, quelques-uns des domaines où la logique intervient en
IA. • Aspect déductif : les notions de déduction, d’inférence, de preuve et de
raisonnement sont évidemment de première importance en IA. L’étude des
multiples types de raisonnements, et notamment les raisonnements de sens
commun, est, par exemple, typiquement une préoccupation commune avec la
philosophie, et constitue sans doute une étape essentielle vers la conception de
systèmes informatiques véritablement «Intelligents».

On pourrait même dire que ce sont précisément ces aspects philosophiques,


cognitifs et psychologiques qui sont les principaux sujets de réflexion en IA.

5
Sans rester dans un cadre aussi général, citons quelques domaines où les notions
de déduction logique interviennent :

1. Les systèmes de déduction automatique sont bien sûr


directement liés à la logique déductive. Le but étant de réaliser l’automatisation
du raisonnement à l’aide de systèmes informatiques. La réalisation de modules
déductifs étant nécessaire dans de nombreux systèmes d’IA, telles que la
résolution, la déduction naturelle ou les tableaux sémantiques.

- La logique d'ordre 0 (logique classique) : dans cette logique les règles de


productions sont utilisées pour représenter les connaissances, ces règles sont à la
forme de : SI « conditions » ALORS « actions ». Ou bien SI « prémisses » ALORS
«conclusions».
Un exemple de ce type de logique est : Si patient présente les symptômes de la
fièvre, la toux, température supérieure à la normale alors ce patient est candidat
à la covid19.

- la logique 0+ : cette logique est appelée aussi logique des propositions


améliorées, elle se schématise par : Attribut-operateur-valeur où :
l'attribut : indique les noms des attributs appartenant au vocabulaire du
domaine d'étude.
l’opérateur peut être : >, >= , < , <=, = .
Valeur : c'est la désignation de l'attribut.

On prend comme exemple : si MG_etudiant>=10 alors étudiant admis.

2. Les systèmes experts (SE) sont chargés d’effectuer, et de justifier, un


raisonnement, de type logique, compte tenu de connaissances générales
appliquées à une situation particulière. La notion de justification ou
d’explication, qui correspond à la notion de preuve en logique, est une
caractéristique importante de ces systèmes. La gestion de la cohérence dans les
bases de connaissances de SE utilise des notions comme la consistance, la
déduction, la résolution. Donc, il a des fondements logiques. Les connaissances
sont le plus souvent exprimées sous la forme de règles de production «Si
prémisses Alors conclusion».

6
3. Les systèmes d’élaboration de plans d’actions en robotique
un robot doit généralement réaliser des objectifs qui lui ont été fixés, et résoudre
des conflits, dans le cadre de contraintes imposées par un environnement. Il doit
pouvoir faire certaines inférences à partir des données qui lui sont fournies et il
doit pouvoir prévoir et évaluer les conséquences de ses actes. Enfin, il doit être
capable de raisonner sur sa propre base de connaissances, en établissant un plan
d’actions ou de tâches. L’achèvement de ces tâches nécessite donc des modules
de raisonnement, qui sont de type déductif.

7
4. Aspect représentation de connaissances : La logique, comme
langage symbolique formel, tient donc naturellement une place importante dans
de nombreux domaines de l’IA. En fait, le plus souvent, la plupart des
symbolismes que l’on peut développer, par exemple en langage naturel, peuvent
se traduire en un langage logique, notamment le langage des prédicats. Parmi les
domaines d’IA où le langage de la logique est utilisé pour la représentation des
connaissances, on peut reprendre la plupart des domaines évoqués
précédemment. En IA, résoudre un problème donné revient à trouver une bonne
représentation des connaissances de ce problème.

 Comme on l’a signalé précédemment, l’un des aspects fondamental de


représentation de la connaissance en IA est la logique sous ces plusieurs
formes, la logique classique et la logique améliorée qu’on a citées dans le
premier point de ce paragraphe, nous avons aussi la logique des prédicats,
Nous définissons donc un prédicat comme un énoncé qui prend en entrée un
certain nombre de paramètres (un ou plusieurs) et délivre en sortie un résultat
sous forme booléen, réel, ou autre…

Exemples :
x entier(x)>0, ce prédicat désigne que tout entier x est positif. Dans ce
prédicat, une seule variable d’entrée x et une sortie booléenne (vrai ou faux),
donc la valeur de sortie du prédicat dépend de la valeur de la variable x, si par
exemple x= 0, la valeur retournée par le prédicat est false, car l’entier 0 n’est pas

8
supérieur à lui-même. Par contre si cette valeur vaut 3 alors sa valeur de vérité
est true.

x (entier_ pair(x)  entier_impair(x)) ce prédicat stipule que tout entier


est soit pair ou bien impair. Ce qui est tout à fait logique, cela veut dire que la
valeur de vérité de ce prédicat est toujours true quel que soit x.

 Un autre type de logique est la logique floue qui permet de définir une
appartenance graduelle d’un élément à une classe, c’est à dire appartenir plus
ou moins fortement à cette classe. L’appartenance d’un objet à une classe est
ainsi définie par un degré d’appartenance entre 0 et 1.

Par exemple : l’âge d’une personne, pour lequel on définit 3 classes, « jeune :J »,
« âge moyen :M » et « âgé :A » dans l’intervalle allant de 0 à 100 ans (voir la
figure suivante).

Dans la figure ci-dessus, on déduit qu’une personne de moins de 30 ans est


jeune à 100%, une personne entre 40 et 60 ans est de l’Age moyen à 100%, par
contre une personne ayant par exemple 38 ans est considérée jeune à 20% et
d’âge moins à 80%.

9
5. Prolog : Un langage symbolique pour la représentation des connaissances.
Programmer en Prolog, c’est énoncer une suite de faits et de règles puis poser
des questions. Tout est relations en Prolog. Tout programme Prolog constitue un
petit système-expert à savoir un ensemble de faits et de règles de déduction, qui
va fonctionner en « chaînage-arrière », c’est-à-dire qui va tester les hypothèses
pour prouver une conclusion.

Ce logiciel est utilisé principalement en Intelligence Artificielle.

Ce qui est original, c'est qu'en Prolog, il suffit de décrire ce que l'on sait sur le
domaine étudié, (en Intelligence Artificielle, on appelle cela une base de
connaissances), puis on pose une question à propos de ce domaine et Prolog va
nous répondre, sans que l’on ait à lui dire comment construire sa réponse.

Remarques :
 L’écriture : A(x) :- B(x), C(x). veut dire que A(x) est vérifié si B(x) et C(x)
sont vérifiés.

 L’écriture : A(x) :- B(x).


A(x) :- C(x). veut dire que A(x) est vérifié si B(x) est verifié
ou bien C(x) est verifié.

 Le symbole ‘=’ en prolog ne signifie pas l’égalité ou l’affectation comme si


le cas en langage C, par contre il désigne l’unification. Pour affecter une
valeur numérique à une variable, en utilise le mot clé ‘is’

Exemple1

Donner les instructions prolog permettant de calculer la valeur absolue d’un


nombre quelconque x, abs(x, y) ?
Exemple : |+3|=3
|-3|=3

Corrigé
. abs (x, x) :- x>=0.
. abs (x, y) :- x<0, y is –x

10
Exemple2

La somme de deux entiers :


. sum (x, y, z) :- z is x+y.

Exemple3 : Soient les énoncés suivants :

1. Adam aime les pommes.


2. Adam aime les carottes.
3. Clara aime les oranges.
4. Les pommes sont des fruits.
5. Les oranges sont des fruits.
6. Les carottes sont des légumes.
7. Ceux qui aiment les légumes et fruits sont en bonne santé.
Questions
1) Formalisez ces faits et règles en PROLOG.
2) Quelle est la requête PROLOG pour savoir qui est en bonne santé ? Donner
son résultat.

Corrigé

(1). Formalisation : 1. Aime(adam, pommes) 2.Aime(adam, carottes)

3. Aime(clara, oranges) 4. Sont(pommes, Fruits)


5. Sont(oranges, fruits) 6. Sont(carottes, légumes)
7. En_bonne_santé(x) :- Aime(x, légumes), Aime(x, fruits)

(2). La requête PROLOG pour savoir qui est en bonne santé ??:

?- En_bonne_santé(x)

Pour vérifier cette requête, il faut verifier Aime(x, légumes) et Aime(x, fruits) ?

Dans la base de connaissance, nous avons :Aime(adam, pommes) et


Sont(pommes, fruits) -> Aime(adam, fruits)

-> x=adam.

Nous avons Aime(adam, carottes) et Sont(carottes, légumes) ->Aime(adam,


légumes)->x=adam. donc c’est adam qui est en bonne santé.

11
Exercice Exprimer en prolog, la fonction mathématique min(x, y) qui permet
d’afficher le minimum de deux entiers entrés au clavier.

2.2 Le principe de résolution des problèmes

Un problème est une collection d’informations que l’agent utilise pour décider
quelle(s) action(s) accomplir.

On représente un problème par un espace d'états (arbre/graphe).


- Chaque état est une configuration possible du problème.
- Résoudre le problème consiste à trouve un chemin dans le graphe d’un état
initial vers un ou plusieurs états finaux.
Plusieurs types de solutions existent :
- Parcours aveugles non informés : recherche en profondeur, ou bien recherche
en largeur.
- Parcours informés (utilisation d’heuristique).
Comment résoudre un problème ?
Recherche des solutions, consiste à Recenser les états d’un système donné et
trouver parmi ces états une ou plusieurs solutions.
Comment ?
Le passage d’un état à un autre se fait par l’application d’une action donnée.
Développement d’un arbre de recherche + une stratégie de recherche.
Modélisation par un quadruplet (S, E0, F, T) où : S est l’ensemble de tous les
états. E0 est l’état initial, E0 ∈ S. F est l’ensemble des états finaux F ⊂ S. T est la
fonction de transition.

Un arbre de recherche est construit ;


La racine de l’arbre est l’état initial.
Un état Eij est fils d’un autre état Ei s’il existe une action qui permet d’obtenir
Eij à partir de Ei.
Si une des feuilles correspond à un état final, la solution est trouvée.

Méthode de recherche : Il existe principalement 3 méthodes de recherches :


Recherche aveugle en profondeur (profondeur d’abord), Recherche aveugle en
largeur (largeur d’abord), La technique heuristique A*.

12
1) L’algorithme de recherche en profondeur

Principe
L'exploration d'un parcours en profondeur depuis un sommet S fonctionne
comme suit :
On poursuit un chemin dans le graphe jusqu'à un cul-de-sac ou alors jusqu'à
atteindre un sommet déjà visité. Il revient alors sur le dernier sommet où on
pouvait suivre un autre chemin puis explore un autre chemin.
L'exploration s'arrête quand tous les sommets depuis S ont été visités. Bref,
l'exploration progresse à partir d'un sommet S en s'appelant récursivement pour
chaque sommet voisin de S.

Le nom d'algorithme en profondeur est dû au fait que, contrairement à


l'algorithme de parcours en largeur, il explore en fait « à fond » les chemins un
par un : pour chaque sommet, il marque le sommet actuel, et il prend le premier
sommet voisin jusqu'à ce qu'un sommet n'ait plus de voisins (ou que tous ses
voisins soient marqués), et revient alors au sommet père.
Si G n'était pas un arbre, l'algorithme pourrait a priori tourner indéfiniment si on
continuait l'exploration depuis un sommet déjà visité. Pour éviter cela, on
marque les sommets que l’on visite, de façon à ne pas les explorer à nouveau.

Recherche en profondeur

13
2) L’algorithme de recherche en largeur

Principe
Dans ce type de recherche, on part du point du départ (état initial) vers un point
d’arrivée (état final) en empruntant d’abord les niveaux, on part du niveau 1, si
le but n’est pas atteint, on poursuit la recherche en passant vers le niveau
adjacent, et ainsi de suite.

Lorsque on se trouve à la fin d’un niveau, alors que la solution n’est pas encore
atteinte, en descend d’une position (le niveau prochain) dans la première
branche, sinon, si le but est atteint, soit on arrête si la solution est unique, soit on
continue de la même manière que précédemment pour atteindre d’autres
solutions si elles existent. L’arrêt du processus de recherche se terminera ainsi :

1) Si la solution est unique, dès qu’une solution est trouvée par cet algorithme,
alors succès.
2) Si la solution n’est pas unique, l’algorithme se poursuivra jusqu’à ce qu’il
parcourt l’arbre en entier.
La figure ci-après schématise ces scénarios :

Recherche en largeur
14
3) L’algorithme de recherche A*
Principe
Lorsque l'espace des états est trop grand, certaines informations pour la
résolution d'un problème (dans un domaine particulier) peuvent être utilisées
pour aider à réduire l’espace de recherche. Des informations de ce type sont
appelées des informations heuristiques.
L'algorithme A* est un algorithme de recherche de chemin dans un graphe entre
un nœud initial et un nœud final.

Il utilise une évaluation heuristique sur chaque nœud pour estimer le meilleur
chemin y passant, et visite ensuite les nœuds par ordre de cette évaluation
heuristique. C'est un algorithme simple, ne nécessitant pas de prétraitement, et
ne consommant que peu de mémoire.

2.3 Le moteur d’inférence

Un moteur d’inférence est un composant du système qui applique des règles


logiques à une base de connaissances pour en déduire des informations
nouvelles.
Les premiers moteurs d'inférence étaient des composants de systèmes experts.
Le système d’expert typique consistait en une base de connaissances et un
moteur d'inférence.

La base de connaissances stocke des faits sur le monde. Le moteur d'inférence


applique des règles logiques à la base de connaissances et en déduit de nouvelles
connaissances. Ce processus serait répété car chaque nouveau fait de la base de
connaissances pourrait déclencher des règles supplémentaires dans le moteur
d'inférence. Les moteurs d'inférence fonctionnent principalement selon l'un des
modes: chaînage avant, chaînage arrière ou chainage mixte. Le chainage mixte
est rarement utilisé vu sa complication.
Le chaînage avant commence par les faits connus et affirme de nouveaux faits.
et poursuit son raisonnement jusqu’à l’atteinte du but recherché, ou alors un
échec si le but n’est pas atteint. Le chaînage arrière quant à lui commence avec
des objectifs, et fonctionne en arrière pour déterminer quels faits doivent être
affirmés pour que les objectifs soient atteints.

15
Structure d’un système expert

16
Exemple1
Soit la Base de faits initiale BF= {H, K} ET le but {C}
La base de règles est :
• R1 : A --> E
• R2 : B --> D
• R3 : H --> A
• R4 : EG --> C
• R5 : EK --> B
• R6 : DE et K --> C
• R7 : GK et F --> A
Essayez de montrer le fait C par chainage avant ?? Dans ce cas, le moteur
d’inférence raisonne en mode ‘Chainage avant’ pour montrer que le fait C est
vrai. Autrement dit : A partir des éléments de la base de faits initiale, le moteur
d’inférence essaye d’induire de nouveaux faits jusqu’à atteindre le but
recherché, c’est-à-dire le fait C.

Exemple2
Dans l’exemple suivant, le moteur d’inférence procède par chainage arrière :

17
Chapitre 3 Connaissance et représentation de la
connaissance
La représentation des connaissances constitue un enjeu majeur en intelligence
artificielle. En effet, la façon de représenter les connaissances associées à un
problème considéré peut faire en sorte que sa résolution soit plus ou moins
facile. De façon générale, l’utilisation de plusieurs modes de représentation des
connaissances permet une mise en œuvre plus efficace des outils de traitement
des connaissances dans le cadre de la résolution de problèmes spécifiques.
On définit la connaissance ou les connaissances comme ce qu’on a appris par
l’étude ou par la pratique et l’expérience.

Dans le but de résoudre des problèmes complexes qui relèvent de l’intelligence


artificielle, il faut un bon bagage de connaissances et des outils de manipulation
de ces connaissances.
Les connaissances concernent des faits, considérés vrais dans un certain monde.
Pour représenter ces faits on a recours à un formalisme ou mode de
représentation.
Au niveau des faits, on traitera des objets et des relations qu’ils entretiennent.
Au niveau du formalisme, on définira des symboles et des opérations sur ces
symboles. Le langage naturel est un outil très informel pour représenter les
connaissances. L’arithmétique et la logique, plus formels, sont aussi des outils
de représentation de cette connaissance.
Exemple :

Autre que ces formalismes de représentation des connaissances en IA, Il existe


d’autres formalismes qui sont :

1. Les réseaux sémantiques


Un réseau sémantique, ou réseau de trames, est une base de connaissances qui
représente les relations sémantiques entre les concepts d’un réseau. Ceci est
souvent utilisé comme une forme de représentation des connaissances en IA.

18
Il s'agit d'un graphe dirigé (orienté) qui est constitué de nœuds représentant des
concepts et d’arêtes (arcs) représentant des relations sémantiques entre concepts.
Les réseaux sémantiques sont utilisés dans des applications de traitement du
langage naturel telles que l'analyse sémantique et la désambiguïsation du sens
des mots.

Exemple :

Réseau sémantique des mammifères

Exercice Construire un réseau sémantique représentant les informations


suivantes :

. Ali, élève du CEM, 15 ans.


. Farid, élève de 4ieme , 9 ans.
. Djamel, élève du Lycée, 18 ans.
. Malika, élève du Lycée, 17 ans.
. Said, élève du CEM, 14 ans.
. Samira, élève du Lycée, 18 ans.
Utiliser le concept commun : ‘Personne’

19
Les réseaux sémantiques se distinguent par :

1) la représentation de connaissances diverses et des aspects sémantiques de la


langue naturelle,
2) des traitements du type algorithmique et programmation de graphes,
3) la visualisation sous une forme graphique de ces connaissances.

Le réseau sémantique d’un problème donné est construit en suivant les


directives ci-après:

- On lit d’abord tout le texte pour repérer les objets et les relations. En effet, leur
réutilisation d’une phrase à l’autre permet de mettre en évidence leur utilité.

- On sépare les propositions atomiques et on les met sous forme tabulaire.

- On dessine successivement les parties de réseau correspondant aux


propositions atomiques.

- Éventuellement, on revient sur les choix effectués et on rectifie le réseau.

Prolog et réseaux sémantiques

Exercice
a. Convertir le réseau sémantique de l’exercice précédent en prolog.
b. Quelles requêtes poser à prolog pour savoir quels sont les lycéens ?

20
2. Les réseaux de neurones
Les réseaux de neurones artificiels (RNA) sont des outils de l’intelligence
artificielle utilisés aussi bien pour la modélisation de systèmes, que pour la
classification de données.

Les réseaux de neurones fonctionnent en répartissant les valeurs des variables


dans des automates (les neurones). Ces unités sont chargées de combiner entre
elles leurs informations pour déterminer la valeur du paramètre de
discrimination. C’est de la connexion de ces unités entre elles qu’émerge la
capacité de discrimination du RNA. Chaque neurone reçoit des informations
numériques en provenance de neurones voisins ; à chacune de ces valeurs est
associé un poids représentatif de la force de la connexion.
Chaque neurone effectue localement un calcul dont le résultat est transmis
ensuite aux neurones avals.

La famille de réseau majoritairement employé est le perceptron multi-couches


(MLP : Multi-Layer-Perceptron). À lui seul ce type de réseau recouvre plus de
95 % des applications scientifiques et industrielles. Il comporte quelques
dizaines à quelques centaines de neurones dans les cas usuels, voir plusieurs
milliers pour les applications graphiques.

Le MLP est un modèle de réseau à propagation par couche (voire la figure ci-
après). Les neurones y sont organisés en couches successives : une couche
d’entrée, une couche de sortie et entre les deux une ou plusieurs couches
intermédiaires, appelées aussi couches cachées. Il n’existe pas de connexion
entre les neurones d’une même couche, en revanche tout neurone d’une couche
est connecté à tous les neurones de la couche suivante. La « couche » d’entrée
n’est pas une réelle couche de neurones car elle se contente de coder les
variables d’observation. La couche de sortie code la variable de discrimination.
Les valeurs d’activité des neurones sont propagées dans le réseau, de l’entrée
vers la sortie, sans retour arrière. La présence d’une couche cachée permet de
modéliser des relations non linéaires entre les entrées et la sortie.

En théorie une seule couche cachée suffit, mais le fait de disposer d’une seconde
couche cachée permet de modéliser plus facilement une fonction de
discrimination non continue. En pratique, la plupart des problèmes sont résolus
avec un ou deux niveaux, trois au maximum.

21
Perceptron Multi-couches (MLP)

L’objectif général d’un RNA est de trouver la configuration des poids de


connexion entre neurones pour qu’il associe à chaque configuration d’entrée,
une réponse adéquate. L’utilisation d’un RNA se fait en deux temps. Tout
d’abord une phase d’apprentissage qui est chargée d’établir des valeurs pour
chacune des connexions du réseau, puis une phase d’utilisation proprement dite,
où l’on présente au réseau une entrée et où il nous indique en retour « sa » sortie
calculée.

Dans le cas du MLP, on utilise un apprentissage supervisé. Les valeurs des poids
de connexion sont créées tout d’abord au hasard et le système cherche par
itérations successives à obtenir une modélisation des données. A chaque étape,
une entrée est présentée au réseau, il propage ces valeurs vers les neurones de
sortie. Cette sortie calculée est comparée avec la réponse attendue et le système
modifie les poids en conséquence. Cette altération des connexions est obtenue
par l’algorithme de rétropropagation du gradient d’erreur. Ce calcul est chargé
de rétropropager dans le réseau les erreurs constatées sur les sorties. En théorie,
on ne peut jamais être sûr que cet algorithme finisse par déterminer un ensemble
de poids convenable pour tous les couples d’entrées-sorties.

22
En pratique, on ne construit pas un seul RNA, mais plusieurs modèles en jouant
sur les paramètres de cet algorithme, et en cherchant à obtenir un modèle qui
colle au mieux aux données.

L’élaboration d’un RNA, quelle que soit son architecture, requiert une certaine
expérience. C’est la raison pour laquelle la collaboration avec des spécialistes
est la démarche la plus souhaitable, que ce soit pour superviser l’utilisation de
logiciels simples, tels que SPSS©, MATLAB©, STATISTICA© qui proposent
des modules de RNA, ou pour l’élaboration de RNA à partir de logiciels plus
sophistiqués. L’application des réseaux de neurones artificiels étant en plein
essor dans tous les domaines de la recherche, cette interdisciplinarité est
facilement envisageable. Les réseaux de neurones artificiels constituent donc un
outil de traitement des données qui, au même titre que les statistiques
traditionnelles, peut s’appliquer dans le domaine de l’anthropologie biologique,
les relations complexes entre variables ne manquant pas dans ce domaine.

Ils ne constituent pas le remède miracle, mais ils sont une alternative possible
aux approches statistiques courantes qui ne sont pas toujours adaptées à nos
problématiques.

Nous présentons dans ce chapitre, quelques résultats de simulation obtenus en


utilisant les réseaux de neurones, plus particulièrement, le perceptron
multicouche. Une problématique importante se situe au niveau de la
configuration des réseaux de neurones de type MLP (nombre de couches
cachées, nombre de neurones par couche, pas du gradient,…etc.) dont la théorie
est inexistante jusqu’à ce jour. C’est un domaine de recherche largement ouvert.
Mais une nouvelle technique (heuristique) provenant des plans d’expérience
permettrait toutefois d’optimiser la configuration d’un réseau de neurones selon
le contexte du problème.

Comme nous l’avons souligné dans le chapitre II, un réseau de neurone de type
MLP comportant une seule couche cachée est en mesure de réaliser de bons
résultats en classification.

23
En ce qui nous concerne, nous avons effectué plusieurs expériences, afin de
dégager la meilleure configuration du réseau.

4.2 Utilisation d’un réseau de neurones pour la classification de données

Nous présentons dans ce chapitre, quelques résultats de simulation obtenus en


utilisant les réseaux de neurones, plus particulièrement, le perceptron
multicouche. Une problématique importante se situe au niveau de la
configuration des réseaux de neurones de type MLP (nombre de couches
cachées, nombre de neurones par couche, pas du gradient,…etc.) dont la théorie
est inexistante jusqu’à ce jour.

C’est un domaine de recherche largement ouvert.

Mais une nouvelle technique (heuristique) provenant des plans d’expérience


permettrait toutefois d’optimiser la configuration d’un réseau de neurones selon
le contexte du problème. Un réseau de neurone de type MLP comportant une
seule couche cachée est en mesure de réaliser de bons résultats en classification.

En ce qui nous concerne, nous avons effectué plusieurs expériences, afin de


dégager la meilleure configuration du réseau.

Pour la génération des données d’apprentissage, nous avons utilisé la fonction de


MATLAB « randn(n) », qui permet de générer les coordonnées d’un tirage
aléatoire de n éléments de dispersion 1 et du centre (0. 0) d’une base complexe
de type gaussienne. Deux classes sont générées : La classe des o et la classe
des +. Les programmes sont écris avec le langage MATLAB

La figure suivante illustre un nuage de points réparti en deux classes :

24
Génération de deux classes selon une distribution gaussienne

RESULTATS OBTENUS AVEC UN MLP


Pour la séparation des exemples de la base d’apprentissage en deux classes
(l’exemple-type est présenté sur la figure-4.1), nous avons utilisé un réseau de
neurones de type perceptron multicouche (MLP), de la manière suivante : Une
fois les poids et les biais du réseau sont calculés pour chaque couche, on génère
une trame (grille de cordonnées :u=[-10 10] et v=[-10 10] ) et calculer pour
chaque point, la sortie du système. Ensuite on calcule tous les points
correspondant à la sortie 0 plus ou moins 0.1. Ces points correspondent à la
frontière des deux classes.

Deux approches sont adoptées :

● Première approche : Utilisation du toolbox «Neural Network » de


MATLAB.

25
● Deuxième approche : Programmation classique, c'est-à-dire sans utiliser le
toolbox.

Résultats obtenus avec la première approche

La fonction utilisée pour la création du réseau est de la forme:

Net = newff(minmax(P),[a,b],{ 'F1', 'F2'},'A')

Net : Objet identifiant le réseau.

newff : Fonction permettant de créer un objet réseau de neurones avec une


seule couche cachée.

P : Vecteur d’entrée à deux dimensions.

[a,b] : a est le nombre de neurones de la couche cachée, b est le nombre de


neurones de la couche de sortie.

F1, F2 : Sont des fonctions d’activation de la couche cachée et la couche de


sortie respectivement.

A : Algorithme d’apprentissage utilisé.

La commande : Net = newff(minmax(P),[10,1],{ 'tansig', 'tansig'},' traincgf'),


permet donc de créer un réseau de neurones avec une seule couche cachée
comportant 10 neurones, une couche de sortie. Les fonctions d’activations
utilisées sont des tangentes hyperboliques, aussi bien pour la couche cachée, que
pour celle de sortie. L’algorithme d’apprentissage utilisé est « le gradient
conjugué ». Les résultats obtenus en utilisant un tel réseau, sont donnés sur la
figure ci-après :

26
Séparation de deux classes par un MLP en utilisant le toolbox"Neural
Network" avec une tangente hyperbolique comme fonction d’activation du
neurone de sortie

Résultats obtenus avec la seconde approche

Dans cette approche, nous avons utilisé la programmation classique avec


MATLAB et avec ces paramètres :

1- Une seule couche cachée


2- 7 neurones pour la couche cachée
3- 1 neurone pour la couche de sortie
4- Tangentes hyperboliques pour les fonctions d’activation des neurones
cachés et le neurone de sortie
5- Pas d’apprentissage k=0.00051

27
Les résultats obtenus sont décrit sur la figure suivante :

Séparation de deux classes par un MLP sans utiliser le toolbox « Neural


Network »

28

Vous aimerez peut-être aussi