Fuzzy logika se poprvé objevila v roce 1965 v článku, jehož autorem byl profesor
Lotfi A. Zadeh. Tehdy byl definován základní pojem fuzzy logiky a to
fuzzy množina. Slovo fuzzy znamená neostrý, matný, mlhavý, neurčitý, vágní. Odpovídá tomu i to, čím se fuzzy teorie zabývá: snaží se pokrýt realitu v její nepřesnosti a neurčitosti.
V klasické teorii množin prvek do množiny buďto patří (úplné členství
v množině) nebo nepatří (žádné členství v množině).
Fuzzy množina je množina, která kromě úplného nebo žádného členství připouští
i členství částečné. To znamená, že prvek patří do množiny s jistou pravděpodobností
(stupeň příslušnosti). Funkce, která každému prvku universa přiřadí
stupeň příslušnosti se nazývá funkce příslušnosti.
Proč je vlastně fuzzy logika tak důležitá?
Jednak je potřeba pracovat s vágními daty a jednak používání přesných
popisů nás vede k idealizování skutečností reálného světa a tedy k odklonu
od reality.
Striktní popis vede k popisu skutečnosti pouze pomocí dvouprvkové množiny
{0,1}. Pokud problém nelze jednoznačně určit, rozkládá se na menší podproblémy,
ale za cenu místa a opět lze použít jen dvouprvkovou množinu. V případech,
kdy je již nemožné nebo neúnosné takto problém rozdělit, dopouštíme se
jisté chyby a tím je dán odklon od reality.
S tím souvisí i princip inkompability, který vyslovil v roce 1973
L. A. Zadech: „S rostoucí složitostí sytému klesá naše schopnost formulovat
přesné a významné vlastnosti o jeho chování, až je dosáhnutá hranice,
za kterou kterou je přesnost a relevantnost prakticky vzájemně se vylučující
jevy.“
S vágními pojmy se setkáváme v běžném životě. V přirozeném jazyce, kterým
se lidé dorozumívají, je vágních pojmů spousta: velmi starý člověk, nízká
rychlost, … Otázkou zůstává, co ještě patří do popsané množiny a co již
ne (pokud ještě je rychlost 65 km/h nízká rychlost, proč není také nízká
rychlost 66 km/h?). S tímto problémem se ale můžeme setkat již v antickém
Řecku, odkud pochází tento paradox (tzv. Paradox z antického Řecka):
Mějme malou hromadu kamení. Pokud přidáme jeden kámen, dostaneme opět
malou hromadu. Tedy každá hromada kamení je malá.
Jak je vidět, problém zůstává s hraničními body a použití klasických
množin tedy nepřichází v úvahu. Jedním z řešení jsou právě fuzzy množiny.
Zavedení fuzzy množin
Každému prvku přiřadíme stupeň příslušnosti, který vyjadřuje míru příslušnosti
daného prvku do fuzzy množiny.
Př.: Každé hodnotě rychlosti přiřadíme číslo z intervalu <0,1>,
který vyjadřuje míru našeho přesvědčení, že daná rychlost je nízká. Čím
vyšší (nižší) je stupeň příslušnosti, tím více (méně) platí, že příslušná
rychlost je nízká.
Problém při vyhledávání: Při vyhledávání dat klasickým způsobem sice
uživatel získá nějakou množinu, ale již neví, jak hodně odpovídá výsledek
jeho požadavku. Pokud se na výstup podíváme jako na fuzzy množinu, potom
stupeň příslušnosti by měl odrážet míru relevantnosti.
Úlohou fuzzy teorie je zachytit vágně specifikované požadavky uživatele
v dotazu a adekvátně k tomu vypočítat stupeň příslušnosti. Uživatel tedy
musí mít možnost používat vágní pojmy buďto přímo nebo je jednoduchým
způsobem reprezentovat.
Jeden z hlavních problémů je určení funkce příslušnosti. V případě, že
prvky universa jsou reálné čísla, existuje více možností matematického
popisu průběhu růstu respektive klesání hodnot stupně příslušnosti. Pro
prvky universa v okolí hraničních bodů by mělo platit, že čím víc se blíží
prvky universa k hraničním bodům, tím pomaleji roste (klesá) hodnota stupně
příslušnosti.
Př. (Plat): Pokud považujeme příjem zhruba nad 35 000 Kč
za vysoký, potom z tohoto pohledu je méně důležitý rozdíl mezi příjmem
34 000 Kč a 35 000 Kč než mezi platem 32 000 Kč a 33 000 Kč. Jinak též
můžeme říct, důležitost toho samého rozdílu 1 000 Kč klesá k přibližováním
se k hraničnímu bodu 35 000 Kč. Samozřejmě, s rostoucím platem roste i
stupeň příslušnosti do fuzzy množiny vysoký příjem.
| Příjem (Kč) |
skóre |
Příjem (Kč) |
skóre |
| 24 000 |
0,000 |
36 000 |
0,519 |
| 26 000 |
0,021 |
37 000 |
0,572 |
| 29 000 |
0,122 |
38 000 |
0,648 |
| 32 000 |
0,352 |
40 000 |
0,812 |
| 33 000 |
0,428 |
44 000 |
0,979 |
| 34 000 |
0,481 |
46 000 |
1,000 |
| 35 000 |
0,500 |
|
|
V předchozím příkladě jsme viděli, že hodnoty rostly od nuly k jedné.
Můžeme se však dostat do případu, kdy hodnoty sice rostou od nuly k jedné,
ale pak zase klesají k nule.
Př (věk): Podívejme se na vágní pojem střední věk. Můžeme
si jej představit jakožto člověka s věkem okolo 35 let.
| Věk |
skóre |
Věk |
skóre |
| 24 |
0.000 |
36 |
0.955 |
| 26 |
0.024 |
37 |
0.832 |
| 29 |
0.191 |
38 |
0.661 |
| 32 |
0.661 |
40 |
0.316 |
| 33 |
0.832 |
44 |
0.024 |
| 34 |
0.955 |
46 |
0.000 |
| 35 |
1.000 |
|
|
Fuzzy teorie a jazyk SQL
Jazyk SQL používá Booleovu algebru, což přináší jeden velký problém.
V dotazu typu
A and B and C and … and Z
je nesprávnost z našeho pohledu v tom, že dotazu nevyhovují údaje, které
nesplňují jednu z podmínek A až Z, stejně tak nevyhovují údaje, které
nesplňují dvě a více podmínek.
Není tedy rozdílu mezi údaji, které splňují různý počet podmínek dotazu.
Bylo by vhodné, aby se na výstup dostali i údaje, které nesplňují všechny
podmínky dotazu, přičemž míra jejich ohodnocení by měla klesat s klesajícím
počtem splněných podmínek.
Obdobně jako s podmínkou and, i s operátorem or se dostanou na
výstup údaje, které nic neříkají o tom, kolik podmínek vlastně splňují.
Bylo by vhodné, aby míra ohodnocení stoupala s rostoucím počtem splněných
podmínek.
Př.: Vyber zaměstnance ve středním věku mající vysoký příjem.
Klasické SQL:
select NAME, AGE, INCOME
from EMPLOYEE
where (AGE >= 25 and AGE <= 45)
and (INCOME >= 35, 000)
Fuzzy SQL:
select NAME, AGE, INCOME
from EMPLOYEE
where (AGE = middle)
and (INCOME >= high)
K tomu je ale potřeba zavést fuzzy relace. Fuzzy relace Rf
je podmnožina kartézského součinu domén D1,…Dn,
kde jedno Di je DU — interval <0,1>. Ostatní sloupce
jsou důležité pro výpočet sloupce DU. Hodnota libovolné n-tice
t říká, jak hodně tato n-tice náleží do fuzzy relace Rf. Můžeme
říct, že obvyklá relace je fuzzy relace, kde ve sloupci DU
je stupeň roven vždy jedné pro každou n-tici.
Fuzzy relace se získá pomocí fuzzy podmínky aplikované na obvyklou relaci.
Fuzzy podmínka se reprezentuje čtyřmi typy termů:
- Logické (Booleans)
- Transformace (Transformations)
- Přesívání, změny (Alterations)
- Interakce (Interactions)
Transformace definuje fuzzy množinu, jejíž interpretace si můžeme
představit jako převod z kartézského součinu množin E1, …,
En do intervalu <0,1>.
Příklad transformace:
- vysoký: VÝŠKA → <0,1>, h → µvysoký(h)
- štíhlý: VÝŠKA x VÁHA → <0,1>, (h, w) → µštíhlý
(h, w)
- Porovnání může být i přímo mezi objekty: větší než: VÝŠKA x VÝŠKA
→ <0,1>, (h1, h2) → µvětší než
(h1, h2)
- Jiná transformace: a < b, a, b pevné, S (x, a, b) =
- 0, pokud x ≤ a
- 2 * ((x-a)/(b-a))2, pokud a ≤ x ≤ 1/2(a+b)
- 1- 2 * ((x-b)/(b-a))2, pokud 1/2(a+b) ≤ x ≤
b
- 1, pokud x ≥ b
Přesívání, změny má za úkol nějakým způsobem zpracovat slova typu
mnoho, okolo, velmi mnoho, málo, víceméně a negace.
Př.: Často se slovo velmi representuje následujícím způsobem:
velmi fuzzycon (x) = (µfuzzycon(x))2. A negace:
negace fuzzycon (x) = 1-µfuzzycon(x).
Interakce má za úkol spolupráci mezi fuzzy množinami. Jedná se
o operace and a or:
(fc1 and fc2)(x) = min (µfc1(x),
µfc2(x))
(fc1 or fc2)(x) = max (µfc1
(x), µfc2 (x))
Př.: Vyberme si člověka velmi vysokého a současně s věkem kolem
40 let.
select jmeno
from lidi
where (vek=okolo-40)
and (výška=velmi vysoký)
Fuzzy podmínka bude vypadat následovně:
min ((µvysoký(výška))2, µokolo-40(věk))
Množinové operace
- Sjednocení: µAuB (x) = max (µA (x), µB (x))
- Průnik: µA∩B (x) = min (µA (x), µB (x))
- Rozdíl: µA-B (x) = µA∩B‘ (x) = min (µA (x),(1-µB(x)))
Použití fuzzy technologie
- Fuzzy regulace v japonském metru — automatické řízení metra — zvýšená
přesnost zastavování, plynulejší brždění a hlavně nižší spotřeba energie
- Fotoaparát s automatickým vyhledáváním centrálního bodu pro zaostření
(Minolta)
- ABS, řízení motoru, volnoběhu a klimatizace (Honda, Nissan, Sabaru)
- Řízení výtahů (Mitsubishi)
- Korekce chyb ve slévárenských zařízeních na plastické výrobky (Omron)
- 3.5" disketové mechaniky (zlepšení doby vystavení hlaviček až
o 30 %)
- palmtop Kanji určený pro rozpoznávání ručně psaných textů
- rozpoznávání řeči
- Fuzzy SQL (Omron)
- Pomoc při hledání identifikačních a profilových systémů pachatele
(velký, ne příliš těžký, víceméně starý, …)
- Analýza portfolia při investování na kapitálovém trhu