Reprezentace znalostíÚvodZnalosti v systému NEST jsou reprezentovány pomocí:
O každé z těchto „tříd znalostí“ pojednává jedna následující sekci. Všechny tyto třídy jsou pak uloženy v tzv. , o jejíž které
se můžete dočíst v poslední sekci této podkapitoly.
Atributy a výrokyAtribut je určité tvrzení, se kterým systém dokáže pracovat. Existují čtyři typy atributů:
- binární;
- nominální jednoduchý;
- nominální množinový;
- numerické.
Binární atributy jsou základním typem atributů. Je od nich odvozen právě jeden výrok se stejným jménem.
Tento výrok, stejně jako atribut, od kterého je odvozen, pak nabývá určité váhy, která reprezentuje jeho „pravdivost“
(je-li váha maximální, výrok jistě platí, je-li váha minimální, výrok jistě neplatí). Váha je reprezentována pomocí
intervalu, čímž je umožněno vyjadřovat i částečné znalosti o pravdivosti výroku. Například pracujeme-li na váhovém rozsahu [-1;1] (pokud nebude řečeno jinak, bude ve všech následujících příkladech používán tento
váhový rozsah), následující váhy znamenají toto:
- [-1;-1] - výrok jistě neplatí (FALSE);
- [ 1; 1] - výrok jistě platí (TRUE);
- [-1; 1] - o výroku nevíme nic (UNKNOWN);
- [ 0; 0] - výrok je irelevantní (IRRELEVANT).
Nominální jednoduché atributy (nebo prostě jen Jednoduché atributy) jsou atributy, které mohou nabývat právě jedné hodnoty z daného seznamu hodnot. Typickým příkladem
může být například „typ účtu“ v bance. Od tohoto atributu je pak odvozeno právě tolik výroků, kolik je možných hodnot,
kterých může atribut nabývat (výrok je již stejný, jako u binárního atributu). Pokud je atributu přiřazena nějaká
hodnota (s váhou), tuto váho dostane jen příslušný výrok a všem ostatním výrokům je přiřazena váha „FALSE“. Je-li například zadáno, že uživatel si založil běžný účet s vahou [0,6;0,6], pak všem ostatním typům účtu je přiřazena
váha „FALSE“. Nominální množinové atributy (nebo prostě jen Množinové atributy) jsou podobné „Jednoduchým atributům“, jen mohou nabývat libovolného počtu hodnot z daného
seznamu. Příkladem může být třeba atribut „světové jazyky, kterými člověk hovoří“. Od tohoto atributu je opět odvozeno
tolik výroků, kolik je možných hodnot, které může atribut nabývat. Při přiřazení určitých hodnot atributu se přenese váha
na příslušné výroky a hodnotám (resp. výrokům), kterým nebyla přiřazena žádná váha se pak přiřadí předem nastavená váha
(UNKNOWN nebo IRRELEVANT). Numerické atributy jsou atributy, které nabývají číselné hodnoty z předem zadaného rozmezí. Jako příklad lze
uvést třeba „velikost platu“. Od tohoto atributu může být odvozeno libovolné množství výroků, přičemž každý výrok
má zadanou váhovou funkci, která převede číselnou hodnotu na váhu. Váhová funkce je zadávána pomocí fuzzy intervalu. Tento interval je určen čtyřmi čísly (fuzzy lower, crisp lower,
crisp upper, fuzzy upper). Pokud je číselná hodnota mimo „fuzzy“ hranice, je výsledná váha „FALSE“, pokud
je číselná hodnota uvnitř „crisp“ hranic, je výsledná váha „TRUE“. Pokud je číselná hodnota mezi hranicemi
„fuzzy“ a „crisp“, je výsledná váha spočítána pomocí lineární funkce (horní i dolní číslo váhového intervalu
je stejné). Názorně to ukazuje následující obrázek (fuzzy interval je zde zadán takto: [10, 20, 40, 40]):
Podle postavení lze výroky dělit na dotazy (výrok není v závěru žádného ), mezilehlé výroky (výrok
je v závěru i v předpokladu nějakého ) a cíle (výrok není v předpokladu žádného ). Pokud je výrok dotaz,
musí být všechny výroky odvozené od stejného atributu také dotazy. Pokud není výrok použit ani v předpokladu ani v závěru pravidla,
jedná se o tzv. osamocený výrok, který NEST zcela ignoruje. Atributy můžeme dle rozsahu dělit na „obecné“ a „případové“. Obecné atributy jsou
ty atributy, které se vztahují (jak již jejich název napovídá) k prostředí, k věcem, které se mění jen výjimečně a není
tedy nutné je zjišťovat pokaždé znovu. Jakmile systém jednou zjistí jejich hodnoty, zapamatuje si je a při dalších
konzultacích se již na ně neptá (pokud k tomu není vyzván). Může se jednat například o průměrnou úrokovou míru za poslední rok - takovou
proměnnou bude třeba změnit jednou za rok. Případové atributy jsou pak všechny ostatní, tj. ty, na které se systém
ptá při každé konzultaci. Hodnotu určitého atributu může systém získat z různých zdrojů. Standardně se systém snaží získat hodnoty
„inferencí“ (odvozováním) pomocí pravidel, jedná-li se o cíle či mezilehlé atributu, nebo dotazem „od uživatele“,
jedná-li se o dotaz. Dalším zdrojem může být „soubor“, jehož první řádek se systém pokusí interpretovat jako příslušnou
hodnotu. Čtvrtým zdrojem je „externí funkce“, která vytvoří soubor s příslušnou hodnotou, ze kterého je načtena.
Poslední dva uvedené zdroje mohou být použity pouze
pro binární a numerické atributy.Posledním zdrojem je „výpočet“ (lze použít jen pro numerické atributy), kdy hodnota atributu je spočítána
z hodnot jiných numerických atributů a zadaných čísel s použitím matematických operací sčítání, odčítání, násobení a dělení. Zdroje
lze nastavit tak, aby v případě neúspěchu jednoho byl použit jiný. Akce je externí program, který je přiřazen určitému výroku. Pokud výrok nabude alespoň takové váhy, která
je zadána u akce, je tento externí program spuštěn. Pokud je akce přiřazena atributu, efekt je stejný, jako by akce
byla přiřazena každému výroku od daného atributu odvozenému.
PravidlaZákladní podoba pravidel v NESTu je následující: kontext: IF předpoklad THEN závěr 1[váha 1],..., závěr n[váha n] rozhoduje o tom, zda se dané pravidlo bude aplikovat či nikoliv. Blíže o něm se dozvíte v následující sekci. Předpoklad pravidla je tvořen disjunkcí libovolného množství „výrazů“, přičemž „výrazem“ může být buď nebo konjunkce výroků. Je-li předpoklad splněn, je závěru pravidla připočítán příslušný příspěvek tohoto pravidla. Aby byl
předpoklad splněn, musí jeho celková váha (o jejím vypočítání viz podkapitola ) přesáhnout „práh
platnosti předpokladu“, který se zadává pro logická pravidla, zatímco u kompozicionálních pravidel se rovná 0. Závěr pravidla je tvořen výrokem a vahou, která slouží pro spočítání váhy výroku v závěru. Pokud má pravidlo
více závěrů, výsledný efekt je stejný, jako by bylo vytvořeno více pravidel se stejnými předpoklady a příslušnými závěry. Každé pravidlo může mít zadanou svou prioritu (číslo z intervalu [0;1]), podle které může být postupováno
při výběru pravidel pro aplikaci při odvozování. (O odvozování blíže viz podkapitola .) Pravidlu může být přiřazena stejně jako je tomu u výroku. Tato akce je spuštěna, jakmile je pravidlo
„použito“, tj. předpoklad pravidla je splněn a jsou učiněny příslušné závěry. Pravidla se dělí do třech základních typů:
- apriori pravidla;
- logická pravidla;
- kompozicionální pravidla.
Apriori pravidla jsou taková pravidla, která platí vždy, tj. nemají předpoklad (ani kontext), resp. jako předpoklad je brána
hodnota „TRUE“. Takováto pravidla slouží k tomu, potřebujeme-li vyjádřit „obecnou pravdu“. Logická pravidla jsou pravidla, jejichž závěr nenabývá hodnot z celého intervalu [-1;1] (resp. [-rozsah vah; rozsah vah]), ale
nabývá jen „logických hodnot“. Je-li předpoklad splněn (tj. pokud dolní hranice váhového intervalu přesáhne práh zadaný pro toto pravidlo) je váha závěru „TRUE“
nebo „FALSE“, pokud předpoklad splněn není, váha závěru je „IRRELEVANT“. Kompozicionální pravidla pracují na celém intervalu [-1;1] tak, jak je vysvětleno v podkapitole „práce s neurčitostí“.
KontextyKontext rozhoduje o tom, zda se dané , kterému je kontext přiřazen, aplikuje či nikoliv. Kontext má u každého pravidla zadaný svůj
práh platnosti (pokud není zadaný, převezme se globální práh platnosti kontextů pro celou bázi) a pravidlo je aplikováno, pokud
váha kontextu (resp. její horní hranice intervalu) přesáhne tento práh. Kontext je tvořen, stejně jako předpoklad pravidla, disjunkcí libovolného množství „výrazů“, přičemž výrazem je opět míněn
či konjunkce výroků.
Integritní omezeníIntegritní omezení mají stejnou podobu jako . Základní rozdíl je v tom, že integritní omezení
se nepodílí na odvozování závěrů, ale je vyhodnocováno samostatně po skončení odvozování. Slouží jen jako kontrola toho, že závěry splňují
jakési další požadavky. Pokud je integritní omezení splněno, systém to nedá nijak najevo. Pokud však splněno není, je uživatel upozorněn,
že byly porušeny další omezení (a samozřejmě které).
|