Přeskočit na obsah
coden

Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“

Ostrá hranice a paradox hromady, fuzzy množina a stupeň příslušnosti, tvary funkcí příslušnosti, lingvistická proměnná, nosič, jádro a α-řezy, Zadehovy operace a modifikátory „velmi“ a „trochu“ — na teplotě od zimy po horko.

12 minut Matěj Žalmánek 2026-10-15

Série Základy AI Díl 32 z 83
  1. Mapa umělé inteligence: co je co a jak to do sebe zapadá
  2. Stručná historie umělé inteligence: od Turinga po jazykové modely
  3. Data, model, trénink, inference: základní pojmy na jednom příkladu
  4. Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relace: stavebnice, ze které se skládají definice v AI
  6. Funkce a zobrazení: proč je každý model v AI funkce
  7. Logika a důkazy: pravidla, podle kterých se v AI uvažuje
  8. Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
  9. Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
  10. Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
  11. Gradientní sestup: jak se model učí
  12. Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
  13. Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
  14. Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
  15. Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
  16. Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
  17. Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
  18. Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
  19. Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
  20. Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
  21. Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
  22. Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
  23. Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
  24. Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
  25. Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
  26. Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
  27. Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
  28. Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
  29. Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
  30. Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
  31. Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
  32. Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
  33. Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
  34. Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
  35. Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
  36. Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
  38. Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
  39. Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
  40. Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
  41. Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
  42. Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
  43. Přeučení a regularizace: proč model, který zná data nazpaměť, selže
  44. Vyhodnocení modelu: křížová validace, F1 a křivka ROC
  45. Shlukování a snížení dimenze: k-means, PCA a t-SNE
  46. Klasifikace a regrese: dvě úlohy učení s učitelem
  47. Lineární regrese: nejmenší čtverce geometricky i maticově
  48. Polynomiální a nelineární regrese: jak přímku ohnout
  49. Logistická regrese: sigmoida, šance a křížová entropie
  50. Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
  51. Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
  52. Ztrátové funkce: co přesně model minimalizuje
  53. Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
  54. Ansámbly: náhodný les a gradient boosting
  55. SVM a jádrový trik: nejširší hranice a jak ji ohnout
  56. Signál a vzorkování: proč platí Nyquistův teorém
  57. Fourierova transformace: rozklad signálu na frekvence
  58. Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
  59. Zvuk a řeč: spektrogram, melová škála a MFCC
  60. Obraz jako signál: pixely, barvy, konvoluce a hrany
  61. Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
  62. Neuronová síť od nuly: zpětné šíření chyby krok za krokem
  63. Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
  64. Konvoluční sítě: jak síť poznává obrázky
  65. Rekurentní sítě: paměť pro posloupnosti a mizející gradient
  66. LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
  67. Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
  68. Embeddingy a word2vec: jak se slovo stane vektorem
  69. Mechanismus pozornosti: jak se model naučí, kam se dívat
  70. Transformery a velké jazykové modely: architektura krok za krokem
  71. Tokenizace: jak se text rozseká na kousky pro model
  72. Předtrénování a škálování: proč větší model a víc dat funguje
  73. Doladění a RLHF: jak se z doplňovače textu stane asistent
  74. Prompty, kontext a RAG: jak modelu dát správné informace
  75. Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
  76. Generativní adversariální sítě (GAN): padělatel proti detektivovi
  77. Difúzní modely: jak se z čistého šumu stane obrázek
  78. Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
  79. Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
  80. Policy gradient a PPO: učení přímo strategie
  81. Jak funguje AI agent: jazykový model ve smyčce s nástroji
  82. Programování s AI agenty: zadání, testy a kontrola
  83. Vyhodnocení a bezpečnost AI systémů: jak měřit a jak hlídat

Celá osnova série 83 z 83 témat hotovo

Co si odnesete
  • Co je fuzzy množina a proč stupeň příslušnosti není pravděpodobnost.
  • Jak se slova jako „teplo“ nebo „příjemně“ zapíšou funkcemi příslušnosti a jak se překrývají.
  • Jak fungují fuzzy průnik, sjednocení a doplněk a proč neplatí zákon vyloučeného třetího.

Co se hodí znát předem: Množiny a relace: stavebnice, ze které se skládají definice v AI, Funkce a zobrazení: proč je každý model v AI funkce

Kolik zrnek písku dělá hromadu? Milion určitě. Jedno určitě ne. A když z hromady odeberete jedno zrnko, pořád je to hromada — takže podle té logiky i jedno zrnko by byla hromada. Tenhle paradox znali už staří Řekové a ukazuje, že spousta slov, kterými mluvíme o světě, nemá ostrou hranici: vysoký, teplo, rychle, skoro plno. Klasická matematika s nimi zachází špatně, protože prvek do množiny buď patří, nebo nepatří. V roce 1965 navrhl Lotfi Zadeh z Kalifornské univerzity v Berkeley jednoduché řešení: dovolit, aby prvek do množiny patřil trochu.

Tímhle dílem začíná modul o fuzzy logice. Navazuje na díly Množiny a relace a Funkce a zobrazení.

1. Ostrá hranice a její problém

Definice — charakteristická funkce

Nechť X je neprázdná množina (univerzum — všechny prvky, o kterých mluvíme) a A ⊆ X je klasická (ostrá) množina. Charakteristická funkce množiny A je funkce χA : X → {0, 1} daná pro každé x ∈ X předpisem

χA(x) = 1,  je-li x ∈ A;    χA(x) = 0,  je-li x ∉ A.

Naopak každá funkce χ : X → {0, 1} je charakteristickou funkcí právě jedné množiny, totiž A = {x ∈ X : χ(x) = 1}. Ostrá množina je tedy svou charakteristickou funkcí jednoznačně určena: prvek x do ní patří, právě když χA(x) = 1.

Laicky řečeno

Ostrá množina je seznam s jasným ano a ne. Řekněme, že „teplo“ je od 25 °C výš. Pak je 25 °C teplo a 24,9 °C není — ačkoli rozdíl nikdo nepozná. Hranice na jednom místě je libovolná a malá změna vstupu udělá skok ve výsledku.

00,51 0510152025303540 teplota T (°C) stupeň příslušnosti μ (0–1)
„Teplo“ jako ostrá a jako fuzzy množina ostrá: od 25 °Cfuzzy

2. Fuzzy množina

Definice — fuzzy množina (Zadeh, 1965)

Nechť X je neprázdná množina (univerzum). Fuzzy množina A na X je dána funkcí μA : X → [0, 1], které říkáme funkce příslušnosti; formálně je to množina dvojic

A = {(x, μA(x)) : x ∈ X} ⊆ X × [0, 1].

Pro x ∈ X je číslo μA(x) ∈ [0, 1] stupeň příslušnosti prvku x do A: hodnota 1 znamená „patří úplně“, 0 „nepatří vůbec“ a čísla mezi tím „patří zčásti“. Dvě fuzzy množiny A, B na X se rovnají, právě když μA(x) = μB(x) pro každé x ∈ X.

Ostrá množina je zvláštní případ: platí-li μA(x) ∈ {0, 1} pro každé x ∈ X, je μA charakteristická funkce ostré množiny {x ∈ X : μA(x) = 1}.

Laicky řečeno

Místo „patří, nepatří“ dostane každý prvek číslo od nuly do jedné: jak moc do množiny patří. 28 °C je „teplo“ úplně (1), 25 °C napůl (0,5), 20 °C vůbec (0). Mezi tím se příslušnost mění plynule — žádný skok mezi 24,9 a 25.

Důležité je, co stupeň příslušnosti není: není to pravděpodobnost. Když je 25 °C „teplo“ ze 0,5, neznamená to, že s padesátiprocentní šancí je teplo. Teplota je známá přesně; nejasné je slovo. Rozdílu mezi neurčitostí slova a nejistotou náhody se věnuje příští díl.

3. Tvary funkcí příslušnosti

Definice — obvyklé funkce příslušnosti

Ve všech případech je univerzum X = ℝ (nebo jeho interval) a μ : ℝ → [0, 1] je funkce příslušnosti; exp(t) = et je exponenciála.

  1. Trojúhelníková funkce s parametry a, b, c ∈ ℝ, a < b < c: μ(x) = max(0, min(x − a/b − a, c − x/c − b)). Tedy μ(x) = 0 pro x ≤ a i pro x ≥ c, na [a; b] roste lineárně z 0 do 1 a na [b; c] lineárně klesá z 1 do 0.
  2. Lichoběžníková funkce s parametry a, b, c, d ∈ ℝ, a ≤ b ≤ c ≤ d: pro každé x ∈ ℝ je
    • μ(x) = 0, je-li x < a nebo x > d;
    • μ(x) = x − a/b − a, je-li a ≤ x < b;
    • μ(x) = 1, je-li b ≤ x ≤ c;
    • μ(x) = d − x/d − c, je-li c < x ≤ d.
    Při a = b (nebo c = d) je příslušný interval prázdný a funkce začíná (končí) rovnou hodnotou 1 — tak je zadaná třeba „zima“ (0, 0, 6, 14) níže.
  3. Gaussovská funkce se středem m ∈ ℝ a šířkou s > 0: μ(x) = exp(−(x − m)2/2s2) — hladký kopec s vrcholem μ(m) = 1.
  4. Sigmoidní funkce se strmostí a > 0 a středem c ∈ ℝ: μ(x) = 1/1 + exp(−a(x − c)) — rostoucí plynulý přechod od 0 (pro x → −∞) do 1 (pro x → ∞) s hodnotou μ(c) = 0,5; pro a < 0 je přechod klesající.
Laicky řečeno

Tvar se volí podle toho, co je přirozené a co se snadno počítá. V praxi zdaleka nejčastěji vyhrají trojúhelníky a lichoběžníky: stačí pár čísel, každý jim rozumí a výpočty jsou rychlé. Na přesném tvaru obvykle záleží méně, než by se zdálo — důležité je, kde funkce začíná, kde vrcholí a kde končí.

μ(x) = max( 0, min( x − a/b − a, c − x/c − b ) )

x − a/b − a
levá hrana — přímka, která má v a hodnotu 0 a v b hodnotu 1; dělení délkou b − a zajistí, že vrchol vyjde přesně 1 bez ohledu na šířku
c − x/c − b
pravá hrana — zrcadlově: v b hodnota 1, v c hodnota 0
min
vybere tu hranu, která je zrovna níž — vlevo od b je pravá hrana nad 1, vpravo od b levá; minimum tak „uřízne“ špičku přesně v b
max(0, …)
mimo interval (a; c) by hrany vyšly záporné; stupeň příslušnosti ale nesmí klesnout pod 0
Trojúhelník jedním výrazem — přesně ten, který počítá funkce trojuhelnik níže. Pro „teplo“ (22, 28, 34) a 25 °C: max(0, min(25 − 22/28 − 22, 34 − 25/34 − 28)) = max(0, 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. Lingvistická proměnná

Definice — lingvistická proměnná (Zadeh, 1975)

Pro neprázdnou množinu X označme 𝓕(X) množinu všech fuzzy množin na X. Lingvistická proměnná je čtveřice (v, T, X, M), kde

  1. v je jméno proměnné (například „teplota“);
  2. X je neprázdná množina, univerzum (například interval [0; 40] °C);
  3. T je neprázdná množina slov, termínů — hodnot, kterých proměnná nabývá (například {zima, příjemně, teplo, horko});
  4. M : T → 𝓕(X) je sémantické pravidlo, které každému termínu t ∈ T přiřadí fuzzy množinu M(t) na X — jeho význam.

Prvek x ∈ X tedy odpovídá termínu t ve stupni μM(t)(x). Zadehova původní definice je pětice: navíc obsahuje syntaktické pravidlo, které termíny generuje (třeba „velmi teplo“ z „teplo“); tady bereme termíny jako pevný výčet.

Laicky řečeno

Slova, kterými popisujeme teplotu, se překrývají — a to je v pořádku. 25 °C je trochu „příjemně“ a trochu „teplo“, přesně jak by to řekl člověk.

Naše teplota má čtyři termíny: zima je lichoběžník (0, 0, 6, 14), příjemně lichoběžník (10, 17, 23, 28), teplo trojúhelník (22, 28, 34) a horko lichoběžník (30, 36, 40, 40). Svislá čára přeskakuje mezi ukázkovými teplotami:

00,51 0510152025303540 12 °C 0,250,29 25 °C 0,600,50 31 °C 0,500,17 teplota T (°C) stupeň příslušnosti μ (0–1)
Lingvistická proměnná teplota a příslušnosti tří teplot zimapříjemněteplohorko
  • 12 °C je „zima“ ze 0,25 a „příjemně“ ze 0,29 — chladné jaro, kdy se nedá rozhodnout.
  • 25 °C je „příjemně“ ze 0,6 a „teplo“ ze 0,5.
  • 31 °C je „teplo“ ze 0,5 a už i „horko“ ze 0,17.
Příklad — příslušnosti krok za krokem

Na každé hraně stačí poměr „kolik už z hrany ušla“ ku „jak je hrana dlouhá“ (barvy podle vzorce trojúhelníku výše: rostoucí hrana jako levá, klesající jako pravá):

12 °C, zima (0, 0, 6, 14) na klesající hraně: 14 − 12/14 − 6 = 2/8 = 0,25

12 °C, příjemně (10, 17, 23, 28) na rostoucí hraně: 12 − 10/17 − 10 = 2/7 ≈ 0,29

25 °C, příjemně na klesající hraně: 28 − 25/28 − 23 = 3/5 = 0,6

25 °C, teplo (22, 28, 34) na rostoucí hraně: 25 − 22/28 − 22 = 3/6 = 0,5

31 °C, teplo na klesající hraně: 34 − 31/34 − 28 = 3/6 = 0,5

31 °C, horko (30, 36, 40, 40) na rostoucí hraně: 31 − 30/36 − 30 = 1/6 ≈ 0,17

Ostatní termíny mají v těchto teplotách příslušnost 0 — teplota leží mimo jejich nosič.

Všimněte si, že příslušnosti jedné teploty se nemusí sčítat na 1 (u 25 °C dávají 1,1). Fuzzy množiny nejsou podíly jednoho celku, ale nezávislé odpovědi na otázky „je to zima?“, „je to příjemně?“…

5. Nosič, jádro a α-řezy

Definice — nosič, jádro, výška, α-řez

Nechť X je neprázdná množina a A fuzzy množina na X s funkcí příslušnosti μA : X → [0, 1].

  1. Nosič (support) množiny A je ostrá množina supp A = {x ∈ X : μA(x) > 0} — prvky, které do A patří aspoň trochu.
  2. Jádro (core) množiny A je ostrá množina core A = {x ∈ X : μA(x) = 1} — prvky, které patří úplně.
  3. Výška množiny A je číslo hgt A = sup {μA(x) : x ∈ X} ∈ [0, 1], kde sup (supremum) je nejmenší horní mez množiny čísel. A je normální, právě když hgt A = 1.
  4. Pro α ∈ (0, 1] je α-řez množiny A ostrá množina Aα = {x ∈ X : μA(x) ≥ α}.
  5. Je-li X ⊆ ℝ interval, je A konvexní, právě když pro každé α ∈ (0, 1] je Aα interval (prázdnou množinu počítáme za interval). Ekvivalentně: pro všechna x1, x2 ∈ X a λ ∈ [0, 1] platí μA(λx1 + (1 − λ)x2) ≥ min(μA(x1), μA(x2)).

Slovy: nosič jsou prvky s nenulovou příslušností, jádro prvky s plnou příslušností a α-řez prvky, které do A patří aspoň ve stupni α.

Laicky řečeno

α-řez je „jak přísní chceme být“. Řez na úrovni 0,5 obsahuje teploty, které jsou příjemné aspoň napůl. Z α-řezů se dá fuzzy množina zpátky složit — jsou to vrstevnice kopce. A díky nim se ostrá matematika dá použít i na fuzzy množiny: stačí ji provést zvlášť na každé úrovni α.

00,51 0510152025303540 α-řez 0,5: [13,5; 25,5]nosič (10; 28)jádro [17; 23] teplota T (°C) stupeň příslušnosti μ (0–1)
Termín „příjemně“: nosič, jádro a α-řez pro α = 0,5 příjemně

Pro „příjemně“ je nosič otevřený interval (10; 28), jádro [17; 23] a α-řez na úrovni 0,5 interval [13,5; 25,5]. Množina je normální (výška 1) a konvexní — jako všechny naše termíny. (Supremum sup ve definici výšky je nejmenší horní mez hodnot; u našich spojitých funkcí na uzavřeném intervalu je to prostě maximum.)

Aα = [ a + α (b − a) ;  d − α (d − c) ]

α
úroveň řezu (v obrázku jantarová čára) — kolik příslušnosti požadujeme; čím vyšší, tím dál od okrajů musíme jít, a řez se zužuje
a
levý okraj nosiče — odtud levá hrana stoupá; při α → 0 začíná řez právě tady
(b − a)
šířka levé hrany — na ní stoupne příslušnost z 0 na 1, takže úrovně α dosáhne po ušlém zlomku α této šířky
d
pravý okraj nosiče — odtud se měří zpátky doleva
(d − c)
šířka pravé hrany — zrcadlově: od d ujdeme doleva zlomek α této šířky
α-řez lichoběžníku (a, b, c, d) pro α ∈ (0, 1]: stačí vyřešit x − a/b − a = α a d − x/d − c = α. Pro α = 1 vyjde jádro [b; c].
Příklad — α-řezy termínu „příjemně“ (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] = jádro

Barvy podle vzorce α-řezu výše: a = 10, b − a = 7, d = 28, d − c = 5.

Řezy do sebe zapadají: čím vyšší α, tím menší interval, a každý vyšší leží uvnitř nižšího. Zpátky se fuzzy množina složí jako μA(x) = sup {α : x ∈ Aα} — příslušnost bodu je nejvyšší řez, do kterého ještě padne.

Když funkce příslušnosti není dána vzorcem, ale třeba naměřenými body, počítá se α-řez na jemné mřížce. Přesně tak to dělá program, který kreslí obrázky v tomhle dílu:

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   # u konvexní množiny interval

prijemne = lichobeznik(10, 17, 23, 28)
print(alfa_rez(prijemne, 0.5))    # (13.5, 25.5)

6. Doplněk, průnik a sjednocení

Definice — Zadehovy operace

Nechť X je neprázdná množina a A, B fuzzy množiny na X s funkcemi příslušnosti μA, μB : X → [0, 1]. Doplněk ¬A, průnik A ∩ B a sjednocení A ∪ B jsou fuzzy množiny na X, jejichž funkce příslušnosti jsou pro každé x ∈ X dány předpisy

  1. μ¬A(x) = 1 − μA(x),
  2. μA ∩ B(x) = min(μA(x), μB(x)),
  3. μA ∪ B(x) = max(μA(x), μB(x)).

Prvek x tedy patří do průniku v takové míře, v jaké patří do té z množin, do které patří méně, a do sjednocení v míře té, do které patří víc. Jsou-li A, B ostré (μA, μB nabývají jen hodnot 0 a 1), dávají tyto předpisy přesně charakteristické funkce klasického doplňku X ∖ A, průniku a sjednocení.

Laicky řečeno

„Příjemně a zároveň teplo“ je tak pravdivé, jak je pravdivá ta slabší z obou částí; „příjemně nebo teplo“ tak, jak ta silnější. Řetěz je silný jako nejslabší článek, a když stačí jedno ze dvou, rozhoduje to lepší.

00,51 0510152025303540 není příjemně = 1 − μ příjemně a teplo = min příjemně nebo teplo = max teplota T (°C) stupeň příslušnosti μ (0–1)
Operace s termíny „příjemně“ a „teplo“ příjemněteplo

Při 25 °C je „příjemně a teplo“ min(0,6; 0,5) = 0,5 a „příjemně nebo teplo“ max(0,6; 0,5) = 0,6 (barvy podle vzorce níže). Průnik nejvýš dosáhne 0,545 kolem 25,3 °C, kde se obě křivky kříží — žádná teplota není oboje úplně.

μP ∩ T(x) = min( μP(x), μT(x) )

μP(x)
jak moc je teplota x „příjemně“ (v obrázku zelená křivka)
μT(x)
jak moc je „teplo“ (jantarová křivka) — obě příslušnosti se počítají nezávisle, každá svou funkcí
min
„a zároveň“ smí být nejvýš tak pravdivé jako slabší část — kdyby bylo víc, tvrdili bychom o teplotě víc, než unese jedno z obou slov; a pro hodnoty 0 a 1 dá min přesně klasické „a“
Sjednocení je totéž s max (silnější z obou), doplněk 1 − μ převrátí stupnici: co patří úplně, nepatří vůbec, a co napůl, zůstane napůl.
Příklad — kde je průnik nejvyšší

Mezi 23 a 28 °C příjemně klesá a teplo roste, takže minimum je nejvyšší tam, kde se křivky protnou (barvy podle vzorce výše):

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

Vlevo od průsečíku je nižší teplo, vpravo příjemně — minimum tam vždycky klesá.

Tady se fuzzy množiny od klasických liší v něčem zásadním. Platí pro ně skoro všechna známá pravidla — komutativita, asociativita, De Morganovy zákony —, ale ne zákon vyloučeného třetího. Průnik A ∩ ¬A nemusí být prázdný: „příjemně a zároveň není příjemně“ má při 13,5 °C hodnotu 0,5. Pro neurčitá slova je to správně — o teplotě, která je příjemná napůl, se dá zároveň napůl říct, že příjemná není. Jiné možnosti průniku a sjednocení (takzvané t-normy) přijdou v dílu o fuzzy logice.

Věta — De Morganovy zákony platí, vyloučené třetí ne

Nechť X je neprázdná množina, A, B jsou fuzzy množiny na X a ¬, ∩, ∪ jsou Zadehovy operace (definice výše). Pak

  1. ¬(A ∩ B) = ¬A ∪ ¬B a ¬(A ∪ B) = ¬A ∩ ¬B, tj. pro každé x ∈ X je μ¬(A ∩ B)(x) = μ¬A ∪ ¬B(x) a μ¬(A ∪ B)(x) = μ¬A ∩ ¬B(x);
  2. pro každé x ∈ X je μA ∩ ¬A(x) ≤ ½ a μA ∪ ¬A(x) ≥ ½, přičemž v obou nerovnostech nastane rovnost, právě když μA(x) = ½.

Důkaz. (1) Označme p = μA(x), q = μB(x) a bez újmy p ≤ q. Pak 1 − min(p, q) = 1 − p, a protože 1 − p ≥ 1 − q, je také max(1 − p, 1 − q) = 1 − p. Druhý zákon stejně se zaměněným min a max.

(2) Čísla p a 1 − p mají součet 1, takže menší z nich je nejvýš ½ a větší aspoň ½. ∎

Klasický zákon vyloučeného třetího žádá A ∪ ¬A = X, tedy hodnotu 1 všude. U fuzzy množiny platí jen tam, kde je μA 0 nebo 1; nejhůř je to v bodech s příslušností ½ — u „příjemně“ při 13,5 a 25,5 °C, kde A ∩ ¬A i A ∪ ¬A mají hodnotu 0,5.

Kontrola na čísle (barvy podle vzorce průniku výše): při 25 °C je ¬(P ∩ T) = 1 − min(0,6; 0,5) = 0,5 a ¬P ∪ ¬T = max(0,4; 0,5) = 0,5.

7. Velmi teplo, trochu teplo

Definice — jazykové modifikátory (Zadeh, 1972)

Nechť X je neprázdná množina a A fuzzy množina na X. Koncentrace velmi A („velmi“) a dilatace trochu A („trochu“, „více méně“) jsou fuzzy množiny na X s funkcemi příslušnosti danými pro každé x ∈ X předpisy

μvelmi A(x) = (μA(x))2,    μtrochu A(x) = √μA(x).

Protože μA(x) ∈ [0, 1], leží v [0, 1] i druhá mocnina a odmocnina, takže jde opět o fuzzy množiny; hodnoty 0 a 1 se nezmění.

Laicky řečeno

Umocnění čísla mezi 0 a 1 ho zmenší — a to víc, čím je menší: 0,5 se změní na 0,25, ale 1 zůstane 1. „Velmi teplo“ je proto užší a přísnější než „teplo“. Odmocnina naopak množinu rozšíří: 25 °C je „teplo“ ze 0,5, „trochu teplo“ ze √0,5 ≈ 0,71 a „velmi teplo“ jen ze 0,52 = 0,25 (barvy podle vzorce níže).

00,51 0510152025303540 teplota T (°C) stupeň příslušnosti μ (0–1)
Teplo, velmi teplo a trochu teplo trochu teplo (√μ)teplovelmi teplo (μ²)
Definice — inkluze fuzzy množin

Nechť X je neprázdná množina a A, B fuzzy množiny na X. Fuzzy množina A je podmnožinou B, píšeme A ⊆ B, právě když

∀x ∈ X : μA(x) ≤ μB(x).

Každý prvek tedy patří do B aspoň v takové míře jako do A. Pro ostré množiny je to obvyklá inkluze: kde je χA(x) = 1, musí být i χB(x) = 1.

μ(x)2 ≤ μ(x) ≤ √μ(x)   pro μ(x) ∈ [0, 1]

μ2
„velmi“ (červená křivka) — násobení číslem nejvýš 1 nikdy nezvětší, takže kvadrát leží pod původní křivkou; nejvíc ubere u středních hodnot, nulu a jedničku nechá
μ
„teplo“ samo (jantarová křivka) — výchozí termín, který modifikátory jen přetvarují; nosič ani jádro se nezmění
√μ
„trochu“ (fialová křivka) — odmocnina je inverze ke kvadrátu, takže zvedá to, co kvadrát stlačuje: √0,25 = 0,5
Proto velmi A ⊆ A ⊆ trochu A: „velmi teplo“ je vždycky teplo, a co je teplo, je aspoň trochu teplo. Opakováním vzniká stupnice: „velmi velmi“ je μ4.
Příklad — o kolik „velmi“ zúží a „trochu“ rozšíří

α-řez na úrovni 0,5 pro „teplo“ (22, 28, 34) je [25; 31]. Pro modifikované termíny stačí převést úroveň zpátky na původní μ:

velmi teplo: μ² ≥ 0,5  ⇔  μ ≥ √0,5 ≈ 0,707  →  [22 + 0,707 · 6; 34 − 0,707 · 6] ≈ [26,24; 29,76]

trochu teplo: √μ ≥ 0,5  ⇔  μ ≥ 0,25  →  [22 + 0,25 · 6; 34 − 0,25 · 6] = [23,5; 32,5]

Intervaly počítá vzorec α-řezu výše (barvy podle něj) s trojúhelníkem „teplo“ jako lichoběžníkem (22, 28, 28, 34): a = 22, b − a = 6, d = 34, d − c = 6.

Interval „aspoň napůl“ má 6 °C pro teplo, asi 3,5 °C pro velmi teplo a 9 °C pro trochu teplo.

8. Fuzzy množiny v praxi

  • Fuzzy řízení. Metro v japonském Sendai jezdí od roku 1987 s fuzzy regulátorem, který rozjíždí a brzdí plynuleji než člověk. Kolem roku 1990 následovala v Japonsku vlna fuzzy praček, kamer a klimatizací. Jak takový regulátor funguje, vysvětlí díl o fuzzy řízení.
  • Zpracování obrazu a shlukování. Pixel na rozhraní dvou oblastí může patřit trochu do obou; fuzzy shlukování přiřazuje body do více shluků najednou.
  • Strojové učení. Měkké výstupy klasifikátorů nebo technika label smoothing (místo jistého „je to kočka“ cíl „kočka ze 0,9“) nejsou fuzzy množiny v Zadehově smyslu, ale sdílejí s nimi myšlenku, že příslušnost do třídy nemusí být jen 0 nebo 1.
  • Jazyk. Jazykové modely pracují se slovy jako „docela“, „skoro“ nebo „spíš ne“ každý den. Fuzzy množiny jsou jeden z mála nástrojů, které takovým slovům dávají přesný, ověřitelný význam.

9. Shrnutí

  • Fuzzy množina přiřazuje každému prvku stupeň příslušnosti z intervalu [0, 1]; ostrá množina je zvláštní případ s hodnotami 0 a 1.
  • Funkce příslušnosti mívají tvar trojúhelníku, lichoběžníku, gaussovského kopce nebo sigmoidy.
  • Lingvistická proměnná má jako hodnoty slova — termíny, které se mohou překrývat; 25 °C je „příjemně“ ze 0,6 a „teplo“ ze 0,5.
  • Nosič, jádro a α-řezy popisují tvar fuzzy množiny ostrými množinami.
  • Doplněk je 1 − μ, průnik minimum a sjednocení maximum; neplatí zákon vyloučeného třetího. Modifikátor „velmi“ je μ², „trochu“ √μ.

Chcete si to osahat? Nechte AI agenta nakreslit funkce příslušnosti pro slova, kterými popisujete vlastní den — „brzy“, „pozdě“, „dlouho“ — a zeptejte se pár lidí, kde by hranice dali oni.

Máte na to jiný názor? Napište na support@coden-app.com.

Agent na vašem počítači, ovládaný z telefonu