Le terme d'Intelligence Artificielle traduit la faculté, non naturelle pour un ordinateur, de simuler les activités humaines, particulièrement en ce qui concerne l'aptitude au raisonnement.
Les différents domaines d'étude en Intelligence Artificielle peuvent être classes de la façon suivante :
- Démonstration automatique de théorèmes,
- Synthèse et preuve de programmes,
- Reconnaissance du langage naturel,
- Vision par ordinateur,
- Systèmes Experts.
Ce dernier point est le plus vaste et et le plus représentatif de la notion d'Intelligence Artificielle.
Ses applications sont diverses, les Systèmes Expert sont particulièrement utilises dans des domaines tels que :
- Chimie, biologie, géologie,
- Mathématiques, physique,
- Médecine,
- Informatique (les annuaires y compris --> On va pouvoir jouer si vous comprenez la suite).
Pour qu'un tel système soit efficace, il faut que ses connaissances soient limitées à un domaine particulier.
Il existe quelques Systèmes Experts dignes de ce nom :
- MYCIN/THYRESIA --> Maladies infectieuses,
- META-DENDRAL --> Chimie organique,
- SU/X --> Exploration spatiale,
- APE --> Système de programmation LISP,
- MECHO --> Résolution de problèmes mécaniques.
Il y en a d'autres...
Pour créer un systeme expert, il est nécessaire de savoir expliquer son raisonnement, de pouvoir dialoguer avec l'expert humain et que le système puisse avoir accès à sa connaissance.
Celle-ci devant être extérieure au corps du programme, sous la forme d'une Base de Données appelée Base de Connaissance.
La Base de Connaissances est généralement scindée en deux parties complémentaires :
- Base de Règles,
- Base de Faits (contenant la connaissance particulière à la matière étudiée).
Les Règles sont de la forme :
SI (PREMISSE) ALORS (CONSEQUENT)
Le programme charge de gérer et d'utiliser les règles de manière à constituer un raisonnement est appelé "MOTEUR D'INFERENCES".
Sont associes à ce programme les modules de dialogue et d'explication.
==> Pour MYCIN, THYRESIAS est le module de dialogue et d'explication.
Il y a quelques années, en 1983, pour être précis, j'ai écrit un Système Expert (je sais donc de quoi je parle) qui traitait de Mathématiques et (p*tain de hasard) de Météo !
Oui - oui, un VRAI Système Expert avec interface de dialogue et tout et tout...
Puisque j'y suis, je vais vous expliquer comment ca marche... Bah oui, cela peut servir et peut donner des idées...
On y va...
Fonctionnement d'un Moteur d'Inférences :
- Evaluations d'arbres (finis et infinis) a l'aide de règles enchainées de manière à obtenir un raisonnement correct, dans lequel les n?uds représentent les faits et les arcs représentent les règles à utiliser (je pense que la, certains sont déjà perdus, mais je ne peux pas redévelopper ici certaines notions élémentaires de mathématiques [théorie des graphes]).
Je continue pour ceux qui ont les bases nécessaires et qui ont compris...
Les NOEUDS peuvent être soit de type ET soit de type OU (bah oui, c'est [par exemple] la base d'un préprocesseur [tel PHP])
Les modes d'évaluation de ces graphes sont :
- chainage avant,
- chainage arrière,
- chainage mixte.
La méthode de chainage avant est la plus naturelle :
BEGIN : Sélection de la (ou des) règle(s) applicable(s) --> CHOIX DE LA REGLE --> Déclenchement de la Règle --> RETURN to BEGIN
Le chainage arrière :
Lorsque le BUT (fait à démontrer) est connu, il est évident que les règles à examiner en premier sont celles qui le comprennent comme CONSEQUENT. Lorsqu'une règle est choisie, les PREMISSES sont examines. Si les PREMISSES sont faux, on choisit une autre règle, sinon, on cherche à les démontrer en utilisant la même méthode.
Le chainage mixte :
Il fait appel aux deux méthodes précédentes. Elles sont combinées et généralisées. Il est aussi possible de faire appel à la technique de META-REGLES qui permet d'éviter l'explosion combinatoire.
Représentation des connaissances :
Objets de la BASE de FAITS :
- Entités logiques :
--> Propositions,
--> Prédicats du 1er ordre.
- Entités discrètes ou numériques.
Une base de faits peut être construite de plusieurs manières différentes. Il est possible de concevoir la BDF suivant la LOGIQUE des PROPOSITIONS, la LOGIQUE d'ORDRE 1 ou d'ordres supérieurs...
Logique des propositions : MOTEUR d'ORDRE 0 (zéro).
Elle est construite à partir de la syntaxe suivante (voir dans mon post précédent) :
REGLE : SI prémisse ALORS conséquent
Logique d'ordre 1 : avec notion de filtrage.
Elle est basée sur l'appairage des PREMISSES avec les FAITS. Ce sont les clauses de Horn :
La partie CONSEQUENT est limitée à un seul PREDICAT.
Ce sont ces types de clauses que manie PROLOG.
Leur principe de résolution est basé sur l'inférence logique : P inter (not)P => Clause vide.
Fonctions Booléennes :
Proches de la Logique des Propositions, elles sont représentées sous la forme de symboles fonctionnels qui expriment la fonction (booléenne) à appliquer. Apparait ici la notion d'ATTRIBUT utilisée dans les MOTEURS de type 1.
(AND, OR, XOR, NOT et toutes combinaisons possibles + Union, Inclusion, Intersection, Exclusion, Appartenance a un ensemble, a une structure [groupe, anneau... Ensembles {réels, rationnels ou complexes, chaines, listes} finis et infinis], etc.)
Les langages de l'Intelligence Artificielle :
Les langages principalement utilisés sont les suivants :
- LISP,
- Prolog,
- Pascal,
- ADA,
- Logo.
On peut bien sur utiliser d'autres langages tels que :
- BASIC (s'il a des fonctions de structure),
- C / C++,
- PHP
Et encore d'autres...
Un exemple : Structure de Prolog :
- Arbres finis et infinis,
- Résolution des équations et inéquations,
- Assertions.
La Machine Prolog :
- Cellule suite de règles,
- Cellule temps (indice du couple en cours),
- Infinité de cellules :
--> Buts(i) : suite de termes (Ui),
--> Système(i) : Système "Si",
--> Règles(i) : règles actives à l? instant i.
Exemple de Moteur :
SYSTEX est le premier Moteur d'Inférences qui ait été réalise par Bernard Fondrillon et moi-même.
Il n'avait pas la prétention d'être une référence dans le domaine du Système Expert, bien au contraire, il ne constituait qu'une approche simpliste de ce type de logiciel.
Le Moteur :
SYSTEX a été écrit en LISP et présente les caractéristiques suivantes :
- Chainage avant,
- Chainage arrière,
- Logique des propositions,
- Logique des prédicats du 1er ordre,
- Utilisation des attributs,
- Evaluation probabiliste des faits et des conséquents,
- Fonctionnement sur prédicats LISP Uniquement.
Une interface en langage naturel (EMOT, comprenant des rudiments d'anglais et de français) était capable de traduire des phrases simples en prédicats LISP et inversement. C'était le programme de dialogue et d'explication.![]()
Alain dit Jesus II (merci Seb)
PS : Pour résumer :
Un Système Expert type est constitue de :
- Base de Connaissance :
--> Base de Faits (les choses connues dans le domaine étudié),
--> Base de Règles (les interactions, les possibilités et les impossibilités [si x alors y {ou z... Mais pas k,...}]).
- Moteur d'inférences (le programme de calcul et d'évaluation des listes de prédicats),
- Programme de dialogue (interface homme-machine),
- Programme d'explication (qui fournit les étapes du raisonnement du moteur, des hypothèses à la conclusion).
(ces deux derniers peuvent être réalisés à partir du même algorithme)
Hors ligne
Dis moi Crazy, SYSTEX était une étude faite quand tu bossais dans un cadre militaire, tu crois qu'il y a prescription pour en parler ?
Pour le plaisir, je te rappelle la résolution du problème des tours de Hanoï en IA. Ici, le language utilisé est l'excellent Visual Prolog
(environnement graphique Windows) :
******************************************************************************/
Implement hanoi
Constants
className = "hanoi".
classVersion = "Version 1.0".
Clauses
classInfo(className, classVersion).
Domains
loc = right; middle; left.
Class predicates
hanoi : (unsigned NumberOfDisks) procedure (i).
Clauses
hanoi(N) :-
N <= 0,
!,
stdIO::write("<p>You must enter positive number.").
hanoi(N) :-
move(N, left, middle, right).
Class predicates
move : (unsigned NumberofDisks, loc Left, loc Middle, loc Right) procedure (i,i,i,i).
Clauses
move(1, A, _, C) :-
!,
inform(A, C).
move(N, A, B, C):-
N1 = N-1,
move(N1, A, C, B),
inform(A, C),
move(N1, B, A, C).
Class predicates
inform : (loc From, loc To) procedure (i,i).
Clauses
inform(Loc1, Loc2):-
stdIO::write("Move a disk from ", Loc1, " to ", Loc2, "<br>").
Class predicates
runme : (core::namedValue_list List) procedure (i).
Clauses
runme(Parmlist) :-
core::string(Value) = namedValue::tryMapLookUp(Parmlist, "nd"),
trap(NumberOfDisks = toTerm(Value), _, fail),
!,
hanoi(NumberOfDisks).
runme(_) :-
stdIO::write("<p>Error while executing Hanoi.exe").
Clauses
run() :-
cgi::init(stream::ansi(core::ansi)),
stdIO::write("Content-type: text/html\n\n<html><body>"),
ParmList = cgi::getParamList(),
runme(ParmList),
stdIO::write("</body></html>").
End implement hanoi
Goal
console::init(),
mainExe::run(hanoi::run).
Hors ligne
Si j'en parle, c'est que je le peux (le projet [réalisé dans le cadre du Ministère] n'avait rien de militaire à la base)...
Et je n'ai fourni auncun code source... Je crois n'avoir seulement parlé que de généralités...
[Vous devez être identifié pour voir le texte caché.]
Alain AKA Arma
Hors ligne
J'ai rien lu c'est trop long, ![]()
Hors ligne
Mais que fait la PM ![]()
Hors ligne
|
© 2006-2012 / A. G.☺ CiGi€M@®, 1997-2012 |
|
Reproduction totale ou partielle strictement interdite |