System ekspertowy – definicja – System ekspertowy (doradczy, ekspercki, ES): program komputerowy wykorzystujący wiedzę i procedury wnioskowania do rozwiązywania problemów, które są na tyle trudne, że wymagają znaczącej ekspertyzy specjalistów. – Systemy oparte na wszystkich sposobach reprezentacji wiedzy, najczęściej w postaci reguł produkcji. Większość systemów doradczych uważać można za konsultantów, formułujących opinie i doradzających użytkownikom. Uznaje się je za inteligentne, jeżeli: – system daje użyteczne porady – koncepcje i rozumowanie podobne jest do tych, których mógłby użyć ekspert w danej dziedzinie Poziom ekspertyzy to funkcja rozmiaru i jakości bazy wiedzy danego systemu. Wiedza systemu eksperckiego – Wiedza (niezbędna, by zapewnić odpowiedni poziom ekspertyzy), wraz z procedurami wnioskowania stanowi model ekspertyzy, posiadanej przez najlepszych specjalistów w danej dziedzinie. Fakty: powszechnie akceptowane przez specjalistów. Heurystyki: informacja subiektywna, która charakteryzuje proces oceny przez określonego specjalistę (intuicyjne domysły, przypuszczenia, zdroworozsądkowe zasady postępowania). Motywacja – Koszty: w dłuższym okresie czasu są znacznie tańsze, pomagają w rozwiązywaniu problemów wymagających najbardziej specjalistycznej (najdroższej) wiedzy. – Brak ekspertów w wielu dziedzinach. – ES pracują szybciej, nie męczą się, są bardziej niezawodne niż ludzie. – Konsekwentne, konsystentne, obiektywne, dokładne. – Zawsze do dyspozycji (nie strajkują!). – Analiza dużych ilości danych wymaga komputera. Etapy tworzenia SE – Analiza problemu: ocena, czy budowa SE dla danego problem ma sens. – Specyfikacja systemu: szczegółowe określenie funkcji i oczekiwań. – Akwizycja wiedzy: zgromadzenie, wydobycie wiedzy od ekspertów i jej organizacja. – Wybór metody reprezentacji wiedzy i narzędzi do budowy systemu. – Konstrukcja systemu: utworzenie bazy wiedzy, reguł wnioskowania, systemu wyjaśniającego rozumowanie i prowadzenia dialogu z użytkownikiem. – Weryfikacja i testowanie systemu. Postać wiedzy – Fakty z danej dziedziny wiedzy, np.: „W starych silnikach Diesla przy przegrzaniu dochodzi do gwałtownego podwyższenia obrotów na skutek chwilowego spalania oleju.” – Reguły typu: „Przed zdjęciem obudowy wyciągnąć wtyczkę.” – Heurystyki, czyli co by tu zrobić, np.: „Jak nie zaskakuje, a jest iskra, to warto sprawdzić przewód paliwa”. – Ogólne strategie postępowania, np.: „Jeżeli świeci się lampka ciśnienia oleju, sprawdź miernikiem rzeczywiste ciśnienie oleju, jeżeli jest prawidłowe to wymień czujnik ciśnienia oleju, jeżeli jest nieprawidłowe, silnik prawdopodobnie jest zużyty”. Teoria danej dziedziny, np. teoria działania silników samochodowych. Akwizycja wiedzy – prowadzenie wywiadów z ekspertami – analiza kwestionariuszy wypełnianych przez ekspertów – analiza raportów pisanych przez ekspertów – analiza komentarzy ekspertów wykonywanych w czasie pracy – obserwacja ekspertów przy pracy – introspekcja – szukanie w Internecie Akwizycja (zdobywanie i gromadzenie) wiedzy wymaga transferu ekspertyzy i reprezentacji wiedzy eksperta. Do reprezentacji wiedzy w systemach doradczych stosuje się wszystkie znane sposoby reprezentacji wiedzy. Ekspert nie tylko wie rzeczy, których inni nie wiedza, ale ma doświadczenie, które nie zawsze potrafi zwerbalizować, może działać „na wyczucie”. Niepewność wiedzy – Niewiarygodne źródła informacji. – Zbyt wiele informacji nie mającej znaczenia. – Brak precyzji w obserwacjach i opisie. – Błędy aparatury. – Brak zrozumienia sytuacji. – Sprzeczne informacje. – Nieznane czynniki wpływające na sytuację. – Zmiana sytuacji w czasie, starzenie się wiedzy. – Koszty pozyskiwania nowych informacji. Jak sobie radzić z niepewnością wiedzy? – prawdopodobieństwa warunkowe – współczynniki ufności lub pewności – teoria wiarygodności – teoria zbiorów rozmytych. Rodzaje systemów ekspertowych Systemy edukacyjne (CAI lub ICAI – Intelligent Computer Aided Instruction), a więc inteligentne wspomaganie nauczania, systemy algebry symbolicznej. Systemy interpretujące: wspomagające analizę i interpretację informacji, wydobywanie informacji z baz danych, interpretujące dane geologiczne. Systemy planistyczne, wspomagające strategiczne działanie i planowanie zadań, np. planowanie syntezy związków chemicznych czy budowy systemów komputerowych. Systemy prognostyczne, wspomagające wyciąganie wniosków i przewidywanie tendencji. Systemy kontrolne, pozwalające na sterowanie skomplikowanymi systemami, takimi jak automatyczne zakłady produkcyjne itp. Systemy diagnostyczne, mające zastosowanie w zagadnieniach technicznych, medycynie, analizie chemicznej i wielu innych problemach. Systemy testujące, pomagające przy znajdywaniu problemów; mogą być częścią systemów kontrolnych lub systemów diagnostycznych. Systemy naprawcze, które nie tylko prowadzą testy ale i planują działania korekcyjne. Można do nich zaliczyć również niektóre systemy medyczne, zalecające leczenie. Systemy projektujące, wspomagające prace projektowe, takie jak projektowanie układów elektronicznych, CAD czy CAM. Konstrukcja systemów eksperckich Zwykle próbuje się oddzielić bazy wiedzy od mechanizmów wnioskowania. Akwizycja wiedzy, uczenie maszynowe Fakty, Obiekty, Struktury Wiedza, reguły, ramy System wnioskujący F a k t y Odpowiedzi, wyjaśnienia: jak? dlaczego? Interfejs użytkownika Reguły produkcji IF warunek1 AND warunek2 ... THEN akcja lewa część reguły produkcji określa warunki jej stosowalności prawa część określa jej działanie Dostępne są też funkcje logiczne OR oraz NOT Właściwości: – Przy kilku regułach produkcji, łatwo przewidzieć skutki ich wykonywania. – Warunki wykonania akcji są jawne. – Reguły nie odwołują się do siebie (tak jak procedury), minimalizując oddziaływanie pomiędzy sobą. – Da się zastosować w stosunkowo dużych systemach. – Działają dobrze do czasu aż liczba reguł nie robi się zbyt duża. – Reguły produkcji wywoływane są cyklicznie. – W każdym cyklu ustala się możliwe do zastosowania reguły (faza dopasowania reguł do warunków). – Jeśli do tych samych założeń stosuje się więcej reguł wybierana jest jedna z nich. Rodzaje rozumowania DSS (Decision Support Systems): dialog z użytkownikiem + wyjaśnienie sposobów wnioskowania. ES nie zawsze rozumuje w sposób podobny do człowieka – ma inne ograniczenia. Przykładowe metody rozumowania: – Rozumowanie retrospektywne (które reguły i dlaczego). – Rozumowanie hipotetyczne (co by było gdyby...). – Rozumowanie „kontrfakyczne”: gdyby było P byłoby lepiej, a tak jest S. Jeśli P powoduje S, to gdyby nie było P nie byłoby S. Szukamy więc czemu nie ma P. Interpreter reguł Zajmuje się wyborem reguły, którą należy zastosować oraz ogólną strategią działania. Przykład: I1. Znajdź wszystkie reguły, których lewa strona jest spełniona. I2. Jeśli daje się zastosować więcej niż jedna reguła usuń te, które prowadzą do powtarzających się symboli. I3. Wykonaj po kolei dające się zastosować reguły. Jeśli nie można zastosować żadnej reguły przerwij działanie. I4. Usuń listę dających się zastosować reguł i przejdź do I1. Rozstrzyganie konfliktów – użyj reguły o najwyższym priorytecie – użyj reguły która ma najwięcej szczegółowych warunków – użyj ostatnio wykorzystywaną regułę – użyj regułę, która została dodana najpóźniej – użyj regułę zawierającą zmienne, które były ostatnio używane. – jeśli mamy wagi przesłanek (stopień prawdziwości) to użyj regułę do której konkluzji masz największe zaufanie. Języki programowania ES – LISP – PROLOG – CLISP Alternatywy w stosunku do ES – symulacje sytuacji w różnych warunkach – oceny statystyczne Przykład Mamy taśmę, a na niej różne produkty. Budujemy system identyfikujący produkty spożywcze. Funkcja logiczna: JEST: wartość zależna od tego, czy argument jest na liście danych wejściowych. Akcja: DOPISZ: operacja dopisywania do listy. Reguły produkcyjne: P1. IF JEST zielone THEN DOPISZ produkt rolny P2. IF JEST mały pojemnik THEN DOPISZ delikatesowe P3. IF JEST mrożonka OR JEST produkt rolny THEN DOPISZ nietrwałe P4. IF JEST ciężkie AND JEST tanie AND NOT nietrwałe THEN DOPISZ arbuz P5. IF JEST nietrwałe AND JEST ciężkie THEN DOPISZ indyk P6. IF JEST ciężkie AND JEST produkt rolny THEN DOPISZ arbuz Działanie systemu: Zaczynając np. od listy L L=(zielone, ciężkie) możemy zastosować tylko regułę P1 otrzymując L=(produkt rolny, zielone, ciężkie) W następnym kroku możemy zastosować P1 i P6; P1 daje powtarzające się symbole, więc stosujemy P6, otrzymując L=(arbuz, produkt rolny, zielone, ciężkie) System zatrzymuje się, gdyż wszystkie stosowalne w kolejnym cyklu reguły prowadzą do takich samych symboli, które już są na liście. Zalety ES – Przydatne do rozwiązywania złożonych problemów, w dziedzinach, w których zgromadzono wiedzę empiryczną – Potrafią odpowiadać na pytania prezentując swoje konkluzje w intuicyjne zrozumiały sposób, nie potrzeba programistów by zrozumieć ich działanie. – Zwykle oparte są na jednolitym sposobie reprezentacji wiedzy, np. regułach lub ramach – dzięki temu łatwo jest modyfikować wiedzę. Wady ES – Trudno jest przewidzieć, jakie będą skutki dodania nowej wiedzy, rozumowanie zdroworozsądkowe jest trudne. – Trudno jest pozyskiwać wiedzę (uczenie maszynowe i odkrywanie wiedzy rzadko jest częścią ES). – Traktowanie niepewności nadal jest rzadko spotykane. Działające systemy ES MYCIN (Program do diagnostyki i terapii chorób zakaźnych, Stanford, 1972), – baza wiedzy: reguły produkcji, listy, tabele, opis parametrów klinicznych – baza danych pacjenta (opis przypadku) – program konsultacyjny, zadający pytania, wyciągający wnioski i dający porady – program wyjaśniający, uzasadniający porady – program gromadzenia wiedzy, pozwalający na modyfikację i rozszerzania bazy wiedzy Przykładowe reguły produkcyjne: REGUŁA 095 IF Kultura bakteryjna rozwinęła się we krwi i odczyn jest gramopozytywny i bakterie wniknęły przez jelito i żołądek lub miednica są miejscem infekcji THEN Istnieją silne poszlaki, że klasą bakterii, które są za to odpowiedzialne są Enterobacteriacae. META-REGUŁA 001 IF (1) infekcja ma charakter brzuszny i (2) użyto reguł które wspominają o Enterobacteriacae i (3) użyto reguł wspominających o pałeczkach grampozytywnych THEN z poziomem ufności 0.4 reguły dotyczące Enterobacteriacae powinny być użyte przed regułami dotyczącymi pałeczek. Przykładowy dialog: MYCIN dostaje dane bakteriologiczne, czasy pobierania próbek, nazwisko, płeć, wiek. 4) Czy określono mikrobiologicznie rodzaj możliwej infekcji? Tak 5) Jakiego rodzaju jest to infekcja? Primary-Bacteremia 6) Proszę podać kiedy nastąpiły pierwsze objawy infekcji. 15-Stycz-93 11:30 7) Skąd pochodzą próbki pierwszej kultury bakteryjnej? Krew 8) Kiedy otrzymano próbki kultury bakteryjnej z krwi? 16-Stycz-93 12:00 9) Pierwsza bakteria wyhodowana w tej próbce krwi będzie określana jako Organizm-1. Zidentyfikuj organizm-1. Nieznany 10) Czy organizm-1 jest pałeczką czy ziarnkowcem? Pałeczką 11) Jaki jest odczyn organizmu-1 gramonegatywny 12) Czy organizm-1 rozwijał się aerobowo? tak 13) Czy organizm-1 rozwijał się anaerobowo? tak 14) Moje zalecenia terapeutyczne będą oparte o następujące prawdopodobne infekcje spowodowane przez nast. bakterie. INFEKCJA-1 typu Primary-bacteremia 1. E. Coli (Organizm-1) 2. Pseudomonas-aeruginosa (Organizm-1) DENDRAL, CRYSALIS, CASD (chemia) – Generacja struktur chemicznych zgodnych z informacjami z spektrografii masowej, NMR, widm IR, UV, informacjami o reakcjach chemicznych. – Określanie struktury substancji chemicznych i biologicznych – Krystalografia białek – Interpretacja map gęstości elektronowej i innych danych SCHOLAR – nauczanie geografii Ameryki Południowej – Baza w postaci sieci semantycznej, pomaga w prowadzeniu dialogu. Węzeł sieci to koncepcja lub obiekt geograficzny; nazwy, listy atrybutów/wartości PROSPECTOR – Asystowanie geologom; zawiera model złóż geologicznych – Kilkaset reguł definiuje model złoża, poziom przekonania o występowaniu różnych własności – Przy jego pomocy odkryto szereg złóż ES w matematyce Systemy algebry symbolicznej: – Systemy ogólnego użytku: Axiom, Macsyma, Maple, MathCAD, Reduce, MuMath, Mathematica 6 z dowodzeniem twierdzeń – Specjalistyczne: FORMAC, ALTRAN, SCRATCHPAD i inne Systemy automatycznego dowodzenia twierdzeń dały wiele nowych wyników: – dowody istnienia pewnych kwazigrup – EQP: dowód hipotezy Robbinsa (z 1936 roku) – organizowane są zawody programów dowodzących – weryfikacja FPU w mikroprocesorach Projekt QED: próba formalizacji całej matematyki (nieaktywny). Projekt Mizar, 8800 definicji i 46.000 twierdzeń (3/2008) Inne, praktyczne zastosowania finansowe, w procesach wytwórczych, zarządzania, kolejkowania i ustalania połączeń, szczególnie dla linii lotniczych, obsługi klientów, projektowania; militarne, analiza danych, inżynieria oprogramowania, administracja państwowa, przemysł transportowy i kosmiczny oraz wiele innych. Tendencje – Od stacji roboczych na komputery osobiste – Od specjalnych języków i Lispu do C i C++ – Od systemów niezależnych do zintegrowanych z bazami danych – Wiele metod reprezentacji wiedzy i rozumowania – Nie technologia lecz rozwiązywanie realnych problemów – Sprawność, koszty rozwoju, analiza opłacalności – Automatyzacja akwizycji wiedzy dzięki uczeniu maszynowemu Wnioskowanie w Prologu PROLOG jest językiem deklaratywnym, opisującym sposób sterowania algorytmem wnioskowania. Sama zasada wnioskowania polega na zastępowaniu stwierdzeń, których prawdziwość jest poddawana weryfikacji przez inne stwierdzenia, zgodnie z zapisanymi definicjami predykatów. Proces ten kończy się wtedy, gdy algorytm wnioskowania dojdzie do stwierdzenia prawdziwego (gdyż zapisanego jako prawdziwe), bądź wtedy, gdy nie da się dopasować żadnej reguły wnioskowania. Przykład Rozważmy predykaty i opisane przez nie relacje: kr_ko kraj położony na kontynencie, m_ko miasto położone na kontynencie, m_kr miasto położone w kraju, m_st miasto będące stolicą kraju. Celem będzie stworzenie graficznego schematu zależności między stwierdzeniami poddawanymi weryfikacji, regułami i faktami. Fakty: m_ko("Berlin", "Europa"). m_ko("Warszawa", "Europa"). m_ko("Kraków", "Europa"). m_ko("Irkuck", "Azja"). m_ko("Moskwa", "Europa"). m_kr("Kraków", "Polska"). m_kr("Irkuck", "Rosja"). m_st("Warszawa", "Polska"). m_st("Moskwa", "Rosja"). m_kr(Miasto, Kraj):- m_st(Miasto, Kraj). kr_ko(Kraj, Kont):- m_kr(Miasto, Kraj), m_ko(Miasto, Kont). Graf wnioskowania związany z weryfikacją stwierdzenia kr_ko("Polska", "Europa"). Opis diagramu Istnieją dwa wyróżnione węzły: „prawda” i „porażka”. Węzeł „prawda” jest połączony krawędziami z każdym z podanych faktów (ujętymi w pola prostokątne). Węzeł „porażka” jest połączony krawędziami z każdym stwierdzeniem, którego zmiennych nie da się podstawić na wartości zgodne z żadnym faktem, ani z konkluzją żadnej z reguł. Każda definicja predykatu, będąca regułą, jest połączona krawędziami ze stwierdzeniami (ujętymi w zaokrąglone prostokąty), które są wynikiem podstawień zmiennych z części przesłankowej reguły. W przypadku reguł, w których część przesłankowa jest koniunkcją warunków logicznych, wprowadzony został pomocniczy węzeł koniunkcyjny (ujęty w owal), w którym zapisane są podstawienia wszystkich zmiennych pomocniczych (tj. nie występujących jako elementy konkluzji reguły). W naszym przykładzie dotyczy to definicji predykatu kr_ko, której argumentami są Kraj i Kont, zaś zmienną pomocniczą jest Miasto. Śledzenie ścieżek prowadzących do węzłów „prawda” i „porażka” jest istotą wnioskowania. Jako prawdziwe uznaje się: • Fakty (prostokąty), połączone bezpośrednio z węzłem prawda (jak np. w przypadku faktu m_kr("Kraków", "Polska")) • Stwierdzenia (zaokrąglone prostokąty) • Pomocnicze węzły koniunkcyjne (owale) Prawdziwość stwierdzenia kr_ko(Polska, Europa) wynika z tego, że węzeł, odpowiadający temu stwierdzeniu, łączy się z prawdziwymi węzłami, odpowiadającymi koniunkcjom: m_kr("Warszawa", "Polska"), m_ko("Warszawa", "Europa"). m_kr("Kraków", "Polska"), m_ko("Kraków", "Europa"). Prawdziwość składników tych koniunkcji wynika albo znowu z wnioskowania, tak jak w przypadku stwierdzenia: m_kr("Warszawa", "Polska") albo też z bezpośredniego połączenia ich z węzłem „prawda”; dotyczy to stwierdzeń: m_kr("Kraków", "Polska"), m_ko("Kraków", "Europa"), m_ko("Warszawa", "Europa") W procesie wnioskowania będą sprawdzone również węzły, odpowiadające koniunkcjom: m_kr("Irkuck", "Polska"), m_ko("Irkuck", "Europa"). m_kr("Moskwa", "Polska"), m_ko("Moskwa", "Europa"). przy czym co najmniej jeden z elementów każdej z powyższych koniunkcji jest bezpośrednio lub pośrednio połączony z węzłem „porażka”. Graf pełny – graf całej przestrzeni przeszukiwań, w której prowadzone jest wnioskowanie. Tak więc wnioskowanie jest przeglądaniem przestrzeni przeszukiwań, ograniczonym do możliwie najmniejszej liczby węzłów pozwalających stwierdzić prawdziwość badanego stwierdzenia. Sposoby wnioskowania Graf wnioskowania jest grafem skierowanym, gdyż reguły wnioskowania mają wyróżnioną część przesłankową i konkluzję. Przeszukiwanie grafu, jako realizacja procesu wnioskowania, może być prowadzone na dwa sposoby – zgodnie lub przeciwnie do kierunku wskazywanego przez strzałki. Wnioskowanie wstecz (wnioskowanie sterowane celem, wnioskowaniem regresywne) Przyjęcie kierunku przeciwnego do strzałek oznacza, że wnioskowaniem kieruje stwierdzenie do weryfikacji. To stwierdzenie jest zastępowane przez wiele innych, tak, aby w końcu dojść do jednego z dwóch węzłów końcowych – „prawda” albo „porażka”. Taki sposób postępowania jest wykorzystywany w maszynie wnioskującej Prologu. Algorytm weryfikacji wstecz Argument: stwierdzenie S Dla każdej definicji predykatu D, unifikującej się ze stwierdzeniem Jeśli D jest faktem zwróć wartość „prawda” Jeśli D jest regułą powtarzaj Wybierz stwierdzenie Si, będące składnikiem części przesłankowej Wykonaj unifikacje zmiennych pomocniczych Wykonaj weryfikację wstecz stwierdzenia Si dopóki są niezweryfikowane stwierdzenia Si Jeśli wszystkie Si są prawdziwe zwróć wartość „prawda” w przeciwnym przypadku zwróć wartość „porażka” Wnioskowanie w przód (wnioskowanie sterowane danymi, wnioskowanie progresywne) Inną metoda postępowania: posuwanie się od węzła „prawda” w kierunku strzałek, generując nowe prawdziwe stwierdzenia, w nadziei wygenerowania tego stwierdzenia, które podlega weryfikacji. Algorytm weryfikacji w przód Argument: stwierdzenie S Lista faktów F = Ø Dopóki S nie unifikuje się z żadnym faktem z F powtarzaj Zbiór definicji predykatu D = Ø Dla każdej definicji Di Jeśli Di jest faktem lub Di jest regułą i część przesłankowa unifikuje się z faktami z F D = D ∪ { Di } Wybierz definicję Di ze zbioru D Jeśli Di jest faktem F = F ∪ { Di } Jeśli Di jest regułą Fd = zbiór podstawień konkluzji reguły Di F = F + Fd Sterowanie wnioskowaniem Przegląd grafu wnioskowania musi się z konieczności odbywać w sposób sekwencyjny, a zatem algorytm wnioskujący będzie wykonywać weryfikację stwierdzeń w ustalonym porządku. Stąd konieczność dokonywania pewnych wyborów w każdym z wymienionych wyżej algorytmów – konieczność sterowania wnioskowaniem. Sterowanie wnioskowaniem ma kluczowe znaczenie z punktu widzenia efektywności procesu przeszukiwania – nie trzeba chyba przekonywać, że im mniejsza liczba odwiedzanych węzłów grafu wnioskowania, tym szybszy proces wnioskowania. Sterowanie wnioskowaniem wstecz W przypadku wnioskowania wstecz, wybór dotyczy kolejności rozważania alternatywnych definicji predykatu, a także kolejności analizowania składników przesłanki reguły. Ta pierwsza decyzja ma wpływ na szybkość poruszania się w głąb grafu wnioskowania, co może przyspieszyć moment pierwszego dojścia do węzła „prawda” (a niekiedy zależy nam nie na wszystkich, lecz na jakimkolwiek sposobie udowodnienia prawdziwości stwierdzenia). Druga decyzja z kolei rzutuje na kolejność unifikacji zmiennych pomocniczych, a zatem na „szerokość” zbioru węzłów będących alternatywnymi unifikacjami. Przykładowo, w definicji predykatu kr_ko(Kraj, Kont) w przykładzie przyjęta została następująca kolejność rozważania składników części przesłankowej: m_kr(Miasto, Kraj), m_ko(Miasto, Kont). Powoduje to, że w trakcie wnioskowania wykonana będzie najpierw próba unifikacji predykatu m_kr, a później m_ko. W efekcie, będzie 5 prób unifikacji m_kr i tylko dwie (Warszawa, Kraków) próby unifikacji m_ko. Przy odwrotnej definicji predykatu: kr_ko(Kraj, Kont):m_ko(Miasto, Kont), m_kr(Miasto, Kraj). mielibyśmy 5 prób unifikacji m_ko (w tym cztery udane) i cztery próby unifikacji m_kr. Wniosek: umiejętnie sterując wnioskowaniem można ograniczyć pracochłonność tego procesu. W Prologu, decyzje dotyczące kolejności rozważania definicji i kolejności rozważania składników koniunkcji przypadają w udziale programiście, gdyż maszyna wnioskująca dokonuje analizy w kolejności zapisanej w programie: od lewej do prawej, od góry do dołu. Można sobie jednak wyobrazić nieco bardziej zaawansowaną maszynę wnioskującą, która dokonywałaby tego wyboru w sposób automatyczny. Przykładowo, można w procesie oceny stwierdzeń części przesłankowej jako pierwsze wybierać te, których zmienne pomocnicze mają najmniej pomyślnych unifikacji. Sterowanie wnioskowaniem w przód W przypadku wnioskowania w przód, kluczową decyzją z punktu widzenia efektywności algorytmu jest wybór definicji predykatu do zastosowania. Ze względu na fakt, że przed pomyślnym zakończeniem wnioskowania nie jesteśmy w stanie określić, która definicja jest na którym etapie najlepsza, stosować można rozmaite zdroworozsądkowe zasady postępowania, takie jak stosowanie definicji najrzadziej dotychczas wykorzystywanej, definicji najbardziej ogólnej (o możliwie największej liczbie podstawień zmiennych), najbardziej szczegółowej itp. Podobnymi kryteriami można się kierować również przy wyborze definicji we wnioskowaniu wstecz. Sterowanie wyborem reguł musi być wykonywane z duża ostrożnością, gdyż przy niefortunnych zasadach sterowania, łatwo o wejście w nieskończoną ścieżkę wnioskowania. Wybór metody wnioskowania Jeśli mamy do wyboru dwa schematy wnioskowania (wstecz i w przód) – który z nich powinien być wybrany? Odpowiedź na to pytanie powinna być oparta na przewidywaniu, co do wielkości stopnia rozgałęziania grafu wnioskowania w kierunku, w którym następuje wnioskowanie. Przez stopień rozgałęziania rozumiemy średnią liczbę krawędzi, wychodzących z węzła w kierunku wykorzystywanym w schemacie wnioskowania (tj. zgodnie z kierunkiem wynikania reguł w przypadku wnioskowania w przód, a przeciwnie do tego kierunku w schemacie wnioskowania wstecz). Jeśli odległość (rozumiana jako najkrótsza liczba strzałek do przejścia) między prawdziwym stwierdzeniem a węzłem „prawda” wynosi n, zaś stopień rozgałęzienia wynosi a, wówczas przy odpowiednim sposobie sterowania wnioskowaniem zostanie wykonana weryfikacja an stwierdzeń. Mogąc zatem wybierać kierunek wnioskowania, wybierzemy ten o mniejszym stopniu rozgałęziania, co poskutkuje krótszym czasem wnioskowania. Rozwiązywanie problemów przez przeszukiwanie przestrzeni Rozwiązanie sprowadza się w swej ogólnej postaci do pełnego przeglądu przestrzeni – odwiedzenia wszystkich węzłów. Algorytm przetwarza zbiór węzłów do odwiedzenia At, zbiór węzłów odwiedzonych Vt i bieżący węzeł st. Algorytm rozpoczyna pracę od wyróżnionego węzła s0. Węzeł ten staje się węzłem odwiedzonym, zaś wszystkie węzły z jego sąsiedztwa są dodawane do zbioru At. W głównej pętli, ze zbioru At jest wybierany kolejny węzeł i jest dodawany do zbioru odwiedzonych Vt. Wszystkie węzły z jego sąsiedztwa, które nie były jeszcze odwiedzone, są dodawane do zbioru At. Pętla jest wykonywana do osiągnięcia kryterium zatrzymania, którym może być np. opróżnienie zbioru At bądź też znalezienie węzła st o szczególnych, interesujących nas właściwościach. Algorytm przeszukiwania przestrzeni t=0 V0 = {s0} At = N(s0) Powtarzaj Wybierz st+1 z At Vt+1 = Vt ∪ {st+1} At+1 = At ∪ N(st+1) - Vt t=t+1 Dopóki nie jest spełniony warunek zatrzymania W praktycznych realizacjach algorytmu przeszukiwania zbiór At jest realizowany jako kolejka lub stos. Wybór węzła z kolejki At może być dokonywany na podstawie kolejności dodawania – wówczas uzyskuje się ślepe strategie przeszukiwania – bądź też wybór ten jest wykonywany na podstawie dodatkowych właściwości węzła – prowadzi to do tzw. poinformowanych strategii przeszukiwania (tzw. strategie „najpierw najlepszy” – best first). W ramach ślepych strategii przeszukiwania, wybór węzła st z kolejki At oraz dodawanie nowych węzłów może być wykonywane według reguły rządzącej kolejką LIFO (stos) albo FIFO. Uzyskuje się odmienny sposób sterowania przeszukiwaniem, prowadzący do dwóch różnych realizacji algorytmu: przeszukiwania w głąb i wszerz. Ślepe strategie przeszukiwania Ślepymi strategiami przeszukiwania nazywane są takie sposoby sterowania przeszukiwaniem, w których zbiór At jest uporządkowany w kolejności określonej sekwencją dodawania do niego kolejnych elementów. Strategia w głąb W tej strategii zbiór At jest reprezentowany jako kolejka LIFO (stos). Oznacza to, że po wyborze węzła st i usunięciu go z kolejki At, elementy z sąsiedztwa N(st) wchodzą niejako „na miejsce” st. W konsekwencji, węzeł ostatnio dodany do listy będzie pierwszym z niej wybranym. Strategia wszerz W tej strategii, zbiór At jest kolejką FIFO. Po wybraniu węzła st i usunięciu go z kolejki At, elementy z sąsiedztwa N(st) są wstawiane na koniec kolejki. Powoduje to, że kolejnym rozważanym węzłem będzie ten, który był najdawniej dodany (a zatem był dodany bezpośrednio po st). Jeśli celem przeszukiwania jest odnalezienie docelowego węzła o pożądanych cechach, wówczas strategia w głąb ma szanse znaleźć ten węzeł szybciej niż metoda wszerz. Jeśli w przestrzeni przeszukiwań istnieją ścieżki nieskończonej długości, nie można zagwarantować, że strategia w głąb nie „pójdzie” taką właśnie ścieżką. Natomiast, jeśli celem przeszukiwania jest znalezienie najkrótszej ścieżki łączącej węzeł początkowy z docelowym, wówczas stosując strategię wszerz mamy gwarancję jej wyznaczenia. Unikamy w ten sposób ryzyka ścieżki nieskończonej. Przykład Załóżmy, że zamierzamy odnaleźć drogę w labiryncie, prowadzącą z kratki A do kratki B. Każda kratka ma co najwyżej czterech sąsiadów (brak sąsiada jest zaznaczony grubą linią – „ścianą” labiryntu). Zatem kratki labiryntu są węzłami przestrzeni przeszukiwań. Poszukiwanie wyjścia polega na tym, że wpisujemy do kratek numery iteracji, w których były one węzłem rozwijanym przez algorytm przeszukiwania. Po odnalezieniu rozwiązania drogę będziemy odtwarzać, idąc od węzła B do węzła A w kierunku sąsiedniej kratki o najmniejszym numerze. Załóżmy, że obie metody przeszukiwania rozważają kratki sąsiadujące w kolejności: góra, lewo, dół, prawo. Dostajemy wówczas dla obu metod kolejność odwiedzania kratek labiryntu jak poniżej. Będzie widać skutki efektu odwrócenia kolejności rozważania węzłów sąsiedztwa wynikającego z działania kolejki LIFO. Widać także, że pierwsza ścieżka, znaleziona przez algorytm przeszukiwania w głąb, nie jest ścieżką najkrótszą. Z drugiej jednak strony, w tym akurat zadaniu metoda wszerz wymaga odwiedzenia wszystkich pól labiryntu, aby znaleźć pierwsze (i zarazem najlepsze) rozwiązanie. Metoda w głąb Metoda wszerz Współczesne zastosowania sztucznej inteligencji • Technologie oparte na logice rozmytej – powszechnie stosowane do np. sterowania przebiegiem procesów technologicznych w fabrykach • Systemy ekspertowe – systemy wykorzystujące bazę wiedzy i mechanizmy wnioskowania do rozwiązywania problemów • Maszynowe tłumaczenie tekstów – jeszcze w powijakach • Sieci neuronowe – stosowane z powodzeniem w wielu zastosowaniach wymagających umiejętności uogólniania i uczenia się • Uczenie się maszyn – dział sztucznej inteligencji zajmujący się algorytmami potrafiącymi uczyć się podejmować decyzje bądź nabywać wiedzę • Eksploracja danych – omawia obszary, powiązanie z potrzebami informacyjnymi, pozyskiwaniem wiedzy, stosowane techniki analizy, oczekiwane rezultaty • Rozpoznawanie obrazów – stosowane są już programy rozpoznające osoby na podstawie zdjęcia twarzy lub rozpoznające automatycznie zadane obiekty na zdjęciach satelitarnych • Rozpoznawanie mowy i rozpoznawanie mówców – stosowane już powszechnie na skalę komercyjną • Rozpoznawanie pisma (OCR) – stosowane już masowo np. do automatycznego sortowania listów, oraz w elektronicznych notatnikach • Sztuczna twórczość – istnieją programy automatycznie generujące krótkie formy poetyckie, komponujące, aranżujące i interpretujące utwory muzyczne, które są w stanie skutecznie „zmylić” nawet profesjonalnych artystów, w sensie, że nie rozpoznają oni tych utworów jako sztucznie wygenerowanych • W ekonomii powszechnie stosuje się systemy automatycznie oceniające m.in. zdolność kredytową, profil najlepszych klientów, czy planujące kampanie reklamowe • Niektóre gry: szachy, warcaby, kółko i krzyżyk, kostka Rubika, Puzzle, Scrabble Porażki sztucznej inteligencji • • • • • • • • Percepcja, rozumienie obrazów Rozwiązywanie problemów, rozumowanie Kontrola i planowanie zachowania Rozumienie i używanie języka naturalnego Programy skutecznie wygrywające w niektórych grach: Go, brydż sportowy Programy idealnie naśladujące ludzi, rozmawiające przy użyciu tekstu i potrafiące przejść test Turinga. Programy skutecznie tłumaczące teksty literackie i mowę potoczną Sterowanie samochodem Szukamy przyczyn porażek • • • • Zbyt naiwne podejścia? Zbyt teoretyczne, oderwane od zastosowań? Ignorowanie prawdziwych problemów i wyzwań? „Słonie nie grają w szachy”, Brooks, 1986 Paradoks Moraveca „Stosunkowo łatwo sprawić, żeby komputery przejawiały umiejętności dorosłego człowieka w testach na inteligencję albo w grze w warcaby, ale jest trudne albo wręcz niemożliwe zaprogramowanie im umiejętności rocznego dziecka w percepcji i mobilności” – H. Moravec, lata 80-te XX wieku „Główną lekcją, wyniesioną z trzydziestu pięciu lat badań nad SI jest to, że trudne problemy są łatwe, a łatwe problemy są trudne. Umysłowe zdolności czterolatka, które uważamy za oczywiste − rozpoznanie twarzy, podniesienie ołówka, przejście przez pokój – faktycznie rozwiązują jedne z najtrudniejszych inżynieryjnych problemów... Gdy pojawi się nowa generacja inteligentnych urządzeń, to analitycy giełdowi, inżynierowie i ławnicy sądowi mogą zostać zastąpieni maszynami. Ogrodnicy, recepcjoniści i kucharze są bezpieczni w najbliższych dekadach” – S. Pinker, Wysokopoziomowe rozumowanie wymaga niewielkiej mocy obliczeniowej, natomiast niskopoziomowa percepcja i zdolności motoryczne wymagają olbrzymiej mocy obliczeniowej Wyjaśnienie paradoksu • Powinno się oczekiwać, że trudność w odtworzeniu jakiejś ludzkiej umiejętności będzie proporcjonalna do czasu, przez jaki ta umiejętność ewoluowała u zwierząt • Najstarsze ewolucyjnie umiejętności są w większości nieświadome i ludzie wykonują je bez wysiłku • Powinno się zatem oczekiwać, że umiejętności, które ludzie wykonują bez wysiłku, będą trudne do odtworzenia, a umiejętności, które wymagają wysiłku, mogą nie być trudne Umiejętności, które ewoluowały przez miliony lat: rozpoznawanie twarzy, poruszanie się, ocena ludzkich motywacji, łapanie przedmiotów, rozpoznawanie głosu, ustalanie celów, uważna obserwacja, zdolności motoryczne, zdolności społeczne itp. Umiejętności, które pojawiły się niedawno: matematyka, inżynieria, gry, logika, nauka. Są one trudne dla człowieka, ponieważ ludzkie ciała i umysły nie są dostosowane do ich realizacji. Ludzie mieli co najwyżej kilka tysięcy lat na ich ulepszanie, głównie przez ewolucję kulturową. Wniosek: aby przejawiać „prawdziwą” inteligencję, maszyny muszą mieć ciała i wchodzić w interakcję z prawdziwym światem... Czy maszyna dorówna człowiekowi? Turing zapowiadał w roku 1950, że z końcem XX stulecia inteligencja komputerów tak zrówna się z ludzką, że nie będziemy w stanie odróżnić umysłu ludzkiego od maszyny cyfrowej. Wiemy już, że tak się nie stało. Ta pomyłka Turinga nie odstrasza następnych prognostów. Inni naukowcy/filozofowie podpisują się pod prognozą, że około roku 2030 dzięki postępom elektroniki molekularnej sprawność komputerowego przetwarzania danych dorówna mózgowi ludzkiemu; potem ma nastąpić już samoczynny rozwój inteligencji robotów, które prześcigną ludzi i zechcą ich sobie podporządkować. A właściwie to jakiego typu inteligencję chcemy zbudować? H. Gardner (1993) wyróżnił siedem typów inteligencji: logiczno-matematyczną, lingwistyczną, przestrzenną, muzyczną, kinestetyczną, inter i intra-personalną, ostatnio dodano do tego m.in. inteligencję emocjonalną SI nie musi dobra we wszystkim... musi być wystarczająco szeroka by osiągnąć kompetencje w kilku dziedzinach, np. różnych grach Nagroda Loebnera Nagroda ufundowana przez Hugha Loebnera w 1990 roku, dla programisty, który zdoła napisać program, który skutecznie przejdzie Test Turinga Test Turinga to sposób określania zdolności maszyny do posługiwania się językiem naturalnym i pośrednio mającym dowodzić opanowania przez nią umiejętności myślenia w sposób podobny do ludzkiego. Test ten został zaproponowany w 1950 roku przez Alana Turinga. Turing zaproponował ten test w celu zamiany pełnego emocji i w jego pojęciu bezsensownego pytania "Czy maszyny myślą?" na pytanie lepiej zdefiniowane. – przyznawana od 1990 roku – ograniczony test Turinga: jeśli 50% sędziów uzna za człowieka: nagroda 25000$; dla audio-wizualnej interakcji: 100000 $ – sędziowie mają ponad 15 minut na konwersację – ocena programów i ludzi, na ile sztuczny/prawdziwy w skali 1-10 Przykład konwersacji (2000) PROGRAM: Hello. My name is Albert. Who are you? JUDGE002: Greetings, I'm judge 2 PROGRAM: I'm not sure what to talk about with you. Are you a girl or a boy? JUDGE002: girl. how are you? PROGRAM: Are you married? I'm doing just fine, thanks. JUDGE002: would you like to talk about somethng interesting? PROGRAM: MP is an abbreviation for Member of Parliament. JUDGE002: right, why did you say that? PROGRAM: I just felt like it. JUDGE002: okay, did you hit a wrong button? PROGRAM: Do you come from around here? JUDGE002: yes, do you? PROGRAM: No I don't. Wyniki w 2000 r. Program Alice oszukał sędziów nr 1 i 2 Można zaobserwować znaczny postęp z roku na rok, jeżeli chodzi o jakość programów. Na przykład, w roku 2000 najsłabszy człowiek był lepszy od najlepszego programu 3.3 razy, w 2004 r. już tylko 1.9 razy. Ale: od 2005 roku obserwuje się tendencję odwrotną – trudniej oszukać sędziów... Wyniki 2010 4 programy, 4 osoby, 4 sędziów. Tylko jeden z sędziów (profesor, organizator) pomylił człowieka z programem Konwersacja z roku 2006: Judge: Do you know any good jokes? Joan: I don’t even know any bad ones. I just can’t remember them for very long. Judge: Tell me a joke. Joan: Sorry, I’m not very good at telling jokes. Judge: Please tell a joke. Joan: What do you get if you walk under a cow? Judge: I don’t know? Joan: A pat on the head. Judge: That’s very good. Joan: I know. Watson i Jeopardy (Vabank) Program IBM Watson w lutym 2011 roku zmierzył się z dwoma mistrzami teleturnieju Jeopardy (w Polsce – Vabank), odpowiadając na pytania z różnych dziedzin Watson wygrał 77 141 $, eksperci: Ken – 24 000$, Brad – 21 600 $ Reguły są niekorzystne dla maszyny, bo ludzie zgłaszają się słysząc pytanie natychmiast po jego zakończeniu, a maszyna ma opóźnienie zanim przeanalizuje pytanie i może się zgłosić Poprawność odpowiedzi sięgała 85-95% Watson działa na superkomputerze IBM - Blue Gene/P, 15 TB RAM, 2,880 rdzeni procesorów, 80 Tflop Baza danych uwzględnia encyklopedie, słowniki, artykuły, bazy leksykalne, literaturę piękną. Użyto ok. 100 algorytmów do analizy tekstu Watson zaliczył parę wpadek, np. kategoria: „Also On Your Computer Keys”, pytanie: „It's an abbreviation for Grand Prix auto racing”, prawidłowa odpowiedź: „F1” (Watson jej nie udzielił) Wizualny test Turinga http://www.newscientist.com/embedded/visual-turing-test Sztuczna Inteligencja – szanse, wyzwania, mrzonki (?) Sztuczna inteligencja najprawdopodobniej znajdzie zastosowanie we wszystkich aspektach ludzkiego życia... • Szansa na rozwiązanie wielu problemów naukowych, których człowiek nie potrafi rozwiązać. Nowe prawa naukowe, wynalazki odkryte przez SI • Dalsza komputeryzacja społeczeństwa – prawie pewne jest, że wszelkie sprawy, które teraz załatwiamy osobiście w przyszłości będziemy wykonywać za pośrednictwem komputera np: diagnoza lekarska wydawana przez internet (lekarz – system ekspertowy), brak wykonywania prac fizycznych przez ludzi – człowiek będzie wykonywał swoją pracę zdalnie • Gry strategiczne: uczenie się na błędach w symulowanej rzeczywistości • Askrypcja danych – łączenie informacji z wielu baz danych, uwzględniając prawdopodobieństwa aprioryczne Medycyna Największe nadzieje na korzyści w przyszłości z rozwoju sztucznej inteligencji wiązane są z medycyną. Tutaj możliwości są ogromne, jeśli połączymy sztuczną inteligencję z nanotechnologią. W przyszłości, możemy sobie wyobrazić połączenie systemu ekspertowego z nanorobotem, który sam znajdzie nieprawidłowość w organizmie człowieka i od razu przystąpi do leczenia (np. wykryje komórki rakowe i je zlikwiduje) Kilka problemów niealgorytmizowalnych, ważnych z medycznego punktu widzenia: • Inteligentne wspomaganie decyzji: diagnozy medyczne, zalecenia dodatkowych testów, decyzje w nagłych przypadkach • Klasyfikacja struktur: rozpoznawanie symptomów, klasyfikacja stanu zdrowia, zachowań człowieka, sensu wypowiedzi • Kontrola: sprawdzanie dawek leków, możliwych interakcji leków, potencjalnych przeciwwskazań • Planowanie: terapii, diety, optymalizacja działań w trakcie jej przebiegu • Sterowanie: urządzeń podtrzymujących funkcje życiowe, monitorowanie stanu pacjenta i ostrzeganie w sytuacjach kryzysowych • Analiza obrazów: rozpoznawanie i interpretacja obrazów z aparatury medycznej, kontrola jakości obrazu • Detekcja regularności: wykrywanie niebezpiecznych symptomów w sygnałach EKG, EEG i innych. • Separacja sygnałów z wielu źródeł: oczyszczanie obrazów z szumów, filtracja sygnałów elektrycznych (np. mrugania powiek z EEG) • Prognozowanie: np. rozwoju choroby • Szukanie wiedzy w medycznych bazach danych, wniosków z obserwacji, inteligentne szukanie informacji (szukanie semantyczne) • Selekcja cech: na co warto zwrócić uwagę • Redukcja wymiarowości problemu, możliwość oglądania danych w relacji do innych • Optymalizacja wielokryterialna i optymalne spełnianie ograniczeń • Zrozumienie umysłu: doświadczeń psychologicznych, sposobu rozumowania i kategoryzacji, poruszania się i planowania, procesów uczenia – przydatne każdemu Projekty lingwistyczne • Inteligentne systemy wspomagające nauczanie języka • kombinacja rozumowania i kompetencji językowych • Filtrowanie informacji Postępy w uczeniu się naturalnego języka zależą od automatycznego tworzenia, rozwijania i używania obszernych baz wiedzy Rozumowanie • Partnerzy doradzający ludziom w pracy, oceniający ich rozumowanie (sprawdzanie twierdzeń), podsuwający kreatywne idee, interesujące skojarzenia, szukający istotnych informacji dla danego projektu • Super-ekspert w wąskiej dziedzinie (Feigenbaum): potrzebuje sporo ogólnej inteligencji do komunikacji + wyrafinowanego wnioskowania; realne zastosowania w matematyce, prawie, bionaukach, partner dla eksperta stawiającego pytania, egzaminy jak studentów • W matematyce: dowodzenie twierdzeń z różnych dziedzin, techniki metauczenia + specjalizowane moduły • Automatyczne rozwijanie genomicznych baz danych, tworzenie modeli procesów genetycznych, białkowych, metabolicznych bioorganizmów Sztuczna Inteligencja – zagrożenia Wydaje się, że rozwój w dziedzinie sztucznej inteligencji może przynieść tyle samo zagrożeń, ile korzyści. Może się też niestety okazać, że zagrożenia przeważą nad korzyściami. Jeśli uda się zbudować maszyny „myślące“ tak jak człowiek to czeka nasz szereg niebezpieczeństw: • Jeszcze głębsza alienacja społeczeństwa • Bezrobocie: maszyny będą zastępowały człowieka w wielu dziedzinach, nawet tych wymagających intelektu • Maszyny „myślące“ na pewno zostaną wykorzystane do celów wojskowych • Zagrożenie związane z brakiem kontroli nad takimi maszynami • Najczarniejszy scenariusz to podporządkowanie sobie ludzi przez maszyny lub nawet unicestwienie rodzaju ludzkiego Dalsze lektury / projekty do obejrzenia • Chyba wszystko o SI, ze szczególnym uwzględnieniem silnej sztucznej inteligencji (strona W. Ducha): http://www.phys.uni.torun.pl/~duch/indexpl.html • projekty CYC i OpenCYC („baza wiedzy zdrowego rozsądku”): http://cyc.com/, http://opencyc.org/