Metody realizacji systemów ekspertowych w środowisku systemu PCShell Systemy ekspertowe charakterystyka ogólna Właściwości: są narzędziem kodyfikacji wiedzy eksperckiej, mają zdolność rozwiązywania problemów specjalistycznych, w których duża rolę odgrywa doświadczenie a wiedza ekspercka jest dobrem rzadkim i kosztownym. zwiększają dostępność ekspertyzy, zapewniają możliwość prowadzenia jednolitej polityki przez centralę firm mających wiele oddziałów, poziom ekspertyzy jest stabilny jej jakość nie zależy od warunków zewnętrznych i czasu pracy systemu, jawna reprezentacja wiedzy w postaci zrozumiałej dla użytkownika końcowego, zdolność do objaśniania znalezionych przez system rozwiązań, możliwość przyrostowej budowy i pielęgnacji bazy wiedzy. Zastosowania: analiza ryzyka, ocena wniosków kredytowych, uczestników przetargów, monitorowanie, diagnostyka, predykcja, wspomaganie procesów diagnostycznych, analiza i interpretacja danych, instruktaż, dydaktyka, szkolenia. testuje i rozszerza Twórca narzêdzi Ekspert dziedzinowy Baza wiedzy implementuje pozyskuje wiedzê Narzêdzia do budowy SE In ynier wiedzy System Ekspertowy U ytkownik buduje i testuje Realizacja dziedzinowego SE (z uwzglêdnieniem zadañ twórców systemu ) PC Shell 1/ 10
Ogólna charakterystyka szkieletowego systemu ekspertowego PCShell PC Shell jest podstawowym elementem pakietu sztucznej inteligencji Sphinx PC Shell jest dziedzinowo niezależnym narzędziem do budowy systemów ekspertowych, posiada właściwości hybrydowe, wykorzystuje elementy architektury tablicowej; wykorzystuje różne metody reprezentacji wiedzy:!"deklaratywna w postaci reguł i faktów,!"wiedza rozproszona w sieci neuronowej,!"imperatywna w formie programu algorytmicznego,!"faktograficzna w formie tekstów, grafiki, dźwięku, sekwencji wideo; system zapewnia wyjaśnienia:!"jak (ang. how),!"dlaczego (ang. why),!"co to jest (ang. what is),!"metafory (ang. metaphor),!"opisu faktów; wykorzystywane jest wnioskowanie wstecz (z nawrotami), bazy wiedzy mogą być parametryzowane, system ma możliwość bezpośredniego pozyskiwania informacji z baz danych (ODBC), wykorzystuje mechanizm DDE, system PC Shell współpracuje z innymi elementami pakietu systemem Neuronix przeznaczonym do tworzenia sieci neuronowych, systemem CAKE przeznaczonym do wspomagania pracy inżyniera wiedzy oraz realizującym funkcje systemu dbmaker, zarządzającego bazami wyjaśnień. Architektura systemu PCShell Baza Wiedzy Baza Ekspercka Definicja Sieci Neuronowej Baza wyjaœnieñ Co To Jest? Baza Metafor Translator JOBW Sphinx J¹dro Systemu Sterowanie Symulator Sieci Neuronowej Edytor bazy wiedzy przegl¹du bazy wnioskowania wyjaœnieñ Podsystem komunikacji z u ytkownikiem PC Shell 2/ 10
Realizacja aplikacji w środowisku systemu PCShell PCShell jest dziedzinowo niezależnym, szkieletowym systemem ekspertowym o właściwościach hybrydowych. Dzięki zastosowaniu elementów architektury tablicowej, bazę wiedzy podzielić można na pewną ilość heterogenicznych źródeł wiedzy. Realizacja dziedzinowego systemu ekspertowego polega na stworzeniu stosownej bazy wiedzy. Klasyczne podejście do tego procesu polega na zapisie wiedzy w sformalizowanej postaci, do czego wykorzystywany jest język reprezentacji wiedzy. Do definiowania sieci neuronowej wykorzystuje się system Neuronix, tworzenie i zarządzanie bazami wyjaśnień umożliwia system dbmaker. Umieszczony niżej rysunek ilustruje proces realizacji hybrydowej bazy wiedzy. Tworzenie, testowanie, pielêgnacja i rozwój aplikacji Podejœcie klasyczne Neuronix Definiowanie struktury i parametrów sieci, uczenie, generacja pliku opisu sieci PCShell Tworzenie, edycja, rozwój, testowanie baz eksperckich, zarz¹dzanie projektem dbmaker Zarz¹dzanie mulimedialnymi bazami wyjaœnieñ CO TO JEST? i METAFORAMI Definicja SN Ekspercka BW CO TO JEST? a = X ifb = X, c = 3.2; b = X ifk = Y, e = Z; e = X ifd = Z, h = Z; k = X ifh = Z, g = 4; To jest tekst w bazie wyjaœnieñ CO TO JEST? To zwyk³y tekst, ale mog¹ byæ te obrazki oraz dÿwiêk. Baza Wiedzy zawieraj¹ca heterogeniczne Ÿród³a wiedzy PCShell Wnioskowanie Zarz¹dzanie Ÿród³ami Dialog Podaj typ samolotu Dialogi Grafika DŸwiêk Wyjaœnienia: Dlaczego? Jak? œmig³owy turboœmig³owy odrzutowy OK Dlaczego Co to? Wyjaœnienia: Co To Jest? Metafory? Dziedzinowy system ekspertowy Pakiet Sphinx zawiera system CAKE (ang. Computer Aided Knowledge Engineering), który jest przeznaczony do wspomagania procesu realizacji dziedzinowych aplikacji szkieletowego systemu ekspertowego PC Shell. Dzięki wykorzystaniu systemu CAKE można realizować aplikacje systemu PC Shell bez dokładnej znajomości języka opisu bazy wiedzy. Na każdym z etapów pracy system oferuje wygodne narzędzia wspomagające, eliminujące konieczność żmudnego wprowadzania kodu. Zapis baz wiedzy w postaci binarnej zapewnia z jednej strony ochronę zgromadzonej wiedzy przed niepowołanym dostępem, z drugiej zaś strony poprawia efektywność wykonania aplikacji w PC Shell 3/ 10
środowisku systemu PC Shell. Dzięki systemowi uprawnień i haseł można ograniczyć dostęp do aplikacji zarówno na etapie jej tworzenia jak również na etapie jej wykonywania. Umieszczony poniżej rysunek ilustruje przebieg procesu realizacji aplikacji eksperckiej w środowisku systemu CAKE. Tworzenie, testowanie, pielêgnacja i rozwój aplikacji Wykorzystanie systemu CAKE CAKE Plik Edycja Przegląd Uprawnienia Pomoc Neuronix Definiowanie struktury i parametrów sieci, uczenie, generacja pliku opisu sieci reguła 001 reguła 002 reguła 003 reguła 004 reguła 005 reguła 006 Dialog przegląd = nie if typ = odrzutowy, brak_awarii, sprawny_technicznie; Tekst wyjaśnień dla atrybutu SAMOLOT Dialog Definicja SN 111011010110 111010101111 010100111010 111111111100 110101111011 Ekspercka BW 101010101010 101011011010 110110101011 110100011101 011111000100 Projekt Uprawnienia Has³a U ytkownicy Binarna Baza Wiedzy Co To? 110110101011 110100011101 Metafory 101010101010 101011011010 110110101011 110100011101 011111000100 PCShell Wnioskowanie Zarz¹dzanie Ÿród³ami Wyjaœnienia: Dlaczego? Jak? Ocena stanu techniczego œmig³owy turboœmig³owy odrzutowy Dialog Podaj typ samolotu OK Dlaczego Co to? Dialogi Grafika DŸwiêk Wyjaœnienia: Co To Jest? Metafory? Dziedzinowy system ekspertowy PC Shell 4/ 10
Struktura bazy wiedzy systemu PCShell Baza wiedzy systemu zapisywana jest przy użyciu wyspecjalizowanego języka opisu bazy wiedzy SPHINX. Integruje on w sobie deklaratywny język reprezentacji wiedzy oraz strukturalny język programowania. Baza wiedzy zapisywana jest w postaci pliku (lub plików) tekstowych poddawanych procesowi translacji na początku każdej sesji konsultacyjnej. Baza wiedzy ma strukturę blokową. Ogólną syntaktykę baz wiedzy oraz funkcje poszczególnych bloków przedstawia umieszczona poniżej tabela. Baza wiedzy STRUKTURA SYSTEMU PCShell Bazy wyjaœnieñ Translator jêzyka opisu bazy wiedzy Sterowanie Edytor bazy wiedzy przegl¹du bazy wiedzy wnioskowania objaœnieñ Podsystem komunikacji z u ytkownikiem PC Shell 5/ 10
Struktura bazy wiedzy systemu PCShell Struktura bazy wiedzy knowledge base nazwa sources opis_plików facets opis_faset rules opis_reguł facts opis_faktów control program Opis funkcji bloków bazy wiedzy Definicja plików zawierających źródła wiedzy: ekspercka baza wiedzy, definicja sieci neuronowej, baza wyjaśnień. Definicja atrybutów ich typów i właściwości, ustalenie wartości przełączników sterujących wnioskowaniem. Blok opisu reguł zapisanych w postaci klauzul Horna. Blok opisu faktów zapisanych w postaci trójek ObiektAtrybutWartość. Blok programu sterowanie wnioskowaniem i aktywacją źródeł, pozyskiwanie i wstępne przetwarzanie danych, dostęp do plików baz danych, dynamiczna wymiana danych itp. Blok deklaracji źródeł wiedzy Format opisu źródła: nazwa_źródła : type { kb metaphor what_is }; file łańcuch_znaków; gdzie type służy do specyfikacji typu źródła, jednego z poniższych: kb eksperckie bazy wiedzy, neural_net sieci neuronowe, metaphor bazy danych zawierające wyjaśnienia typu metafory, what_is bazy danych zawierające wyjaśnienia typu co to jest, natomiast file łańcuch_znaków określa plik, w którym przechowywane jest źródło wiedzy. PC Shell 6/ 10
Przykładowa deklaracja bloku źródeł: sources decyzja_kredytowa : type kb file "c:\\bazy\\bw\\decyzja.zw"; prognoza_finansowa : type neural_net file "c:\\bazy\\sieci\\prognoza.def"; metafory : type metaphor file "c: \\bazy\\bw\\kredyt.dbm"; coto : type what_is file "c: \\bazy\\bw\\kredyt.dbw"; Ogólna struktura bloku faset Fasetami określa się tu zbiór deklaracji odnoszących się do wybranych atrybutów. Blok faset zawiera wykaz wszystkich atrybutów używanych w bazie wiedzy, wraz z przypisanymi do nich fasetami. facets opis_faset opis_faset: atrybut 1 [ deklaracje_faset 1 ]; atrybut n [ deklaracje_faset n ]; Rodzaje faset opisujących atrybuty: ask określa czy system może stawiać pytania dotyczące danego atrybutu; system zadaje pytania jedynie w sytuacji, gdy nie potrafi potwierdzić warunku reguły lub hipotezy wykorzystując fakty i reguły zawarte w bazie wiedzy; query umożliwia zdefiniowanie przez użytkownika własnej treści zapytań o wartość atrybutu, generowanych przez system; unit umożliwia zadeklarowanie jednostki miary, w której wyrażane są wartości danego atrybutu, podczas wyświetlania informacji zawierającej dany atrybut, dodatkowo po wartości będzie pojawiał się tekst zadeklarowany jako jednostka_miary. PC Shell 7/ 10
val określa zbiór dopuszczalnych wartości danego atrybutu. Wartości mogą być numeryczne lub symboliczne; do określenia dozwolonych lub niedozwolonych wartości służą następujące deklaracje związane z fasetą val : oneof, someof, range, except; param faseta ta umożliwia zadeklarowanie tzw. zmiennych parametrycznych i przypisanie im wartości domyślnych; picture, sound fasety te umożliwiają związanie rysunków i/lub dźwięku z atrybutem lub jego wartościami; rysunek jest automatycznie pokazywany, np. gdy pojawia się zapytanie dotyczące atrybutu z którym związany jest rysunek; dźwięk można odtworzyć po wybraniu odpowiedniego przycisku. Przykłady definicji atrybutów z użyciem faset : facets temperatura_ciała : query "Podaj temperaturę ciała:"; unit " C"; val range < 36, 42 >; param { NORMALNA = 36.7, STAN_PODGOR = 37.5 }; kolor_nadwozia : query "Proszę podać kolor nadwozia samochodu:" ; val oneof { "biały", "czerwony", "niebieski" }; pojemność_silnika : query "Proszę podać pojemność silnika:" ; unit "cm 3 "; val except { < MIN, 600 ), ( 4000, MAX > }; grzyb : val oneof { "pieczarka", "muchomor", "maślak" } picture { "piecz.bmp", "muchomor.bmp","maslak.bmp"}; sound { "ok.bmp", "alarm.bmp", "ok.bmp" }; ilość_pamięci_ram : query "Podaj przewidywaną ilość pamięci RAM:"; unit "MB"; val range < 1, 128 > PC Shell 8/ 10
facts opis_faktów Bloki opisu faktów opis_faktu: trójka_oaw; lub not trójka_oaw; Przykłady poprawnie zapisanych faktów: facts temperatura_ciała( kowalski ) = 37.5; kolor_nadwozia = "biały"; pojemnosc_silnika = 2500; grzyb = "maślak"; Bloki opisu reguł rules opis_reguł opis_reguły: [ nr_reguły : ] konkluzja if warunek_1 & warunek_2 &...& warunek_n; Przykłady poprawnie zapisanych reguł: typmodemu = "Zoltrix 56000 Cobra Voice V.90 PCI" if producentmodemu = "Zoltrix", jakimodem = "modem wewnętrzny", szybkośćmodemu = "56000"; typdrukarki = "HewlettPackard Desk Jet 1120C" if rodzajdrukarki = "drukarka atramentowa", producentdrukarki = "HewlettPackard", zastosowaniedrukarki = "wydruk tekstu i rysunków", jakośćwydruku = "jak najlepsza"; ryzyko_rozwoju_choroby_wieńcowej = "wysokie" if skłonności_dziedziczne_choroby_wieńcowej = "występują", miażdżyca_tętnic_wieńcowych = "występuje"; gatunek = "DOOM METAL" if instrument = "gitara elektryczna", rytm = "umiarkowany", rodzaj_wokalu = "mroczny, ponury", klimat = "ponury", tempo = "wolne"; PC Shell 9/ 10
Blok sterujący control program program: [deklaracje zmiennych] instrukcje Typy danych całkowite (int, longint), rzeczywiste (float, double), tablicowe (jedno i dwuwymiarowe), rekordowe. Instrukcje programowania (podział ogólny) instrukcje sterujące wykonaniem programu, instrukcje inicjujące i sterujące procesem wnioskowania, instrukcje operujące na bazie wiedzy, instrukcje podsystemu komunikacji z użytkownikiem, instrukcje symulatora sieci neuronowej, instrukcje związane z parametryzacją baz wiedzy, instrukcje obsługujące dostęp do plików, instrukcje obsługujące dostęp do baz danych, instrukcje dotyczące dynamicznej wymiany danych. Przykładowy blok sterujący control run; createappwindow; vignette( "NET", "Demonstracyjna baza wiedzy" ); setappwintitle("konfiguracja sieci komputerowych"); menu "Konfiguracja" 1. "Dobór rodzaju sieci" 2. "Dobór konfiguracji serwera (NOVELL)" 3. "Dobór konfiguracji stanowisk roboczych" 4. "Nowa konsultacja" 5. "Wyjście" case 1; solve( nos, "typ_systemu_operacyjnego=jaki_system" ); case 2; solve( server,"konfiguracja_serwera=jaki_serwer" ); case 3; solve( pc, "konfiguracja_stacji_roboczych=jakie_stacje"); case 4; delnewfacts; case 5; exit; PC Shell 10/ 10