Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
Stupně pravdivosti, t-normy a t-konormy (minimum, součin, Łukasiewicz), které klasické zákony přežijí, reziduované implikace a vyhodnocení pravidel na ventilátoru řízeném teplotou a vlhkostí.
Série Základy AI Díl 34 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 jsou t-normy a t-konormy a proč je „a“ ve fuzzy logice celá rodina operací.
- Které zákony klasické logiky platí pro minimum, součin a Łukasiewiczovu t-normu.
- Jak se vyhodnocují pravidla KDYŽ–PAK: síla pravidla, oříznutí závěru a spojení maximem.
Co se hodí znát předem: Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“, Logika a důkazy: pravidla, podle kterých se v AI uvažuje
Fuzzy množiny daly slovům jako „teplo“ přesný význam. Teď s nimi chceme uvažovat: spojovat je spojkami „a“, „nebo“, „není“ a psát pravidla „když je teplo a vlhko, pusť ventilátor naplno“. V klasické logice je jasné, co znamená „a“ — pravdivé, když jsou pravdivé obě části. Ale co když je jedna část pravdivá ze 0,7 a druhá ze 0,6? Ukáže se, že rozumných odpovědí je celá rodina — a každá z nich zachová jiné kousky klasické logiky.
Navazuje na díly Fuzzy množiny a funkce příslušnosti, Fuzzy logika a pravděpodobnost a Logika a důkazy.
1. Od příslušnosti k pravdivosti
Výrok „je teplo“ má při 25 °C stupeň pravdivosti 0,5 — stejné číslo jako příslušnost 25 °C do množiny „teplo“. Fuzzy logika je logika, ve které výroky nabývají pravdivostních hodnot z celého intervalu [0, 1], ne jen 0 a 1. Spojky jsou funkce, které z pravdivostí částí spočítají pravdivost celku. Klasická logika je zvláštní případ, ve kterém se používají jen krajní hodnoty.
Definice — pravdivostní hodnota složeného výroku
Nechť T : [0, 1]2 → [0, 1] je t-norma (spojka „a“), S : [0, 1]2 → [0, 1] t-konorma („nebo“), ¬ : [0, 1] → [0, 1] negace („není“) a I : [0, 1]2 → [0, 1] implikace („když–pak“) — všechny jsou definované níže. Pravdivostní hodnota ‖φ‖ ∈ [0, 1] výroku φ je definována rekurzivně podle stavby výroku:
- atomický výrok „x je A“, kde X je neprázdná množina, A fuzzy množina na X a x ∈ X, má hodnotu ‖x je A‖ = μA(x);
- pro výroky φ, ψ je ‖φ a ψ‖ = T(‖φ‖, ‖ψ‖);
- ‖φ nebo ψ‖ = S(‖φ‖, ‖ψ‖);
- ‖není φ‖ = ¬‖φ‖;
- ‖když φ, pak ψ‖ = I(‖φ‖, ‖ψ‖).
Hodnota složeného výroku tedy závisí jen na hodnotách jeho částí. Omezíme-li hodnoty na {0, 1}, dostaneme klasickou výrokovou logiku.
Složený výrok se vyhodnotí zdola: nejdřív příslušnosti, pak spojky jedna po druhé, stejně jako se v klasické logice vyplňuje pravdivostní tabulka — jen místo 0 a 1 dosazujeme čísla mezi nimi.
Příklad — „je teplo a není vlhko“ při 27 °C a 60 %
„Teplo“ je trojúhelník (22, 28, 34), takže ‖teplo‖ = 27 − 22/28 − 22 = 5/6 ≈ 0,83. „Vlhko“ roste od 40 do 70 %: ‖vlhko‖ = 60 − 40/70 − 40 = 2/3 ≈ 0,67, takže ‖není vlhko‖ = 1 − 2/3 = 1/3 ≈ 0,33.
- s minimem: min(5/6; 1/3) = 0,33,
- se součinem: 5/6 · 1/3 = 5/18 = 0,28,
- s Łukasiewiczovou t-normou (barvy podle jejího rozboru níže): TŁ = max(0; 5/6 + 1/3 − 1) = 1/6 = 0,17.
Tři rozumné odpovědi na tutéž otázku — o tom, kterou zvolit, je zbytek dílu.
2. T-normy: co znamená „a“
Definice — t-norma
Nechť T : [0, 1]2 → [0, 1] je funkce. T je t-norma, právě když pro všechna a, b, c ∈ [0, 1] platí
- komutativita: T(a, b) = T(b, a);
- asociativita: T(a, T(b, c)) = T(T(a, b), c);
- monotonie: b ≤ c ⇒ T(a, b) ≤ T(a, c);
- 1 je neutrální prvek: T(a, 1) = a.
Hodnota T(a, b) je pravdivost „A a B“, mají-li A a B pravdivosti a a b.
Čtyři rozumné požadavky na „a“: nezáleží na pořadí, nezáleží na závorkách, lepší vstupy nedají horší výsledek, a „A a pravda“ je totéž co A. Z toho plyne i to, že „A a nepravda“ je nepravda, takže na krajních hodnotách se každá t-norma chová přesně jako klasické „a“.
Nejdůležitější čtyři:
- Minimum (Gödelova, Zadehova) T(a, b) = min(a, b) — řetěz je silný jako nejslabší článek.
- Součin T(a, b) = a · b — jako pravděpodobnost dvou nezávislých jevů.
- Łukasiewiczova T(a, b) = max(0, a + b − 1) — dolní Fréchetova mez z minulého dílu.
- Drastická — b, když a = 1; a, když b = 1; jinak 0.
Nejméně samozřejmá je Łukasiewiczova t-norma, proto ji rozeberme:
TŁ(a, b) = max(0, a + b − 1)
- TŁ(a, b)
- pravdivost „A a B“ — kolik pravdy musí mít obě části společně
- a + b
- pravdivosti obou částí dohromady — představte si je jako dva úseky délky a a b, které se mají vejít do úsečky délky 1
- − 1
- délka celé úsečky — co z a + b přesahuje jedničku, se do ní nevejde vedle sebe a musí se překrývat; překryv je to, co platí zároveň
- max(0, …)
- když se úseky vejdou vedle sebe (a + b ≤ 1), nemusí se překrývat vůbec — pravdivost „a“ je pak 0, ne záporné číslo
Pro a = 0,7 a b = 0,6 dávají 0,60; 0,42; 0,30 a 0. Minimum je ze všech nejvelkorysejší, drastická nejpřísnější — a to platí obecně:
Věta — meze t-norem
Nechť T je t-norma a TD drastická t-norma, tj. TD(a, 1) = a, TD(1, b) = b a TD(a, b) = 0 pro a, b < 1. Pak pro všechna a, b ∈ [0, 1] platí
TD(a, b) ≤ T(a, b) ≤ min(a, b).
Důkaz. Horní mez: z monotonie a neutrální jedničky T(a, b) ≤ T(a, 1) = a, a díky komutativitě stejně T(a, b) ≤ b. Dolní mez: je-li a = 1, je T(1, b) = b = TD(1, b); je-li b = 1, obdobně. Jinak je TD(a, b) = 0 a T(a, b) ≥ 0 platí vždy. ∎
„A a B“ nikdy nemůže být pravdivější než ta slabší z obou částí (to plyne z monotonie a neutrální jedničky: T(a, b) ≤ T(a, 1) = a). Všechny t-normy proto leží mezi dvěma krajnostmi.
3. T-konormy a negace: „nebo“ a „není“
Definice — t-konorma, negace, dualita
- Funkce S : [0, 1]2 → [0, 1] je t-konorma, právě když pro všechna a, b, c ∈ [0, 1] platí S(a, b) = S(b, a), S(a, S(b, c)) = S(S(a, b), c), b ≤ c ⇒ S(a, b) ≤ S(a, c) a S(a, 0) = a — tedy stejné vlastnosti jako t-norma, jen neutrální prvek je 0.
- Standardní negace je funkce ¬ : [0, 1] → [0, 1], ¬a = 1 − a.
- Nechť T je t-norma. Duální t-konorma k T je funkce S : [0, 1]2 → [0, 1] daná pro všechna a, b ∈ [0, 1] předpisem S(a, b) = 1 − T(1 − a, 1 − b) (z vlastností T plyne, že S je opravdu t-konorma).
Pro t-normu T a k ní duální t-konormu S platí pro všechna a, b ∈ [0, 1] De Morganovy zákony: ¬T(a, b) = S(¬a, ¬b) a ¬S(a, b) = T(¬a, ¬b).
„A nebo B“ je totéž co „není pravda, že ani A, ani B“. Každé „a“ tedy přináší své „nebo“. K minimu patří maximum, k součinu pravděpodobnostní součet a + b − ab, k Łukasiewiczově t-normě omezený součet min(1, a + b). Pro 0,7 a 0,6 dávají 0,70; 0,88 a 1.
S(a, b) = 1 − T(1 − a, 1 − b)
- S(a, b)
- pravdivost „A nebo B“ — chceme ji odvodit z „a“, ne vymýšlet zvlášť
- 1 − a, 1 − b
- pravdivosti „není A“ a „není B“ — „nebo“ selže právě tehdy, když neplatí ani jedna část
- T
- zvolená t-norma — spočítá, jak moc platí „není A a není B“, tedy jak moc „nebo“ selže
- 1 −
- vnější negace — z „jak moc selže“ udělá „jak moc platí“; díky ní platí De Morganovy zákony pro každou dvojici T, S automaticky
Příklad — tři t-konormy z dualizace
Barvy v číselných výpočtech odpovídají členům vzorce výše.
- Minimum: 1 − min(1 − a, 1 − b) = max(a, b); menší z doplňků patří většímu číslu. Pro 0,7 a 0,6: 1 − min(0,3; 0,4) = 1 − 0,3 = 0,70.
- Součin: 1 − (1 − a)(1 − b) = 1 − (1 − a − b + ab) = a + b − ab. Pro 0,7 a 0,6: 1 − 0,3 · 0,4 = 1 − 0,12 = 0,88.
- Łukasiewicz: 1 − max(0, (1 − a) + (1 − b) − 1) = 1 − max(0, 1 − a − b) = min(1, a + b). Pro 0,7 a 0,6: 1 − max(0; 0,3 + 0,4 − 1) = 1 − 0 = 1,00.
Pravděpodobnostní součet má známý význam: pro nezávislé jevy je P(A ∪ B) = P(A) + P(B) − P(A)P(B) — odečítá se překryv, který by se jinak započítal dvakrát.
4. Které zákony přežijí
Klasická logika má spoustu zákonů. Ve fuzzy logice nemůže platit všechno najednou — a každá t-norma si vybere jinak. Ověřeno na mřížce hodnot 0; 0,05; …; 1:
| Zákon | Minimum | Součin | Łukasiewicz |
|---|---|---|---|
| idempotence: A a A = A | ano | ne | ne |
| sporu: A a ne A = 0 | ne | ne | ano |
| vyloučeného třetího: A nebo ne A = 1 | ne | ne | ano |
| De Morganovy zákony | ano | ano | ano |
| distributivita „a“ vůči „nebo“ | ano | ne | ne |
Minimum zachová „algebru“ — idempotenci a distributivitu —, ale ztratí zákon sporu: „teplo a není teplo“ může být až 0,5. Łukasiewicz zachová zákon sporu i vyloučeného třetího, ale „teplo a teplo“ při 0,7 dá jen 0,4. Je to známý výsledek: minimum je jediná idempotentní t-norma, a s ní zákon sporu platit nemůže. Volba spojky je tedy volba, na kterých vlastnostech nám záleží.
Věta — minimum je jediná idempotentní t-norma
Nechť T je t-norma, která je idempotentní, tj. T(a, a) = a pro všechna a ∈ [0, 1]. Pak pro všechna a, b ∈ [0, 1] je T(a, b) = min(a, b).
Důkaz. Nechť a ≤ b. Z idempotence a monotonie a = T(a, a) ≤ T(a, b) a z věty o mezích T(a, b) ≤ min(a, b) = a. Tedy T(a, b) = a; pro a > b stejně díky komutativitě. ∎
Důsledek. Idempotence a zákon sporu (se standardní negací) nemohou platit zároveň: idempotentní je jen minimum a to v bodě 0,5 dává min(0,5; 1 − 0,5) = 0,5 ≠ 0.
Příklad — protipříklady a jeden důkaz z tabulky
Barvy u Łukasiewiczovy t-normy podle jejího rozboru výše.
- Łukasiewicz splňuje zákon sporu pro každé a, nejen na mřížce: TŁ(a, 1 − a) = max(0, a + 1 − a − 1) = max(0, 0) = 0. Obdobně min(1, a + 1 − a) = 1 je zákon vyloučeného třetího.
- Łukasiewicz není idempotentní: TŁ(0,7; 0,7) = 0,7 + 0,7 − 1 = 0,4 ≠ 0,7.
- Součin není distributivní: pro a = b = c = 0,5 je „a a (b nebo c)“ = 0,5 · (0,5 + 0,5 − 0,25) = 0,3750, ale „(a a b) nebo (a a c)“ = 0,25 + 0,25 − 0,25 · 0,25 = 0,4375.
- Součin nesplňuje zákon sporu: 0,5 · (1 − 0,5) = 0,25 ≠ 0.
Jediný protipříklad stačí k tomu, aby zákon neplatil. Naopak „ano“ v tabulce je ověřené jen na mřížce — pro Łukasiewiczův zákon sporu je ale výše i obecný důkaz.
5. Implikace
Definice — reziduovaná implikace
Nechť T je spojitá t-norma. Reziduum (reziduovaná implikace) t-normy T je funkce I : [0, 1]2 → [0, 1] daná pro všechna a, b ∈ [0, 1] předpisem
I(a, b) = sup { c ∈ [0, 1] : T(a, c) ≤ b }.
Množina v závorce je neprázdná (obsahuje c = 0, protože T(a, 0) = 0), takže supremum existuje. Pro všechna a, b, c ∈ [0, 1] pak platí T(a, c) ≤ b, právě když c ≤ I(a, b). Pro tři základní t-normy vyjde:
- minimum → Gödelova implikace: I(a, b) = 1, je-li a ≤ b, a I(a, b) = b, je-li a > b;
- součin → Goguenova implikace: I(a, b) = 1, je-li a ≤ b, a I(a, b) = b/a, je-li a > b;
- Łukasiewiczova t-norma → Łukasiewiczova implikace: I(a, b) = min(1, 1 − a + b).
„Když A, pak B“ je nejsilnější tvrzení, které spolu s A nedá víc, než kolik je B. Implikace je zcela pravdivá, kdykoli předpoklad není pravdivější než závěr — stejně jako v klasické logice, kde z nepravdy plyne cokoli. Pro předpoklad 0,8 a závěr 0,3 dávají tři implikace 0,3; 0,375 a 0,5.
I(a, b) = sup { c ∈ [0, 1] : T(a, c) ≤ b }
- I(a, b)
- pravdivost „když A, pak B“ pro předpoklad s pravdivostí a a závěr s pravdivostí b
- c ∈ [0, 1]
- kandidát na pravdivost implikace — zkoušíme všechny možné hodnoty
- T(a, c)
- „A a (když A, pak B)“ — co z předpokladu a implikace dohromady vyvodíme; přesně tohle dělá modus ponens
- ≤ b
- podmínka korektnosti — vyvozený závěr nesmí být pravdivější, než B skutečně je; implikace nesmí „slibovat víc“
- sup
- z korektních kandidátů ten největší — implikace má být co nejsilnější, jinak by byla vždy 0 a nic by neříkala
Příklad — tři implikace pro předpoklad 0,8 a závěr 0,3
Hledáme největší c, pro které T(0,8; c) ≤ 0,3 (barvy podle vzorce výše):
- minimum: min(0,8; c) ≤ 0,3 platí, právě když c ≤ 0,3 (protože 0,8 > 0,3), takže I = 0,300,
- součin: 0,8 · c ≤ 0,3, tedy c ≤ 0,3/0,8, takže I = 0,375,
- Łukasiewicz: max(0; 0,8 + c − 1) ≤ 0,3, tedy c − 0,2 ≤ 0,3 a c ≤ 0,5, takže I = 0,500.
Kontrola modus ponens: dosadíme c = I zpět do T(0,8; c) — min(0,8; 0,3) = 0,3; 0,8 · 0,375 = 0,3; max(0; 0,8 + 0,5 − 1) = 0,3. Ve všech třech případech vyjde přesně závěr 0,3: implikace je nastavená tak, aby se do něj trefila.
Rezidua nejsou jen elegantní: díky vztahu T(a, c) ≤ b ⇔ c ≤ I(a, b) v nich platí fuzzy verze modus ponens — z A s pravdivostí a a z „A ⇒ B“ s pravdivostí c plyne B s pravdivostí aspoň T(a, c). Na tom stojí formální fuzzy logiky, které v devadesátých letech vybudoval český logik Petr Hájek.
6. Pravidla KDYŽ–PAK
V praxi se fuzzy logika nejčastěji potká v pravidlech, která řídí stroj. Chceme ventilátor, který se řídí teplotou a vlhkostí. Otáčky (0–100 %) mají termíny pomalu, středně a rychle, vlhkost termíny sucho a vlhko, teplota termíny z dílu o fuzzy množinách. Báze pravidel:
- R1: KDYŽ teplota je zima NEBO příjemně, PAK otáčky jsou pomalu.
- R2: KDYŽ teplota je teplo A vlhkost je sucho, PAK otáčky jsou středně.
- R3: KDYŽ teplota je teplo A vlhkost je vlhko, PAK otáčky jsou rychle.
- R4: KDYŽ teplota je horko, PAK otáčky jsou rychle.
Definice — vyhodnocení pravidla (Mamdani)
Nechť X1, …, Xk jsou univerza vstupních proměnných, Y univerzum výstupní proměnné, T t-norma a S t-konorma. Nechť báze obsahuje pravidla R1, …, Rm a pravidlo Rr (r = 1, …, m) má tvar
KDYŽ x1 je Ar1 A … A xk je Ark, PAK y je Br,
kde Arj je fuzzy množina na Xj (podmínka na proměnnou, kterou pravidlo nepoužívá, je μArj ≡ 1; termíny spojené „nebo“ tvoří jednu fuzzy množinu s příslušností S(μ1, μ2)) a Br je fuzzy množina na Y. Pro ostrý vstup (x1, …, xk) ∈ X1 × … × Xk:
- síla pravidla Rr je číslo αr = T(μAr1(x1), …, μArk(xk)) ∈ [0, 1] (T o víc argumentech je díky asociativitě jednoznačná);
- závěr pravidla je fuzzy množina B′r na Y, kterou dostaneme z Br buď oříznutím, μB′r(y) = min(αr, μBr(y)), nebo zmenšením, μB′r(y) = αr · μBr(y), pro každé y ∈ Y;
- výstup báze je fuzzy množina na Y s příslušností μ(y) = maxr = 1, …, m μB′r(y), y ∈ Y.
Mamdaniho původní volba je T = min, S = max a oříznutí.
Pravidlo platí tak moc, jak moc platí jeho podmínka, a tak moc prosadí i svůj závěr. Pravidlo, jehož podmínka platí ze 0,67, smí „rychle“ prosadit nejvýš do výšky 0,67. Všechna pravidla mluví najednou a výsledek je obrys toho, co kterým směrem tlačí.
Vstup: 27 °C a vlhkost 60 %. Teplota je „příjemně“ ze 0,2 a „teplo“ ze 0,83, vlhkost „vlhko“ ze 0,67 a „sucho“ vůbec. Pravidlo R3 má sílu α3 = min(0,83; 0,67) = 0,67 (barva podle vzorce níže):
S minimem se závěr „rychle“ ořízne ve výšce 0,67 a zůstane z něj plochý lichoběžník. Se součinem má pravidlo sílu 0,83 · 0,67 = 0,56 a „rychle“ se celé zmenší — zachová tvar, jen je nižší. Oba přístupy se v praxi používají; první je Mamdaniho původní volba.
Celá báze pravidel naráz:
Vystřelila dvě pravidla: R1 silou 0,2 (teplota je trochu „příjemně“) a R3 silou 0,67. R2 a R4 mlčí. Výsledkem je fuzzy množina na otáčkách — nízký schod u „pomalu“ a vysoký u „rychle“. Motor ale potřebuje jedno číslo. Jak ho z téhle množiny dostat, je téma příštího dílu o fuzzy řízení.
μ(y) = maxr min(αr, μBr(y))
- μ(y)
- výsledná fuzzy množina na otáčkách — jak moc báze pravidel doporučuje otáčky y (v obrázku zelená plocha)
- αr
- síla pravidla r — jak moc platí jeho podmínka pro dnešní vstup; pravidlo nesmí tvrdit víc, než kolik platí jeho předpoklad
- μBr(y)
- závěr pravidla — tvar termínu jako „rychle“, které otáčky do něj patří a jak moc (v obrázku přerušovaný obrys)
- min
- oříznutí — závěr se uřízne ve výšce αr, protože pravidlo s podmínkou platnou ze 0,67 nemůže doporučovat nic víc než ze 0,67 (v obrázku jantarová plocha)
- maxr
- spojení pravidel — pravidla jsou alternativy („R1 nebo R2 nebo …“), takže otáčky jsou doporučené tak moc, jak moc je doporučuje to nejochotnější pravidlo
Příklad — trasování báze pravidel pro 27 °C a 60 %
Krok 1 — fuzzifikace. Teplota 27 °C: „zima“ 0 (končí na 14 °C), „příjemně“ klesá od 23 do 28 °C, tedy 28 − 27/28 − 23 = 0,2; „teplo“ 27 − 22/6 = 0,83; „horko“ 0 (začíná až u 30 °C). Vlhkost 60 %: „sucho“ 0 (končí na 50 %), „vlhko“ 60 − 40/30 = 0,67.
Krok 2 — síly pravidel. „Nebo“ uvnitř podmínky počítá duální t-konorma, „a“ mezi podmínkami t-norma:
| Pravidlo | Příslušnosti v podmínce | α s minimem | α se součinem |
|---|---|---|---|
| R1 | 0,00 nebo 0,20 | 0,20 | 0,20 |
| R2 | 0,83 a 0,00 | 0,00 | 0,00 |
| R3 | 0,83 a 0,67 | 0,67 | 0,56 |
| R4 | 0,00 | 0,00 | 0,00 |
Například R3 se součinem: 5/6 · 2/3 = 10/18 ≈ 0,56; R1 s maximem: max(0; 0,2) = 0,2. (Barvy podle vzorce výsledné množiny výše: síla pravidla αr.)
Krok 3 — oříznutí a spojení. Hodnota výstupní množiny v několika bodech, μ(y) = max(min(0,2; μpomalu(y)), min(0,67; μrychle(y))) — R2 a R4 mají sílu 0 a nic nepřidají (barvy podle vzorce výše):
| otáčky y (%) | 10 | 40 | 50 | 60 | 70 | 80 | 90 |
|---|---|---|---|---|---|---|---|
| μpomalu(y) | 1,00 | 0,20 | 0,00 | 0,00 | 0,00 | 0,00 | 0,00 |
| μrychle(y) | 0,00 | 0,00 | 0,00 | 0,20 | 0,60 | 1,00 | 1,00 |
| μ(y), minimum | 0,20 | 0,20 | 0,00 | 0,20 | 0,60 | 0,67 | 0,67 |
| μ(y), součin | 0,20 | 0,04 | 0,00 | 0,11 | 0,33 | 0,56 | 0,56 |
Například v y = 70: „rychle“ tam platí z 70 − 55/80 − 55 = 0,6, to je méně než síla 0,67, takže oříznutí nic nezmění a μ(70) = 0,6. V y = 90 je „rychle“ celé (1) a oříznutí ho srazí na 0,67. Otáčky mezi 45 a 55 % nedoporučuje žádné pravidlo.
def sila(podminky, vstup, t_norma=min):
hodnoty = []
for promenna, terminy in podminky: # terminy spojené „nebo“
hodnoty.append(max(mu[promenna][t](vstup[promenna]) for t in terminy))
vysledek = 1.0
for h in hodnoty: # podmínky spojené „a“
vysledek = t_norma(vysledek, h)
return vysledek
def vystup(pravidla, vstup, y):
return max(min(sila(r.kdyz, vstup), mu_otacky[r.pak](y)) for r in pravidla)
7. Fuzzy logika a dnešní AI
- Logika, kterou jde derivovat. T-normy jsou spojité, a tak se dají derivovat. Neurosymbolické přístupy jako Logic Tensor Networks z nich skládají ztrátovou funkci: síť se učí nejen z příkladů, ale i z pravidel typu „každý pes je savec“, jejichž pravdivost se počítá fuzzy spojkami.
- Měkká omezení. Probabilistic Soft Logic používá Łukasiewiczovy spojky k zápisu pravidel s váhami — například pro doporučování nebo propojování záznamů o stejné osobě.
- Čitelná rozhodnutí. Fuzzy pravidla jsou krátká a srozumitelná. Tam, kde musí lidé rozhodování zkontrolovat, se dodnes používají jako vysvětlitelná alternativa černé skříňky.
8. Shrnutí
- Ve fuzzy logice mají výroky pravdivost z [0, 1]; spojky jsou funkce na těchto hodnotách.
- „A“ je t-norma — minimum, součin, Łukasiewiczova a další; všechny leží mezi drastickou t-normou a minimem.
- „Nebo“ je duální t-konorma, „není“ standardně 1 − a; De Morganovy zákony platí vždy, ostatní zákony podle volby t-normy.
- Reziduovaná implikace zachová modus ponens; na ní stojí formální fuzzy logiky.
- Pravidla KDYŽ–PAK se vyhodnocují silou podmínky, oříznutím nebo zmenšením závěru a spojením maximem — pro ventilátor při 27 °C a 60 % vystřelí R1 silou 0,2 a R3 silou 0,67.
Chcete si to osahat? Nechte AI agenta napsat tabulku zákonů z tohoto dílu pro další t-normy — třeba Hamacherovu nebo Frankovu rodinu — a zjistěte, která se nejvíc podobá klasické logice.
Máte na to jiný názor? Napište na support@coden-app.com.