PC – SHELL

Transkrypt

PC – SHELL
PC – SHELL
Szkieletowy system ekspertowy
(praca oparta głównie na produkcie i informacjach zawartych na stronie
http://www.aitech.pl )
Opracował:
Konrad Banaś
Informacje ogólne
PC-Shell jest pierwszym polskim - w pełni komercyjnym - szkieletowym systemem
ekspertowym. PC-Shell powstał jako rezultat wcześniejszych doświadczeń uzyskanych
podczas budowy systemu PC-Expert (1985-87) oraz Diagnosta MC 14007 (1988). PC-Shell
otrzymał dwa wyróżnienia na Międzynarodowych Targach Oprogramowania SOFTARG
w roku 1994 oraz 1996. W roku 1997 system otrzymał nagrodę II-go stopnia w konkursie na
najlepszy program targów SOFTARG. System był wielokrotnie prezentowany na
konferencjach i seminariach, zarówno w kraju jak i za granicą (Holandia, Singapur, Irlandia).
Zastosowanie
PC-Shell jest dziedzinowo-niezależnym narzędziem służącym do budowy systemów
ekspertowych. Może być zastosowany w dowolnej dziedzinie: począwszy od bankowości
i finansów, a na zastosowaniach technicznych kończąc. Typowe obszary zastosowań systemu
PC-Shell to:
o
o
systemy doradcze i wspomagania decyzji,
dydaktyka (wyższe uczelnie i szkoły średnie).
System może być między innymi wykorzystywany w takich dziedzinach jak:
analizy finansowe (ekonomiczne),
analizy wniosków kredytowych w bankach,
doradztwo podatkowe,
dzięki otwartej architekturze może być łatwo zintegrowany z Systemami
Informowania Kierownictwa, służąc np. do automatycznej analizy wskaźników
ekonomicznych,
o technika, np. do analizy danych pomiarowych.
o
o
o
o
System nadaje się do budowy zarówno małych, średnich jak i dużych aplikacji.
Klasy problemów
Dziedzinowa niezależność systemu PC-Shell oznacza, że nie dziedzina, a raczej klasa
problemów decyduje o powodzeniu zastosowania tego systemu. System PC-Shell jest
szczególnie predysponowany do rozwiązywania następujących klas problemów :
•
•
•
•
•
•
•
•
•
•
analiza (interpretacja) danych
klasyfikacja,
diagnostyka,
finanse i bankowość,
inwestycje,
marketing,
technika,
dydaktyka,
komponent dla systemów SIK, analizatorów, arkuszy kalkulacyjnych,
komponent programów edukacyjnych.
PC-Shell jest dziedzinowo niezależny, stąd zakres jego zastosowań jest bardzo szeroki.
Bowiem nie dziedzina a klasa problemów decyduje o powodzeniu zastosowania systemu
PC-Shell.
Architektura
Jak już wspomniano, system PC-Shell jest systemem o architekturze hybrydowej, tj. łączącej
w sobie różne metody rozwiązywania problemów i reprezentacji wiedzy. Interesującą
właściwością systemu PC-Shell jest między innymi wbudowany, w pełni zintegrowany
symulator sieci neuronowej. Inną istotną cechą systemu PC-Shell jest jego struktura
tablicowa, co umożliwia podzielenie dużej bazy wiedzy na mniejsze moduły - zorientowane
tematycznie, tzw. źródła wiedzy.
Reprezentacja wiedzy
Dzięki hybrydowej architekturze, w systemie PC-Shell występują obok siebie różne metody
reprezentowania wiedzy :
o
o
o
o
o
o
deklaratywna w formie reguł i faktów,
trójka : obiekt, atrybut, wartość,
imperatywna w formie programu algorytmicznego,
wiedza w formie tekstów,
wiedza rozproszona w sieci neuronowej,
możliwość podzielenia bazy wiedzy na pewną liczbę źródeł wiedzy.
System PC-Shell jest wyposażony we własny język reprezentacji wiedzy. Język ten dzięki
przyjętym rozwiązaniom, w tym blokowej strukturze, cechują :
o
o
o
o
elastyczność,
czytelność,
pełne rozdzielenie wiedzy eksperckiej i procedur sterowania,
łatwość nauczania
Wyjaśnienia
Niezwykle ważną i wręcz unikatową cechą systemów ekspertowych są tzw. wyjaśnienia.
System PC-Shell dostarcza szerokiego zakresu wyjaśnień spotykanych we współczesnych
systemach ekspertowych. Należą do nich wyjaśnienia typu:
o
o
o
o
o
jak (ang. how explanations),
dlaczego (ang. why),
co to jest (ang. what is),
metafory,
opisy faktów.
Wyjaśnienia jak mają charakter retrospektywny i informują o sposobie rozwiązania danego
problemu. Wyjaśnienia dlaczego uzasadniają celowość pytań stawianych przez system
ekspertowy. Wyjaśnienia typu co to jest są tekstowymi objaśnieniami wybranych pojęć
w bazie wiedzy. W systemie PC-Shell wprowadzono dodatkowe wyjaśnienia tekstowe
nazywane metaforami, będące uzupełnieniem wyjaśnień typu jak. Opisy faktów pokazują
źródło i metodę ich pozyskania oraz dostępność wyjaśnień.
Wnioskowanie
Obecna wersja systemu wykorzystuje do rozwiązywania problemów wnioskowanie wstecz
(ang. backward chaining). Zastosowana metoda wnioskowania wykorzystuje m.in.
mechanizm nawrotów, podobny jak w spotykanych systemach prologowych. Mechanizm
uzgadniania jest bardzo elastyczny i nie wymaga deklarowania typów wartości dla
uzgadnianych zmiennych. Wartościami zmiennych mogą być liczby, symbole lub łańcuchy
znakowe.
Wnioskowanie redukcyjne (wstecz) - teoria
Wnioskowanie jest wnioskowaniem redukcyjnym, gdy z posiadanej konkluzji dowodzi się
prawdziwość przesłanki. Ponieważ ten typ wnioskowania nie przebiega w zgodzie
z założeniami i prawami logiki matematycznej, nie można uznać tej metody za niezawodną.
Przebieg tej metody odbywa się w odwrotnym kierunku niż przy metodzie wnioskowania w
przód, tzn. najpierw stawia się hipotezę główną, którą stara się udowodnić na podstawie
prawdziwości przesłanek. Jeśli w drodze wnioskowania napotka się przesłankę, której
prawdziwość nie jest dowiedziona, przyjmuje się ją jako kolejną hipotezę, którą należy
udowodnić. Ostatecznie hipoteza główna jest prawdziwa, jeśli wszystkie rozważane
przesłanki okazały się prawdziwe. Schemat logiczny działania wnioskowania wstecz
przedstawiony został na rysunku poniżej:
Fakty
początkowe
hipoteza wykazana lub
brak reguł
NIE
określenie zbioru reguł,
których konkluzje unifikują
się z hipotezą
wybór reguły ze zbioru
jeśli przesłanki reguły nie ma
w bazie, udowodnij wstecz tą
przesłankę
TAK
Koniec
Dla lepszego zrozumienia oraz porównania przebiegu procesu wnioskowania wstecz
i w przód, przeanalizujmy schemat wnioskowania dla pewnego problemu. Załóżmy, że mamy
w przykładzie pewną drukarkę, która z niewiadomych przyczyn nie jest sprawna. Zadanie
polega na ustaleniu powodu awarii tejże drukarki, na podstawie posiadanych faktów i reguł.
Przykładowe zadanie zostało rozwiązane wnioskowaniem w przód na rysunku 1 oraz
wnioskowaniem wstecz na rysunku 2 poniżej.
Rysunek 1.
Rysunek 2.
Po tym wprowadzeniu można przejść do bardziej szczegółowego schematu wnioskowania
wstecz z uwzględnieniem użycia stosu hipotez, który został zaprezentowany poniżej:
START
określenie celu hipotezy badanego stwierdzenia
TAK
czy BF zawiera stwierdzenie zgodne z
celem?
SUKCES
STOP
PORAŻKA
STOP
NIE
czy w BW są reguły o konkluzji zgodnej z celem?
NIE
TAK
lista reguł, których konkluzja jest zgodna z celem
NIE
zapisanie na stosie celu i listy reguł
stos pusty?
odczyt pierwszej reguły ze stosu reguł
czy element
pusty?
zdjęcie hipotezy
ze szczytu stosu
TAK
NIE
TAK
TAK
umieść nie spełnione przesłanki
na stos hipotez wraz z listami reguł
gdzie konkluzją jest
ta niespełniona reguła
czy wszystkie przesłanki reguły są
spełnione?
czy istnieje inna reguła
związana z badaną hipotezą?
TAK
zastosuj regułę
NIE
usuń hipotezę
ze szczytu stosu.
SUKCES
NIE
PORAŻKA
STOP
STOP
Aby wyjaśnić przebieg wnioskowania wstecz na rysunku powyżej posłużymy się kilkoma
przykładami, tak, aby przejść wszystkie możliwe ścieżki algorytmu. W każdym przypadku
będzie określona baza faktów (BF), baza wiedzy (BW) oraz stany stosów: hipotez i reguł. Po
każdym kroku, który zmienia stan bazy faktów, czy też stan stosów, w nawiasie podany jest
aktualny stan po zakończeniu bieżącego kroku. W zastosowanej w przykładzie notacji
reprezentacji stosu, na szczycie znajduje się element zapisany jako ostatni, tj. ostatni z prawej.
Przykładowo dla zapisu „stos: A, B, C” na szczycie stosu znajduje się element C, dalej jest
element B i A.
Przykład 1:
Dane:
stos reguł: pusty
stos hipotez: pusty
BF: A, B
BW: if B then C
cel: A
kolejne kroki algorytmu:
•
START
•
określenie celu hipotezy: A
•
czy BF zawiera stwierdzenie zgodne z celem? TAK
•
SUKCES
•
STOP
Przykład 2:
Dane:
stos reguł: pusty
stos hipotez: pusty
BF: A, B
BW: if B then C
cel: D
kolejne kroki algorytmu:
•
START
•
określenie celu hipotezy: D
•
czy BF zawiera stwierdzenie zgodne z celem? NIE
•
czy w BW są reguły o konkluzji zgodnej z celem? NIE
•
PORAŻKA
•
STOP
Przykład 3:
Dane:
stos reguł: pusty
stos hipotez: pusty
BF: A, B, D
BW:
1.
if C then F
cel: F
kolejne kroki algorytmu:
•
START
•
określenie celu hipotezy: F
•
czy BF zawiera stwierdzenie zgodne z celem? NIE
•
czy w BW są reguły o konkluzji zgodnej z celem? TAK
•
lista reguł o konkluzji zgodnej z celem: 1
•
zapisanie na stosie celu i listy reguł (stos hipotez: F; stos reguł: 1 )
•
odczyt pierwszej reguły ze stosu reguł (reguła 1) (stos hipotez: F; stos reguł: pusty)
•
czy element pusty? NIE
•
czy wszystkie przesłanki reguły są spełnione? NIE
•
umieść nie spełnione przesłanki na stos hipotez z listami reguł, gdzie konkluzją jest niespełniona reguła
(stos hipotez: F, C; stos reguł: 1, 0)
•
odczyt pierwszej reguły ze stosu reguł (reguła pusta) (stos hipotez: F, C; stos reguł: 1)
•
czy element pusty? TAK
•
czy istnieje inna reguła związana z badaną hipotezą? NIE
•
PORAŻKA
•
STOP
Przykład 4:
Dane:
stos reguł: pusty
stos hipotez: pusty
BF: A, B, D
BW:
1.
if A i B then C
2.
if D then E
3.
if C i E then F
4.
if G then F
cel: F
kolejne kroki algorytmu:
•
START
•
określenie celu hipotezy: F
•
czy BF zawiera stwierdzenie zgodne z celem? NIE
•
czy w BW są reguły o konkluzji zgodnej z celem? TAK
•
lista reguł o konkluzji zgodnej z celem: 3, 4
•
zapisanie na stosie celu i listy reguł (stos hipotez: F; stos reguł: 3, 4 )
•
odczyt pierwszej reguły ze stosu reguł (reguła 4) (stos hipotez: F; stos reguł: 3 )
•
czy element pusty? NIE
•
czy wszystkie przesłanki reguły są spełnione? NIE
•
umieść nie spełnione przesłanki na stos z regułami, gdzie konkluzją jest ta niespełniona reguła (stos
hipotez: F, G; stos reguł: 3, 4, 0 )
•
odczyt pierwszej reguły ze stosu reguł (reguła pusta) (stos hipotez: F, G; stos reguł: 3, 4 )
•
czy element pusty? TAK
•
czy istnieje inna reguła związana z badaną hipotezą? TAK (reguła 3)
•
zdjęcie hipotezy ze szczytu stosu (stos hipotez: F; stos reguł: 3 )
•
odczyt pierwszej reguły ze stosu reguł (reguła 3) (stos hipotez: F; stos reguł: pusty )
•
czy element pusty? NIE
•
czy wszystkie przesłanki reguły są spełnione? NIE
•
umieść nie spełnione przesłanki na stos z regułami, gdzie konkluzją jest ta niespełniona reguła (stos
hipotez: F, C, E; stos reguł: 3, 1, 2 )
•
odczyt pierwszej reguły ze stosu reguł (reguła 2) (stos hipotez: F, C, E; stos reguł: 3, 1 )
•
czy element pusty? NIE
•
czy wszystkie przesłanki reguły są spełnione? TAK
•
zastosuj regułę (BF: A, B, D, E)
•
usuń hipotezę ze szczytu stosu (stos hipotez: F, C; stos reguł: 3, 1 )
•
stos hipotez pusty? NIE
•
odczyt pierwszej reguły ze stosu reguł (reguła 1) (stos hipotez: F, C; stos reguł: 3)
•
czy element pusty? NIE
•
czy wszystkie przesłanki reguły są spełnione? TAK
•
zastosuj regułę (BF: A, B, D, E, C)
•
usuń hipotezę ze szczytu stosu (stos hipotez: F; stos reguł: 3)
•
stos hipotez pusty? NIE
•
odczyt pierwszej reguły ze stosu reguł (reguła 3) (stos hipotez: F; stos reguł: pusty)
•
czy element pusty? NIE
•
czy wszystkie przesłanki reguły są spełnione? TAK
•
zastosuj regułę (BF: A, B, D, E, C, F)
•
usuń hipotezę ze szczytu stosu (stos hipotez: pusty; stos reguł: pusty)
•
stos hipotez pusty? TAK
•
SUKCES
•
STOP
Porównując wnioskowanie wstecz z wnioskowaniem w przód, zauważyć można podstawową
przewagę dowodzenia redukcyjnego, tj. dużo mniejszą liczbę tworzonych (i dodawanych do
bazy) nowych faktów. Niemożliwe jest także równoczesne dowodzenie kilku hipotez.
W konsekwencji daje to znacznie krótszy czas osiągnięcia celu, dlatego metoda ta jest
powszechniej używana.
Parametryzacja baz wiedzy
Począwszy od wersji 2.1 istotną cechą systemu PC-Shell jest możliwość parametryzacji baz
wiedzy. Dzięki przyjętemu rozwiązaniu jest możliwa dynamiczna (automatyczna) zmiana
wartości wybranych parametrów w bazie wiedzy, bez konieczności zmian tekstu źródłowego
bazy. Dobrym przykładem zastosowania parametryzacji mogą być bazy wiedzy, w których
sprawdzane są wartości pewnych wskaźników w odniesieniu do określonych wartości
progowych. Jednocześnie niektóre wartości progowe mogą być zmienne, zależnie od
kontekstu. Dla przykładu, inaczej można oceniać pewne wskaźniki finansowe firm
należących do różnych branż.
Podobne problemy pojawiają się w innych dziedzinach, np. w technice. PC-Shell ułatwia to
zadnie, pozwalając również tworzyć kategorie parametrów. Korzyści z zastosowania tej
metody:
o
o
o
o
o
o
może być z łatwością stosowana zarówno przez inżyniera wiedzy jak
i użytkownika końcowego,
obniża koszty wdrożenia i utrzymywania aplikacji opartej o system PC-Shell
pozwala zarówno na interakcyjną jak również programową (dynamiczną)
zmianę wartości parametrów,
umożliwia zmianę wartości wybranych parametrów oraz grup ujętych
w ramach tzw. kategorii, zarówno programowo jak i interakcyjnie,
zastosowane pojęcie kategorii zmiennych parametrycznych pozwala na lepsze
dostosowanie aplikacji do specyfiki niektórych klas problemów,
narzędzia do parametryzacji pozwalają zwiększyć czytelność oraz zmniejszyć
bazy wiedzy niektórych aplikacji SE.
Interfejs do baz danych
PC-Shell jest wyposażony w interfejs do typowych popularnych baz danych (np.: dBase
Oracle, itd.). Inżynier wiedzy ma do dyspozycji zestaw instrukcji do komunikacji z bazami
danych z użyciem poleceń języka SQL.
Otwartość systemu
System może być łatwo integrowany z innymi aplikacjami. W szczególności może być
wykorzystany jako moduł do analizy (interpretacji) danych i wskaźników z systemów typu
SIK, arkuszy kalkulacyjnych lub innych systemów pomiarowych. Ułatwiają to instrukcje
uruchamiania innych aplikacji, jak również możliwość wywołania systemu PC-Shell przez
inną aplikację. Wymiana danych może odbywać się przez plik tekstowy (PC-Shell ma
rozbudowany interfejs i instrukcje do obsługi tego typu plików) oraz z użyciem mechanizmu
DDE. Ponadto istnieje możliwość integracji za pomocą uruchamiania podstawowych
procesów systemowych za pomocą funkcji DLL tychże systemów.
Wymagania systemowe
SPRZĘT :
Komputer 486 lub nowszy, pamięć RAM 8MB lub więcej.