370 likes | 571 Views
Vladimír Laš. NEST. Petr Berka, Vladimír La š , Vojt ěch Svátek FIS VŠE, Praha. Obsah prezentace . Historie expertních systémů na VŠE Reprezentace znalostí Odvozování a práce s neurčitostí Konzultace Implementace systému Případové usuzování Problémy, současné práce, výhledy.
E N D
Vladimír Laš NEST Petr Berka, Vladimír Laš, Vojtěch Svátek FIS VŠE, Praha
NEST Obsah prezentace • Historie expertních systémů na VŠE • Reprezentace znalostí • Odvozování a práce s neurčitostí • Konzultace • Implementace systému • Případové usuzování • Problémy, současné práce, výhledy
NEST Expertní systémy na VŠE - Systém Automatických Konzultací SAK • 1983: počítač Wang, jazyk Basic • J. Ivánek + J. Ferjenčík, J. Švenda (DP) (Ivánek, J.: Realizace konzultačního systému SAK-OPIMALI pro výběr matematické metody rozhodování. In: Expertní systémy, ČSVTS FEL ČVUT, Praha 1984 160-172) • 1987-91: převod na počítače IBM PC pod DOSem • jazyk TurboProlog (Ivánek, Ferjenčík, Švenda) • jazyk TurboBasic(Ivánek, Ferjenčík, Berka) • 1995: konec záplatování verze TurboBasic
NEST SAK – TurboBasic
NEST SAK - TurboProlog
NEST Expertní systémy na VŠE - prehistorie systému NEST • druhá pol. 90 let - práce na návrhu nového systému (P. Berka, V. Svátek) • publikace • Berka,P.: Nový expertní systém. LISp-Report 94-06, 1994 • Svátek,V. - Berka,P.: Specifications of a Question/Answer Knowledge-Based Agent. In: (Žižka, Brazdil eds.) Artificial Intelligence Techniques AIT'95, Brno, 1995, s.338 • 1995-97: specifikace systému NEST • 1996: konzultační modul v rámci systému pro hodnocení bonity klienta banky implementovaný komerční firmou • 1998-2003: nesystematické neúspěšné pokusy sehnat studenta-programátora
NEST Expertní systémy na VŠE - historie systému NEST • květen 2003: začátek práce na implementaci systému NEST (P. Berka, V. Laš) • vývojové prostředí DELPHI pod Windows • báze znalostí zapisovány v XML • stand-alone + webová verze • editor báze • česká i anglická verze
NEST Reprezentace znalostí (1/4) • Atributy a výroky • binární True, False • jednoduché nominální hodnoty atributu • množinové nominální hodnoty atributu • numerické fuzzy intervaly • s atributy sdruženy zdroje a akce • atributy popisují případ nebo prostředí
NEST Reprezentace znalostí (2/4) • Pravidla s prioritami IF předpoklad THEN závěr A akce kde předpoklad je disjunktivní forma (disjunkce konjunkcí) literálů (výroků nebo negací výroků), závěr je seznam literálů a akce je seznam akcí (externích programů) • kompozicionální - každý literál v závěru doplněn vahou • apriorní - kompozicionální pravidla bez předpokladu • logická - nekompozicionální pravidla bez vah; pouze tato pravidla mohou dát absolutní jistotu
NEST <compositional_rule> <id>c1</id> <condition> <conjunction> <literal> <id_attribute>velikost_nohy</id_attribute> <id_proposition>malá_noha</id_proposition> <negation>0</negation> </literal> <literal> <id_attribute>dobrá_rodina</id_attribute> <negation>0</negation> </literal> </conjunction> </condition> <conclusions> <conclusion> <id_attribute>princ</id_attribute> <negation>0</negation> <weight>3,000</weight> </conclusion> </conclusions> </compositional_rule> IF velikost_nohy(malá_noha) AND dobrá_rodina THEN princ[3,000]
NEST Reprezentace znalostí (4/4) • Integritní omezení ANTSUC (stupeň) kde ANT i SUC jsou DNF literálů a stupeň je číslo vyjadřující důležitost integritního omezení používají se pro kontrolu logické konzistence průběhu konzultace diagnoza(chřipka) not diagnoza(zdráv) • Kontexty - disjunktivní formaliterálů, která (v případě kladné váhy) určuje, že je aplikovatelné nějaké pravidlo či integritní omezení
NEST Odvozování • Odvozování v síti pravidel jako kombinace zpětného a přímého řetězení • kompozicionálníodvozování v rámci kompozicionálních a apriorních pravidel (skládání příspěvků pravidel) • nekompozicionální odvozování v rámci logických pravidel (modus ponens + disjunkce) • Vyhodnocení porušení integritních omezení IMPL(a,s)= max(0, min(1, a-s)) proa> 0
NEST Práce s neurčitostí (1/4) (Založena na algebraické teorii P. Hájka) • použity kombinační funkce pro práci na [-1, 1]: • NEG pro výpočet váhy negace výroku, • CONJ pro výpočet váhy konjunkce výroků, • DISJ pro výpočet váhy disjunkce výroků, • CTR pro výpočet příspěvku pravidla k váze závěru, • GLOB pro skládání příspěvků více pravidel.
NEST Práce s neurčitostí (2/4) • definovány různé „inferenční mechanizmy“, tj různé varianty kombinačních funkcíCTR a GLOB: • Standardní - vychází ze systémů MYCIN (funkce CTR) a PROSPECTOR (funkce GLOB) • Logický - funkce CTR je fuzzy modus ponens a funkce GLOB je fuzzy disjunkce v Lukasiewiczově sémantice • Neuronový - funkce CTR odpovídá váženému vstupu wixido neuronu, funkce GLOB aproximuje aktivační funkci tanh(iwixi)
NEST Práce s neurčitostí (3/4) • NEG(w) = - w • CONJ(w1,w2) = min(w1,w2) • DISJ(w1,w2) = max(w1,w2)
NEST Práce s neurčitostí (4/4) • práce s neurčitostí rozšířena (díky monotonii) na práci s intervaly vah: • NEG[w1,w2] = [NEG(w2),NEG(w1)] • CONJ([w1,w2],[v1,v2]) = [CONJ(w1,v1),CONJ(w2,v2)] • DISJ ([w1,w2],[v1,v2]) = [DISJ(w1,v1),DISJ(w2,v2)] • CTR([a1,a2],w) = [CTR(a1,w),CTR(a2,w)] • GLOB([w1,w2],[v1,v2]) = [GLOB(w1,v1),GLOB(w2,v2)]
NEST Režimy konzultace • dialogový režim - klasický režim dotaz/odpověď využívající pro volbu aktuálního dotazu zpětné řetězení • režim dotazník –po vyplnění dotazníku se rovnou spouští odvozování (tento režim simuluje přímé řetězení) • režim dialog s dotazníkem–nejprve systém nabídne dotazníkobsahující všechny dotazy, po vyplnění dotazníku se případně kladou další potřebné dotazy • načítání odpovědí ze souboru – načtené odpovědi lze měnit (režim dotazník) • just-in-time – zobrazovní odpovědí zároveň s vyplňováním dotazníku
NEST Nastavení konzultace
NEST Typy odpovědí • binární atribut - váha • jednoduchý nominální atribut – hodnota a váha • jednoduchý nominální atribut – seznam hodnot a jejich vah • numerický atribut - hodnota Dotazy nezodpovězené v průběhu konzultace získávají automaticky implicitní váhu „neznámá“ [-1,1] nebo “irelevantní“ [0,0], odpovědi lze rovněž odkládat a po skončení konzultace se k nim vrátit
NEST Příklad dotazu
NEST Výsledek konzultace
NEST Implementace systému NEST • stand-alone verze: • vnitřní architektura jako klient-server aplikace • klient-server verze: • webový server (windows) + prohlížeč • víceuživatelský přístup řešen vytvářením kopií báze znalosti na serveru pro každého přihlášeného uživatele • ke každé bázi znalostí přiřazeny html stránky definující vzhled dialogu s uživatelem (možnost libovolně modifikovat při zachování příslušných „pseudotagů“)
NEST Síťová verze - server
NEST Síťová verze - standardní klient
NEST síťová verze - klient na míru
NEST Editor báze
NEST Případové usuzování – CBR (1/3) • alternativa k pravidlovému usuzování • znalosti reprezentovány množinou typických případů • jako nestrukturované vektory hodnot atributů, • jako strukturované objekty, nesoucí informace o situacích, kdy je použití případu relevantní i o akcích, které se mají provést.
NEST Případové usuzování – CBR (2/3) • Usuzování na základě podobnosti • pro případy reprezentované jako vektory hodnot atributů založeno na vzdálenosti:
NEST Případové usuzování – CBR (3/3) Klasifikace (k-NN) 1. Pro nový příklad x 1.1. Najdi x1, x2, … xKK nejbližších příkladů 1.2. Přiřaď y = ŷ’y‘ je majoritní třída příkladů x1, … xK, (pokud y je kategoriální) nebo (pokud y je numerické)
NEST Případové usuzování a NEST – principy (1/2) • případy odpovídají konzultacím - obsahují tedy informace o odpovědích na dotazy i o odvozených cílech (vyjádřeno jako váhy příslušných výroků) • podobnost mezipřípadem a novou konzultací dána podobností mezi váhami odpovídajících si výroků • analogicky s pravidlovým usuzováním navrženo a kompozicionální a logické (nekompozicionální) odvozování
NEST Případové usuzování a NEST – principy (2/2) • odvozování realizováno „kombinačními funkcemi“ pro • výpočet podobnosti vah dvou (odpovídajících si) výroků • výpočet podobnosti dvou konzultací (případu a konzultace) - na základě podobností vah všech výroků případu a nové konzultace • výpočet váhy cíle nové konzultace – na základě váhy cíle u případu a podobnosti mezi případem a novou konzultací • možnost pracovat s intervaly vah
NEST Případové usuzování a NEST – kompozicionální odvozování
NEST Případové usuzování a NEST – logické odvozování
NEST Implementace případového usuzování v systému NEST • návaznost na stávající systém NEST • zatím implementována jen stand-alone verze • jen dva režimy práce (dotazník a nahrání odpovědí ze souboru) • podobně jako u pravidlového odvozování nemusí být zadány hodnoty všech atributů, nezodpovězené dotazy získají implicitní váhu „neznámá“ (w=[-1,1]) případně „irelevantní“ (w=0) • Zatím případové usuzování začleněno do NESTu jako samostatný modul
NEST Problémy se současnou verzí • Vývoj prostředí Delphi byl ukončen • Špatná podpora nových technologií • Nezájem učit se tento jazyk • Problematické úpravy v programu • Téměř nemožný další vývoj • Nevhodná koncepce webové verze (samostatný webový server)
NEST Současné práce • Převod systému do nového vývojového prostředí (Visual Studio .NET) • Základ systému koncipován jako knihovna napojitelná na různé klienty • Webová verze • Webová služba • Stand-alone verze (zatím není) • Webová verze psaná pro standardní server (IIS) – snadnější a „bezpečnější“ nasazení
NEST Výhledy(aneb co by se dalo dělat) • Propojení pravidlového a případového usuzování (výběr vhodnějšího způsobu odvozování, kombinování obou, …) • Modifikace pravidel na základě případového usuzování (automatická tvorba BZ) • Předělání editoru BZ • Implementace jiných jazyků pro zápis BZ • ???