systemy ekspertowe w internecie – projekt
Transkrypt
systemy ekspertowe w internecie – projekt
systemy ekspertowe, regułowe bazy wiedzy, struktura bazy wiedzy, wnioskowanie. Agnieszka NOWAK* SYSTEMY EKSPERTOWE W INTERNECIE – PROJEKT WIELOPLATFORMOWEGO MODUŁU WNIOSKOWANIA WSTECZ DLA SYSTEMU Z REGUŁOWĄ REPREZENTACJĄ WIEDZY Praca przedstawia wieloplatformowy moduł wnioskowania wstecz, którego zadaniem jest realizacja procesu dowodzenia prawdziwości hipotezy głównej przy wykorzystaniu róŜnych strategii sterowania wnioskowaniem dla systemów z regułową reprezentacją wiedzy. Uniwersalność modułu polega na realizacji wieloplatformowej, będącej wielkim marzeniem projektantów, którzy piszą programy dla kilku róŜnych systemów komputerowych. Java to język programowania będący uniwersalnym kodem dla wszystkich platform systemowych – reklamowany przez swego producenta za pomocą hasła: „wystarczy raz zapisać kod, a program moŜna uruchomić wszędzie”. Z tego względu praca porusza podstawowe aspekty decydujące o popularności Javy. 1. WSTĘP Potrzebie jak najszybszego i najszerszego pod względem zasięgu rozpowszechnienia systemów ekspertowych wychodzi dzisiaj na przeciw Internet a konkretnie – moŜliwe do umieszczenia w WWW zdobywające coraz większą popularność – aplikacje internetowe. Powodem tego, Ŝe aplikacje i serwisy coraz częściej publikowane są na stronach internetowych jest fakt, iŜ aplikacji tego typu nie trzeba kupować, ściągać i instalować na swoim komputerze lecz wystarczy wejść na odpowiednią stronę i uruchomić odpowiedni program. Takie rozwiązanie daje moŜliwość dostępu komercyjnego – wejście przez hasło, abonament na „korzystanie”. Systemy ekspertowe dobrze nadają się do publikowania w Internecie. Dzieje się tak dlatego, Ŝe WWW zapewnia ograniczony zakres dialogu i przewidywalny * Uniwersytet Śląski, Instytut Informatyki, 41-200 Sosnowiec, ul. Będzińska 39, [email protected] scenariusz jego przebiegu. Opracowanie i oprogramowanie bazy wiedzy jest procesem niezwykle trudnym, pracochłonnym i wymaga wiele wiedzy dziedzinowej. Często twórcy nie reprezentują instytucji komercyjnych i nie sprzedają swoich produktów na zasadach rynkowych. Dzięki temu powstają strony internetowe, na których moŜna się konsultować z wybranym systemem. JednakŜe owa dostępność i niezwykła uŜyteczność wymaga realizacji wieloplatformowej. Z definicji Internet jest siecią sieci, składającą się z rozmaitych platform sprzętowych i programowych. Wszystkie one korzystają z tych samych protokołów i dzięki temu mogą się bez przeszkód porozumiewać. Aby dodać element programowania do Internetu, który przeniknąłby do WWW, nie moŜna uŜyć klasycznych języków programowania takich jak C czy C++. Po pierwsze ze względu na problem bezpieczeństwa oraz fakt, Ŝe programy napisane w językach C czy C++ skompilowane dla platformy Windows nie zadziałają np. na systemie Solaris. Tym, czego potrzebujemy w WWW, jest język interpretowany. Idealnym rozwiązaniem wydaje się Java – dająca moŜliwość tworzenia aplikacji internetowych, poprzez: niezaleŜność platformową, bezpieczeństwo oraz międzynarodowy zestaw znaków – unicode. [1] Celem niniejszego referatu jest przedstawienie modułu wnioskowania umoŜliwiającego osadzenie na stronach WWW własnych systemów ekspertowych. Powstał on jako wynik prac nad opisywaną wcześniej koncepcją niezaleŜnego platformowo modułu wnioskowania zrealizowanego w języku Java. Ów wieloplatformowy moduł wnioskowania dla inteligentnych aplikacji internetowych, udostępniony jest w wersji testowej na stronie WWW pod adresem: http://www.inference.engine.prv.pl/. [6] 2. KONCEPCJA MODUŁU W procesie implementacji modułu Infer v 2.0 wzięto pod uwagę realizację następujących zadań: wieloplatformowość, dostępność „on-line” 24 h/dobę, dostęp do róŜnych baz wiedzy zapisanych w tym samym formacie ale dotyczących róŜnych dziedzin, tak aby to uŜytkownik decydował o tym której bazie wiedzy uŜywał, elastyczne strategie sterowania wnioskowaniem, które decydowałyby o tym, która spośród wszystkich moŜliwych do uaktywnienia w danym momencie reguł, zostanie „odpalona”, wyjaśnienia z dogodną prezentacją graficzną. To interpretator reguł, będący elementem składowym kaŜdej maszyny wnioskującej – szuka reguł, których konkluzje dają się zunifikować z celem wnioskowania. W module Infer v 2.0 zaimplementowane zostały trzy strategie sterowania wnioskowaniem: strategia pierwsza reguła na liście (ang. textual order) – pobiera pierwszą regułę na liście spośród wszystkich moŜliwych do uaktywnienia w danym momencie, strategia świeŜości (ang. recency) – pobiera ostatnią regułę na liście (ostatnio dodaną do bazy wiedzy), strategia specyficzności (ang. specificity) – pobiera regułę o największej liczbie warunków.[7] WaŜne jest równieŜ to, aby system ekspertowy oprócz w pełni poprawnej realizacji procesu samego dowodzenia celu wspartego róŜnymi dodatkowymi opcjami dostosowanymi do indywidualnych upodobań uŜytkowników, zawierał takŜe moduł objaśniający proces rozumowania maszyny wnioskującej oraz graficzną prezentację wyników wnioskowania. Takie załoŜenia zostały zaimplementowane w omawianym module. [6] 3. AKTUALNA POSTAĆ SYSTEMU Moduł Infer v2.0 został osadzony na stronie internetowej poświęconej tematyce sztucznej inteligencji i systemów ekspertowych, znajdującej się pod adresem: http://www.inference.engine.prv.pl/. Okno główne programu ma postać odpowiadającą rysunkowi nr 1. Rys. 1. Okno główne programu Fig. 1.The main window of application Moduł wnioskowania Infer v 2.0 realizuje następujące funkcje: wybór bazy wiedzy – obecnie dostępne są dwie bazy wiedzy: „medycyna.txt” oraz „grzyby.txt”, zapisane w tym samym formacie, podgląd bazy wiedzy: atrybutów i ich wartości oraz reguł, plan wnioskowania – umoŜliwiający uŜytkownikowi sprawdzenie jeszcze przed rozpoczęciem procesu wnioskowania, czy wybrany przez niego cel wnioskowania da się udowodnić na podstawie wiedzy zawartej w danej bazie wiedzy, ustawienia dotyczące strategii sterowania wnioskowaniem – realizacja strategii kolejności, świeŜości i specyficzności, realizacja mechanizmu nawrotów (ang. backtracking) - mechanizm ten dotyczy reguł, których przesłanki (części warunkowe) zawierają zmienne, pod które moŜna w procesie wnioskowania podstawiać róŜne wartości (wszystkie wartości danego atrybutu) i dowodzić ich prawdziwość, [2] tryb pracy krokowej i ciągłej z moŜliwością wielokrotnego przełączania się między nimi, wybór celu wnioskowania z moŜliwością niepełnego wyboru (np. choroba=X), moŜliwość przerwania wnioskowania na Ŝyczenie uŜytkownika, realizacja modułu objaśniającego – przedstawiającego uŜytkownikowi powód zadania przez system pytania o wartość danego atrybutu i jak ta odpowiedź moŜe wpłynąć na proces wnioskowania prowadzonego przez system, graficzna prezentacja wyników oraz statystyka wnioskowania, mające na celu przedłoŜenie uŜytkownikowi szczegółowego raportu z przeprowadzonego procesu dowodzenia prawdziwości hipotezy głównej, podgląd faktów wygenerowanych w trakcie wnioskowania, z moŜliwością usunięcia wszystkich faktów lub tylko wybranych, wnioskowanie na faktach z poprzedniego wnioskowania. Po wybraniu BW następuje wypełnienie odpowiednich struktur danych: listy atrybutów, listy wartości, listy faktów (początkowo pustej) oraz listy reguł. Na ekranie pojawi się okno Struktura Bazy Wiedzy z pięcioma zakładkami: Atrybuty i wartości atrybutów – gdzie uŜytkownik wybierając dany atrybut ma moŜliwość podglądu zbioru wartości tego atrybutu, Reguły, Plik bazy wiedzy – podgląd oryginalnego pliku bazy wiedzy, Drzewo umoŜliwiające przegląd struktur BW, gdzie wybierając atrybut moŜna uzyskać informacje o liczbie jego wartości, przeglądnąć te wartości, oraz o liczbie reguł, w których atrybut ten występuje w konkluzji reguły. Z kolei wybierając wartość atrybutu moŜna się dowiedzieć, którego atrybutu ona dotyczy i czy występuje w konkluzji jakiejś reguły i jeŜeli tak to w ilu, Fakty - moŜliwy jest przegląd faktów powstałych w procesie wnioskowania oraz ich usuwanie. Schemat blokowy systemu Infer v2.0 przedstawia rysunek nr 2. Rys. 2. Struktura modułu Infer v 2.0 Fig. 2. Structure of Infer v 2.0 module 3.1. ALGORYTM WNIOSKOWANIA W SYSTEMIE INFER v 2.0 Dowodzenie poprawności hipotezy głównej realizowane jest w systemie Infer v 2.0 dwuetapowo: najpierw przeszukiwana jest lista faktów, w drugiej kolejności zaś analizowane są konkluzje reguł przez interpretator reguł. Pseudokod algorytmu wnioskowania wstecz zaimplementowany w omawianym module przedstawiono poniŜej. 1. 2. 3. 4. Przeszukaj listę faktów. Porównuj kaŜdy element tej listy z celem wnioskowania. • Jeśli cel jest faktem to koniec wnioskowania. Idź do punktu 4. • W przeciwnym przypadku – krok 2. Przeszukaj konkluzje wszystkich reguł w bazie wiedzy. Spośród wszystkich moŜliwych do uaktywnienia reguł w danym momencie wybierz jedną regułę kierując się wybraną strategią sterowania wnioskowaniem. Wybierając reguły do uaktywnienia kieruj się wybraną przez uŜytkownika strategią doboru reguł. • Dla kaŜdego warunku odpalonej reguły przeprowadź proces wnioskowania tak samo jak dla celu głównego. • JeŜeli wszystkie przesłanki reguły są prawdziwe to cała reguła jest prawdziwa. – krok 3 • W przeciwnym przypadku – szukaj innych reguł. Zapytaj uŜytkownika o kontynuowanie wnioskowania. • JeŜeli uŜytkownik zechce dalej wnioskować to wróć do kroku 2. • W przeciwnym przypadku – idź do kroku 4. Koniec wnioskowania. Na szczególną uwagę zasługuje fakt, Ŝe w sytuacji, gdy cel wnioskowania nie był faktem w bazie wiedzy, ale znaleziono regułę, której konkluzją jest ten cel, to aby go udowodnić naleŜy uruchomić proces wnioskowania dla kaŜdego warunku takiej reguły.[4] Istotne jest wówczas to, Ŝe jeśli któryś z warunków nie jest ani faktem w bazie ani nie daje się go zunifikować z konkluzją Ŝadnej reguły, wówczas system zapyta uŜytkownika o wartość analizowanego warunku (atrybutu). Odpowiedź uŜytkownika pozwala pomyślnie dokończyć proces wnioskowania i zostaje ona dodana do listy faktów. [5][6] 3.2. WYNIKI WNIOSKOWANIA Po kaŜdym udowodnieniu (bądź nie) hipotezy głównej, uŜytkownik zostanie poinformowany o pomyślnym (lub niepomyślnym) przeprowadzeniu wnioskowania i jednocześnie zapytany o chęć kontynuacji wnioskowania. MoŜliwość realizacji wielokrotnego procesu dowodzenia poprawności celu wnioskowania powoduje, Ŝe dla prawidłowej interpretacji osiągniętych wyników niezbędny jest moduł objaśniający w trakcie pracy systemu drogę prowadzonego przez niego wnioskowania oraz graficzna prezentacja wyników. Drogę wnioskowania moŜna przeglądać równieŜ w formie drzewa przedstawiającego po kolei wszystkie kroki maszyny wnioskującej wraz z regułami, w oparciu o które następowało wnioskowanie. 4. WYBRANE ASPEKTY IMPLEMENTACJI MODUŁU WIELOPLATOFORMOWOŚĆ Przede wszystkim uruchamianie programów w WWW wymaga niezaleŜności sprzętowej. WWW jest otwarte dla kaŜdego przez standardowy protokół, który moŜe być zrealizowany na kaŜdej platformie. Powodem dobrego działania apletów Javy w WWW jest to, Ŝe interpretator Javy jest obecnie częścią przeglądarki WWW. Z chwilą ładowania programu w Javie przeglądarka przekazuje go do interpretatora, aby go wykonał. Java to język bezpieczny, poniewaŜ gdy program w Javie jest ładowany z WWW, jest umieszczany w ograniczonym obszarze pamięci. Interpretator przegląda wszystkie bajty kodu pośredniego i sprawdza, czy spełniają one wymagania języka. W WWW potrzebujemy języka interpretowanego. Silny język interpretowany moŜe być jednak wolny. Jeśli interpretator będzie musiał tłumaczyć źródła przy kaŜdym wykonaniu, program będzie działał wolno. Java rozwiązuje ten problem przez kompilację kodu źródłowego do postaci kodu maszynowego, jednak nie jakiegoś konkretnego procesora. Wynikiem kompilacji nie jest kod maszynowy, lecz kod pośredni (ang. byte code). Kompilator produkuje strumień bajtów zawierających kody operacji i parametry dla teoretycznej maszyny. Maszyna ta zwana jest naturalnie Wirtualną Maszyną Javy (JVM; ang. Java Virtual Machine).[3] JVM moŜe być przedstawiona w kaŜdej reprezentacji. Gdy zostanie zrealizowana programowo, stanie się pośrednikiem między konkretną maszyną a programem w Javie, który chcemy uruchomić. JVM interpretuje skompilowany kod Javy i wykonuje Nasz program.[1] 5. PODSUMOWANIE Omówiony w pracy moduł Infer v2.0, zrealizowany w formie apletu (programu uruchamianego z poziomu przeglądarki WWW) umoŜliwia realizację wieloplatformowych, systemów ekspertowych, realizujących proces wnioskowania wstecz. W pracy omówiono główne funkcje systemu: przegląd bazy wiedzy, proces wnioskowania wstecz z realizacją róŜnych strategii sterowania praca ciągła i krokowa z moŜliwością przełączania się między nimi w trakcie działania programu, realizacja mechanizmu nawrotów, funkcja – plan wnioskowania, rozbudowany moduł objaśniający oraz graficzna prezentacja wyników wnioskowania. Omówiony w pracy, prototypowy moduł wnioskowania stanowi interesującą alternatywę dla wielu drogich i platformowo zaleŜnych narzędzi do budowania systemów ekspertowych. Odbywa się to bez konieczności zakupu, instalacji i dystrybucji nośnika, dzięki czemu moduł moŜe być uruchomiony na róŜnych typach komputerów i pod kontrolą wielu systemów operacyjnych bez Ŝadnych modyfikacji. Aktualnie trwają prace nad rozwojem modułu ukierunkowane na realizację róŜnych technik wnioskowania oraz efektywne strategie dobory reguł. LITERATURA [1] BOONE B., Java TM dla programistów C I C++., Warszawa, WNT, 1998 [2] CHOLEWA W., PEDRYCZ W., Systemy doradcze, skrypt P.Śl. nr 1447, Gliwice, 1985 [3] ECKELL B., Thinking in Java, Helion, Gliwice, 2000 [4] JACOBSON P., Introduction to Expert Systems, University of Edinburgh, 1985 [5] NOWAK A., Realizacja modułu wnioskowania wstecz dla regułowej reprezentacji wiedzy, Praca licencjacka, Uniwersytet Śląski, Sosnowiec, 2000 [6] NOWAK A., Wieloplatoformowy moduł wnioskowania dla inteligentnych aplikacji internetowych, Praca magisterska, Uniwersytet Śląski, Sosnowiec, 2002 [7] REICHGELT H., Knowledge Representation : An AI Perspective, Ablex Publishing Corporation in New Jersey, 1991 EXPERT SYSTEM IN INTERNET - THE PROJECT OF THE MULTIPLATFORMED INFERENCE ENGINE MODULE INFER v 2.0 FOR THE RULE BASED KNOWLEDGE SYSTEMS This paper describes the inference engine module, which has to prove the goal with using the various types of strategy inference. The paper presents how is the module Infer v 2.0 is working. The second part includes an multiplatform aspects of the Java programming language, which was used to implemented this system.