psi_-_laboratorium_1 - Politechnika Rzeszowska
Transkrypt
psi_-_laboratorium_1 - Politechnika Rzeszowska
POLITECHNIKA RZESZOWSKA IM. IGNACEGO ŁUKASIEWICZA WYDZIAŁ BUDOWY MASZYN I LOTNICTWA ZAKŁAD INFORMATYKI PODSTAWY SZTUCZNEJ INTELIGENCJI 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. Opracował: mgr inż. Marcin Olech POLITECHNIKA RZESZOWSKA IM. IGNACEGO ŁUKASIEWICZA WYDZIAŁ BUDOWY MASZYN I LOTNICTWA ZAKŁAD INFORMATYKI PODSTAWY SZTUCZNEJ INTELIGENCJI 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 … end; facets … end; rules … end; 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 Opracował: mgr inż. Marcin Olech POLITECHNIKA RZESZOWSKA IM. IGNACEGO ŁUKASIEWICZA WYDZIAŁ BUDOWY MASZYN I LOTNICTWA ZAKŁAD INFORMATYKI PODSTAWY SZTUCZNEJ INTELIGENCJI Laboratorium 1. i 2. Strona 3 z 8 … end; control … end; end; //zawartość bloku faktów //zamknięcie bloku faktów //otwarcie bloku sterowania //zawartość bloku sterowania //zamknięcie bloku sterowania //zamknięcie bloku definicji wiedzy bazy 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 end; //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") | Opracował: mgr inż. Marcin Olech POLITECHNIKA RZESZOWSKA IM. IGNACEGO ŁUKASIEWICZA WYDZIAŁ BUDOWY MASZYN I LOTNICTWA ZAKŁAD INFORMATYKI PODSTAWY SZTUCZNEJ INTELIGENCJI Laboratorium 1. i 2. Strona 4 z 8 3: ( gwarancje kredytowe = "dostateczne” & sytuacja finansowa = "zla" ) ); decyzja_kredytowa = "odmowic kredytu" if profil klienta = "zly" | (gwarancje_kredytowe = "niedostateczne" & sytuacja finansowa = "zla" ); end; 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 Opracował: mgr inż. Marcin Olech POLITECHNIKA RZESZOWSKA IM. IGNACEGO ŁUKASIEWICZA WYDZIAŁ BUDOWY MASZYN I LOTNICTWA ZAKŁAD INFORMATYKI PODSTAWY SZTUCZNEJ INTELIGENCJI 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: Opracował: mgr inż. Marcin Olech POLITECHNIKA RZESZOWSKA IM. IGNACEGO ŁUKASIEWICZA WYDZIAŁ BUDOWY MASZYN I LOTNICTWA ZAKŁAD INFORMATYKI PODSTAWY SZTUCZNEJ INTELIGENCJI 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 end; 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 { x1, …, xn } someof {x1, …, xn } range { (przedział_1), …, <przedział_2> } except { (przedział_1), …, <przedział_2> } Opracował: mgr inż. Marcin Olech POLITECHNIKA RZESZOWSKA IM. IGNACEGO ŁUKASIEWICZA WYDZIAŁ BUDOWY MASZYN I LOTNICTWA ZAKŁAD INFORMATYKI PODSTAWY SZTUCZNEJ INTELIGENCJI 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” }; end; Blok reguł rules opis reguł end; 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” ; end; 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. Opracował: mgr inż. Marcin Olech POLITECHNIKA RZESZOWSKA IM. IGNACEGO ŁUKASIEWICZA WYDZIAŁ BUDOWY MASZYN I LOTNICTWA ZAKŁAD INFORMATYKI PODSTAWY SZTUCZNEJ INTELIGENCJI 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. Opracował: mgr inż. Marcin Olech