Ekspertinė sistema

**Ekspertinė sistema (ES)**, kitaip **žiniomis grindžiama sistema**, yra kompiuterinė programa, daranti išvadas arba sprendžianti tam tikros srities (pvz., verslo, medicinos) uždavinius. Ji naudojasi žiniomis ir analizės taisyklėmis, apibrėžtomis tos srities ekspertų. Skiriasi nuo duomenų bazių programos tuo, kad pastaroji tik iškviečia ir pateikia duomenų bazėje laikomus duomenis tokius, kokie jie yra. Ekspertinė sistema analizuoja duomenis ir pateikia išvadas.
 
## ES vystymosi priežastys

1970-ųjų pradžioje dirbtinio intelekto (*Artificial Intelligence*; AI) tyrinėtojai pripažino, kad pagrindiniai problemų sprendimo metodai ir paieškos sprendimo būdai, vystyti per pastaruosius dešimt metų, yra nepakankami spręsti sudėtingoms problemoms. Jie suprato, kad reikalingos specifinės žinios apie konkrečias taikymo sritis. Šis pripažinimas leido vystyti žinių bazėmis pagrįstas (ekspertines) sistemas. Nuo to laiko žinių bazėmis pagrįstų sistemų technologija yra dominuojanti tema AI techninėje literatūroje. 
Ekspertinės sistemos išsirutuliojo kaip keturių svarbiausių, bet tarpusavyje susijusių veiksnių rezultatas:
* prasidėjo evoliucija šiose srityse: sąvokų ir operacijų - nuo duomenų - per informaciją - prie žinių perdirbimo. Šios trys perdirbimo kryptys gali vystytis simbiozėje, sukurdamos naują kokybę arba žiniomis grindžiamas sistemas.
* dirbtinio intelekto tyrinėjimai, iš kurių kilo ekspertinės sistemos, jau apie dešimtmetį išgyvena savo renesansą, taigi daug kas pasikeitė nuo *J. Lighthill* pranešimo laikų (nuo 1973 metų), kai jis teigė, kad dirbtinis intelektas neturi perspektyvos, todėl jį plėtoti beprasmiška . Iš tiesų tuo metu laboratorijose kuriamos sistemos negalėjo susidoroti su daugeliu probleminių situacijų, ypač kai buvo ieškoma visų įmanomų uždavinio sprendimų. Šiandien, kai jau žinoma,, kad konkrečios sistemos apimtis turi būti atitinkamai apibrėžta ir apribota, programą galima įgyvendinti, o kompiuterio darbas duoda netgi geresnį efektą, negu eksperto - žmogaus.
* kompiuterinės technikos lygio kilimas tiek JAV, tiek Japonijoje, tiek Europoje sukėlė susidomėjimą šiomis sistemomis ir jų kūrimu.
* verslo pasaulyje, kuriame nauda jauste nujaučiama, buvo suvokta, kad ekspertinių sistemų plėtotė ateityje gali atnešti pelną ir sumažinti išlaidas. Tradiciškai įmonės, norėdamos užsitikrinti sėkmę, investuodavo lėšas į intelekto šaltinį - žmogų. Tačiau, kaip pastebi M. Turner, ekspertai žmonės dažniausiai būna brangūs, klystantys, užimti, nenuoseklūs, nervingi (linkę kelti paniką), mirtingi. Prie šio apibūdinimo galima pridurti ir tai, kad žmonės linkę ieškoti didesnio uždarbio ir pereina pas konkurentus, kurie siūlo jiems geriau apmokamą vietą. Tokiu atveju įmonė praranda plėtotės galimybę.

## ES taikymo sritys

Ekspertinių sistemų taikymo sritys:

* valdymo uždaviniai;
* diagnostika;
* projektavimas;
* karinių veiksmų prognozavimas;
* ekonomika - formuojant investicijas, rizikos analizei;
* mokesčių sistema.

## ES komponentai

Ekspertines sistemas sudaro tokios tarpusavyje susijusios dalys arba moduliai: 

* žinių įvedimo modulis; 
* žinių bazė, kurią sudaro dvi atskiros dalys: faktų ir taisyklių bazė; 
* išvadų generatorius; 
* vartotojo ryšio su sistema modulis.

**Žinių įvedimo modulis** padeda įvesti į kompiuterio atmintį faktus ir taisykles. Be abejo, atsižvelgiant į tai, kas pasakyta, šie faktai ir taisyklės turi priklausyti siaurai sričiai, kuriai projektuojama sistema. 
**Žinių bazė**, kurią sudaro faktai ir taisyklės, nėra pastovi, ji visą laiką papildoma naujais faktais ir taisyklėmis. Kai kurios iš jų taip pat gali būti panaikintos arba pakeistos. Taigi žinių bazė turi būti nuolat atnaujinama. Faktai žinių bazėje dažniausiai turi deklaratyvią formą, konstatuoja tam tikrus reiškinius. Jie išreiškiami sąlygos sakiniais. Gali būti ir kitų žinių pateikimo būdų, išreiškiamų, pvz., tokiais aplinkybiniais sakiniais, kaip: "jeigu…, tai". 
Faktai ir taisyklės, pradiniai duomenys įvedami į kitą modulį, **išvadų generatorių**. Jis jungia faktus, užrašytus bazėje su atitinkamomis taisyklėmis, užrašytomis taisyklių bazėje. Taip susidaro nauji faktai, kurie savo ruožtu užrašomi faktų bazėje. Taigi sistema sugeba kurti savo žinių bazę.
Paskutinioji ekspertinės sistemos dalis - tai **ryšio su vartotojais modulis**. Jis įgalina vesti vartotojo ir sistemos dialogą, pateikiant klausimus ir gaunant atsakymus. Šiuo atveju duoti klausimus ir atsakyti į juos gali ir vartotojas, ir kompiuteris.

## ES naudojimo motyvai

Ekspertinės sistemos:
* Padeda išsaugoti žinias – sukuria kolektyvinę firmos atmintį (*Helps preserve knowledge--builds up the corporate memory of the firm.*) 
* Padeda jei ekspertizė yra reta, brangi ar negalima. (*Helps if expertise is scarce, expensive, or unavailable.*) 
* Padeda esant ribotam laikui (*Helps if under time and pressure constraints*.) 
* Padeda apmokyti naujus darbuotojus (*Helps in training new employees*.) 
* Padeda padidinti darbuotojo efektyvumą (*Helps improve worker productivity*.)

## Sistemų struktūra

Dirba 3 kategorijos darbuotojai:
* vartotojas;
* žinių inžinierius;
* instrumento kūrėjas- programuotojas.

**Vartotojo** požiūris pats paprasčiausias . Susideda iš trijų dalių. Vartotojo sąsajos būsena gali būti įvairi, bet svarbiausia ji turi leisti kelti klausimus. Geresnė sistema bus, jei paaiškins, kodėl priima tokį, o ne kitokį sprendimą. Taip pat ji pateikia rezultatus (grafiškai). Duomenų bazė talpina informaciją apie sprendžiamą uždavinį ir priimtus sprendimus.

**Žinių inžinierius**- tarpininkas tarp eksperto ir dB. Pagrindinis tikslas - išgauti žinias.

**Programuotojo** požiūris toks:

Kūrėjas turi žinoti atsakymus į klausimus:
1.	Žinių vaizdavimo būdas.
2.	Žinių išvedimo mechanizmas.
3.	Galima pateikti dar kelis alternatyvius sprendimus.
4.	Klasifikavimas.

**Interpretatorius** turi sugebėti dirbti su nepilna, prieštaringa informacija. Tai vaizdų, kalbos atpažinimo sistemos.
**Diagnostika** pakitimo paieška.
**Gedimas**- nukrypimas nuo normos. Taikomi specifiniai reikalavimai: reikia tiksliai įsivaizduoti struktūros sistemas.
**Kontrolė** – diagnostikos funkcija. Duomenų interpretacija atliekama realiame laike. Reikalingas patikimumas. Pavojinga, kai pavojinga situacija praleidžiama arba klaidinga. Sistema turi greitai priimti sprendimus.
**Prognozavimas**- ateities numatymas remiantis praeities ir dabarties modeliais. Yra labai sudėtingas. Reikalinga žinių bazė. Naudojami tikimybiniai metodai.
**Planavimas**- veiksmų programos sudarymas. Apima tikslo pasiekimo kelius, resursus. Roboto elgesio planavimas.
**Projektavimas** – kuriamų objektų (gaminių, sistemų įrenginių) specifikacijų, dokumentų rinkinių, brėžinių rengimas
**Mokančios sistemos** – būtinas dialogas su vartotoju. Turi diagnozuoti klaidas, prognozuoti besimokančiojo elgesį, pažangumas.
**Valdančios sistemos**- nustatytas veikimo režimas, jo palaikymas. Sunkiai formalizuojama. Naudojama gamybos valdymo srityje, nes reikia sekti didelį duomenų kiekį.

## ES projektavimo ir kūrimo technologijos

* Pirmiausia kuriamas sistemos prototipas, o po to galutinis produktas.

* Jei žinios pastovios labiausiai tinka algoritminės programos. Jei sprendimas priklauso nuo žinių eksperto, jos išreiškiamos simboliais, eilutėmis, tekstu.

* Svarbu apibrėžti žinių šaltinį, suformuluoti tikslą. Žinių išgavimas – diskusija su ekspertu ir jo žinių išgautų aprašymas. Išgavimui naudojami: diskusijos, žaidimai, testai… Apibrėžiama, kokia naudojama technologija, ryšiai tarp sąvokų, įeinančioji ir išeinančioji informacija, sprendimo priėmimo strategija, apribojimai. Žinių struktūrizavimas, neformalaus aprašymo sudarymas, naudojami tekstai, grafai, lentelės. ŽB pasirinktu vaizdavimo būdu. Naudojami kompleksai. LISP, SmallTalk, FRL… Testavime dalyvauja visi. Ar atitinka vartotojų poreikius? Įvertinamas valdymo sistemos patogumas. Patikrinama kokybė pavyzdžių. Patikrinama ŽB kokybė.

* Bazės papildymas. Komercinis variantas turi turėti kažkokį servisą ir dokumentaciją. Ekspertai patys susipažįsta su baze. Žinių inžinierius perduoda teises Ekspertui, kad jis galėtų tikslinti ir aptarnauti sistemą.

* Testavimas. Tikrina kiti Ekspertai. Sprendimo pateikimo tikslumas. Vartotojo kriterijai: sąsajos patogumas, darbo skaidrumas, paaiškinimai. Kitų Ekspertų kriterijai, kokybė spendimų. Pateikiamas įvertinimas. Dizainas, našumas, kokybė (koks neišsprendžiamų atvejų kiekis), sistemos jautrumas (jei keičiama struktūra, kaip keičiasi rezultatas). Suderinimas su kitomis priemonėmis. Ryšiai su kitomis bazėmis, matavimo prietaisais. Vartotojų apmokymas.

* Palaikymas – atnaujinimas.
  
* Žinių laukas. ŽI semiotinis modelis
ŽI – žinių inžinerija. ŽI – tai ŽB projektavimas, eksperto žinių išgavimas ir jų struktūrizavimas.
Pagrindinė sąvoka – žinių laukas.
(F2) – pagrindinių sąvokų ir ryšių tarp jų aprašymas.
ŽL – tai tam tikras žinių modelis išreikštas pasirinkta kalba (L).
Kalbos žodynas formuojamas naudojant specialius ženklus.
Pageidautinos kalbos savybės:
Kuo mažiau netikslumų, jų galima išgyvent griežčiau apibrėžiant sąvokas. Tam geriausia tinka matematika.
* Žinių išgavimo aspektai:
A = {A1, A2, A3}
A1 – psichologinis aspektas
A2 – lingvistinis aspektas
A3 – pažinimo aspektas
Bendravimo lygiai:
Manipuliavimo – vienas kartoja kitą.
Refleksinis – abu bendrauja.
Teisinis – abu pripažįsta, kad projektai turi teisę egzistuoti.
Aukščiausias – abu pripažįsta, gali egzistuoti bendras projektas.

* Žinių struktūrizavimas yra sudėtingas. Priskiriama sudėtinga sistemų teorija.
Principai:
1.Struktūrinis principas. Algoritminės dekompozicijos idėja.
2. Objektinis principas (požiūris). Susietas su dekompoziciją objektų. Nagrinėjamas kiekvienas objektas. Naudojamos elementariosios sąvokos iš objektinio programavimo. Siūlo daug fizinių ir loginių būdų.
Apibendrinti metodai (principai):
objektinis – struktūrinis - objektinis metodas išplėstas struktūriniu metodu. Sluoksniai:
kam žinios?
Kas žinios? – kūrėjai, org. Strukt.
Kas žinios? – negyvi objektai, sąvokų struktūra.
Kaip žinios? – funkcijos analizė, gipotezinis sprendimų priėmimo modeliai.
Kur žinios? – erdvinė analizė…
Kada žinios?
Kodėl žinios? – priežasčių pasekmių analizė
Kiek žinios? – ekonominė analizė.
Ši analizė siūlo žinias talpinti į matricą. Stulpeliai – lygiai. Eilutės – problemos.
Praktiniai struktūrizavimo žingsniai
{x} – įėjimo duomenys
{y} – išėjimo duomenys
               
Terminų žodyno nustatymas N.
Pasirinktos ds objektų ir sąvokų aibė nustatoma. {A}
Ryšių tarp sąvokų nustatymas
Metasąvokų nustatymas, sąvokų detalizavimas.
Žinių piramidės (hierarchinės struktūros) sukūrimai
Piramidė ryšių nustatymai. Vertikalūs, horizontalūs ir įvardijimas.
Strategijos apibrėžimas.

* Paaiškinimų formavimas ekspertinėse sistemose.
ES turi būti skaidrios vartotojui, paaiškinti, kodėl priėmė tokius sprendimus. Paaiškinimai reikalingi ŽI, kad įsitikinti ar gerai veikia ES. Reikalingas automatinis paaiškinimų formavimas. Paaiškinimų formavimas sudėtingas kaip ir žinių išgavimas. Daugelis autorių atsisako šablonų, nes jie nelankstūs. Siūloma naudoti planavimo operatorius. Specifikuojami planavimo veiksmai. Kiekviena taisyklė turi sąlygų sąrašą. Tokiose sistemose turi būti tiksliai suformuluotas bendravimo su vartotoju tikslas. Strateginių ir struktūrinių žinių atskyrimas. Individualaus vartotojo lygio modeliavimas (sistema turi analizuoti vartotojo pasiruošimą, tikslus, tada pagal tai yra organizuojami paaiškinimai).

* Instrumentinės ekspertinių sistemų kūrimo priemonės.
ES kevalai, aukšto lygio programavimo kalbos, daugiafunkcės programavimo aplinkos.

Instrumentai skirstomi:

Ekspertinių sistemų kevalas. EMYCIN – tuščia ekspertinė sistema. Gali būti taikoma kitoms analogiškoms medicininėms ES.
Aukšto lygio programavimo kalbos. LISP – sąrašų kalba. Duomenys aprašomi sąrašais. PROLOG – loginio pobūdžio kalba. OPS – pretendavo į standartą. Naudojamos produkcijų (generacijų) taisyklės. Paprasta lengvai įsisavinama, didesnės taisyklės negu kevalai. Visos kalbos nepabaigtos, kad taptų komercinėmis.
Programavimo aplinkos – jungia skirtingų tipų modulius. Objektiškai orientuota. (CLIPS, JESS).
Automatiniai papildomi moduliai – leidžia spręsti įvairias situacijas. Praplečia kitus tipus, galimybes.

## Literatūra

* James **Ignizio,** *Introduction to Expert Systems* (1991), ISBN 0-07-909785-5
* Joseph C. **Giarratano,** Gary **Riley** *Expert Systems, Principles and Programming* (2005), ISBN 0-534-38447-1
* Peter **Jackson** *Introduction to Expert Systems* (1998), ISBN 0-201-87686-8

## Nuorodos

* http://www.leidykla.vu.lt/inetleid/Im-1/Ekspertines_sistemos_57-68.htm- Ekspertinės sistemos