POLITECHNIKA WARSZAWSKA WYDZIAŁ MECHANICZNY ENERGETYKI I LOTNICTWA MEL WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI NS 586 Dr inż. Franciszek Dul
Poziomy sztucznej inteligencji Sztuczna świadomość? Uczenie się Planowanie i podejmowanie decyzji Uwzględnianie niepewności Wnioskowanie logiczne Rozwiązywanie problemów
3. OSIĄGANIE CELU POPRZEZ POSZUKIWANIA NIEINFORMOWANE
Poszukiwania nieinformowane Pokażemy w jaki sposób agent może osiągnąć zamierzony cel poprzez wykonanie ciągu działań. Działania te będą wyznaczone poprzez poszukiwania oparte wyłącznie na definicji zadania. Poszukiwania są głównymi zadaniami AI w dziedzinach mechanicznych z nimi można spotkać się najczęściej.
3.1. Agent celowy - wprowadzenie Agent celowy poszukuje rozwiązania realizującego cel w zbiorze rozwiązań dopuszczalnych. Na takiej zasadzie opiera się działanie wielu agentów, np.: agenci - obiekty w grach komputerowych, symulatorach; oprogramowanie przewodników drogi wykorzystujących system GPS, agenci poszukujący w Internecie stron z żądaną zawartością. Poszukiwanie nieinformowane (uninformed search) polega na wyznaczaniu rozwiązania zadania wyłącznie na podstawie danych definiujących zadanie. Poszukiwanie informowane (informed search) polega na wyznaczaniu rozwiązania zadania przy wykorzystaniu innej dostępnej wiedzy, specyficznej dla tego zadania.
3.2. Agent poszukujący rozwiązania Cztery kroki przy poszukiwaniu rozwiązania: 1. Sformułowanie celu zadania Jaki stan systemu odpowiada osiągnięciu celu? 2. Sformułowanie zadania Określenie stanów i rodzajów działań. 3. Poszukiwanie Określenie optymalnych działań które należy wykonać aby osiągnąć cel. 4. Wykonanie zadania
3.2. Agent poszukujący rozwiązania Przykład - poszukiwanie najkrótszej drogi Wakacje w Rumunii; jesteśmy w mieście Arad. Jutro musimy odlecieć z Bukaresztu. Sformułowanie celu: należy jutro rano być w Bukareszcie. Sformułowanie zadania: stan: pobyt w jakimś mieście; działania: przejazdy pomiędzy miastami. Rozwiązanie: ciąg miast, { Arad,, Bukareszt } np. { Arad, Sibiu, Fagaras, Bukareszt }.
3.3. Rodzaje zadań poszukiwania Zadanie najprostsze Deterministyczne, obserwowalne zadanie jednostanowe agent wie w jakim jest stanie i w jakim stanie się znajdzie; rozwiązanie jest ciągiem stanów; Zadania znacznie trudniejsze: Nieobserwowalne zadanie bez czujników (conformant problem) agent nie wie, gdzie jest; Niedeterministyczne lub obserwowalne częściowo (nieprzewidywalne, contingency problem) obserwacje dostarczają nowych informacji o stanie bieżącym, poszukiwania często przeplatają się z działaniami. Nieznana przestrzeń stanów exploration problem
3.3. Rodzaje zadań Przykład - świat agenta-odkurzacza Problem jednostanowy, start ze stanu {5}. Rozwiązanie [ W PRAWO, ODKURZAJ ] Agent bez czujników, start z dowolnego stanu spośród {1,2,3,4,5,6,7,8} Rozwiązanie [ W PRAWO, ODKURZAJ, W LEWO, ODKURZAJ ] Zbiór wszystkich stanów Nieprzewidywalność: niedeterministyczność: ODKURZAJ może zaśmiecić czysty dywan częściowa obserwowalność: położenie, czystość w aktualnym położeniu. Obserwacja: [L, CZYSTY], tj. start za stanów 5 lub 7. Rozwiązanie [ W PRAWO, jeżeliśmieci to ODKURZAJ ]
3.3. Rodzaje zadań Zadanie jednostanowe - sformułowanie Zadanie jednostanowe zdefiniowane jest za pomocą czterech elementów: stan początkowy, np. jestem w Arad, działania lub funkcji następstwa S(x) = zbiór par działanie, stan po działaniu np. S(Arad) = { Arad Zerind, Zerind, } test osiągnięcia celu: jawny, np. x = w Bukareszcie, niejawny, np. w szachach Mat(x); koszt drogi (addytywnego) np. sumy odległości, liczby podjętych działań, etc. c(x,a,y) jest kosztem kroku x y, z założenia c 0 Rozwiązaniem zadania jednostanowego jest ciąg działań prowadzących ze stanu początkowego do stanu docelowego. Rozwiązanie optymalne cechuje najmniejszy koszt.
3.3. Rodzaje zadań Zadanie jednostanowe - sformułowanie Świat rzeczywisty jest krańcowo skomplikowany, dlatego przestrzeń stanów musi być abstrakcją stanów rzeczywistych. Abstrakcja oznacza pominięcie szczegółów. Działanie abstrakcyjne to złożona kombinacja działań rzeczywistych, np. "Arad Zerind" reprezentuje złożony zbiór możliwych tras, objazdy, parkingi, etc. Aby zapewnić istnienie rozwiązania, każdy stan rzeczywisty (np. Arad ) musi prowadzić do jakiegoś stanu rzeczywistego (np. Zerind ). Rozwiązanie abstrakcyjne to zbiór rzeczywistych dróg które są rozwiązaniami w świecie rzeczywistym. Każde działanie abstrakcyjne powinno być łatwiejsze niż rzeczywiste.
3.3. Rodzaje zadań Graf przestrzeni stanów dla świata odkurzacza stan: położenie odkurzacza oraz czystość; stan początkowy: każdy; działania: W LEWO, W PRAWO, ODKURZAJ; test celu: czysto we wszystkich położeniach; koszt: 1 za każde działanie;
3.3. Rodzaje zadań Przykład: gra w osiem kostek Stan początkowy Stan docelowy stan: położenie kostek 1-8; działania: ruch pola pustego: w lewo, w prawo, w górę, w dół; test celu: osiągnięcie zadanego układu kostek; koszt: c = 1 za każdy ruch;
3.3. Rodzaje zadań Przykład: montaż przy użyciu robota stan: wieloelementowy wektor położenia ramienia robota oraz położenia montowanych elementów; działania: ciągły ruch ramienia robota, chwytanie i puszczanie elementów; test celu: zmontowane urządzenie; koszt: czas montażu urządzenia;
3.3. Rodzaje zadań Inne przykłady zadań ze świata rzeczywistego Wyznaczanie drogi: wyznaczanie trasy łączącej węzły: początkowy i końcowy; Problem zwiedzania: wyznaczanie trasy przebiegającej przez węzły (np. miasta) tylko jeden raz; Problem komiwojażera: wyznaczenie najkrótszej trasy przebiegającej przez węzły tylko jeden raz; Planowanie obwodów VLSI: rozmieszczanie elementów układu i wyznaczanie połączeń między nimi; Nawigacja robotów: ciągła wersja problemu wyznaczania drogi; Planowanie automatycznego montażu: wyznaczenie właściwej kolejności montażu elementów; Synteza protein: wyznaczenie właściwej kolejności aminokwasów białka o określonych własnościach; Poszukiwania w Internecie: wyznaczenie trasy poszukiwań żądanych informacji na stronach Internetu;
3.3. Rodzaje zadań Podstawową zasadą poszukiwań nieinformowanych jest korzystanie wyłącznie z definicji zadania - bez wykorzystywania dodatkowych informacji. Wada: przypominają one próbę dojechania w mieście samochodem na podany adres gdy zna się tylko ten adres oraz reguły prowadzenia samochodu.
Algorytmy rozwiązania problemów nieinformowanych 3.4. Algorytmy przeszukiwania drzew Idea algorytmów przeszukujących ślepe poszukiwania: analiza wszystkich możliwych sekwencji stanów; koszt rośnie gwałtownie ze wzrostem liczby możliwych stanów; poszukiwania poprzez budowę drzewa stanów: korzeń - stan początkowy; węzły i gałęzie generowane są funkcją następstwa; Przeszukiwanie drzewa generuje graf.
Algorytmy przeszukiwania drzewa - przykład Stan początkowy Poziom 1. Poziom 2.
Stan i węzeł Stan określa jednoznacznie konfigurację fizyczną obiektu; Węzeł jest to struktura danych określająca część drzewa poszukiwań, obejmująca np.: stan, węzeł rodzica, węzły dzieci, koszt gałęzi, aktualną głębokość, podejmowane działanie, itp.; węzeł = stan, węzeł rodzica, koszt, głębokość, działanie Algorytm przeszukiwania tworzy ( rozwija ) nowe węzły, wypełnia odpowiednie pola, a następnie tworzy stany w nowych węzłach. Brzeg (fringe) to zbiór wszystkich węzłów, które nie zostały jeszcze rozwinięte.
Strategie algorytmów przeszukiwania drzew Strategia poszukiwania jest określona kolejnością rozwijania węzłów. Strategie są oceniane wg. następujących kryterów: zupełność: możliwość znalezienia rozwiązania, jeżeli istnieje; złożoność czasowa: proporcjonalna do liczby rozwijanych węzłów; złożoność pamięciowa: największa liczba węzłów w pamięci; optymalność: możliwość wyznaczenia najtańszego rozwiązania.
Strategie algorytmów przeszukiwania drzew Złożoność czasowa i pamięciowa są szacowane za pomocą następujących wielkości: b: maksymalny współczynnik rozgałęzienia drzewa poszukiwań, d: głębokość na której jest rozwiązanie optymalne, m: maksymalna głębokość przestrzeni stanów. F rozwiązanie optymalne, b = 2, d = 3, m = 3. brzeg
Strategie nieinformowane przeszukiwania drzew Strategie nieinformowane wykorzystują tylko informacje zawarte w definicji zadania poszukiwania na oślep. Rodzaje strategii nieinformowanych: Poszukiwanie wszerz (breadth-first search), Poszukiwanie w głąb (depth-first search), Poszukiwanie na ograniczoną głębokość (depth-limited search), Poszukiwanie pogłębiane iteracyjnie (iterative deepening search). Poszukiwanie dwukierunkowe (bi-drectional search).
Poszukiwanie wszerz (breadth-first search) Zasada: rozwinąć najpłytszy nierozwinięty węzeł na brzegu. Brzeg jest kolejką FIFO, tzn. nowy węzeł wstawiany jest na koniec kolejki.
Poszukiwanie wszerz (breadth-first search) Własności algorytmu Zupełność Tak, jeżeli b jest ograniczone Czas 1+b+b 2 +b 3 + +b d + b(b d -1) = O(b d+1 ) Pamięć O(b d+1 ) (przechowywanie wszystkich węzłów w pamięci) Optymalność Tak, jeżeli koszt kroku jest stały Pamięć jest największym problemem, większym niż czas poszukiwań.
Poszukiwanie w głąb (depth-first search) Zasada: rozwinąć najgłębszy nierozwinięty węzeł (najgłębszy na brzegu). Brzeg jest kolejką LIFO, tzn. nowy węzeł wstawiany jest na początek kolejki.
Poszukiwanie w głąb (depth-first search) Zasada: rozwinąć najgłębszy nierozwinięty węzeł (najgłębszy na brzegu). Brzeg jest kolejką LIFO, tzn. nowy węzeł wstawiany jest na początek kolejki.
Poszukiwanie w głąb (depth-first search) Zasada: rozwinąć najgłębszy nierozwinięty węzeł (najgłębszy na brzegu). Brzeg jest kolejką LIFO, tzn. nowy węzeł wstawiany jest na początek kolejki.
Poszukiwanie w głąb (depth-first search) Zasada: rozwinąć najgłębszy nierozwinięty węzeł (najgłębszy na brzegu). Brzeg jest kolejką LIFO, tzn. nowy węzeł wstawiany jest na początek kolejki.
Poszukiwanie w głąb (depth-first search) Zasada: rozwinąć najgłębszy nierozwinięty węzeł (najgłębszy na brzegu). Brzeg jest kolejką LIFO, tzn. nowy węzeł wstawiany jest na początek kolejki.
Poszukiwanie w głąb (depth-first search) Zasada: rozwinąć najgłębszy nierozwinięty węzeł (najgłębszy na brzegu). Brzeg jest kolejką LIFO, tzn. nowy węzeł wstawiany jest na początek kolejki.
Poszukiwanie w głąb (depth-first search) Zasada: rozwinąć najgłębszy nierozwinięty węzeł (najgłębszy na brzegu). Brzeg jest kolejką LIFO, tzn. nowy węzeł wstawiany jest na początek kolejki.
Poszukiwanie w głąb (depth-first search) Zasada: rozwinąć najgłębszy nierozwinięty węzeł (najgłębszy na brzegu). Brzeg jest kolejką LIFO, tzn. nowy węzeł wstawiany jest na początek kolejki.
Poszukiwanie w głąb (depth-first search) Zasada: rozwinąć najgłębszy nierozwinięty węzeł (najgłębszy na brzegu). Brzeg jest kolejką LIFO, tzn. nowy węzeł wstawiany jest na początek kolejki.
Poszukiwanie w głąb (depth-first search) Zasada: rozwinąć najgłębszy nierozwinięty węzeł (najgłębszy na brzegu). Brzeg jest kolejką LIFO, tzn. nowy węzeł wstawiany jest na początek kolejki.
Poszukiwanie w głąb (depth-first search) Zasada: rozwinąć najgłębszy nierozwinięty węzeł (najgłębszy na brzegu). Brzeg jest kolejką LIFO, tzn. nowy węzeł wstawiany jest na początek kolejki.
Poszukiwanie w głąb (depth-first search) Zasada: rozwinąć najgłębszy nierozwinięty węzeł (najgłębszy na brzegu). Brzeg jest kolejką LIFO, tzn. nowy węzeł wstawiany jest na początek kolejki.
Poszukiwanie w głąb (depth-first search) Własności algorytmu Zupełność Tak w przestrzeniach skończonych. Nie w przestrzeniach nieskończonych, z pętlami; (wymaga wtedy modyfikacji w celu uniknięcia powtarzających się stanów) Czas O(b m ) - ogromny jeżeli eli m >> d; Pamięć O(bm) - liniowa względem pamięci; Optymalność Nie
Poszukiwanie na ograniczoną głębokość (depth limited search) Zasada: jak w algorytmie poszukiwania w głąb ale z głębokością ograniczoną do poziomu l. Własności algorytmu Zupełność Tak jeżeli l d. Czas O(b l ); Pamięć O(bl); Optymalność Tak jeżeli l d.
Poszukiwanie pogłębiane iteracyjnie (iterative deepening search) Zasada: wyznaczć iteracyjnie najlepszą głębokość l. l = 0
Poszukiwanie pogłębiane iteracyjnie (iterative deepening search) Zasada: wyznaczć iteracyjnie najlepszą głębokość l. l = 1
Poszukiwanie pogłębiane iteracyjnie (iterative deepening search) Zasada: wyznaczć iteracyjnie najlepszą głębokość l. l = 2
Poszukiwanie pogłębiane iteracyjnie (iterative deepening search) Zasada: wyznaczć iteracyjnie najlepszą głębokość l. l = 3
Poszukiwanie pogłębiane iteracyjnie (iterative deepening search) Cel jest osiągnięty na głębokości d odpowiadającej najpłytszemu węzłowi docelowemu. Algorytm łączy zalety algorytmów poszukiwania wszerz i w głąb. Własności algorytmu Zupełność Tak. Czas O(b d ); Pamięć O(bd); Optymalność Tak jeżeli koszt kroku jest stały.
Poszukiwanie dwukierunkowe (bidrectional search) Zasada: jednoczesne poszukiwanie z początku i końca; d / 2 d / 2 b + b < b d Własności algorytmu Zupełność Tak jeżeli oba poszukiwania wszerz. Czas O(b d/2 ); Pamięć O(b d/2 ); Optymalność Tak jeżeli oba poszukiwania wszerz.
Porównanie algorytmów przeszukiwania Kryterium Wszerz W głąb Stała głębokość Pogłębianie iteracyjne Dwukierunkowe Zupełność TAK NIE TAK (l d) TAK TAK Czas O(b d+1 ) O(b m ) O(b l ) O(b d ) O(b d/2 ) Pamięć O(b d+1 ) O(bm) O(bl) O(bd) O(b d/2 ) Optymalność TAK NIE TAK (l d) TAK TAK Pogłębianie iteracyjne jest zwykle najlepsze. Nie jest to jednak regułą.
Największą wadą poszukiwań nieinformowanych jest wykładniczy wzrost kosztu obliczeń. Krytyczna jest zwłaszcza ilość wymaganej pamięci, gdyż może ona być gigantyczna nawet dla zadań o umiarkowanych wymiarach.
3.5. Algorytmy przeszukiwania grafów Poszukiwanie w przypadku niepełnej informacji Założenia idealne: -środowisko jest całkowicie obserwowalne, - środowisko jest deterministyczne, - agent zna efekty swojego działania. Co się stanie, gdy agent nie ma pełnej informacji o stanie lub efektach działania? Zadanie nieobserwowalne zadanie bez czujników (conformant problem) agent nie wie, gdzie jest; Zadanie niedeterministyczne lub obserwowalne częściowo nieprzewidywalne (contingency problem) obserwacje dostarczają nowych informacji o stanie bieżącym, poszukiwania często przeplatają się z działaniami. Nieznana przestrzeń stanów exploration problem
3.5. Algorytmy przeszukiwania grafów Zadanie nieobserwowalne Start z dowolnego stanu spośród {1,2,3,4,5,6,7,8} W PRAWO {2,4,6,8} Rozwiązanie [ W PRAWO, ODKURZAJ, W LEWO, ODKURZAJ ] Jeżeli świat nie jest całkowicie obserwowalny, to stan wiarygodny (belief state) jest zbiorem stanów, które mogą być osiągnięte.
3.5. Algorytmy przeszukiwania grafów Zadanie nieobserwowalne Rozwiązanie problemu - stan wiarygodny zawierający wszystkie możliwe stany docelowe.
3.5. Algorytmy przeszukiwania grafów Zadanie niedeterministyczne lub obserwowalne częściowo Prawo Murphy ego: odkurzanie czystego dywanu może go zabrudzić. Start z jednego ze stanów {1,3}. - obserwacja: [L,ŚMIECI] = {1,3}, - [ODKURZAJ] {5,7}, - [W PRAWO] {6,8}, - [ODKURZAJ] w {6} {8}, OK - [ODKURZAJ] w {8} ŹLE! Żaden bezwarunkowy ciąg działań nie gwarantuje powodzenia. Należy uzależnić działania od aktualnej sytuacji. Obserwacja lokalna: agent widzi śmieci tylko w miejscu pobytu. Rozwiązanie [ ODKURZAJ, W PRAWO, jeżeli ŚMIECI to ODKURZAJ ]
Podsumowanie Rozwiązywanie zadań poprzez przeszukiwanie wymaga sformułowania zadania w postaci abstrakcyjnej. Jeżeli zadanie jest deterministyczne i obserwowalne (jednostanowe), to do jego rozwiązania można użyć algorytmu poszukiwania nieinformowanego. Istnieje wiele algorytmów poszukiwania nieinformowanego: wszerz, w głąb, kosztu jednorodnego, stałej głębokości, pogłębiania iteracyjnego oraz poszukiwań dwukierunkowych. Algorytm poszukiwania poprzez pogłębianie iteracyjne jest najlepszym algorytmem ogólnym - wymaga liniowej pamięci a czas obliczeń jest niewiele większy niż w przypadku innych algorytmów. Agenci działający na zasadzie poszukiwania rozwiązania są używani w wielu dziedzinach: wyznaczaniu drogi, planowaniu układów VLSI, nawigacji robotów, poszukiwań internetowych;