Logique floue
La logique floue (fuzzy logic, en anglais) est une logique polyvalente où les valeurs de vérité des variables — au lieu d'être vrai ou faux — sont des réels entre 0 et 1. En ce sens, elle étend la logique booléenne classique avec des valeurs de vérités partielles[Quoi ?][1]. Elle consiste à tenir compte de divers facteurs numériques pour aboutir à une décision[pourquoi ?] qu'on souhaite acceptable.
Introduction
Par ses aspects numériques, la logique floue s'oppose aux logiques modales.[réf. souhaitée]
Formalisée par Lotfi Zadeh en 1965, outil de l'intelligence artificielle, elle est utilisée dans des domaines aussi variés que :
- l'automatique (freins ABS, conduite de processus),[réf. souhaitée]
- la robotique (reconnaissance de formes),[réf. souhaitée]
- la gestion de la circulation routière (feux rouges),[réf. souhaitée]
- le contrôle aérien (gestion du trafic aérien),[réf. souhaitée]
- l'environnement (météorologie, climatologie, sismologie, analyse du cycle de vie),[réf. souhaitée]
- la médecine (aide au diagnostic),[réf. souhaitée]
- l'assurance (sélection et prévention des risques)[réf. souhaitée] et bien d'autres.[réf. souhaitée]
Elle est formalisée par une théorie mathématique des ensembles flous de Lotfi Zadeh qui présente une extension de la théorie des ensembles classiques aux ensembles définis de façon imprécise.
Partant d'un concept de fonction d'appartenance à valeur dans [0, 1], Lotfi Zadeh :
- redéfinit ce qu'est un sous-ensemble d'un univers donné,
- bâtit un modèle complet de propriétés et de définitions formelles,
- montre que cette théorie des sous-ensembles flous se réduit à la théorie des sous-ensembles[Quoi ?] classiques dans le cas où les fonctions d'appartenance ne prennent que les valeurs binaires[Quoi ?] de {0,1}.
La logique floue présente l'intérêt d'être aisée à implémenter, sans prétendre à la rigueur d'une logique probabiliste (qui elle aussi admet des valeurs de vérité sur l'intervalle [0,1]), bien que cette dernière seule soit stricto sensu cohérente (voir Théorème de Cox-Jaynes). Par exemple la courbe Ev(p) peut être remplacée par trois segments de droite sans perte excessive de précision pour beaucoup d'applications considérées ci-dessus.[réf. nécessaire]
Principe
Assouplissant[Comment ?] l'algèbre de Boole, la logique floue remplace la valeur de vérité d'une proposition à choisir dans {vrai,faux} par un degré de vérité, à choisir par exemple dans [0, 1]. En logique floue, il y a donc des degrés dans la satisfaction d'une condition.
Un exemple simple et ancien est la docimologie, c'est-à-dire l'évaluation des élèves d'une classe : dans chaque discipline, celui-ci est évalué par une note entre 0 (mauvais) et 20 (exceptionnel) et on estime le niveau de l'élève pour telle ou telle orientation par une pondération de ces notes avec divers coefficients selon l'orientation considérée.
Propriétés
Prenons l'exemple de la vitesse d'un véhicule sur une route où la vitesse normale est de 90 km/h. La vitesse est considérée élevée au-dessus de 100 km/h et réglementaire en dessous de 80 km/h. On souhaite caractériser la vitesse du véhicule en répondant par exemple à la question « La vitesse est-elle élevée ? ».
fig. 1 |
Dans ce modèle de réglementation routière, en logique booléenne, la réponse à la question s'énonce de la manière suivante (voir fig. 1) :
- La vitesse est élevée à 100 % au-dessus de 100 km/h et à 0 % en dessous.
En logique floue, on autorise différents degrés d'énoncés de réponse à la question « La vitesse est-elle élevée ? » (voir fig. 2) :
- La vitesse est réglementaire en dessous de 80 km/h. On peut donc dire qu'en dessous de 80 km/h, la vitesse est élevée avec un taux de confiance de 0 %.
fig. 2 |
- La vitesse est élevée au-dessus de 100 km/h. La vitesse est non réglementaire avec un taux de confiance de 100 % au-dessus de 100 km/h.
- Aux stades intermédiaires, on considère que la vitesse est non réglementaire à 50 % de confiance à 90 km/h et à 25 % de confiance à 85 km/h.
De même, on peut définir une fonction correspondant à la question « La vitesse est-elle peu élevée ? » de la manière suivante (voir fig. 3) :
- La vitesse est peu élevée en dessous de 80 km/h. Elle est donc peu élevée à 100 %.
fig. 3 |
- La vitesse est considérée comme pas du tout peu élevée au-dessus de 100 km/h. Elle est donc peu élevée à 0 %.
- La vitesse est donc peu élevée à 50 % à 90 km/h, et à 25 % à 95 km/h.
On peut aussi définir une fonction correspondant à la question « La vitesse est-elle moyenne ? » (voir fig. 4) :
- La vitesse est moyenne à 90 km/h. À cette allure, la vitesse est moyenne à 100 %.
fig. 4 |
- La vitesse n'est pas du tout moyenne en dessous de 80 km/h et au-dessus de 100 km/h. Hors de cet intervalle, la vitesse est moyenne à 0 %.
- La vitesse est donc moyenne à 50 % à 85 km/h et 95 km/h.
Il n'est pas obligatoire que la transition soit linéaire. Des transitions hyperboliques (comme une sigmoïde ou une tangente hyperbolique), exponentielle, gaussienne (dans le cas d'un état moyen) ou de toute autre nature sont utilisables (voir fig. 5).
fig. 5 |
Relations
Le degré de vérité d'une relation floue entre deux ou t objets est le degré d'appartenance de la paire ou du t-uple à l'ensemble flou associé à la relation.
Soit la relation est1 (est-un/est-une). Pour dire que toute chaise est un meuble et que 30 % des meubles sont des chaises, on accordera un degré de vérité de 1 à est1(chaise, meuble) et un degré 0,3 à est1(meuble, chaise).
La connaissance topographique qu'un agent possède d'un monde clos pourra s'appuyer sur l'attribution de degrés de vérité à une relation du style x est_plus_près_de y que_de z, construite et/ou affinée par apprentissage.
De façon générale, les relations floues permettront de coder des connaissances graduées, empiriques ou typiques, acquises directement ou par des heuristiques, des inductions...
Combinaison d'énoncés
Dans le cas d'une combinaison d'énoncés (pour exemple : « Si le ciel est bleu et si j'ai le temps »), trois cas se présentent :
- Les énoncés sont liés par un « ET » : dans ce cas, on peut assigner à cette conjonction le degré de vérité le plus faible. En fait, il suffit de choisir un opérateur tel que où est appelée une t-norme. est la plus optimiste des t-normes.
- Les entrées sont liées par un « OU » : dans ce cas, on peut assigner à cette adjonction le degré de vérité le plus élevé. En fait, il suffit de choisir un opérateur tel que où est appelée une t-conorme. est la plus pessimiste des t-conormes.
- Un ou plusieurs énoncés peuvent être niés. Dans ce cas, pour garder un maximum de propriétés logiques on associe à la négation le complément du degré de vérité de l'énoncé.
Premier système
En définissant les opérateurs logiques de base de la façon suivante[2]:
il devient possible de représenter toutes les opérations logiques de base en logique floue :
Opérateur | Abréviation | Application |
---|---|---|
OU | OR | A OU B [[3]] |
ET | A ET B | |
NON | NON A | |
OU Exclusif | OUEX | A OUEX B [réf. nécessaire] |
NI | NON-OU | A NI B |
ON | NON-ET | A ON B |
EQV | NON-OUEX | A EQV B |
REPETEUR | REP | REP A |
- Propriétés et limitations
- Ce système conserve de nombreuses propriétés booléennes, mais pas la non contradiction :
- si a pour degré de vérité , a pour degré de vérité et leur conjonction , à valeur dans ...
Deuxième système
Par ailleurs, la dimension numérique des variables de la logique floue permet d'utiliser d'autres opérations :
- Le produit : A × B pour ET (ce qui fait perdre l'idempotence : A ET A devient alors une interprétation de très A);
- La composition : A + B - A × B pour OU (la simple addition dépasserait les bornes de l'intervalle [0 1] dans certains cas)[4].
- En conservant NON(v)=1-v, on garde encore de nombreuses propriétés logiques.
Autres systèmes
Pour combattre certains problèmes d'inférence, on peut vouloir un opérateur ET plus dur, associant à l'opération A ET B, le degré .
- Dans un tel cas, OU et NON doivent être choisis de façon à conserver ou non certaines propriétés, par exemple pour sécuriser les raisonnements.
- On trouvera dans la Théorie des Possibilités (op. cit.) les relations entre axiomes logiques souhaités et équations fonctionnelles que doivent respecter les opérateurs correspondants.
On peut même changer l'espace de vérité, en préférant par exemple [-1 +1] pour certaines propriétés bipolaires.
Opérateurs flous
Les opérateurs flous peuvent être définis de diverses manières, dès lors qu'ils dotent, selon Goguen, l'espace de vérité choisi d'une structure de treillis, souhaitable pour le ET et le OU, treillis de préférence complémenté pour un NON involutif.
Les familles paramétriques d'opérateurs flous permettront à un même moteur d'inférence d'incarner des logiques plus ou moins strictes. Une même application pourra ainsi faire appel à des implémentations différentes judicieusement choisies selon le contexte.
L'exemple ci-dessous montre à travers 3 modes de résolution l'influence du choix des opérateurs, au-delà d'une approche naïve d'un problème.
Exemple d'utilisation
Cet exemple montre comment combiner des opérateurs flous de divers types à travers le problème « confirmer l'appartenance d'une personne à un groupe » :
- Énoncé
- Une personne sera plus ou moins membre (à un niveau fzMembre, compris entre 0 et 1, inclusivement) d'un groupe, disons les flower lovers, soit si, pour n'importe quelle raison, elle en fait déjà plus ou moins partie (à un niveau fzDejaMembre),
- soit si elle a une assez bonne connaissance des orchidées (fzConnaitOrchidees)
- et que la connaissance des orchidées
- est un critère assez déterminant (fzOrchideesAmis) d'appartenance au groupe des flower lovers.
Solution 1
fzMembre = Zadeh_OR(fzDejaMembre, Multiply_AND(fzConnaitOrchidees, fzOrchideesAmis))
-
Zadeh OR
-
Multiply AND
(Paraboloïde hyperbolique)
- Implémentation
fzMembre = max(fzDejaMembre, (fzConnaitOrchidees * fzOrchideesAmis))
pour fzDejaMembre=0 (faux), fzConnaitOrchidees=0.778 et fzOrchideesAmis=0.9, on trouve 0.7 pour fzDejaMembre=0.7, fzConnaitOrchidees=0.8 et fzOrchideesAmis=0.9, on trouve 0.72 pour fzDejaMembre=0.72, fzConnaitOrchidees=0.8 et fzOrchideesAmis=0.9, on retrouve 0.72 pour fzDejaMembre=0.72, fzConnaitOrchidees=0.5 et fzOrchideesAmis=0.9, on conserve 0.72 (ce qui est le résultat vraisemblablement attendu)
Solution 2 - Utilisation des seuls opérateurs de Zadeh
Une solution qui n'utiliserait que les opérateurs de Zadeh serait :
fzMembre = Zadeh_OR(fzDejaMembre, Zadeh_AND(fzConnaitOrchidees, fzOrchideesAmis))
-
Zadeh OR
-
Zadeh AND
- Implémentation
fzMembre = max(fzDejaMembre, min(fzConnaitOrchidees, fzOrchideesAmis))
pour fzDejaMembre=0 (faux), fzConnaitOrchidees=0.778 et fzOrchideesAmis=1 (vrai), on trouve 0.778 pour fzDejaMembre=0 (faux), fzConnaitOrchidees=0.778 et fzOrchideesAmis=0.9, on trouve aussi 0.778 (ce qui est trop élevé) pour fzDejaMembre=0.778, fzConnaitOrchidees=0.8 et fzOrchideesAmis=0.9, on trouve 0.8 pour fzDejaMembre=0.8, fzConnaitOrchidees=0.8 et fzOrchideesAmis=0.9, on retrouve 0.8 pour fzDejaMembre=0.8, fzConnaitOrchidees=0.5 et fzOrchideesAmis=0.9, on conserve 0.8 (ce qui est stable mais trop élevé)
Solution 3 - Opérateurs représentables par des paraboloïdes hyperboliques
Une solution qui n'utiliserait que les opérateurs représentables par des paraboloïdes hyperboliques serait :
fzMembre = Add_OR(fzDejaMembre, Multiply_AND(fzConnaitOrchidees, fzOrchideesAmis))
-
Add OR
(Paraboloïde hyperbolique) -
Multiply AND
(Paraboloïde hyperbolique)
- Implémentation
fzMembre = fzDejaMembre + (fzConnaitOrchidees*fzOrchideesAmis) - (fzDejaMembre*fzConnaitOrchidees*fzOrchideesAmis)
pour fzDejaMembre=0 (faux), fzConnaitOrchidees=0.778 et fzOrchideesAmis=0.9, on trouve 0.7 pour fzDejaMembre=0.7, fzConnaitOrchidees=0.8 et fzOrchideesAmis=0.9, on trouve 0.916 (ce qui est sûrement trop élevé) pour fzDejaMembre=0.916, fzConnaitOrchidees=0.8 et fzOrchideesAmis=0.9, on trouve 0,97648 (ce qui est instable et sûrement beaucoup trop élevé) pour fzDejaMembre=0,97648, fzConnaitOrchidees=0.5 et fzOrchideesAmis=0.9, on trouve 0. 987 064 (une augmentation bien malvenue)
Convergence - Critique des solutions présentées
Les trois méthodes exposées ci-dessus convergent lorsque les valeurs d'entrée sont booléennes :
pour fzDejaMembre=0 (faux), fzConnaitOrchidees=0 (faux) et fzOrchideesAmis=1 (vrai), on trouve 0 (faux) pour fzDejaMembre=0 (faux), fzConnaitOrchidees=1 (vrai) et fzOrchideesAmis=1 (vrai), on trouve 1 (vrai) pour fzDejaMembre=1 (vrai), fzConnaitOrchidees=1 (vrai) et fzOrchideesAmis=1 (vrai), on retrouve 1 (vrai) pour fzDejaMembre=1 (vrai), fzConnaitOrchidees=0 (faux) et fzOrchideesAmis=1 (vrai), on conserve 1 (vrai)
Opérateur implique
Définition
Pour l'exemple à l'orchidée ci-dessus, une situation normale est que la connaissance des orchidées implique l'appartenance au groupe. C’est-à-dire, plus précisément, qu'on ne peut pas connaître les orchidées et, simultanément, ne pas être membre du groupe des amis des fleurs.
fzImpliqueOk = NOT(AND(fzConnaitOrchidees, NOT(fzMembre)))
De même qu'on a vu ci-dessus plusieurs manières d'implémenter les opérateurs OR et AND, il y a aussi plusieurs manières d'implémenter la notion d'implication.
fzImpliqueOk = Bool_IMPLIES(fzConnaitOrchidees, fzMembre) fzImpliqueOk = Zadeh_IMPLIES(fzConnaitOrchidees, fzMembre) fzImpliqueOk = HypPar_IMPLIES(fzConnaitOrchidees, fzMembre)
-
Boolean IMPLIES
-
Zadeh IMPLIES
-
Hyperbolic Paraboloid
IMPLIES
Implémentation
Les opérateurs ci-dessus s'implémenteront respectivement comme ceci :
fzImpliqueOk = fzConnaitOrchidees ⇐ fzMembre fzImpliqueOk = 1 - min(fzConnaitOrchidees, (1 - fzMembre)) fzImpliqueOk = 1 - fzConnaitOrchidees + (fzConnaitOrchidees*fzMembre)
- dans un cas extrême mais normal, avec fzConnaitOrchidees=0.8 et fzMembre=0.995, les valeurs trouvées seront respectivement :
1 (true) 0.995 (Zadeh) 0.996 (Hyperbolic Paraboloid)
- dans un cas considéré comme normal, avec fzConnaitOrchidees=0.8 et fzMembre=0.72, les valeurs trouvées seront respectivement :
0 (false) (la personne est moins membre qu'elle ne connait) 0.72 (Zadeh) 0.776 (Hyperbolic Paraboloid)
- dans un autre cas qui reste normal, la personne pouvant aussi être membre des amis des fleurs à cause de son amour des tulipes, avec fzConnaitOrchidees=0.66 et fzMembre=0.72, les valeurs trouvées seront respectivement :
1 (true)(la personne est plus membre qu'elle ne connait) 0.72 (Zadeh) 0.772 (Hyperbolic Paraboloid)
- dans un cas assez douteux, avec fzConnaitOrchidees=0.5 et fzMembre=0.5, les valeurs trouvées seront respectivement :
1 (true) 0.5 (Zadeh) 0.75 (Hyperbolic Paraboloid)
- dans un cas anormal, avec fzConnaitOrchidees=0.8 et fzMembre=0.3, les valeurs trouvées seront respectivement :
0 (false) 0.3 (Zadeh) 0.44 (Hyperbolic Paraboloid)
- dans un cas anormal et extrême, avec fzConnaitOrchidees=0.8 et fzMembre=0.005, les valeurs trouvées seront respectivement :
0 (false) 0.2 (Zadeh) 0.204 (Hyperbolic Paraboloid)
Utilisation pratique
Une application informatique qui viserait à proposer à un opérateur humain de traiter les cas anormaux en commençant par les plus suspects utiliserait les valeurs indiquées ci-dessus en gras et obtenues par la méthode identifiée Hyperbolic Paraboloid, particulièrement discriminante.
Il n'est pas sûr que cette application intéresse les amis des fleurs. Par contre, l'intérêt pour un service de médecine préventive (ou même pour un fleuriste) est compréhensible. Lorsque le nombre d'examens des cas suspects doit être plafonné (par exemple pour des raisons de temps, de coût, de dangerosité, etc), un pré-classement intelligent fondé sinon sur une théorie incontestée, du moins sur une technologie opérationnelle, peut s'avérer utile.
Représentation graphique
L'article commons:Fuzzy operator fournit de nombreuses représentations graphiques de quelques implémentations possibles des opérateurs fuzzy. On trouvera ci-dessous, à titre d'exemple, la représentation de huit implémentations différentes d'une opération qui viserait à apprécier la simultanéité de deux faits (jugés de poids équivalents dans les six images à gauche mais de poids différents dans les deux images de droite).
-
zadeh-AND
-
multiply-AND
-
yager-AND
-
mm-WEIGHT-OR-AND
-
zadeh-OR
-
add-OR
-
yager-OR
-
mm-WEIGHT-AND-OR
Opérateurs linguistiques
Soit v(x est chaud) = 0,8. On pourra poser v(x est très chaud) = 0,8² = 0,64 et a contrario v(x est assez chaud)= rac2(0,8) = 0,89, ce qui facilite le codage des connaissances empiriques.
Commande floue
Une fois la valeur de l'entrée (« La vitesse est-elle élevée ? ») évaluée, une valeur peut être déterminée pour une fonction de sortie. Considérons la règle « Si la fièvre est forte, alors administrer de l'aspirine ». Une telle règle est appelée commande floue. Elle est composée de deux parties :
- Une entrée : « La fièvre est-elle forte ? ». On considère qu'une fièvre n'est pas forte en dessous de 38 °C, et qu'elle est forte au-dessus de 40 °C.
- Une sortie : « Administrer de l'aspirine »
Ces deux parties sont liées. On peut les représenter ensemble comme sur la fig. 6.
fig. 6 |
Il existe plusieurs techniques pour déterminer la valeur de la sortie (dans l'exemple : la quantité d'aspirine à administrer) :
- La droite ayant la même ordonnée que le point de la courbe de départ ayant pour abscisse la valeur de l'entrée coupe la courbe de sortie. L'abscisse de ce point d'intersection est une valeur de sortie possible (fig. 7).
fig. 7 |
- La droite ayant la même ordonnée que le point de la courbe de départ ayant pour abscisse la valeur de l'entrée délimite un trapèze au niveau de la sortie. Le centre de gravité de ce trapèze est également une valeur de sortie possible (fig. 8).
fig. 8 |
Limites et critiques de la théorie
Insuffisances en tant que théorie ?
Il existe une opinion qui dit que[évasif] « La théorie des ensembles flous présente la particularité de n'avoir aucun théorème à proposer. C'est-à-dire que si elle peut rendre quelques services techniques, elle ne peut pour autant prétendre à un quelconque statut de science, et encore moins de théorie ».[citation nécessaire]
En fait, la logique floue a été formalisée[réf. souhaitée] et un théorème (élémentaire, cependant) montre que dans le cas particulier où les propositions traitées ne sont pas floues, la logique floue se réduit à la logique classique.
Dans son ouvrage Décisions rationnelles dans l'incertain, Myron Tribus rappelle que le théorème de Cox-Jaynes montre d'une part que l'on peut représenter un état de connaissance incertaine par une probabilité, et d'autre part que tout moyen utilisé pour prendre des décisions sera soit isomorphe à la théorie des probabilités, soit incohérent. Les connaissances floues ne sont pas à proprement parler des connaissances incertaines : on peut par exemple savoir avec précision qu'un homme mesure 1,74 m. Néanmoins, ce qui est flou est de savoir s'il sera considéré comme « grand » ou « petit ».
A contrario, dire : « l'âge de cette personne est voisin de 30 ans » représente une estimation floue de l'âge effectif de la personne, qui est pour sa part très précis. L'imprécision concerne l'estimation elle-même et non l'âge réel.
On pourrait dire aussi : « l'âge de cette personne est entre 27 et 33 ans, avec une probabilité de 0.8 ». Là encore, la probabilité mesure un état de connaissance de l'observateur et non une caractéristique de ce qui est observé.
Jim Bezdek distingue pour sa part probabilité et imprécision : « On se trouve dans un désert, après des jours d'errance… Presque mort de soif, on trouve alors deux bouteilles remplies d'un liquide. Sur la bouteille A, une étiquette annonce « Potable avec un degré de 0,9 », et sur la bouteille B, l'étiquette dit « potable avec une probabilité de 0,9 ». Laquelle de ces deux bouteilles doit-on choisir ? ». Si l'on traduit les indications des étiquettes, on en retire qu'en buvant la bouteille A, on pourra s'en tirer avec comme seuls risques, quelques problèmes intestinaux non mortels… Par contre, en buvant la bouteille B, il y a une probabilité non négligeable (10 % de chance) que le liquide puisse être très nocif (acide…) et absolument pas buvable.
Une théorie des possibilités a été introduite (aussi par Lotfi Zadeh en 1978) afin de permettre la prise en compte combinée à la fois de l'imprécision et de l'incertitude dans des connaissances.
La logique floue n'est pas la seule à parler d'incertitude
La logique modale a été introduite par Aristote, puis continuée par Leibniz et des chercheurs contemporains pour prendre en compte des affaiblissements ou des renforcements d'affirmations présents dans les langues naturelles, en s'intéressant par exemple aux rapports du vrai, du faux, du nécessaire et du possible.
La théorie de la complexité algorithmique (ou complexité de Kolmogorov) est aussi une méthode plus ou moins rigoureuse pour envisager la difficulté de donner la description précise d'une chose (X peut apparaître plus complexe que Y pour une machine A et moins complexe que Y pour une machine B, par exemple un calculateur quantique. Il s'agit donc d'une complexité relative à une machine de référence donnée.
Enfin, les probabilités bayésiennes utilisées en avenir incertain utilisent des approches voisines de celles de la logique floue, mais cette fois-ci sans aucun arbitraire : les distributions de probabilité a priori doivent y être celle d'entropie maximale…
Notes et références
- Novák, V., Perfilieva, I. et Močkoř, J., Mathematical principles of fuzzy logic, Dordrecht, Kluwer Academic, , 320 p. (ISBN 978-0-7923-8595-0, lire en ligne)
- système de Zadeh qu'on peut considérer comme inspiré de Lukasiewicz
- écriture allégée : en toute rigueur, on devrait distinguer l'énoncé A et son degré de vérité v(A), et écrire v(A OU B) = max(v(A), v(B))
- dans un style proche de George Boole (1854), ou de Vallée qui appelle cette composition produel dans son Analyse Binaire ; parfois vu aussi comme probabiliste
Voir aussi
Bibliographie
- Godjevac J., Idées nettes sur la logique floue, PPUR : Lausanne, collection informatique, 1999, 128p., (ISBN 2-88074-378-8).
- Prade H., Dubois D. & al., Théorie des possibilités : Applications à la représentation des connaissances en informatique, coll. (Méthode + programmes), Masson : Paris, 1985.