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.
Série Základy AI Díl 32 z 83
- Mapa umělé inteligence: co je co a jak to do sebe zapadá
- Stručná historie umělé inteligence: od Turinga po jazykové modely
- Data, model, trénink, inference: základní pojmy na jednom příkladu
- Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
- Množiny a relace: stavebnice, ze které se skládají definice v AI
- Funkce a zobrazení: proč je každý model v AI funkce
- Logika a důkazy: pravidla, podle kterých se v AI uvažuje
- Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
- Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
- Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
- Gradientní sestup: jak se model učí
- Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
- Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
- Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
- Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
- Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
- Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
- Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
- Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
- Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
- Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
- Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
- Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
- Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
- Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
- Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
- Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
- Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
- Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
- Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
- Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
- Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
- Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
- Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
- Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
- Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
- Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
- Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
- Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
- Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
- Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
- Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
- Přeučení a regularizace: proč model, který zná data nazpaměť, selže
- Vyhodnocení modelu: křížová validace, F1 a křivka ROC
- Shlukování a snížení dimenze: k-means, PCA a t-SNE
- Klasifikace a regrese: dvě úlohy učení s učitelem
- Lineární regrese: nejmenší čtverce geometricky i maticově
- Polynomiální a nelineární regrese: jak přímku ohnout
- Logistická regrese: sigmoida, šance a křížová entropie
- Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
- Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
- Ztrátové funkce: co přesně model minimalizuje
- Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
- Ansámbly: náhodný les a gradient boosting
- SVM a jádrový trik: nejširší hranice a jak ji ohnout
- Signál a vzorkování: proč platí Nyquistův teorém
- Fourierova transformace: rozklad signálu na frekvence
- Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
- Zvuk a řeč: spektrogram, melová škála a MFCC
- Obraz jako signál: pixely, barvy, konvoluce a hrany
- Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
- Neuronová síť od nuly: zpětné šíření chyby krok za krokem
- Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
- Konvoluční sítě: jak síť poznává obrázky
- Rekurentní sítě: paměť pro posloupnosti a mizející gradient
- LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
- Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
- Embeddingy a word2vec: jak se slovo stane vektorem
- Mechanismus pozornosti: jak se model naučí, kam se dívat
- Transformery a velké jazykové modely: architektura krok za krokem
- Tokenizace: jak se text rozseká na kousky pro model
- Předtrénování a škálování: proč větší model a víc dat funguje
- Doladění a RLHF: jak se z doplňovače textu stane asistent
- Prompty, kontext a RAG: jak modelu dát správné informace
- Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
- Generativní adversariální sítě (GAN): padělatel proti detektivovi
- Difúzní modely: jak se z čistého šumu stane obrázek
- Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
- Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
- Policy gradient a PPO: učení přímo strategie
- Jak funguje AI agent: jazykový model ve smyčce s nástroji
- Programování s AI agenty: zadání, testy a kontrola
- 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 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.
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.
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}.
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.
- 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.
- 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.
- Gaussovská funkce se středem m ∈ ℝ a šířkou s > 0: μ(x) = exp(−(x − m)2/2s2) — hladký kopec s vrcholem μ(m) = 1.
- 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í.
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
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
- v je jméno proměnné (například „teplota“);
- X je neprázdná množina, univerzum (například interval [0; 40] °C);
- T je neprázdná množina slov, termínů — hodnot, kterých proměnná nabývá (například {zima, příjemně, teplo, horko});
- 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.
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:
- 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].
- Nosič (support) množiny A je ostrá množina supp A = {x ∈ X : μA(x) > 0} — prvky, které do A patří aspoň trochu.
- Jádro (core) množiny A je ostrá množina core A = {x ∈ X : μA(x) = 1} — prvky, které patří úplně.
- 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.
- Pro α ∈ (0, 1] je α-řez množiny A ostrá množina Aα = {x ∈ X : μA(x) ≥ α}.
- 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 α.
α-ř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 α.
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
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
- μ¬A(x) = 1 − μA(x),
- μA ∩ B(x) = min(μA(x), μB(x)),
- μ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í.
„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ší.
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“
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
- ¬(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);
- 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í.
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).
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
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.