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