Laboratorium 1. i 2. Strona 1 z 8 Spis treści: 1. Podstawy pracy w zintegrowanym pakiecie sztucznej inteligencji AITECH Sphinx. 2. Szkieletowy system ekspertowy PC Shell 4.0 3. Tworzenie bazy wiedzy w PC Shell 4.0 4. Słownik pojęć 5. Programowanie w PC Shell instrukcje i polecenia. Przykład prostego systemu ekspertowego. Ad. 1. Pakiet sztucznej inteligencji Sphinx firmy AITECH rozwijany jest od 1990 roku. Składa się na niego kilka modułów (systemów), a mianowicie: o Cake komputerowy system wspomagania inżyniera wiedzy Jego podstawowe zadania polegają na wspomaganiu procesu tworzenia, rozbudowy i pielęgnacji baz wiedzy, weryfikacji poprawności zgromadzonej wiedzy, generowaniu baz wiedzy w postaci tekstowej oraz binarnej. Dodatkowo system ten umożliwia zarządzanie projektem aplikacji systemu PC-Shell, umożliwia ochronę projektu aplikacji poprzez system haseł i uprawnień oraz wspomaga organizację pracy grupowej. o demoviewer system służący do prezentacji aplikacji wchodzących w skład pakietu AITECH Sphinx o detreex indukcyjny system pozyskiwania wiedzy detreex to narzędzie służące do wspomagania procesu pozyskiwania wiedzy. Dzięki zastosowaniu indukcyjnej metody uczenia maszynowego umożliwia budowanie drzew decyzyjnych i zapis takich drzew w postaci zbioru reguł, które później można wykorzystać w bazach wiedzy systemów ekspertowych. o Dialog Editor edytor okien dialogowych Jest to narzędzie pomocnicze, wykorzystywane do tworzenia graficznego interfejsu użytkownika, ułatwiającego pracę z aplikacją. o HybRex system przeznaczony do budowy inteligentnych aplikacji wspomagania decyzji Jego zadaniem jest integracja technik sztucznej inteligencji oraz konwencjonalnych metod statystyki i informatyki stosowanych w rozwiązywaniu złożonych problemów decyzyjnych. o Neuronix symulator sztucznych sieci neuronowych Jest to narzędzie umożliwiające wszechstronną analizę danych, wykorzystujące mechanizm tzw. sztucznych sieci neuronowych. o PC-Shell szkieletowy system ekspertowy Jego podstawowym zadaniem jest symulowanie ludzkiej ekspertyzy w określonej (zazwyczaj wąskiej) dziedzinie. PC-Shell predysponowany jest głównie do rozwiązywania problemów o charakterze diagnostycznym i klasyfikacyjnym oraz związanych z interpretacją danych. o Predykator to system do budowy statycznych i dynamicznych modeli prognostycznych Jego zadaniem jest predykcja (przewidywanie) zachowania badanego zjawiska w określonym momencie w przyszłości.
Laboratorium 1. i 2. Strona 2 z 8 Pakiet Sphinx dzięki zastosowaniu modułów, które mają możliwość współpracy ze sobą, stwarza możliwość rozwiązywania problemów pojawiających się w różnych dziedzinach. Dzięki zastosowaniu technik sztucznej inteligencji rezultaty działania pakietu są znacznie dokładniejsze i trafniejsze niż zastosowanie oprogramowania konwencjonalnego. Ad. 2. Szkieletowy system ekspertowy: PC-Shell System składa się z ośmiu elementów: 1. moduł sterujący jego zadaniem jest koordynacja wszystkich procesów realizowanych przez system PC-Shell, 2. translator języka opisu bazy wiedzy jego zadaniem jest translacja (przetłumaczenie) sformalizowanej bazy wiedzy zapisanej na dysku (format ASCII), na postać użyteczną dla systemu ekspertowego, 3. moduł wnioskujący ma za zadanie rozwiązać problem wykorzystując bazę wiedzy oraz określone procedury wnioskowania, istnieje możliwość wnioskowania w tył oraz w przód, 4. moduł wyjaśnień umożliwia użytkownikowi systemu ekspertowego prześledzenie w jaki sposób system ekspertowy doszedł do danej konkluzji, istnieje możliwość uzyskania wyjaśnień: jak?, dlaczego?, co to jest?, 5. symulator sieci neuronowej pakiet PC-Shell umożliwia tworzenie aplikacji hybrydowych tj. z wykorzystaniem technologii sztucznych sieci neuronowych i systemu eksperckiego, 6. zewnętrzny edytor baz wiedzy umożliwia przeglądanie bazy wiedzy oraz dodawanie/usuwanie faktów z bazy wiedzy, 7. interfejs użytkownika menu, zestaw przycisków oraz okien dialogowych służących do komunikacji użytkownika z systemem ekspertowym, 8. interfejs do plików dyskowych zbiór narzędzi służących do wykonywania operacji na plikach i katalogach m.in. odczyt, zapis, zmiana danych. System PC-Shell jest systemem regułowym, co oznacza, że cała baza wiedzy kodowana jest za pomocą zestawu reguł i faktów. Struktura bazy wiedzy w systemie PC-Shell 4.0 jest następująca (bloki sources oraz facts są opcjonalne): knowledge base nazwa sources facets rules facts //otwarcie bloku definicji bazy wiedzy //otwarcie bloku źródeł //zawartość bloku źródeł //zamknięcie bloku źródeł //otwarcie bloku definicyjnego //zawartość bloku definicji //zamknięcie bloku definicji //otwarcie bloku reguł //zawartość bloku reguł //zamknięcie bloku reguł //otwarcie bloku faktów
Laboratorium 1. i 2. Strona 3 z 8 //zawartość bloku faktów //zamknięcie bloku faktów control //otwarcie bloku sterowania //zawartość bloku sterowania //zamknięcie bloku sterowania //zamknięcie bloku definicji bazy wiedzy Opisy poszczególnych bloków bazy wiedzy: Blok sources definiuje źródła danych dla bazy wiedzy. W obecnej wersji programu można wykorzystywać 3 typy źródeł: eksperckie bazy wiedzy, aplikacje oparte o sieci neuronowe oraz bazy danych zawierające wyjaśnienia tekstowe (blok niewymagany). Blok facets w miejscu tym określa się zbiór deklaracji odnoszących się do wybranych atrybutów. Wszystkie atrybuty używane w bazie wiedzy oraz zawarte w źródłach wiedzy muszą być w tym bloku zadeklarowane (blok wymagany). Przykład deklaracji, połączony z pytaniem: facets //deklaracja bloku facets - rozpoczęcie wiek_klienta: //deklaracja atrybutu query Wprowadź wiek klienta: ; //monit systemu o wprowadzenie wartości przez użytkownika, treść pytania //koniec bloku facets Blok facts umożliwia zapisywanie wiedzy o charakterze faktograficznym, najczęściej są to informacje względnie stałe, będące parametrami dla bazy wiedzy (blok niewymagany). Blok rules pełni główną rolę z punktu widzenia reprezentacji wiedzy eksperckiej. Każda reguła składa się z konkluzji oraz części warunkowej. Oba te elementy są rozdzielone słowem kluczowym if. Reguły mogą, ale nie muszą być numerowane przez inżyniera wiedzy, zaleca się numerowanie reguł, ale w wypadku braku numeracji system sam nadaje im numery kolejne, według kolejności występowania w kodzie. Istnieje możliwość stosowania zmiennych w konkluzji, wywoływania funkcji zdefiniowanych np. w bloku sterowania, przypisywania wartości do zmiennych czy też używania wyrażeń relacyjnych (blok wymagany). Przykład bloku reguł: rules 1: decyzja_kredytowa = "przyznac kredyt" if profil_klienta = "ok" & gwarancje kredytowe = "dostateczne" & sytuacja finansowa = "dobra"; 2: decyzja_kredytowa = "skonsultuj z przelozonym" if profil klienta = "ok" & (( gwarancje kredytowe = "niedostateczne" & sytuacja finansowa = "dobra")
Laboratorium 1. i 2. Strona 4 z 8 ( gwarancje kredytowe = "dostateczne & sytuacja finansowa = "zla" ) ); 3: decyzja_kredytowa = "odmowic kredytu" if profil klienta = "zly" (gwarancje_kredytowe = "niedostateczne" & sytuacja finansowa = "zla" ); Blok control zawiera kod sterujący pracą programu. Blok ten składa się z deklaracji zmiennych oraz instrukcji do wykonania. Może być też wykorzystywany do tworzenia programów z wykorzystaniem kodu języka AITECH Sphinx (blok wymagany). Ad. 3. Tworzenie nowej bazy wiedzy w PC-Shell 4.0. 1. Uruchomić program PC-Shell 4.0 2. Kliknąć menu Edycja 3. Zaznaczyć generowanie odpowiednich bloków 4. Zapisać bazę do pliku podając dowolną (łatwo identyfikowalną) nazwę. Baza wiedzy zostaje domyślnie zapisana do katalogu: C:\AitechSPHINX 4.5\BW 5. Uzupełnić odpowiednie bloki bazy wiedzy. 6. Uruchomić translację (skrót: F5 ) w celu sprawdzenia błędów. 7. Skorygować ewentualne błędy popełnione podczas wprowadzania danych do bazy wiedzy. 8. Uruchomić program skrót F9 (wykonać retranslację po każdorazowym zakończeniu działania programu w celu rozpoczęcia jego działania od początku klawisz Ctrl-R) Bardzo ważnym elementem jest odpowiednie przygotowanie struktury bazy wiedzy, to znaczy określenie, jakie atrybuty i zmienne będą występować w aplikacji. Odpowiednio wykonany etap przygotowań może znacząco skrócić czas i wysiłek przy samym kodowaniu programu. Ad. 4. Słownik pojęć i terminów zastosowanych w treści materiałów laboratoryjnych: o Sztuczna inteligencja to dział informatyki, który zajmuje się badaniem reguł rządzących inteligentnymi zachowaniami człowieka, tworzeniem modeli formalnych takich zachowań oraz programów, których zdaniem jest symulowanie tego typu zachowań. Dzięki zastosowaniu narzędzi sztucznej inteligencji możliwe jest tworzenie programów do rozpoznawania mowy, tekstu, obrazów, formułowania ekspertyz, tworzenia muzyki, prowadzenia gier itp. o Baza wiedzy jest to główna część systemu ekspertowego, który bazując na niej potrafi stawiać i dowodzić określone hipotezy. Bardzo istotna jest odpowiednia jakość bazy wiedzy stosowanej w systemie ekspertowym, gdyż nawet najlepszy system nie wygeneruje poprawnych rezultatów, jeśli baza będzie niekompletna lub
Laboratorium 1. i 2. Strona 5 z 8 pewne informacje będą błędne. Najczęściej baza wiedzy to plik znajdujący się na dysku, opisujący określoną dziedzinę wiedzy. Informacje znajdujące się w bazie wiedzy są zapisywane w określony sposób. Wiedza może być reprezentowana z wykorzystaniem: - reguł cechy charakterystyczne reguł to ich prostota oraz ogólność. Ogólna postać reguły: JEŚLI przesłanka TO konkluzja - sieci semantycznych wiedza reprezentowana jest za pomocą węzłów i gałęzi, gdzie: węzły to pojęcia, gałęzie to relacje. Przykład: Bank X udziela kredytu Przedsiębiorstwo Y - ramy wiedza jest grupowana w ramach. Dzięki takiej reprezentacji istnieje możliwość zastosowania mechanizmu dziedziczenia oraz tworzenia hierarchii. Dużą zaletą jest fakt, że jedna rama może zawierać informację odnoszące się do danego wycinka wiedzy: Wiedza najczęściej pozyskiwana jest od ekspertów i specjalistów w danej dziedzinie, natomiast zapisem jej w odpowiedniej postaci cyfrowej zajmuje się inżynier wiedzy. Proces pozyskiwania wiedzy może być też przeprowadzony z wykorzystaniem algorytmów indukcyjnych i zbiorów uczących. o Sztuczne sieci neuronowe (SSN) są to systemy, których budowa i zasada działania wzorowana jest na ludzkim mózgu. Dzięki takiemu podejściu SSN znajdują powszechne zastosowania, gdzie konwencjonalne oprogramowanie nie sprawdza się. Typowe zastosowania SSN: rozpoznawanie, kojarzenie, przewidywanie, sterowanie. o System ekspertowy jest to jedno z najbardziej utylitarnych zastosowań narzędzi sztucznej inteligencji. Systemy takie znajdują zastosowanie w takich obszarach jak: medycyna, technika, obronność, wspomaganie podejmowania decyzji finansowych i bankowych itp. Służą najczęściej do rozwiązywania problemów o charakterze diagnostycznym, klasyfikacyjnym, związanych z interpretacją (analizą) danych oraz niektórymi problemami planowania i konstruowania. Działać mogą jako systemy doradcze, konsultacyjne, wspomagające podejmowanie decyzji czy monitorujące (o różnym stopniu autonomii działania). Podstawowe komponenty systemu ekspertowego to baza wiedzy, aparat wnioskujący oraz system sterowania. Zadaniem aparatu wnioskującego jest: sprawdzenie, czy postawiona hipoteza (cel) jest prawdziwa. Wnioskowanie to nosi nazwę wnioskowania wstecznego lub do tyłu. Hipoteza (cel) reguły fakty wnioskowanie do przodu przebiega w kierunku odwrotnym:
Laboratorium 1. i 2. Strona 6 z 8 Fakty reguły konkluzje Aby umożliwić użytkownikowi prześledzenie procesu wnioskowania systemy ekspertowe są wyposażane w aparat (moduł) wyjaśniający. Moduł taki może odpowiadać na 3 pytania: - jak? pokazując w jaki sposób system doszedł do danej konkluzji, - dlaczego? pokazując jak dana odpowiedź wpłynie na rezultat - co to jest? objaśnianie pojęć zawartych w bazie wiedzy. o Szkieletowy system ekspertowy to gotowy do użycia system ekspertowy, który wymaga utworzenia bazy wiedzy, która będzie wykorzystywana w procesie wnioskowania. Na sam szkielet systemu składają się elementy takie jak: mechanizm wnioskujący, moduł wyjaśniający, edytor bazy wiedzy oraz interfejs użytkownika. Ad. 5. Podstawowe instrukcje i polecenia stosowane w systemie ekspertowym PC-Shell. Blok facets facets opis faset Deklaracje globalne występują po facets. Deklaracje lokalne po nazwie danego atrybutu. - ask {yes/no} Decyduje, czy system może pytać o atrybuty. Dla konkretnego atrybutu można również zdefiniować to polecenie. - error treść komunikatu o błędzie Wyświetlenie podanego przez programistę komunikatu w wypadku, gdy użytkownik wprowadzi niepoprawną wartość do systemu. - param { zmienna_1 = wartość_1,, zmienna_n=wartość_n } Zadeklarowanie zmiennych parametrycznych oraz przypisanie im wartości domyślnych. - picture { plik_1,, plik_n} Polecenie otwarcia rysunku związanego z danym atrybutem w momencie wystąpienia pytania o ten atrybut. - query { Tekst pytania } Wyświetlenie tekstu wpisanego przez programistę w momencie pytania systemu o dany atrybut. - single {yes/no} Stosowane w wypadku, gdy wartości atrybutów wzajemnie się wykluczają. Praktycznie, zastosowanie tego parametru umożliwia zredukowanie ilości pytań systemy o wartość danego parametru. - val oneof { x 1,, x n } someof {x 1,, x n } range { (przedział_1),, <przedział_2> } except { (przedział_1),, <przedział_2> }
Laboratorium 1. i 2. Strona 7 z 8 Instrukcja ta określa, jakie są dopuszczalne wartości danego atrybutu. Oneof tylko jedna możliwość wyboru z podanych wartości. Someof kilka możliwości wyboru z podanych wartości. Range zakres, z jakiego można wybrać wartość. Uwaga: znaczenie nawiasów jak w matematyce (przedział otwarty i domknięty). Except zakres, z jakiego nie można wybrać wartości. Przykład deklaracji atrybutu: facets wzrost: query Czy zawodnik jest wyższy niż 190 cm?: val oneof { Tak, Nie }; Blok reguł rules opis reguł Najważniejszymi regułami przy tworzeniu reguł jest: o zdefiniowanie przesłanki, o zdefiniowanie warunków, kiedy przesłanka jest spełniona. Przy konstruowaniu reguł stosuje się operatory logiczne takie jak: o and (i) symbol: & o or (lub) symbol: oraz operatory relacji tj.: o równe symbol: = (dla zmiennych tekstowych) lub == (dla zmiennych liczbowych) o większe, mniejsze symbol: >, < o większe lub równe, mniejsze lub równe symbol: >=, <= Przykłady deklaracji reguł: rules 1: decyzja = Kup samochód if kapitał = dużo & potrzeby = duże ; 2. decyzja = Kup rower if kapitał = mało potrzeby = małe ; Przykład prostego systemu ekspertowego stworzonego w pakiecie PC-Shell 4.5 Problem: Rozpoznanie choroby na podstawie objawów odczuwalnych przez pacjenta. W celu ułatwienia procesu budowy systemu ekspertowego stworzono drzewo decyzyjne, które następnie wykorzystano do stworzenia bazy wiedzy w systemie ekspertowym.
Laboratorium 1. i 2. Strona 8 z 8 Rysunek 1. Drzewo decyzyjne - diagnostyka medyczna. Zadania do wykonania: 1. Zapoznać się z przygotowanym materiałem teoretycznym dotyczącym systemu ekspertowego PC-Shell. 2. Otworzyć przykładowe systemy ekspertowe firmy AITECH w celu przeanalizowania ich działania korzystając z systemowego notatnika prześledzić kod źródłowy. 3. Korzystając z przygotowanej instrukcji do zajęć laboratoryjnych i dokumentacji pakietu PC-Shell 4.5 wykonać system ekspertowy umożliwiający przeprowadzanie podstawowej diagnostyki medycznej pacjenta. 4. Przygotować projekt własnego systemu ekspertowego rozwiązującego wybrany problem. 5. Wykonać zaprojektowany system ekspertowy w środowisku PC-Shell.