Metody realizacji systemów ekspertowych w środowisku systemu PC-Shell
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.
Twórca narzêdzi
Narzêdzia do budowy
SE
Ekspert dziedzinowy
In¿ynier wiedzy
System Ekspertowy
Baza wiedzy
U¿ytkownik implementuje pozyskuje wiedzê
buduje i testuje testuje i rozszerza
Realizacja dziedzinowego SE (z uwzglêdnieniem zadañ twórców systemu )
Ogólna charakterystyka szkieletowego systemu ekspertowego PC-Shell
• 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ń.
Podsystem komunikacji z u¿ytkownikiem Baza wyjaœnieñ Co To Jest?
Baza Metafor Baza
Ekspercka
Definicja Sieci Neuronowej
Baza Wiedzy
Symulator Sieci Neuronowej Translator JOBW
Sphinx
Edytor bazy wiedzy
Modu³ przegl¹du bazy
Modu³ wnioskowania
Modu³ wyjaœnieñ Sterowanie
J¹dro Systemu
Architektura systemu PC-Shell
PC Shell 3/ 10
Realizacja aplikacji w środowisku systemu PC-Shell
PC-Shell 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.
Baza Wiedzy zawieraj¹ca heterogeniczne Ÿród³a wiedzy Neuronix
Definiowanie struktury i parametrów sieci, uczenie, generacja
pliku opisu sieci
PC-Shell Tworzenie, edycja, rozwój, testowanie baz
eksperckich, zarz¹dzanie projektem
dbMaker Zarz¹dzanie muli- medialnymi bazami
wyjaœnieñ CO TO JEST? i METAFORAMI Tworzenie, testowanie, pielêgnacja i rozwój aplikacji
Podejœcie klasyczne
a = X if b = X, c = 3.2;
b = X if k = Y, e = Z;
e = X if d = Z, h = Z;
k = X if h = Z, g = 4;
Ekspercka BW
Definicja SN CO TO JEST?
To jest tekst w bazie wyjaœnieñ CO TO JEST? To zwyk³y tekst, ale mog¹ byæ te¿ obrazki oraz dŸwiêk.
PC-Shell Dialog
œmig³owy turboœmig³owy odrzutowy Podaj typ samolotu
OK Dlaczego Co to?
Dziedzinowy system ekspertowy
Dialogi Grafika DŸwiêk Wyjaœnienia:
- Co To Jest? - Metafory?
Wnioskowanie Zarz¹dzanie Ÿród³ami Wyjaœnienia:
- Dlaczego?
- Jak?
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 4/ 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
PC-Shell Dialog
œmig³owy turboœmig³owy odrzutowy Podaj typ samolotu
OK Dlaczego Co to?
Ocena stanu techniczego
Dziedzinowy system ekspertowy
Dialogi Grafika DŸwiêk Wyjaœnienia:
- Co To Jest? - Metafory?
Wnioskowanie Zarz¹dzanie Ÿród³ami Wyjaœnienia:
- Dlaczego?
- Jak?
CAKE Plik Edycja Przegląd Uprawnienia Pomoc
Dialog
reguła 001 reguła 002 reguła 003 reguła 004 reguła 005 reguła 006
przegląd = nie if typ = odrzutowy, brak_awarii, sprawny_technicznie;
Dialog
Tekst wyjaśnień dla atrybutu SAMOLOT
Neuronix
Definiowanie struktury i parametrów sieci, uczenie, generacja
pliku opisu sieci
111011010110 111010101111 010100111010 111111111100 110101111011 Definicja
SN
101010101010 101011011010 110110101011 110100011101 011111000100 Ekspercka
BW Projekt
Uprawnienia Has³a U¿ytkownicy
110110101011 110100011101 Co To?
101010101010 101011011010 110110101011 110100011101 011111000100 Metafory
Binarna Baza Wiedzy
Struktura bazy wiedzy systemu PC-Shell
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.
Podsystem komunikacji z u¿ytkownikiem Edytor bazy
wiedzy
Modu³ objaœnieñ Modu³
przegl¹du bazy wiedzy Baza
wiedzy
Bazy wyjaœnieñ
Sterowanie
Modu³ wnioskowania Translator jêzyka
opisu bazy wiedzy
STRUKTURA SYSTEMU PC-Shell
Struktura bazy wiedzy systemu PC-Shell
Struktura bazy wiedzy Opis funkcji bloków bazy wiedzy
knowledge base nazwa
sources
opis_plikówend;
Definicja plików zawierających źródła wiedzy:
ekspercka baza wiedzy, definicja sieci neuronowej, baza wyjaśnień.
facets
opis_fasetend;
Definicja atrybutów - ich typów i właściwości, ustalenie wartości przełączników sterujących wnioskowaniem.
rules
opis_regułend;
Blok opisu reguł zapisanych w postaci klauzul Horna.
facts
opis_faktówend;
Blok opisu faktów zapisanych w postaci trójek Obiekt-Atrybut-Wartość.
control
programend;
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.
end;
Blok deklaracji źródeł wiedzy
Format opisu źródła:
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.
nazwa_źródła :
type { kb | metaphor | what_is };
file łańcuch_znaków;
PC Shell 7/ 10
Przykładowa deklaracja bloku źródeł:
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.
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.
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";
end;
facets opis_faset end;
opis_faset:
atrybut1 [ deklaracje_faset1 ];
-
atrybutn [ deklaracje_fasetn ];
PC Shell 8/ 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 :
facetstemperatura_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 "cm3";
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 >
- - end;
Bloki opisu faktów
Przykłady poprawnie zapisanych faktów:
Bloki opisu reguł
Przykłady poprawnie zapisanych reguł:
facts opis_faktów end;
opis_faktu: trójka_OAW; lub not trójka_OAW;
facts
temperatura_ciała( kowalski ) = 37.5;
kolor_nadwozia = "biały";
pojemnosc_silnika = 2500;
grzyb = "maślak";
end;
rules opis_reguł end;
opis_reguły:
[ nr_reguły : ] konkluzja if warunek_1 &
warunek_2 &
...&
warunek_n;
typModemu = "Zoltrix 56000 Cobra Voice V.90 PCI" if producentModemu = "Zoltrix",
jakiModem = "modem wewnętrzny", szybkośćModemu = "56000";
typDrukarki = "Hewlett-Packard Desk Jet 1120C" if rodzajDrukarki = "drukarka atramentowa", producentDrukarki = "Hewlett-Packard", 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";
Blok sterujący
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
program end;
program:
[deklaracje zmiennych]
instrukcje
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;
end;
end;
end;