Preskočiť na obsah
coden

Fuzzy množiny a funkcie príslušnosti: ako zapísať „trochu teplo“

Ostrá hranica a paradox kopy, fuzzy množina a stupeň príslušnosti, tvary funkcií príslušnosti, lingvistická premenná, nosič, jadro a α-rezy, Zadehove operácie a modifikátory „veľmi“ a „trochu“ — na teplote od zimy po horúčavu.

12 minút Matěj Žalmánek 2026-10-15

Séria Základy AI Diel 32 z 52
  1. Mapa umelej inteligencie: čo je čo a ako to do seba zapadá
  2. Stručná história umelej inteligencie: od Turinga po jazykové modely
  3. Dáta, model, tréning, inferencia: základné pojmy na jednom príklade
  4. Ako čítať matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relácie: stavebnica, z ktorej sa skladajú definície v AI
  6. Funkcie a zobrazenia: prečo je každý model v AI funkcia
  7. Logika a dôkazy: pravidlá, podľa ktorých sa v AI uvažuje
  8. Grafy a stromy: štruktúra, na ktorej stojí hľadanie aj neurónové siete
  9. Lineárna algebra pre strojové učenie: vektory, matice a prečo AI hlavne násobí
  10. Derivácie, gradient a reťazové pravidlo: ako model zistí, ktorým smerom sa učiť
  11. Gradientný zostup: ako sa model učí
  12. Čo je pravdepodobnosť: od hodu kockou ku Kolmogorovovým axiómam
  13. Podmienená pravdepodobnosť a Bayesova veta: ako zmeniť odhad, keď sa dozviete niečo nové
  14. Náhodná premenná a distribučná funkcia: jedna funkcia, ktorá o rozdelení povie všetko
  15. Funkcia hustoty a pravdepodobnostná funkcia: prečo má spojitá premenná v bode pravdepodobnosť nula
  16. Stredná hodnota, rozptyl a kovariancia: kde rozdelenie leží, aké je široké a čo s čím súvisí
  17. Prehľad pravdepodobnostných rozdelení: Bernoulliho, binomické, Poissonovo, rovnomerné, normálne a exponenciálne
  18. Zákon veľkých čísel a centrálna limitná veta: prečo sa priemery správajú tak predvídateľne
  19. Štatistika a odhady parametrov: maximálna vierohodnosť, MAP a intervaly spoľahlivosti
  20. Teória informácie: entropia, krížová entropia a KL divergencia — odkiaľ sa berú stratové funkcie
  21. Prehľadávanie stavového priestoru: BFS, DFS, UCS a A* s animáciami
  22. Hry a protivník: minimax, alfa-beta orezávanie a Monte Carlo tree search
  23. Splňovanie obmedzujúcich podmienok: backtracking, propagácia obmedzení a AC-3 na sudoku a mape krajov
  24. Logika a znalostné systémy: dopredné a spätné reťazenie, rezolúcia a expertné systémy
  25. Plánovanie: STRIPS, svet kociek, heuristiky z relaxácie a plánovanie v AI agentoch
  26. Lokálne hľadanie a simulované žíhanie: obchodný cestujúci cez krajské mestá
  27. Genetické algoritmy: populácia, kríženie, mutácia a výber na batohu na výlet
  28. Evolučné stratégie a genetické programovanie: od pravidla jednej pätiny po Keplerov zákon
  29. Optimalizácia mravčou kolóniou: ako feromónová stopa nájde krátku cestu
  30. Optimalizácia rojom častíc: zotrvačnosť, vlastná skúsenosť a skúsenosť roja
  31. Neuroevolúcia: evolúcia váh aj tvaru neurónových sietí a algoritmus NEAT
  32. Fuzzy množiny a funkcie príslušnosti: ako zapísať „trochu teplo“
  33. Fuzzy logika a pravdepodobnosť: prečo „trochu teplo“ neznamená „pravdepodobne teplo“
  34. Fuzzy logika: t-normy, implikácie a pravidlá AK–TAK
  35. Fuzzy riadenie: Mamdani a Sugeno od ventilátora po kyvadlo na vozíku
  36. Fuzzy zhlukovanie: algoritmus fuzzy c-means a body medzi zhlukmi
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidlá, ktoré sa učia z dát
  38. Markovove reťazce: prechodová matica, stacionárne rozdelenie a PageRank
  39. Skryté Markovove modely: Viterbiho algoritmus a nepoctivé kasíno
  40. Bayesovské siete: prečo je tráva mokrá a čo z toho vyplýva pre postrekovač
  41. Kalmanov filter: ako z nepresných meraní odhadnúť, kde auto je a ako rýchlo ide
  42. Druhy strojového učenia: s učiteľom, bez učiteľa, s čiastočným učiteľom a ďalšie
  43. Prompty, kontext a RAG: ako modelu dať správne informácie
  44. Variačné autoenkodéry (VAE): nové obrázky zo spojitého latentného priestoru
  45. Generatívne adversariálne siete (GAN): falšovateľ proti detektívovi
  46. Difúzne modely: ako sa z čistého šumu stane obrázok
  47. Markovove rozhodovacie procesy: stavy, akcie, odmeny a Bellmanove rovnice
  48. Q-learning a DQN: učenie hodnoty akcií od tabuľky po neurónovú sieť
  49. Policy gradient a PPO: učenie priamo stratégie
  50. Ako funguje AI agent: jazykový model v slučke s nástrojmi
  51. Programovanie s AI agentmi: zadanie, testy a kontrola
  52. Vyhodnocovanie a bezpečnosť AI systémov: ako merať a ako strážiť

Celá osnova série Hotovo: 52 z 83 tém

Čo si odnesiete
  • Čo je fuzzy množina a prečo stupeň príslušnosti nie je pravdepodobnosť.
  • Ako sa slová ako „teplo“ alebo „príjemne“ zapíšu funkciami príslušnosti a ako sa prekrývajú.
  • Ako fungujú fuzzy prienik, zjednotenie a doplnok a prečo neplatí zákon vylúčenia tretieho.

Čo sa hodí vedieť vopred: Množiny a relácie: stavebnica, z ktorej sa skladajú definície v AI, Funkcie a zobrazenia: prečo je každý model v AI funkcia

Koľko zrniek piesku tvorí kopu? Milión určite. Jedno určite nie. A keď z kopy odoberiete jedno zrnko, stále je to kopa — takže podľa tej logiky by aj jedno zrnko bolo kopou. Tento paradox poznali už starí Gréci a ukazuje, že veľa slov, ktorými hovoríme o svete, nemá ostrú hranicu: vysoký, teplo, rýchlo, skoro plno. Klasická matematika s nimi zaobchádza zle, pretože prvok do množiny buď patrí, alebo nepatrí. V roku 1965 navrhol Lotfi Zadeh z Kalifornskej univerzity v Berkeley jednoduché riešenie: dovoliť, aby prvok do množiny patril trochu.

Týmto dielom sa začína modul o fuzzy logike. Nadväzuje na diely Množiny a relácie a Funkcie a zobrazenia.

1. Ostrá hranica a jej problém

Definícia — charakteristická funkcia

Nech X je neprázdna množina (univerzum — všetky prvky, o ktorých hovoríme) a A ⊆ X je klasická (ostrá) množina. Charakteristická funkcia množiny A je funkcia χA : X → {0, 1} daná pre každé x ∈ X predpisom

χA(x) = 1,  ak x ∈ A;    χA(x) = 0,  ak x ∉ A.

Naopak každá funkcia χ : X → {0, 1} je charakteristickou funkciou práve jednej množiny, totiž A = {x ∈ X : χ(x) = 1}. Ostrá množina je teda svojou charakteristickou funkciou jednoznačne určená: prvok x do nej patrí práve vtedy, keď χA(x) = 1.

Laicky povedané

Ostrá množina je zoznam s jasným áno a nie. Povedzme, že „teplo“ je od 25 °C vyššie. Potom je 25 °C teplo a 24,9 °C nie je — hoci rozdiel nikto nespozná. Hranica na jednom mieste je ľubovoľná a malá zmena vstupu urobí skok vo výsledku.

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

2. Fuzzy množina

Definícia — fuzzy množina (Zadeh, 1965)

Nech X je neprázdna množina (univerzum). Fuzzy množina A na X je daná funkciou μA : X → [0, 1], ktorú nazývame funkcia príslušnosti; formálne je to množina dvojíc

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

Pre x ∈ X je číslo μA(x) ∈ [0, 1] stupeň príslušnosti prvku x do A: hodnota 1 znamená „patrí úplne“, 0 „nepatrí vôbec“ a čísla medzi tým „patrí čiastočne“. Dve fuzzy množiny A, B na X sa rovnajú práve vtedy, keď μA(x) = μB(x) pre každé x ∈ X.

Ostrá množina je osobitný prípad: ak platí μA(x) ∈ {0, 1} pre každé x ∈ X, je μA charakteristická funkcia ostrej množiny {x ∈ X : μA(x) = 1}.

Laicky povedané

Namiesto „patrí, nepatrí“ dostane každý prvok číslo od nuly po jednotku: ako veľmi do množiny patrí. 28 °C je „teplo“ úplne (1), 25 °C napoly (0,5), 20 °C vôbec (0). Medzi tým sa príslušnosť mení plynulo — žiadny skok medzi 24,9 a 25.

Dôležité je, čím stupeň príslušnosti nie je: nie je to pravdepodobnosť. Keď je 25 °C „teplo“ na 0,5, neznamená to, že s päťdesiatpercentnou šancou je teplo. Teplota je známa presne; nejasné je slovo. Rozdielu medzi neurčitosťou slova a neistotou náhody sa venuje nasledujúci diel.

3. Tvary funkcií príslušnosti

Definícia — bežné funkcie príslušnosti

Vo všetkých prípadoch je univerzum X = ℝ (alebo jeho interval) a μ : ℝ → [0, 1] je funkcia príslušnosti; exp(t) = et je exponenciála.

  1. Trojuholníková funkcia s parametrami a, b, c ∈ ℝ, a < b < c: μ(x) = max(0, min(x − a/b − a, c − x/c − b)). Teda μ(x) = 0 pre x ≤ a aj pre x ≥ c, na [a; b] rastie lineárne z 0 do 1 a na [b; c] lineárne klesá z 1 do 0.
  2. Lichobežníková funkcia s parametrami a, b, c, d ∈ ℝ, a ≤ b ≤ c ≤ d: pre každé x ∈ ℝ je
    • μ(x) = 0, ak x < a alebo x > d;
    • μ(x) = x − a/b − a, ak a ≤ x < b;
    • μ(x) = 1, ak b ≤ x ≤ c;
    • μ(x) = d − x/d − c, ak c < x ≤ d.
    Pri a = b (alebo c = d) je príslušný interval prázdny a funkcia začína (končí) rovno hodnotou 1 — tak je zadaná napríklad „zima“ (0, 0, 6, 14) nižšie.
  3. Gaussovská funkcia so stredom m ∈ ℝ a šírkou s > 0: μ(x) = exp(−(x − m)2/2s2) — hladký kopec s vrcholom μ(m) = 1.
  4. Sigmoidná funkcia so strmosťou a > 0 a stredom c ∈ ℝ: μ(x) = 1/1 + exp(−a(x − c)) — rastúci plynulý prechod od 0 (pre x → −∞) do 1 (pre x → ∞) s hodnotou μ(c) = 0,5; pre a < 0 je prechod klesajúci.
Laicky povedané

Tvar sa volí podľa toho, čo je prirodzené a čo sa ľahko počíta. V praxi zďaleka najčastejšie vyhrajú trojuholníky a lichobežníky: stačí pár čísel, každý im rozumie a výpočty sú rýchle. Na presnom tvare obvykle záleží menej, než by sa zdalo — dôležité je, kde funkcia začína, kde vrcholí a kde končí.

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

x − a/b − a
ľavá hrana — priamka, ktorá má v a hodnotu 0 a v b hodnotu 1; delenie dĺžkou b − a zaistí, že vrchol vyjde presne 1 bez ohľadu na šírku
c − x/c − b
pravá hrana — zrkadlovo: v b hodnota 1, v c hodnota 0
min
vyberie tú hranu, ktorá je práve nižšie — naľavo od b je pravá hrana nad 1, napravo od b ľavá; minimum tak „odreže“ špičku presne v b
max(0, …)
mimo intervalu (a; c) by hrany vyšli záporné; stupeň príslušnosti však nesmie klesnúť pod 0
Trojuholník jedným výrazom — presne ten, ktorý počíta funkcia trojuhelnik nižšie. Pre „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á premenná

Definícia — lingvistická premenná (Zadeh, 1975)

Pre neprázdnu množinu X označme 𝓕(X) množinu všetkých fuzzy množín na X. Lingvistická premenná je štvorica (v, T, X, M), kde

  1. v je meno premennej (napríklad „teplota“);
  2. X je neprázdna množina, univerzum (napríklad interval [0; 40] °C);
  3. T je neprázdna množina slov, termov — hodnôt, ktoré premenná nadobúda (napríklad {zima, príjemne, teplo, horúco});
  4. M : T → 𝓕(X) je sémantické pravidlo, ktoré každému termu t ∈ T priradí fuzzy množinu M(t) na X — jeho význam.

Prvok x ∈ X teda zodpovedá termu t v stupni μM(t)(x). Zadehova pôvodná definícia je pätica: navyše obsahuje syntaktické pravidlo, ktoré termy generuje (napríklad „veľmi teplo“ z „teplo“); tu berieme termy ako pevný zoznam.

Laicky povedané

Slová, ktorými opisujeme teplotu, sa prekrývajú — a to je v poriadku. 25 °C je trochu „príjemne“ a trochu „teplo“, presne ako by to povedal človek.

Naša teplota má štyri termy: zima je lichobežník (0, 0, 6, 14), príjemne lichobežník (10, 17, 23, 28), teplo trojuholník (22, 28, 34) a horúco lichobežník (30, 36, 40, 40). Zvislá čiara preskakuje medzi ukážkovými teplotami:

00,51 0510152025303540 12 °C 0,250,29 25 °C 0,600,50 31 °C 0,500,17 teplota T (°C) stupeň príslušnosti μ (0–1)
Lingvistická premenná teplota a príslušnosti troch teplôt zimapríjemneteplohorúco
  • 12 °C je „zima“ na 0,25 a „príjemne“ na 0,29 — chladná jar, keď sa nedá rozhodnúť.
  • 25 °C je „príjemne“ na 0,6 a „teplo“ na 0,5.
  • 31 °C je „teplo“ na 0,5 a už aj „horúco“ na 0,17.
Príklad — príslušnosti krok za krokom

Na každej hrane stačí pomer „koľko už z hrany prešla“ ku „aká je hrana dlhá“ (farby podľa vzorca trojuholníka vyššie: rastúca hrana ako ľavá, klesajúca ako pravá):

12 °C, zima (0, 0, 6, 14) na klesajúcej hrane: 14 − 12/14 − 6 = 2/8 = 0,25

12 °C, príjemne (10, 17, 23, 28) na rastúcej hrane: 12 − 10/17 − 10 = 2/7 ≈ 0,29

25 °C, príjemne na klesajúcej hrane: 28 − 25/28 − 23 = 3/5 = 0,6

25 °C, teplo (22, 28, 34) na rastúcej hrane: 25 − 22/28 − 22 = 3/6 = 0,5

31 °C, teplo na klesajúcej hrane: 34 − 31/34 − 28 = 3/6 = 0,5

31 °C, horúco (30, 36, 40, 40) na rastúcej hrane: 31 − 30/36 − 30 = 1/6 ≈ 0,17

Ostatné termy majú pri týchto teplotách príslušnosť 0 — teplota leží mimo ich nosiča.

Všimnite si, že príslušnosti jednej teploty sa nemusia sčítať na 1 (pri 25 °C dávajú 1,1). Fuzzy množiny nie sú podiely jedného celku, ale nezávislé odpovede na otázky „je zima?“, „je príjemne?“…

5. Nosič, jadro a α-rezy

Definícia — nosič, jadro, výška, α-rez

Nech X je neprázdna množina a A fuzzy množina na X s funkciou príslušnosti μA : X → [0, 1].

  1. Nosič (support) množiny A je ostrá množina supp A = {x ∈ X : μA(x) > 0} — prvky, ktoré do A patria aspoň trochu.
  2. Jadro (core) množiny A je ostrá množina core A = {x ∈ X : μA(x) = 1} — prvky, ktoré patria úplne.
  3. Výška množiny A je číslo hgt A = sup {μA(x) : x ∈ X} ∈ [0, 1], kde sup (suprémum) je najmenšie horné ohraničenie množiny čísel. A je normálna práve vtedy, keď hgt A = 1.
  4. Pre α ∈ (0, 1] je α-rez množiny A ostrá množina Aα = {x ∈ X : μA(x) ≥ α}.
  5. Ak je X ⊆ ℝ interval, je A konvexná práve vtedy, keď pre každé α ∈ (0, 1] je Aα interval (prázdnu množinu považujeme za interval). Ekvivalentne: pre všetky x1, x2 ∈ X a λ ∈ [0, 1] platí μA(λx1 + (1 − λ)x2) ≥ min(μA(x1), μA(x2)).

Slovami: nosič sú prvky s nenulovou príslušnosťou, jadro prvky s plnou príslušnosťou a α-rez prvky, ktoré do A patria aspoň v stupni α.

Laicky povedané

α-rez je „akí prísni chceme byť“. Rez na úrovni 0,5 obsahuje teploty, ktoré sú príjemné aspoň napoly. Z α-rezov sa dá fuzzy množina späť zložiť — sú to vrstevnice kopca. A vďaka nim sa ostrá matematika dá použiť aj na fuzzy množiny: stačí ju vykonať osobitne na každej úrovni α.

00,51 0510152025303540 α-rez 0,5: [13,5; 25,5]nosič (10; 28)jadro [17; 23] teplota T (°C) stupeň príslušnosti μ (0–1)
Term „príjemne“: nosič, jadro a α-rez pre α = 0,5 príjemne

Pre „príjemne“ je nosič otvorený interval (10; 28), jadro [17; 23] a α-rez na úrovni 0,5 interval [13,5; 25,5]. Množina je normálna (výška 1) a konvexná — ako všetky naše termy. (Suprémum sup v definícii výšky je najmenšie horné ohraničenie hodnôt; pri našich spojitých funkciách na uzavretom intervale je to jednoducho maximum.)

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

α
úroveň rezu (na obrázku jantárová čiara) — koľko príslušnosti požadujeme; čím vyššia, tým ďalej od okrajov musíme ísť, a rez sa zužuje
a
ľavý okraj nosiča — odtiaľ ľavá hrana stúpa; pri α → 0 začína rez práve tu
(b − a)
šírka ľavej hrany — na nej stúpne príslušnosť z 0 na 1, takže úroveň α dosiahne po prejdenom zlomku α tejto šírky
d
pravý okraj nosiča — odtiaľ sa meria späť doľava
(d − c)
šírka pravej hrany — zrkadlovo: od d prejdeme doľava zlomok α tejto šírky
α-rez lichobežníka (a, b, c, d) pre α ∈ (0, 1]: stačí vyriešiť x − a/b − a = α a d − x/d − c = α. Pre α = 1 vyjde jadro [b; c].
Príklad — α-rezy termu „príjemne“ (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] = jadro

Farby podľa vzorca α-rezu vyššie: a = 10, b − a = 7, d = 28, d − c = 5.

Rezy do seba zapadajú: čím vyššie α, tým menší interval, a každý vyšší leží vnútri nižšieho. Späť sa fuzzy množina zloží ako μA(x) = sup {α : x ∈ Aα} — príslušnosť bodu je najvyšší rez, do ktorého ešte padne.

Keď funkcia príslušnosti nie je daná vzorcom, ale napríklad nameranými bodmi, počíta sa α-rez na jemnej mriežke. Presne tak to robí program, ktorý kreslí obrázky v tomto diele:

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   # pri konvexnej množine interval

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

6. Doplnok, prienik a zjednotenie

Definícia — Zadehove operácie

Nech X je neprázdna množina a A, B fuzzy množiny na X s funkciami príslušnosti μA, μB : X → [0, 1]. Doplnok ¬A, prienik A ∩ B a zjednotenie A ∪ B sú fuzzy množiny na X, ktorých funkcie príslušnosti sú pre každé x ∈ X dané predpismi

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

Prvok x teda patrí do prieniku v takej miere, v akej patrí do tej z množín, do ktorej patrí menej, a do zjednotenia v miere tej, do ktorej patrí viac. Ak sú A, B ostré (μA, μB nadobúdajú iba hodnoty 0 a 1), dávajú tieto predpisy presne charakteristické funkcie klasického doplnku X ∖ A, prieniku a zjednotenia.

Laicky povedané

„Príjemne a zároveň teplo“ je také pravdivé, aká pravdivá je slabšia z oboch častí; „príjemne alebo teplo“ také, aká je silnejšia. Reťaz je silná ako najslabší článok, a keď stačí jedno z dvoch, rozhoduje to lepšie.

00,51 0510152025303540 nie je príjemne = 1 − μ príjemne a teplo = min príjemne alebo teplo = max teplota T (°C) stupeň príslušnosti μ (0–1)
Operácie s termami „príjemne“ a „teplo“ príjemneteplo

Pri 25 °C je „príjemne a teplo“ min(0,6; 0,5) = 0,5 a „príjemne alebo teplo“ max(0,6; 0,5) = 0,6 (farby podľa vzorca nižšie). Prienik najvyššie dosiahne 0,545 okolo 25,3 °C, kde sa obe krivky krížia — žiadna teplota nie je oboje úplne.

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

μP(x)
ako veľmi je teplota x „príjemne“ (na obrázku zelená krivka)
μT(x)
ako veľmi je „teplo“ (jantárová krivka) — obe príslušnosti sa počítajú nezávisle, každá svojou funkciou
min
„a zároveň“ smie byť najviac také pravdivé ako slabšia časť — keby bolo viac, tvrdili by sme o teplote viac, než unesie jedno z oboch slov; a pre hodnoty 0 a 1 dá min presne klasické „a“
Zjednotenie je to isté s max (silnejšia z oboch), doplnok 1 − μ obráti stupnicu: čo patrí úplne, nepatrí vôbec, a čo napoly, zostane napoly.
Príklad — kde je prienik najvyšší

Medzi 23 a 28 °C príjemne klesá a teplo rastie, takže minimum je najvyššie tam, kde sa krivky pretnú (farby podľa vzorca vyššie):

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

Naľavo od priesečníka je nižšie teplo, napravo príjemne — minimum tam vždy klesá.

Tu sa fuzzy množiny od klasických líšia v niečom zásadnom. Platia pre ne skoro všetky známe pravidlá — komutativita, asociativita, De Morganove zákony —, ale nie zákon vylúčenia tretieho. Prienik A ∩ ¬A nemusí byť prázdny: „príjemne a zároveň nie je príjemne“ má pri 13,5 °C hodnotu 0,5. Pre neurčité slová je to správne — o teplote, ktorá je príjemná napoly, sa dá zároveň napoly povedať, že príjemná nie je. Iné možnosti prieniku a zjednotenia (takzvané t-normy) prídu v diele o fuzzy logike.

Veta — De Morganove zákony platia, vylúčenie tretieho nie

Nech X je neprázdna množina, A, B sú fuzzy množiny na X a ¬, ∩, ∪ sú Zadehove operácie (definícia vyššie). Potom

  1. ¬(A ∩ B) = ¬A ∪ ¬B a ¬(A ∪ B) = ¬A ∩ ¬B, t. j. pre každé x ∈ X je μ¬(A ∩ B)(x) = μ¬A ∪ ¬B(x) a μ¬(A ∪ B)(x) = μ¬A ∩ ¬B(x);
  2. pre každé x ∈ X je μA ∩ ¬A(x) ≤ ½ a μA ∪ ¬A(x) ≥ ½, pričom v oboch nerovnostiach nastane rovnosť práve vtedy, keď μA(x) = ½.

Dôkaz. (1) Označme p = μA(x), q = μB(x) a bez ujmy na všeobecnosti p ≤ q. Potom 1 − min(p, q) = 1 − p, a keďže 1 − p ≥ 1 − q, je aj max(1 − p, 1 − q) = 1 − p. Druhý zákon rovnako s vymeneným min a max.

(2) Čísla p a 1 − p majú súčet 1, takže menšie z nich je najviac ½ a väčšie aspoň ½. ∎

Klasický zákon vylúčenia tretieho žiada A ∪ ¬A = X, teda hodnotu 1 všade. Pri fuzzy množine platí len tam, kde je μA 0 alebo 1; najhoršie je to v bodoch s príslušnosťou ½ — pri „príjemne“ pri 13,5 a 25,5 °C, kde A ∩ ¬A aj A ∪ ¬A majú hodnotu 0,5.

Kontrola na čísle (farby podľa vzorca prieniku vyššie): pri 25 °C je ¬(P ∩ T) = 1 − min(0,6; 0,5) = 0,5 a ¬P ∪ ¬T = max(0,4; 0,5) = 0,5.

7. Veľmi teplo, trochu teplo

Definícia — jazykové modifikátory (Zadeh, 1972)

Nech X je neprázdna množina a A fuzzy množina na X. Koncentrácia veľmi A („veľmi“) a dilatácia trochu A („trochu“, „viac-menej“) sú fuzzy množiny na X s funkciami príslušnosti danými pre každé x ∈ X predpismi

μveľmi A(x) = (μA(x))2,    μtrochu A(x) = √μA(x).

Keďže μA(x) ∈ [0, 1], leží v [0, 1] aj druhá mocnina a odmocnina, takže ide opäť o fuzzy množiny; hodnoty 0 a 1 sa nezmenia.

Laicky povedané

Umocnenie čísla medzi 0 a 1 ho zmenší — a to tým viac, čím je menšie: 0,5 sa zmení na 0,25, ale 1 zostane 1. „Veľmi teplo“ je preto užšie a prísnejšie ako „teplo“. Odmocnina naopak množinu rozšíri: 25 °C je „teplo“ na 0,5, „trochu teplo“ na √0,5 ≈ 0,71 a „veľmi teplo“ len na 0,52 = 0,25 (farby podľa vzorca nižšie).

00,51 0510152025303540 teplota T (°C) stupeň príslušnosti μ (0–1)
Teplo, veľmi teplo a trochu teplo trochu teplo (√μ)teploveľmi teplo (μ²)
Definícia — inklúzia fuzzy množín

Nech X je neprázdna množina a A, B fuzzy množiny na X. Fuzzy množina A je podmnožinou B, píšeme A ⊆ B, práve vtedy, keď

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

Každý prvok teda patrí do B aspoň v takej miere ako do A. Pre ostré množiny je to obvyklá inklúzia: kde je χA(x) = 1, musí byť aj χB(x) = 1.

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

μ2
„veľmi“ (červená krivka) — násobenie číslom najviac 1 nikdy nezväčší, takže štvorec leží pod pôvodnou krivkou; najviac uberie pri stredných hodnotách, nulu a jednotku nechá
μ
„teplo“ samo (jantárová krivka) — východiskový term, ktorý modifikátory len pretvarujú; nosič ani jadro sa nezmenia
√μ
„trochu“ (fialová krivka) — odmocnina je inverzia k štvorcu, takže dvíha to, čo štvorec stláča: √0,25 = 0,5
Preto veľmi A ⊆ A ⊆ trochu A: „veľmi teplo“ je vždy teplo, a čo je teplo, je aspoň trochu teplo. Opakovaním vzniká stupnica: „veľmi veľmi“ je μ4.
Príklad — o koľko „veľmi“ zúži a „trochu“ rozšíri

α-rez na úrovni 0,5 pre „teplo“ (22, 28, 34) je [25; 31]. Pre modifikované termy stačí previesť úroveň späť na pôvodné μ:

veľmi 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číta vzorec α-rezu vyššie (farby podľa neho) s trojuholníkom „teplo“ ako lichobežníkom (22, 28, 28, 34): a = 22, b − a = 6, d = 34, d − c = 6.

Interval „aspoň napoly“ má 6 °C pre teplo, asi 3,5 °C pre veľmi teplo a 9 °C pre trochu teplo.

8. Fuzzy množiny v praxi

  • Fuzzy riadenie. Metro v japonskom Sendai jazdí od roku 1987 s fuzzy regulátorom, ktorý rozbieha a brzdí plynulejšie ako človek. Okolo roku 1990 nasledovala v Japonsku vlna fuzzy práčok, kamier a klimatizácií. Ako taký regulátor funguje, vysvetlí diel o fuzzy riadení.
  • Spracovanie obrazu a zhlukovanie. Pixel na rozhraní dvoch oblastí môže patriť trochu do oboch; fuzzy zhlukovanie priraďuje body do viacerých zhlukov naraz.
  • Strojové učenie. Mäkké výstupy klasifikátorov alebo technika label smoothing (namiesto istého „je to mačka“ cieľ „mačka na 0,9“) nie sú fuzzy množiny v Zadehovom zmysle, ale zdieľajú s nimi myšlienku, že príslušnosť do triedy nemusí byť iba 0 alebo 1.
  • Jazyk. Jazykové modely pracujú so slovami ako „celkom“, „skoro“ alebo „skôr nie“ každý deň. Fuzzy množiny sú jedným z mála nástrojov, ktoré takým slovám dávajú presný, overiteľný význam.

9. Zhrnutie

  • Fuzzy množina priraďuje každému prvku stupeň príslušnosti z intervalu [0, 1]; ostrá množina je osobitný prípad s hodnotami 0 a 1.
  • Funkcie príslušnosti mávajú tvar trojuholníka, lichobežníka, gaussovského kopca alebo sigmoidy.
  • Lingvistická premenná má ako hodnoty slová — termy, ktoré sa môžu prekrývať; 25 °C je „príjemne“ na 0,6 a „teplo“ na 0,5.
  • Nosič, jadro a α-rezy opisujú tvar fuzzy množiny ostrými množinami.
  • Doplnok je 1 − μ, prienik minimum a zjednotenie maximum; neplatí zákon vylúčenia tretieho. Modifikátor „veľmi“ je μ², „trochu“ √μ.

Chcete si to vyskúšať? Nechajte AI agenta nakresliť funkcie príslušnosti pre slová, ktorými opisujete vlastný deň — „skoro“, „neskoro“, „dlho“ — a opýtajte sa pár ľudí, kde by hranice dali oni.

Máte na to iný názor? Napíšte na support@coden-app.com.

Agent na vašom počítači, ovládaný z telefónu