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.