Logique flou

Introduction

Encore de la logique ?!

Et oui, il y a beaucoup d'autres logiques, allant de celles simples comme celle des propositions à la logique dynamique introduisant la notion d'action en plus (par exemle (x>6)[x:=x2](x>12)(x>6)\rightarrow [x:=x*2](x>12)), utilisé pour la vérification de programme informatique.

Néanmoins, la plupart de ces logiques sont qualifiées de crisp (oui, oui, comme les gâteux apéro) : ils prennent une valeur de vérité dans un interval discret sémantisé a priori, généralement {0,1}, avec 0 = FAUX et 1 = VRAI.

Les ensembles flous et la logique floue s'établissent plutôt en rupture de toutes ces logiques crisp. L'idée est de travailler avec un intervalle continu de valeur comprise entre [0;1], qui représente l'appartenance d'un concept à un ensemble donné.

Intuitivement, pour comprendre le besoin, l'on peut se poser la question du tas de sable : À quel moment, en empilant un par un les grains de sables, l'on peut parler de tas de sable ? La logique floue apporte une modélisation mathématique à cette question.

Exemple :

La variable Bob appartient à l'ensemble grand, t.q. grand(Bob), avec un degré de 0.67, et la variable Anna avec un degré de 0.35. Avec ces information, l'on peut commencer à faire du raisonnement.

Pour définir le degré d'appartenance d'une variable xx (e.g. une mesure), on procède à une fuzzification. On peut ensuite faire des opérations mathématiques simulant les connecteurs vue dans la ZOL et la FOL. Néanmoins, il n'est pas possible d'interpréter avec des valeurs de vérité les résultats : il faut tout d'abord les faire sortir de ces ensembles flous, ce que l'on appelle la defuzzification, pour ensuite leur attribuer une valeur de vérité.

Fuzzification

Dans les grandes lignes, on définit s1,,sn,nNs_1,\ldots ,s_n, n \in \mathbb{N} comme des ensemble flous, t.q. sSs \in \mathcal{S} (l'ensemble de nos ensembles flous). On définit également msm_s, la fonction d'appartenance à l'ensemble flou (membership function) ss comme m:R[0;1]m:\mathbb{R} \mapsto [0;1].

La fonction de fuzzification μ:x[0;1]n\mu: x \mapsto [0;1]^n consiste à prendre une variable xx et la projeter dans nos ensembles flous, pour définir un degré d'appartenance pour chacun des ensembles.

Degré d’appartenance à des ensemble distinct de la variable mesurée. (©McGillUniv)

Avec cette approche, les informations deviennent humainement interprétables. Il est même possible d'introduire des modificateurs sémantiques (e.g. peu, énormément,etc.).

Pipeline de la FZL

Pour pouvoir faire de la logique avec ces ensembles, il faut définir nos connecteurs. Comme spécifié dans l'Introduction, les connecteurs ne sont plus universels. Aussi, accordons nous sur leur définition :

  • AND \approx min(msi(x),msj(x))min(m_{s_i}(x),m_{s_j}(x))

  • OR \approx max(msi(x),msj(x))max(m_{s_i}(x),m_{s_j}(x))

Maintenant que nos connecteurs sont définis, on a tout le pipeline nécessaire pour réaliser de la logique flou :

  1. Définir nos ensembles flous

  2. Définir nos règles logiques (e.g. si le service est mauvais ou la nourriture mauvaise, alors le pourboire sera faible)

  3. Fuzzifier les variables (e.g. la qualité de service et la qualité de la nourriture)

  4. Appliquer les opérateurs logiques

  5. Défuzzifier (là encore, ce n'est pas défini universellement)

Pipeline logique dans l’espace flou et defuzzyfication, par Ferhat Pakdamar

Grâce à cela, on est capable de raisonner dans l'incertitude, et prendre des décisions à l'échelle de la compréhension humaine, plutôt que de travailler avec des métriques abstraites.

Ressources intéressantes

Deux trois ressources intéressantes :

Dernière mise à jour

Cet article vous a-t-il été utile ?