Ensembles flous et fonctions d’appartenance : comment écrire « un peu chaud »
La frontière nette et le paradoxe du tas, l’ensemble flou et le degré d’appartenance, les formes des fonctions d’appartenance, la variable linguistique, le support, le noyau et les α-coupes, les opérations de Zadeh et les modificateurs « très » et « un peu » — sur la température, du froid au torride.
Série Bases de l’IA Partie 32 sur 52
- Carte de l’intelligence artificielle : qu’est-ce qui est quoi et comment tout s’emboîte
- Brève histoire de l’intelligence artificielle : de Turing aux modèles de langage
- Données, modèle, entraînement, inférence : les notions de base sur un seul exemple
- Lire la notation mathématique : symboles, indices, sommes et quantificateurs
- Ensembles et relations : les briques dont sont faites les définitions en IA
- Fonctions et applications : pourquoi tout modèle d’IA est une fonction
- Logique et démonstrations : les règles selon lesquelles on raisonne en IA
- Graphes et arbres : la structure sur laquelle reposent la recherche et les réseaux de neurones
- Algèbre linéaire pour l’apprentissage automatique : vecteurs, matrices et pourquoi l’IA multiplie surtout
- Dérivées, gradient et règle de dérivation en chaîne : comment un modèle sait dans quelle direction apprendre
- Descente de gradient : comment un modèle apprend
- Qu’est-ce que la probabilité : du lancer de dé aux axiomes de Kolmogorov
- Probabilité conditionnelle et théorème de Bayes : comment réviser une estimation quand on apprend du nouveau
- Variable aléatoire et fonction de répartition : une seule fonction qui dit tout de la loi
- Fonction de densité et fonction de masse : pourquoi une variable continue a une probabilité nulle en chaque point
- Espérance, variance et covariance : où se situe une loi, quelle est sa largeur et ce qui varie avec quoi
- Panorama des lois de probabilité : Bernoulli, binomiale, Poisson, uniforme, normale et exponentielle
- Loi des grands nombres et théorème central limite : pourquoi les moyennes sont si prévisibles
- Statistique et estimation de paramètres : maximum de vraisemblance, MAP et intervalles de confiance
- Théorie de l’information : entropie, entropie croisée et divergence KL — d’où viennent les fonctions de perte
- Recherche dans l’espace d’états : BFS, DFS, UCS et A* en animations
- Jeux et adversaires : minimax, élagage alpha-bêta et Monte Carlo tree search
- Satisfaction de contraintes : backtracking, propagation de contraintes et AC-3 sur un sudoku et une carte des régions tchèques
- Logique et systèmes à base de connaissances : chaînage avant et arrière, résolution et systèmes experts
- Planification : STRIPS, monde des blocs, heuristiques par relaxation et planification dans les agents IA
- Recherche locale et recuit simulé : un voyageur de commerce à travers les chefs-lieux de région tchèques
- Algorithmes génétiques : population, croisement, mutation et sélection sur un sac à dos de randonnée
- Stratégies d’évolution et programmation génétique : de la règle du cinquième à la loi de Kepler
- Optimisation par colonies de fourmis : comment une piste de phéromone trouve un chemin court
- Optimisation par essaim de particules : inertie, expérience propre et expérience de l’essaim
- Neuroévolution : faire évoluer les poids et la forme des réseaux de neurones, et l’algorithme NEAT
- Ensembles flous et fonctions d’appartenance : comment écrire « un peu chaud »
- Logique floue et probabilité : pourquoi « un peu chaud » ne veut pas dire « probablement chaud »
- Logique floue : t-normes, implications et règles SI–ALORS
- Commande floue : Mamdani et Sugeno, du ventilateur au pendule inversé sur un chariot
- Clustering flou : l’algorithme fuzzy c-means et les points entre les clusters
- Systèmes neuro-flous (ANFIS) : des règles floues qui apprennent à partir des données
- Chaînes de Markov : matrice de transition, distribution stationnaire et PageRank
- Modèles de Markov cachés : l’algorithme de Viterbi et le casino malhonnête
- Réseaux bayésiens : pourquoi l’herbe est mouillée et ce que cela implique pour l’arroseur
- Le filtre de Kalman : comment estimer, à partir de mesures imprécises, où se trouve une voiture et à quelle vitesse elle roule
- Types d’apprentissage automatique : supervisé, non supervisé, semi-supervisé et plus
- Prompts, contexte et RAG : comment donner au modèle les bonnes informations
- Autoencodeurs variationnels (VAE) : de nouvelles images à partir d’un espace latent continu
- Réseaux antagonistes génératifs (GAN) : le faussaire contre le détective
- Modèles de diffusion : comment une image naît du bruit pur
- Processus de décision markoviens : états, actions, récompenses et équations de Bellman
- Q-learning et DQN : apprendre la valeur des actions, du tableau au réseau de neurones
- Policy gradient et PPO : apprendre directement la politique
- Comment fonctionne un agent IA : un modèle de langage en boucle avec des outils
- Programmer avec des agents IA : consigne, tests et vérification
- Évaluation et sécurité des systèmes d’IA : comment mesurer et comment surveiller
Programme complet de la série 52 sur 83 sujets publiés
- Ce qu’est un ensemble flou et pourquoi le degré d’appartenance n’est pas une probabilité.
- Comment des mots comme « chaud » ou « agréable » s’écrivent avec des fonctions d’appartenance et comment ils se chevauchent.
- Comment fonctionnent l’intersection, l’union et le complément flous et pourquoi la loi du tiers exclu ne s’applique pas.
Utile à connaître avant : Ensembles et relations : les briques dont sont faites les définitions en IA, Fonctions et applications : pourquoi tout modèle d’IA est une fonction
Combien de grains de sable faut-il pour faire un tas ? Un million, sûrement. Un seul, sûrement pas. Et si vous retirez un grain d’un tas, c’est toujours un tas — si bien que, selon cette logique, même un seul grain serait un tas. Les Grecs anciens connaissaient déjà ce paradoxe, et il montre que beaucoup de mots avec lesquels nous parlons du monde n’ont pas de frontière nette : grand, chaud, vite, presque plein. Les mathématiques classiques les traitent mal, car un élément appartient à un ensemble ou n’y appartient pas. En 1965, Lotfi Zadeh, de l’université de Californie à Berkeley, a proposé une solution simple : permettre à un élément d’appartenir à un ensemble un peu.
Cette partie ouvre le module consacré à la logique floue. Elle fait suite aux parties Ensembles et relations et Fonctions et applications.
1. La frontière nette et son problème
Définition — fonction caractéristique
Un ensemble classique (net) A ⊆ X est déterminé de façon unique par sa fonction caractéristique χA : X → {0, 1}, où χA(x) = 1 pour x ∈ A et 0 sinon.
Un ensemble net est une liste avec un oui et un non clairs. Disons que « chaud » commence à 25 °C. Alors 25 °C est chaud et 24,9 °C ne l’est pas — alors que personne ne sentirait la différence. Une frontière placée en un seul point est arbitraire, et un petit changement de l’entrée provoque un saut du résultat.
2. Ensemble flou
Définition — ensemble flou (Zadeh, 1965)
Un ensemble flou A sur l’univers X est donné par une fonction d’appartenance μA : X → [0, 1]. Le nombre μA(x) est le degré d’appartenance de l’élément x à A ; formellement A = {(x, μA(x)) : x ∈ X}.
Un ensemble net en est le cas particulier où μA ne prend que les valeurs 0 et 1.
Au lieu de « appartient, n’appartient pas », chaque élément reçoit un nombre entre zéro et un : à quel point il appartient à l’ensemble. 28 °C est « chaud » complètement (1), 25 °C à moitié (0,5), 20 °C pas du tout (0). Entre les deux, l’appartenance varie de façon continue — aucun saut entre 24,9 et 25.
Ce qui compte, c’est ce que le degré d’appartenance n’est pas : ce n’est pas une probabilité. Quand 25 °C est « chaud » à 0,5, cela ne veut pas dire qu’il fait chaud avec une chance sur deux. La température est connue exactement ; c’est le mot qui est vague. La différence entre l’imprécision d’un mot et l’incertitude du hasard fera l’objet de la partie suivante.
3. Formes des fonctions d’appartenance
Définition — fonctions d’appartenance usuelles
- Triangulaire de paramètres a < b < c : croît linéairement de 0 en a à 1 en b et redescend à 0 en c.
- Trapézoïdale de paramètres a ≤ b ≤ c ≤ d : croît de a à b, vaut 1 entre b et c, décroît jusqu’à d.
- Gaussienne : μ(x) = e−(x − m)2 / 2s2 — une colline lisse de centre m et de largeur s.
- Sigmoïde : μ(x) = 1 / (1 + e−a(x − c)) — une transition continue de 0 à 1 autour du point c.
On choisit la forme selon ce qui est naturel et ce qui se calcule facilement. En pratique, ce sont de loin les triangles et les trapèzes qui l’emportent le plus souvent : quelques nombres suffisent, tout le monde les comprend et les calculs sont rapides. La forme exacte compte généralement moins qu’on ne le croirait — l’important est où la fonction commence, où elle culmine et où elle s’arrête.
μ(x) = max( 0, min( (x − a) / (b − a), (c − x) / (c − b) ) )
- (x − a) / (b − a)
- bord gauche — une droite qui vaut 0 en a et 1 en b ; la division par la longueur b − a garantit que le sommet vaut exactement 1, quelle que soit la largeur
- (c − x) / (c − b)
- bord droit — en miroir : valeur 1 en b, valeur 0 en c
- min
- choisit le bord qui est le plus bas à cet endroit — à gauche de b, le bord droit est au-dessus de 1, à droite de b, c’est le bord gauche ; le minimum « coupe » ainsi la pointe exactement en b
- max(0, …)
- hors de l’intervalle (a ; c), les bords deviendraient négatifs ; or le degré d’appartenance ne doit pas descendre sous 0
trojuhelnik ci-dessous. Pour « chaud » (22, 28, 34) et 25 °C : min(3/6, 9/6) = 0,5.def trojuhelnik(a, b, c):
return lambda x: max(0.0, min((x - a) / (b - a), (c - x) / (c - b)))
def lichobeznik(a, b, c, d):
def mu(x):
if x < a or x > d:
return 0.0
if x < b:
return (x - a) / (b - a)
return 1.0 if x <= c else (d - x) / (d - c)
return mu
teplo = trojuhelnik(22, 28, 34)
print(teplo(25), teplo(28), teplo(31)) # 0.5 1.0 0.5
4. Variable linguistique
Définition — variable linguistique (Zadeh, 1975)
Une variable linguistique est une variable dont les valeurs sont des mots. Elle est donnée par un nom (par exemple « température »), un univers X (0–40 °C) et un ensemble de termes (froid, agréable, chaud, torride), dont chacun est un ensemble flou sur X.
Les mots qui décrivent la température se chevauchent — et c’est très bien ainsi. 25 °C est un peu « agréable » et un peu « chaud », exactement comme le dirait une personne.
Notre température a quatre termes : froid est un trapèze (0, 0, 6, 14), agréable un trapèze (10, 17, 23, 28), chaud un triangle (22, 28, 34) et torride un trapèze (30, 36, 40, 40). Le trait vertical saute d’une température d’exemple à l’autre :
- 12 °C est « froid » à 0,25 et « agréable » à 0,29 — un printemps frais où l’on n’arrive pas à trancher.
- 25 °C est « agréable » à 0,6 et « chaud » à 0,5.
- 31 °C est « chaud » à 0,5 et déjà « torride » à 0,17.
Exemple — les appartenances pas à pas
Sur chaque bord, il suffit du rapport « chemin déjà parcouru sur le bord » sur « longueur du bord » :
12 °C, froid (0, 0, 6, 14) sur le bord descendant : (14 − 12) / (14 − 6) = 2/8 = 0,25
12 °C, agréable (10, 17, 23, 28) sur le bord montant : (12 − 10) / (17 − 10) = 2/7 ≈ 0,29
25 °C, agréable sur le bord descendant : (28 − 25) / (28 − 23) = 3/5 = 0,6
25 °C, chaud (22, 28, 34) sur le bord montant : (25 − 22) / (28 − 22) = 3/6 = 0,5
31 °C, chaud sur le bord descendant : (34 − 31) / (34 − 28) = 3/6 = 0,5
31 °C, torride (30, 36, 40, 40) sur le bord montant : (31 − 30) / (36 − 30) = 1/6 ≈ 0,17
Les autres termes ont, pour ces températures, une appartenance de 0 — la température se trouve hors de leur support.
Remarquez que les appartenances d’une même température n’ont pas à totaliser 1 (pour 25 °C, elles donnent 1,1). Les ensembles flous ne sont pas des parts d’un même tout, mais des réponses indépendantes aux questions « est-ce froid ? », « est-ce agréable ? »…
5. Support, noyau et α-coupes
Définition — support, noyau, hauteur, α-coupe
- Le support est {x : μA(x) > 0} — les éléments qui appartiennent à A au moins un peu.
- Le noyau (core) est {x : μA(x) = 1} — les éléments qui appartiennent complètement.
- La hauteur est supx μA(x) ; un ensemble de hauteur 1 est normal.
- L’α-coupe pour α ∈ (0, 1] est l’ensemble net Aα = {x : μA(x) ≥ α}. Un ensemble flou est convexe lorsque toutes ses α-coupes sont des intervalles.
L’α-coupe, c’est « à quel point on veut être strict ». La coupe au niveau 0,5 contient les températures qui sont agréables au moins à moitié. À partir des α-coupes, on peut reconstituer l’ensemble flou — ce sont les courbes de niveau de la colline. Et grâce à elles, les mathématiques classiques s’appliquent aussi aux ensembles flous : il suffit de les appliquer séparément à chaque niveau α.
Pour « agréable », le support est l’intervalle ouvert (10 ; 28), le noyau [17 ; 23] et l’α-coupe au niveau 0,5 l’intervalle [13,5 ; 25,5]. L’ensemble est normal (hauteur 1) et convexe — comme tous nos termes. (Le supremum sup dans la définition de la hauteur est le plus petit majorant des valeurs ; pour nos fonctions continues sur un intervalle fermé, c’est tout simplement le maximum.)
Aα = [ a + α (b − a) ; d − α (d − c) ]
- α
- le niveau de la coupe (le trait ambre sur la figure) — combien d’appartenance nous exigeons ; plus il est élevé, plus il faut s’éloigner des bords, et la coupe se rétrécit
- a
- bord gauche du support — c’est de là que monte le bord gauche ; pour α → 0, la coupe commence exactement ici
- (b − a)
- largeur du bord gauche — l’appartenance y monte de 0 à 1, si bien que le niveau α est atteint après avoir parcouru la fraction α de cette largeur
- d
- bord droit du support — on mesure à partir de là, en revenant vers la gauche
- (d − c)
- largeur du bord droit — en miroir : depuis d, on parcourt vers la gauche la fraction α de cette largeur
Exemple — α-coupes du terme « agréable » (10, 17, 23, 28)
α = 0,5 : [10 + 0,5 · 7 ; 28 − 0,5 · 5] = [13,5 ; 25,5]
α = 0,8 : [10 + 0,8 · 7 ; 28 − 0,8 · 5] = [15,6 ; 24]
α = 1 : [10 + 7 ; 28 − 5] = [17 ; 23] = noyau
Les coupes s’emboîtent : plus α est élevé, plus l’intervalle est petit, et chaque coupe supérieure se trouve à l’intérieur d’une coupe inférieure. Dans l’autre sens, on reconstitue l’ensemble flou par μA(x) = sup {α : x ∈ Aα} — l’appartenance d’un point est la coupe la plus haute dans laquelle il tombe encore.
Lorsque la fonction d’appartenance n’est pas donnée par une formule, mais par exemple par des points mesurés, on calcule l’α-coupe sur une grille fine. C’est exactement ce que fait le programme qui dessine les figures de cette partie :
def alfa_rez(mu, alfa, od=0.0, do=40.0, kroku=4000):
body = [od + i * (do - od) / kroku for i in range(kroku + 1)]
uvnitr = [x for x in body if mu(x) >= alfa]
return (uvnitr[0], uvnitr[-1]) if uvnitr else None # pour un ensemble convexe, un intervalle
prijemne = lichobeznik(10, 17, 23, 28)
print(alfa_rez(prijemne, 0.5)) # (13.5, 25.5)
6. Complément, intersection et union
Définition — opérations de Zadeh
μ¬A(x) = 1 − μA(x), μA ∩ B(x) = min(μA(x), μB(x)), μA ∪ B(x) = max(μA(x), μB(x)).
Pour les ensembles nets, ces formules donnent exactement le complément, l’intersection et l’union classiques.
« Agréable et en même temps chaud » est aussi vrai que la plus faible des deux parties ; « agréable ou chaud », aussi vrai que la plus forte. Une chaîne n’est pas plus solide que son maillon le plus faible, et quand l’un des deux suffit, c’est le meilleur qui décide.
À 25 °C, « agréable et chaud » vaut 0,5 et « agréable ou chaud » 0,6. L’intersection atteint au plus 0,545 vers 25,3 °C, là où les deux courbes se croisent — aucune température n’est complètement les deux.
μP ∩ T(x) = min( μP(x), μT(x) )
- μP(x)
- à quel point la température x est « agréable » (la courbe verte sur la figure)
- μT(x)
- à quel point elle relève de « chaud » (la courbe ambre) — les deux appartenances se calculent indépendamment, chacune par sa propre fonction
- min
- « et en même temps » ne peut être vrai qu’au plus autant que la partie la plus faible — si c’était davantage, nous affirmerions sur la température plus que ne peut en porter l’un des deux mots ; et pour les valeurs 0 et 1, min donne exactement le « et » classique
Exemple — où l’intersection est la plus haute
Entre 23 et 28 °C, agréable décroît et chaud croît, si bien que le minimum est le plus élevé là où les courbes se coupent :
(28 − x) / 5 = (x − 22) / 6
6 (28 − x) = 5 (x − 22) ⇒ 168 − 6x = 5x − 110 ⇒ x = 278/11 ≈ 25,27 °C
μ = (28 − 278/11) / 5 = 6/11 ≈ 0,545
À gauche du point d’intersection, c’est chaud qui est plus bas, à droite c’est agréable — le minimum y diminue toujours.
C’est ici que les ensembles flous diffèrent des ensembles classiques sur un point essentiel. Presque toutes les règles connues restent valables — commutativité, associativité, lois de De Morgan —, mais pas la loi du tiers exclu. L’intersection A ∩ ¬A n’est pas forcément vide : « agréable et en même temps pas agréable » vaut 0,5 à 13,5 °C. Pour des mots vagues, c’est juste — d’une température agréable à moitié, on peut dire en même temps, à moitié, qu’elle n’est pas agréable. D’autres façons de définir l’intersection et l’union (les t-normes) viendront dans la partie consacrée à la logique floue.
Théorème — les lois de De Morgan sont valables, le tiers exclu ne l’est pas
Pour des ensembles flous quelconques A, B sur X et tout x ∈ X, on a, avec les opérations de Zadeh,
- ¬(A ∩ B) = ¬A ∪ ¬B et ¬(A ∪ B) = ¬A ∩ ¬B,
- μA ∩ ¬A(x) ≤ ½ et μA ∪ ¬A(x) ≥ ½, avec égalité si et seulement si μA(x) = ½.
Démonstration. (1) Notons p = μA(x), q = μB(x) et, sans perte de généralité, p ≤ q. Alors 1 − min(p, q) = 1 − p, et comme 1 − p ≥ 1 − q, on a aussi max(1 − p, 1 − q) = 1 − p. La seconde loi se montre de même en échangeant min et max.
(2) Les nombres p et 1 − p ont pour somme 1, donc le plus petit vaut au plus ½ et le plus grand au moins ½. ∎
La loi classique du tiers exclu exige A ∪ ¬A = X, c’est-à-dire la valeur 1 partout. Pour un ensemble flou, elle n’est vraie que là où μA vaut 0 ou 1 ; le pire se situe aux points d’appartenance ½ — pour « agréable », à 13,5 et 25,5 °C, où A ∩ ¬A comme A ∪ ¬A valent 0,5.
Vérification sur un nombre : à 25 °C, ¬(P ∩ T) = 1 − min(0,6 ; 0,5) = 0,5 et ¬P ∪ ¬T = max(0,4 ; 0,5) = 0,5.
7. Très chaud, un peu chaud
Définition — modificateurs linguistiques (Zadeh, 1972)
Concentration (« très ») : μtrès A(x) = μA(x)2. Dilatation (« un peu », « plus ou moins ») : μun peu A(x) = √μA(x).
Élever au carré un nombre entre 0 et 1 le diminue — et d’autant plus qu’il est petit : 0,5 devient 0,25, mais 1 reste 1. « Très chaud » est donc plus étroit et plus strict que « chaud ». La racine carrée, à l’inverse, élargit l’ensemble : 25 °C est « chaud » à 0,5, « un peu chaud » à 0,71 et « très chaud » seulement à 0,25.
Définition — inclusion d’ensembles flous
Un ensemble flou A est un sous-ensemble de B (A ⊆ B) lorsque μA(x) ≤ μB(x) pour tout x ∈ X. Pour les ensembles nets, c’est l’inclusion habituelle : là où χA = 1, il faut aussi χB = 1.
μ(x)2 ≤ μ(x) ≤ √μ(x) pour μ(x) ∈ [0, 1]
- μ2
- « très » (la courbe rouge) — multiplier par un nombre au plus égal à 1 n’agrandit jamais, donc le carré se trouve sous la courbe d’origine ; il retire le plus aux valeurs moyennes et laisse zéro et un intacts
- μ
- « chaud » lui-même (la courbe ambre) — le terme de départ, que les modificateurs ne font que remodeler ; ni le support ni le noyau ne changent
- √μ
- « un peu » (la courbe violette) — la racine carrée est l’inverse du carré, elle relève donc ce que le carré écrase : √0,25 = 0,5
Exemple — de combien « très » rétrécit et « un peu » élargit
L’α-coupe au niveau 0,5 de « chaud » (22, 28, 34) est [25 ; 31]. Pour les termes modifiés, il suffit de ramener le niveau à la μ d’origine :
très chaud : μ² ≥ 0,5 ⇔ μ ≥ √0,5 ≈ 0,707 → [22 + 0,707 · 6 ; 34 − 0,707 · 6] ≈ [26,24 ; 29,76]
un peu chaud : √μ ≥ 0,5 ⇔ μ ≥ 0,25 → [22 + 0,25 · 6 ; 34 − 0,25 · 6] = [23,5 ; 32,5]
L’intervalle « au moins à moitié » mesure 6 °C pour chaud, environ 3,5 °C pour très chaud et 9 °C pour un peu chaud.
8. Les ensembles flous en pratique
- Commande floue. Le métro de Sendai, au Japon, circule depuis 1987 avec un régulateur flou qui démarre et freine plus en douceur qu’un humain. Vers 1990 a suivi au Japon une vague de machines à laver, de caméras et de climatiseurs flous. Le fonctionnement d’un tel régulateur sera expliqué dans la partie consacrée à la commande floue.
- Traitement d’images et clustering. Un pixel à la frontière de deux régions peut appartenir un peu aux deux ; le clustering flou (fuzzy clustering) affecte les points à plusieurs clusters à la fois.
- Apprentissage automatique. Les sorties souples des classifieurs ou la technique du label smoothing (au lieu d’un « c’est un chat » certain, la cible « chat à 0,9 ») ne sont pas des ensembles flous au sens de Zadeh, mais elles partagent avec eux l’idée que l’appartenance à une classe n’est pas forcément 0 ou 1.
- Langage. Les modèles de langage manipulent chaque jour des mots comme « assez », « presque » ou « plutôt pas ». Les ensembles flous sont l’un des rares outils qui donnent à de tels mots un sens précis et vérifiable.
9. Résumé
- Un ensemble flou attribue à chaque élément un degré d’appartenance pris dans l’intervalle [0, 1] ; un ensemble net en est le cas particulier aux valeurs 0 et 1.
- Les fonctions d’appartenance ont souvent la forme d’un triangle, d’un trapèze, d’une colline gaussienne ou d’une sigmoïde.
- Une variable linguistique a pour valeurs des mots — des termes qui peuvent se chevaucher ; 25 °C est « agréable » à 0,6 et « chaud » à 0,5.
- Le support, le noyau et les α-coupes décrivent la forme d’un ensemble flou au moyen d’ensembles nets.
- Le complément vaut 1 − μ, l’intersection est le minimum et l’union le maximum ; la loi du tiers exclu ne s’applique pas. Le modificateur « très » est μ², « un peu » √μ.
Envie de mettre la main à la pâte ? Demandez à un agent IA de dessiner les fonctions d’appartenance des mots avec lesquels vous décrivez votre journée — « tôt », « tard », « longtemps » — et demandez à quelques personnes où elles placeraient la frontière.
Vous voyez les choses autrement ? Écrivez à support@coden-app.com.