Implementacja: stany vs. wezly Stan jest fizyczną konfiguracją (jej reprezentacją) Węzeł jest strukturą danych stanowiącą część drzewa przeszukiwań zawiera poprzednik (parent), następniki, głebokość (depth) oraz koszt ścieżki od korzenia (g) Stany nie mają poprzedników, następników, głębokości i kosztu ścieżki! State 5 6 7 4 1 3 8 2 state Node parent, action depth = 6 g = 6 Funkcja SuccessorFn zwraca jako wynik zbiór akcji możliwych do wykonania w danym stanie wraz ze stanami osiąganymi po wykonaniu akcji. Funkcja Expand tworzy nowe węzły i wypełnia ich pola używając funkcji SuccessorFn. Postawienie problemu Reprezentacja problemu: stany: reprezentują opisy różnych stanów świata rzeczywistego akcje: reprezentują działania zmieniające bieżący stan koszt akcji ( 0): reprezentuje koszt związany z wykonaniem akcji Świat rzeczywisty jest ogromnie złożony: przestrzeń stanów dla problemu musi być wyabstrahowana z rzeczywistości, pojedynczne akcje w opisie problemu muszą reprezentować złożone operacje rzeczywiste Sformułowanie problemu stan początkowy: początkowy stan przed rozwiązaniem problemu cel: stan docelowy lub formuła oceniająca, czy dany stan spełnia cel rozwiązanie: ciąg akcji prowadzący od stanu początkowego do celu koszt rozwiązania: funkcja oceny kosztu rozwiązania równa sumie kosztów poszczególnych akcji występujących w rozwiązaniu Rozwiązania o niższym koszcie są lepsze niż rozwiązania o wyższym koszcie. Przeszukiwanie przestrzeni stanów 14 Przeszukiwanie przestrzeni stanów 2 Implementacja: przeszukiwanie drzewa stanow function Tree-Search( problem, fringe) returns a solution, or failure fringe Insert(Make-Node(Initial-State[problem]), fringe) if fringe is empty then return failure node Remove-Front(fringe) if Goal-Test[problem] applied to State(node) succeeds return node fringe InsertAll(Expand(node, problem), fringe) function Expand( node, problem) returns a set of nodes successors the empty set for each action, result in Successor-Fn[problem](State[node]) do s a new Node Parent-Node[s] node; Action[s] action; State[s] result Path-Cost[s] Path-Cost[node] +Step-Cost(node, action, s) Depth[s] Depth[node] +1 add s to successors return successors Przeszukiwanie drzewa stanow Prosty pomysł: symulowanie offline przeszukiwania przestrzeni stanów poprzez generowanie następników wcześniej odwiedzonych stanów (znane również jako ekspansja stanów) function Tree-Search( problem, strategy) returns a solution, or failure initialize the search tree using the initial state of problem if there are no candidates for expansion then return failure choose a leaf node for expansion according to strategy if the node contains a goal state then return the corresponding solution else expand the node and add the resulting nodes to the search tree end Przeszukiwanie przestrzeni stanów 15 Przeszukiwanie przestrzeni stanów 10
Przeszukiwanie wszerz Wykonuje ekspansję najpłytszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką FIFO, tzn. nowe następniki dodawane są na koniec kolejki function Tree-Search( problem, fringe) returns a solution, or failure fringe Insert(Make-Node(Initial-State[problem]), fringe) if fringe is empty then return failure node Remove-Front(fringe) if Goal-Test[problem] applied to State(node) succeeds return node fringe InsertAll(Expand(node, problem), fringe) Strategie przeszukiwania Strategia jest definiowana poprzez wybór kolejności ekspansji stanów Strategie są ocenianie według następujących kryteriów: zupełność czy zawsze znajduje rozwiązanie, jeśli ono istnieje? złożoność czasowa liczba wygenerowanych węzłów złożoność pamięciowa maksymalna liczba węzłów w pamięci optymalność czy znajduje rozwiązanie o minimalnym koszcie? Złożoność czasowa i pamięciowa są mierzone w terminach b maksymalnego rozgałęzienia drzewa przeszukiwań d głębokości rozwiązania o najmniejszym koszcie m maksymalnej głębokości drzewa przeszukiwań (może być ) Przeszukiwanie przestrzeni stanów algorytmy ślepe 3 Przeszukiwanie przestrzeni stanów 16 Strategia jednolitego kosztu Wykonuje ekspansję węzła o najmniejszym koszcie spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe = kolejka priorytetowa porządkująca węzły według kosztu ścieżki od korzenia function Tree-Search( problem, fringe) returns a solution, or failure fringe Insert(Make-Node(Initial-State[problem]), fringe) if fringe is empty then return failure node Remove-Front(fringe) if Goal-Test[problem] applied to State(node) succeeds return node fringe InsertAll(Expand(node, problem), fringe) Odpowiada przeszukiwaniu wszerz jeśli koszt wszystkich pojedynczych akcji jest ten sam Rodzaje strategii przeszukiwania Strategie ślepe korzystają z informacji dostępnej jedynie w definicji problemu: Przeszukiwanie wszerz Strategia jednolitego kosztu Przeszukiwanie wgłąb Przeszukiwanie ograniczone wgłąb Przeszukiwanie iteracyjnie pogłębiane Przeszukiwanie dwukierunkowe Strategie heurystyczne korzystają z dodatkowej, heurystycznej funkcji oceny stanu (np. szacującej koszt rozwiązania od bieżącego stanu do celu): Przeszukiwanie zachłanne Przeszukiwanie A Rekurencyjne przeszukiwanie pierwszy najlepszy Przeszukiwanie lokalne zachłanne (hill-climbing) Symulowane wyżarzanie Algorytm genetyczny Przeszukiwanie przestrzeni stanów algorytmy ślepe 14 Przeszukiwanie przestrzeni stanów 17
Podsumowanie algorytmow b maksymalne rozgałęzienie d głębokość optymalnego rozwiązania m maksymalna głębokość drzewa przeszukiwań (może być ) Kryterium Wszerz Jednolity Wgłąb Ograniczone Iter. Dwukie- Koszt Wgłąb Pogłęb. runkowe Zupełne? Tak a Tak a,b Nie Tak, dla l d Tak a Tak a,d Czas b d+1 b C /ɛ b m b l b d b d/2 Pamięć b d+1 b C /ɛ bm bl bd b d/2 Optymalne? Tak c Tak Nie Nie Tak c Tak d a) zupełne, jeśli b jest skończone b) zupełne, jeśli koszt akcji ɛ, dla pewnego ɛ>0 c) optymalne, jeśli koszt wszystkich akcji jest taki sam d) zupełne i optymalne, jeśli oba przeszukiwania wszerz lub wg jednol. kosztu Przeszukiwanie wglab Wykonuje ekspansję najgłebszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką LIFO, tzn. nowe następniki dodawane są na początek kolejki function Tree-Search( problem, fringe) returns a solution, or failure fringe Insert(Make-Node(Initial-State[problem]), fringe) if fringe is empty then return failure node Remove-Front(fringe) if Goal-Test[problem] applied to State(node) succeeds return node fringe InsertAll(Expand(node, problem), fringe) Podsumowanie: Iteracyjne pogłębianie używa tylko liniowej pamięci i czasu porównywalnego z innymi algorytmami Przeszukiwanie przestrzeni stanów algorytmy ślepe 53 Przeszukiwanie przestrzeni stanów algorytmy ślepe 20 Przeszukiwanie grafu Jesli algorytm przeszukiwania przestrzeni stanów wykrywa i eliminuje z przeszukiwania stany wcześniej odwiedzone, to taki algorytm jest dobry również do przeszukiwania grafu Zmienna closed pamięta wszystkie wcześniej odwiedzone stany function Graph-Search( problem, fringe) returns a solution, or failure closed an empty set fringe Insert(Make-Node(Initial-State[problem]), fringe) if fringe is empty then return failure node Remove-Front(fringe) if Goal-Test[problem](State[node]) then return node if State[node] is not in closed then add State[node] to closed fringe InsertAll(Expand(node, problem), fringe) end Przeszukiwanie ograniczone wglab Przeszukiwanie wgłąb z ograniczeniem na głębokość l, tzn. węzły na głębokości l nie mają następników Implementacja rekurencyjna: function Depth-Limited-Search( problem, limit) returns soln/fail/cutoff Recursive-DLS(Make-Node(Initial-State[problem]), problem, limit) function Recursive-DLS(node, problem, limit) returns soln/fail/cutoff cutoff-occurred? false if Goal-Test[problem](State[node]) then return node else if Depth[node] =limit then return cutoff else foreach successor in Expand(node, problem) do result Recursive-DLS(successor, problem, limit) if result = cutoff then cutoff-occurred? true else if result failure then return result if cutoff-occurred? then return cutoff else return failure Przeszukiwanie przestrzeni stanów algorytmy ślepe 55 Przeszukiwanie przestrzeni stanów algorytmy ślepe 38
fringe jest kolejk porz dkuj c w z y rosn co wed ug warto- Implementacja: funkcji u yteczno ci (im mniejsza warto funkcji, tym w ze jest bardziej ci Przeszukiwanie A Przeszukiwanie pierwszy najlepszy kosztowna Funkcja u yteczno ci: f(n) =g(n)+h(n) g(n) = dotychczasowy koszt dotarcia do stanu n h(n) = oszacowanie kosztu od stanu bie cego n do stanu docelowego f(n) = oszacowanie pe nego kosztu cie ki od stanu pocz tkowego do celu prowadz cej przez stan n U ywa funkcji u yteczno ci, która dla ka dego stanu ocenia jego u yteczno Wykonuje ekspansj najbardziej u ytecznego stanu spo ród wcze niej nieodwiedzonych stanów u yteczny ). Pomys : unika ekspansji stanów, dla których dotychczasowa cie ka jest ju function Tree-Search( problem, fringe) returns a solution, or failure function Tree-Search( problem, fringe) returns a solution, or failure fringe Insert(Make-Node(Initial-State[problem]), fringe) fringe Insert(Make-Node(Initial-State[problem]), fringe) if fringe is empty then return failure node Remove-Front(fringe) if fringe is empty then return failure node Remove-Front(fringe) if Goal-Test[problem] applied to State(node) succeeds return node fringe InsertAll(Expand(node, problem),fringe) if Goal-Test[problem] applied to State(node) succeeds return node fringe InsertAll(Expand(node, problem), fringe) Przypadki szczególne: przeszukiwanie zach anne, przeszukiwanie A Przeszukiwanie przestrzeni stanów μ algorytmy heurystyczne 3 Przeszukiwanie przestrzeni stanów μ algorytmy heurystyczne 15 Rekurencyjne przeszukiwanie pierwszy najlepszy function Recursive-Best-First-Search( problem) returns soln/fail return RBFS(problem, Make-Node(Initial-State[problem]), ) Przeszukiwanie zachlanne function RBFS(problem, node, f_limit) returns soln/fail and a new f -cost limit Funkcja u yteczno ci = heurystyczna funkcja oceny stanu h(n) Szacuje koszt rozwi zania z bie cego stanu n do najbli szego stanu docelowego if Goal-Test[problem](state) then return node successors Expand(node, problem) if successors is empty then return failure, Przeszukiwanie zach anne wykonuje ekspansj tego w z a, który wydaje si by najbli ej celu for each s in successors do function Tree-Search( problem, fringe) returns a solution, or failure f [s] max(g(s)+h(s),f [node]) repeat fringe Insert(Make-Node(Initial-State[problem]), fringe) best the lowest f -value in successors if f [best] > f_limit then return failure, f [best] if fringe is empty then return failure node Remove-Front(fringe) alternative the second-lowest f -value among successors result, f [best] RBFS(problem, best, min(f_limit, alternative)) if Goal-Test[problem] applied to State(node) succeeds return node fringe InsertAll(Expand(node, problem),fringe) if result failure then return result Przeszukiwanie przestrzeni stanów μ algorytmy heurystyczne 42 Przeszukiwanie przestrzeni stanów μ algorytmy heurystyczne 4
Inaczej przeszukiwanie lokalne zach anne lub wspinanie wzd u gradientu zawsze s siada z najwi ksz warto ci funkcji oceny, tzn. Wybiera przez gradient funkcji wyznaczanego Przeszukiwanie z tabu Przeszukiwanie lokalne Przeszukiwanie lokalne zast puje stan bie cy jednym z jego bezpo rednich Pomys : wybiera optymalny ruch przestrzegaj c zakazu powrotu do ostatnio odwiedzonych stanów, mo e natomiast wykona ruch do gorszego stanu s siadów function Local-Search( problem) returns a state function Tabu-Search( problem, k) returns a solution state local variables: current, next, nodes inputs: problem, a problem Value, a function that evaluates a state best, a node with the best value local variables: current, a node tabu, a set of forbidden states current Make-Node(Initial-State[problem]) current Make-Node(Initial-State[problem]) best current best current repeat tabu current} repeat current any successor of current if Value[current] > Value[best] then best current next a highest-valued successor of current tabu until best is optimal, or Value[best] is high enough, or enough time has elapsed if Value[next] > Value[best] then best next return best replace the k-th oldest state tabu with next current next until the same state and tabu are reached twice or time has elapsed return best Przeszukiwanie przestrzeni stanów μ algorytmy heurystyczne 54 Przeszukiwanie przestrzeni stanów μ algorytmy heurystyczne 46 Symulowane wyzarzanie Hill-climbing Pomys : dopuszcza z e posuni cia, ale stopniowo maleje ich cz sto wraz z up ywem czasu function Simulated-Annealing( problem, schedule) returns a solution state inputs: problem, a problem function Hill-Climbing( problem) returns a state that is a local maximum schedule, a mapping from time to temperature inputs: problem, a problem local variables: current, a node next, a node local variables: current, a node neighbor, a node T, a temperature controlling prob. of downward steps current Make-Node(Initial-State[problem]) current Make-Node(Initial-State[problem]) for t 1 to do neighbor a highest-valued successor of current T schedule[t] if T = 0 then return current if Value[neighbor] < Value[current] then return State[current] current neighbor next a randomly selected successor of current E Value[next] Value[current] end if E > 0 then current next else current next only with probability e E/T Przeszukiwanie przestrzeni stanów μ algorytmy heurystyczne 55 Przeszukiwanie przestrzeni stanów μ algorytmy heurystyczne 49
(p add 1,.., p i,.., p n to new ) i to used add Value[next] > Value[current] then current next if return current else Genetic-Algorithm( problem, Fitness-Fn) returns an individual function population, a set of individuals inputs: for i from 1 to Size(population) loop Random-Selection(population, Fitness-Fn) x (small random probability) then child Mutate(child) if child to new_population add some individual is fit enough, or enough time has elapsed until the best individual in population, according to Fitness-Fn return Przeszukiwanie przyrostowe z powracaniem Stany: zmienne częściowo przypisane (tzn. tylko niektóre) więzy zawsze spełnione dla ustalonych zmiennych Stan początkowy: pusty zbiór przypisań {} Funkcja następnika: przypisuje wartość do nieprzypisanej zmiennej tak, żeby nie powodować konfliktu więzów z dotychczasowym przypisaniem porażka, gdy ustalenie kolejnej zmiennej jest niewykonalne Algorytm Kernigana-Lina Variable-Depth-Search( problem) returns a solution state function variables: current, local specifications of the current state local new, states generated in the current step used, specifications used in the current step current Make-Node(Initial-State[problem]) do loop (p 1,...,p i,...,p n ) current Cel: pełne przypisanie zmiennych 1) Dla problemu z n zmiennymi każde rozwiązanie jest na głębokości n warto używać przeszukiwania wgłab 2) Ścieżka jest nieistotna, przypisanie zmiennych jest przemienne, np. [najpierw WA= red potem NT = green] to tak samo jak [najpierw NT = green potem WA= red] wystarczy rozważyć jeden ustalony porządek przypisywania zmiennych new } used } for j from 1 to n loop (p 1,.., p i,.., p n ) highest-valued successor of (p 1,.., p i,.., p n with ) used i (p 1,.., p i,.., p n ) (p 1,.., p i,.., p n ) next the highest-valued state in new Przeszukiwanie przestrzeni stanów problemy z więzami 10 Przeszukiwanie przestrzeni stanów μ algorytmy heurystyczne 59 Przeszukiwanie przyrostowe z powracaniem Przeszukiwanie przyrostowe z powracaniem (ang. backtracking) przeszukiwanie wgłąb, każdy krok to ustalenie wartości jednej zmiennej kolejność przypisywania zmiennych jest ustalona jeśli ustalenie kolejnej zmiennej jest niewykonalne bez łamania więzów następuje powrót, tzn. cofnięcie niektórych przypisań Algorytm genetyczny Fitness-Fn, a function that measures the fitness of an individual new_population empty set function Backtracking-Search(csp) returns solution/failure return Recursive-Backtracking([], csp) function Recursive-Backtracking(assigned, csp) returns solution/failure if assigned is complete then return assigned var Select-Unassigned-Variable(Variables[csp], assigned, csp) for each value in Order-Domain-Values(var, assigned, csp) do if value is consistent with assigned according to Constraints[csp] then result Recursive-Backtracking([var = value assigned], csp) if result failure then return result end return failure Random-Selection(population, Fitness-Fn) y Reproduce(x, y) child population new_population Reproduce zwraca nowy stan b d cy losowym skrzy owaniem Funkcja dwóch stanów-rodziców. (kombinacj ) Funkcja Mutate zmienia losowo pojedyncz informacj w stanie. Przeszukiwanie przestrzeni stanów problemy z więzami 11 Przeszukiwanie przestrzeni stanów μ algorytmy heurystyczne 60
Minimalna liczba konfliktow: algorytm Stan początkowy: losowy lub zachłannie minimalizujący liczbę konfliktów Conflicts = liczba niespełnionych więzów po przypisaniu var = v function Min-Conflicts(csp, max-steps) returns a solution or failure inputs: csp, a constraint satisfaction problem max-steps, the number of steps allowed before giving up local variables: current, a complete assignment var, a variable value, avalueforavariable current an initial complete assignment for csp for i =1tomax-steps do var a randomly chosen, conflicted variable from Variables[csp] value the value v for var that minimizes Conflicts(var, v, current, csp) set var=value in current if current is a solution for csp then return current end return failure Heurystyki przyspieszajce Wybór zmiennej najbardziej ograniczającej spośród najbardziej ograniczonych Wybór wartości zmiennej najmniej ograniczającej Sprawdzenie wprzód Binarny CSP: Sprawdzenie spójności łukowej Analiza grafu zależności Przeszukiwanie przestrzeni stanów problemy z więzami 39 Przeszukiwanie przestrzeni stanów problemy z więzami 17 Strategia minimax: algorytm Dla gier deterministycznych z pełną informacją Pomysł: wybiera ruch zapewniający największą wypłatę tzn. największą wartość minimax (funkcja Minimax-Value) przy założeniu, źe przeciwnik gra optymalnie function Minimax-Decision(state, game) returns an action action, state the a, s in Successors(state) such that Minimax-Value(s, game) is maximized return action function Minimax-Value(state, game) returns a utility value if Terminal-Test(state) then return Utility(state) else if max is to move in state then return the highest Minimax-Value of Successors(state) else return the lowest Minimax-Value of Successors(state) Spojnosc lukowa: algorytm function AC-3( csp) returns the CSP, possibly with reduced domains inputs: csp, a binary CSP with variables {X 1,X 2,..., X n } local variables: queue, a queue of arcs, initially all the arcs in csp while queue is not empty do (X i,x j ) Remove-First(queue) if Remove-Inconsistent-Values(X i,x j ) then for each X k in Neighbors[X i ] do add (X k,x i )toqueue function Remove-Inconsistent-Values( X i,x j ) returns true iff we remove a value removed false for each x in Domain[X i ] do if no value y in Domain[X j ] allows (x,y) to satisfy the constraint between X i and X j then delete x from Domain[X i ]; removed true return removed Przeszukiwanie przestrzeni stanów gry 6 Przeszukiwanie przestrzeni stanów problemy z więzami 31
Strategia usrednionego minimax Uogólnienie strategii minimax dla gier niedeterministycznych function ExpectiMinimax-Decision(state, game) returns an action action, state the a, s in Successors(state) such that ExpectiMinimax-Value(s, game) is maximized return action function ExpectiMinimax-Value(state, game) returns a utility value if Terminal-Test(state) then return Utility(state) else if state is a Max node then return the highest ExpectiMinimax-Value of Successors(state) else if state is a Min node then return the lowest ExpectiMinimax-Value of Successors(state) else if state is a chance node then return average of ExpectiMinimax-Value of Successors(state) Strategia minimax z odcieciem: algorytm function Minimax-Decision(state, game) returns an action action, state the a, s in Successors(state) such that Minimax-Cutoff(s, game) is maximized return action function Minimax-Cutoff(state, game) returns a utility value if Cutoff-Test(state) then return Eval(state) else if max is to move in state then return the highest Minimax-Value of Successors(state) else return the lowest Minimax-Value of Successors(state) Funkcja oceny Eval szacuje wypłatę dla danego stanu gry = rzeczywistej wypłacie dla stanów końcowych Przeszukiwanie przestrzeni stanów gry 35 Przeszukiwanie przestrzeni stanów gry 16 Wnioskowanie przez wyliczanie Wyliczanie wszystkich modeli w głąb jest poprawne i pełne function TT-Entails?(KB, α) returns true or false symbols a list of the proposition symbols in KB and α return TT-Check-All(KB, α, symbols, []) function TT-Check-All(KB, α, symbols, model) returns true or false if Empty?(symbols) then if PL-True?(KB, model) then return PL-True?(α, model) else return true else do P First(symbols); rest Rest(symbols) return TT-Check-All(KB, α, rest, Extend(P,true, model) and TT-Check-All(KB, α, rest, Extend(P, false, model) O(2 n ) dla n symboli; problem jest co-np-zupełny Strategia minimax z odcieciem α β: algorytm function Alpha-Beta-Search(state, game) returns an action action, state the a, s in Successors[game](state) such that Min-Value(s, game,, + ) is maximized return action function Max-Value(state, game, α, β) returns the minimax value of state if Cutoff-Test(state) then return Eval(state) for each s in Successors(state) do α max(α, Min-Value(s, game, α, β)) if α β then return β return α function Min-Value(state, game, α, β) returns the minimax value of state if Cutoff-Test(state) then return Eval(state) for each s in Successors(state) do β min( β, Max-Value(s, game, α, β)) if β α then return α return β Wnioskowanie w rachunku zdań 28 Przeszukiwanie przestrzeni stanów gry 25
Backward chaining Pomysł: wyprowadzanie wstecz od zapytania q: dowód q w backward chaining przez sprawdzenie, czy q jest już znane, lub udowodnienie wszystkich przesłanek pewnej reguły, która pociąga q Unikanie pętli: sprawdza,czynowy podcel nie był już wcześniej wygenerowany Unikanie powtórzeń: sprawdza, czy dla nowego podcelu 1) była już udowodniona prawdziwość, lub 2) dowód był już podjęty wcześniej i zakończył się porażką Forward chaining i backward chaining Postać Horna (ograniczona) KB = koniunkcja klauzul Horna Klauzula Horna = symbol zdaniowy; lub (koniunkcja symboli) symbol Np. C (B A) (C D B) Modus Ponens (dla postaci Horna): pełne dla bazwiedzy Horna α 1,...,α n, α 1 α n β β Można użyć algorytmów forward chaining lub backward chaining. Obaalgorytmy sąnaturalne i wykonują sięwczasie liniowym Wnioskowanie w rachunku zdań 44 Wnioskowanie w rachunku zdań 32 Forward chaining vs. backward chaining Forward chaining jest sterowany-danymi, por. automatyczne, nieświadome przetwarzanie, np. rozpoznawanie obiektów, rutynowe decyzje Może wykonać dużo pracy nieistotnej dla osiągnięcia celu Backward chaining jest nakierowany na cel, dobry do rozwiązywania problemów, np. Gdzie są moje klucze? Jak dostanę się na studia? Koszt backward chaining może być dużo mniejszy niż liniowy względemrozmiaru bazy wiedzy KB Forward chaining: algorytm Pomysł: stosuje dowolną regułę, której przesłanki są spełnione w KB, dodaje jej wniosek dokb, i powtarza, aż znajdzie odpowiedź function PL-FC-Entails?(KB, q) returns true or false local variables: count, a table, indexed by clause, initially the number of premises inferred, a table, indexed by symbol, each entry initially false agenda, a list of symbols, initially the symbols known to be true while agenda is not empty do p Pop(agenda) unless inferred[p] do inferred[p] true for each Horn clause c in whose premise p appears do decrement count[c] if count[c] =0then do if Head[c] =q then return true Push(Head[c], agenda) return false Wnioskowanie w rachunku zdań 56 Wnioskowanie w rachunku zdań 33
Rezolucja: algorytm Dowód przez zaprzeczenie, tzn. pokazanie, że KB α niespełnialne function PL-Resolution(KB, α) returns true or false clauses the set of clauses in the CNF representation of KB α new {} for each C i, C j in clauses do resolvents PL-Resolve(C i, C j ) if resolvents contains the empty clause then return true new new resolvents if new clauses then return false clauses clauses new Rezolucja Postać normalna koniunkcyjna (CNF uniwersalna) koniunkcja alternatyw literałów }{{} klauzule Np. (A B) (B C D) Rezolucyjna reguła wnioskowania (dla CNF): l 1 l k, m 1 m n l 1 l i 1 l i+1 l k m 1 m j 1 m j+1 m n gdize l i i m j są dopełniającymi się literałami. Np. P 1,3 P 2,2, P 2,2 P 1,3 Rezolucja jest poprawna i pełna dla logiki zdaniowej B P A A P? OK OK S P? OK A A OK W Wnioskowanie w rachunku zdań 59 Wnioskowanie w rachunku zdań 57 Instancjacja uniwersalna (UI) Każda instancjacja uniwersalnie kwantyfikowanego zdania jest logiczną konsekwencją reguły: v α Subst({v/g},α) dla dowolnej zmiennej v i termu ustalonego g Np. x King(x) Greedy(x) Evil(x) daje King(John) Greedy(John) Evil(John) King(Richard) Greedy(Richard) Evil(Richard) King(Father(John)) Greedy(Father(John)) Evil(Father(John)). Rezolucja: przeksztalcanie zdania do CNF B 1,1 (P 1,2 P 2,1 ) 1. Eliminacja poprzez zastąpienie α β przez (α β) (β α). (B 1,1 (P 1,2 P 2,1 )) ((P 1,2 P 2,1 ) B 1,1 ) 2. Eliminacja poprzez zastąpienie α β przez α β. ( B 1,1 P 1,2 P 2,1 ) ( (P 1,2 P 2,1 ) B 1,1 ) 3. Przesunięcie do wewnątrz (prawa de Morgana i elim. podwójnej negacji): ( B 1,1 P 1,2 P 2,1 ) (( P 1,2 P 2,1 ) B 1,1 ) 4. Spłaszczenie przy pomocy rozdzielności ( względem ): ( B 1,1 P 1,2 P 2,1 ) ( P 1,2 B 1,1 ) ( P 2,1 B 1,1 ) Wnioskowanie w logice I rzędu 25 Wnioskowanie w rachunku zdań 58
Uogolnione Modus Ponens p 1, p 2,..., p n, (p 1 p 2... p n q) qθ p 1 jest King(John) p 1 jest King(x) p 2 jest Greedy(y) p 2 jest Greedy(x) θ jest {x/john, y/john} q jest Evil(x) qθ jest Evil(John) gdzie p i θ = p i θ dla wszyst. i Uogólnione Modus Ponens używa baz wiedzy klauzul definiujących (dokładnie jeden literał pozytywny) Zakłada się, że wszystkie zmienne są kwantyfikowane uniwersalnie Instancjacja egzystencjalna (EI) Dla każdego zdania α, zmiennej v, i symbolu stałego k który nie występujenigdzie w bazie wiedzy: v α Subst({v/k},α) Np. x Crown(x) OnHead(x, John) pociąga Crown(C 1 ) OnHead(C 1,John) przy założeniu, że C 1 jest nowym symbolem stałym, nazywanym stałą Skolema Inny przykład: z x d(x y )/dy = x y otrzymujemy d(e y )/dy = e y przy założeniu, że e jest nowym symbolem stałym Wnioskowanie w logice I rzędu 37 Wnioskowanie w logice I rzędu 26 Forward chaining: algorytm function FOL-FC-Ask(KB, α) returns a substitution or false repeat until new is empty new {} for each sentence r in KB do ( p 1... p n q) Standardize-Apart(r) for each θ such that (p 1... p n )θ = (p 1... p n)θ for some p 1,...,p n in KB q Subst(θ, q) if q is not a renaming of a sentence already in KB or new then do add q to new φ Unify(q, α) if φ is not fail then return φ add new to KB return false Instancjacja: wlasnosci Instancjacja uniwersalna może być stosowana kilkakrotnie, żeby dodać nowe zdania; nowa KB jest logicznie równoważna poprzedniej Instancjacja egzystencjalna może być zastosowana raz, żeby zamienić zdania z kwantyfikatorami egzystencjalnymi; nowa KB nie jest równoważna poprzedniej, ale jest spełnialna wtw kiedy poprzednia KB jest spełnialna Wnioskowanie w logice I rzędu 46 Wnioskowanie w logice I rzędu 27
Faktoryzacja Reguła faktoryzacji dla logiki I rzędu (usuwanie powtarzających się literałów): l 1 l i l j l k (l 1 l i l j 1 l j+1 l k )θ gdzie Unify(l i,l j )=θ. Na przykład, Likes(x, Chris) Likes(Ken,y) Likes(Ken,Chris) z unifikacją θ = {x/ken, y/chris} Backward chaining: algorytm function FOL-BC-Ask(KB,goals, θ) returns a set of substitutions inputs: KB, a knowledge base goals, a list of conjuncts forming a query θ, the current substitution, initially the empty substitution {} local variables: ans, a set of substitutions, initially empty if goals is empty then return {θ} q Subst(θ, First(goals)) for each r in KB where Standardize-Apart(r) = ( p 1... p n q) and θ Unify(q, q ) succeeds ans FOL-BC-Ask(KB, [p 1,...,p n Rest(goals)], Compose(θ, θ)) ans return ans Rezolucja + faktoryzacja jest poprawnym i pełnym systemem wnioskowania dla logiki I rzędu (bez ograniczeń) Wnioskowanie w logice I rzędu 63 Wnioskowanie w logice I rzędu 53 ForwardChaining Poszukuje planu z liniowo uporz dkowanymi akcjami zaczynaj c od stanu pocz tkowego i dodaj c akcje w przód. Algorytm cofa si, je li nie mo e za- ju adnej akcji w bie cym stanie lub bie cy stan wyst pi ju stosowa wcze niej Rezolucja Reguła rezolucji dla logiki I rzędu: l 1 l k, m 1 m n (l 1 l i 1 l i+1 l k m 1 m j 1 m j+1 m n )θ gdzie Unify(l i, m j )=θ. Na przykład, Rich(x) Unhappy(x) Rich(Ken) Unhappy(Ken) z unifikacją θ = {x/ken} Algorytm stosuje rezolucję do CNF(KB α) Problem: Rezolucja binarna jest poprawnym, ale nie jest pełnym systemem wnioskowania dla logiki I rzędu Wnioskowanie w logice I rzędu 62 Planowanie 12
planowania sk ada si z poziomów: Graf poziom S μ 0 stanowi pocz tkowemu z opisu zadania, odpowiada poziom zawiera: Ka dy zbiór litera ów: reprezentuje te, co mog by spe nione w danym kroku μ zbiór akcji: reprezentuje akcje, które mog by u yte w danym kroku; μ akcji z opisu problemu, dla ka dego litera u dopuszczalna jest oprócz s rozwijane do momentu, kiedy dwa kolejne poziomy s identyczne Poziomy ka dy nast pny poziom by by identyczny z poprzednim) (tzn. Initial-Planning-Graph generuje litera y na poziomie S Funkcja 0 grafu czyli litera y ze stanu pocz tkowego planowania ka dym kroku p tli funkcja Expand-Graph dodaje akcje z bie cego W i litera y z nast pnego poziomu grafu planowania poziomu Graf planowania PopPlan: algorytm Pomys : Stopniowo kompletuje plan zaczynaj c od pustego planu poprzez dodawanie po cze przyczynowych, akcji i wi zów porz dkuj cych Cofa, gdy otwarty warunek jest nieosi galny lub konflikt jest nierozstrzygalny μ kolejne poziomy odpowiadaj kolejnym krokom czasu function POP(initial, goal, operators) returns plan plan Make-Minimal-Plan(initial, goal) if Solution?( plan) then return plan S need,c Select-Subgoal( plan) akcja zachowuj ca stan tego litera u Choose-Operator( plan, operators, S need, c) Resolve-Threats( plan) end function Select-Subgoal( plan) returns S need,c pick a plan step S need from Steps( plan) a precondition c that has not been achieved with S return need,c Planowanie 32 Planowanie 24 GraphPlan: algorytm PopPlan: algorytm function Graphplan(problem) returns solution or failure procedure Choose-Operator(plan, operators, S need, c) choose a step S add from operators or Steps( plan) that has c as an effect graph Initial-Planning-Graph(problem) there is no such step then fail if the causal link S add add c S need to Links( plan) goals Goals[problem] if goals all non-mutex in last level of graph then do add the ordering constraint S add S need to Orderings( plan) if S add is a newly added step from operators then solution Extract-Solution(graph, goals, Length(graph)) if solution failure then return solution add S add to Steps( plan) add Start S add Finish to Orderings( plan) else if No-Solution-Possible( graph) then return failure graph Expand-Graph(graph, problem) procedure Resolve-Threats(plan) for each S threat that threatens a link S i c S j in Links( plan) do choose either Add S Demotion: threat S i Orderings( plan) to Add S Promotion: j S threat Orderings( plan) to if not Consistent( plan) then fail end Planowanie 36 Planowanie 25
wnioskowania dla danych opisanych przez zbiór atrybutów z decyzj Metody dyskretn : Extract-Solution próbuje znale plan na podstawie dotychczas Funkcja wygenerowanego grafu planowania. Cofa si od ostatniego poziomu grafu Translate-To-SAT konwertuje problem planowania do formu y Funkcja postaci normalnej koniunkcyjnej w Empiryczna miara jakosci hipotezy GraphPlan: szukanie rozwiazania Dane dzielone s na zbiór treningowy U trn i zbiór testowy U tst h : X V Hipoteza dec indukowana na podstawie jest treningowego U zbioru trn przekszta caj c bie cy zbiór niespe nionych celów w nast puj cy sposób: pocz tkowy zbiór celów to wszystkie cele z zadania μ ostatnim bie cym poziomie S na n Skuteczno hipotezy Accuracy(h) jest mierzona proporcj poprawnie sklasyfikowanych obiektów ze zbioru testowego Accuracy(h) = {x U tst : h(x) =dec(x)} U tst eby efekty tych akcji pokrywa y zbiór celów na poziomie S tak, i adne dwie nie wyklucza y si wzajemnie, i μ dla celów na poziomie S i algorytm wybiera podzbiór akcji z poziomu A i 1 funkcja zwraca pora k, je li takiego zbioru akcji nie da si wybra μ warunki wst pne akcji wybranych na poziomie A i 1 staj si bie cymi celami na poziomie S i 1 μ szukanie rozwi zania ko czy si sukcesem, je li na poziomie S 0 bie ce cele b d podzbiorem faktów w stanie pocz tkowym Planowanie 37 Uczenie maszynowe - wprowadzenie i drzewa decyzyjne 28 Metody wnioskowania SATPlan: algorytm function Satplan(problem, T max ) returns solution or failure Drzewa decyzyjne Systemy regu owe Sieci neuronowe Wnioskowanie oparte na podobie stwie Sieci bayessowskie T= 0to T for max do mapping Translate-To-SAT(problem, T) cnf, SAT-Solver(cnf) assignment assignment is not null then if inputs: problem, a planning problem T max, an upper limit for plan length return Extract-Solution(assignment, mapping) return failure SAT-Solver: DPLL lub WalkSAT Uczenie maszynowe - wprowadzenie i drzewa decyzyjne 29 Planowanie 42
= rednia liczba bitów potrzebna do zakodowania decyzji d dla losowo Entropia wybranego obiektu ze zbioru S (przy optymalnym kodowaniu decyzji) Dlaczego?? kodowanie przydziela log Optymalne 2 bitów p wewn trzne W z y zwi zany z jednym atrybutem, Ka dy Ga zie zwi zana z jedn warto ci lub z podzbiorem warto ci Ka da w z a, z którego wychodzi ga, atrybutu obiektom danych z pasuj cymi warto ciami atrybutu odpowiada zwi zany z decyzj lub rozk adem decyzji, odpowiada obiektom Ka dy pasuj cym do cie ki prowadz cej do danego li cia danych Entropia Drzewa decyzyjne: reprezentacja Dany jest rozk ad prawdopodobie stwa p 1,...,p n entropii wyznacza, ile informacji niesie z sob ten rozk ad Miara Entropy( p 1,...,p n )=Σ n i =1 p i log 2 p i reprezentuje test warto ci tego atrybutu μ zbiór obiektów danych S S d zbiór obiektów w S z decyzj d μ Entropy(S) =Σ d Vdec S d S log S d 2 S Li cie do decyzji wyst puj cej z prawdopodobie stwem p Uczenie maszynowe - wprowadzenie i drzewa decyzyjne 38 Uczenie maszynowe - wprowadzenie i drzewa decyzyjne 30 Zysk informacji dla atrybutu symbolicznego Drzewa decyzyjne: trenowanie Zysk informacji Gain(S, a) redukcja przy podziale zbioru wzgl dem atrybutu a = entropii S v obiektów w S z warto ci atrybutu a = v μ zbiór S Gain(S, a) =Entropy(S) Σ v v Values(a) S Entropy(S v) znalezienie drzewa spójnego ze zbiorem treningowym Cel: rekurencyjne wybieranie najbardziej znacz cego atrybutu jako korze Pomys : poddrzewa DTL(examples, attributes, default) returns a decision tree function if examples is empty then return default else if all examples have the same classification then return the classification else if attributes is empty then return Mode(examples) else best Choose-Attribute(attributes, examples) tree a new decision tree with root test best for each value v i of best do examples i {elements of examples with best = v i } subtree DTL(examples i, attributes best, Mode(examples)) add a branch to tree with label v i and subtree subtree return tree Uczenie maszynowe - wprowadzenie i drzewa decyzyjne 41 Uczenie maszynowe - wprowadzenie i drzewa decyzyjne 34
Wybor atrybutu: normalizacja Zysk informacji dla atrybutu numerycznego Problem Zysk informacji Gain(S, a, c) = redukcja entropii wzgl dem ci cia binarnego c na atrybucie a Miara Gain faworyzuje atrybuty z wieloma warto ciami, dla nowych przyk adów jest adna Rozwi zanie: mo na zastosowa normalizacj miary Gain c μ warto ci cia s a<c μ zbiór obiektów z warto ciami atrybutu a poni ej ci cia s a c μ zbiór obiektów z warto ciami atrybutu a powy ej ci cia w szczególno ci atrybut z warto ciami jednoznacznymi, np. PESEL, ma maksymaln warto Gain, ale jego u yteczno S SplitInformation(S, a) = Σ v v Values(a) S log S v 2 S Gain(S, a, c) =Entropy(S) S a<c S Entropy(S a<c ) S a c S Entropy(S a c ) u y GainRatio Gain: i miary zamiast Gain(S, a) GainRatio(S, a) = SplitInformation(S, a) Uczenie maszynowe - wprowadzenie i drzewa decyzyjne 53 Uczenie maszynowe - wprowadzenie i drzewa decyzyjne 47 Drzewo decyzyjne: algorytm z przycinaniem Wybor ciecia Drzewo decyzyjne wybiera atrybut rozpatruj c najlepsze ci cia dla atrybutów function DTL-Pruned(examples, attributes, default) returns a decision tree numerycznych building, validating split examples into building and validating sets tree DTL(building, attributes, default) Przyk ad tree Prune-Tree(validating, tree) Dany jest atrybut numeryczny T emperature z nast puj cymi warto ciami w return tree function Prune-Tree(validationset, tree) returns a pruned decision tree treningowym: zbiorze T 4 8 16 22 26 32 emperature P layt No No Yes Yes Yes No ennis leafparents inner nodes in tree such that all their successors are leaf nodes while leafparents } d cand the most frequent decision among the building objects assigned to cand if assigning d cand to the objects going through the node cand does not worsen classification accuracy in validationset then replace the subtree rooted at cand by the leaf node with the decision d cand Najlepsze ci cie?? Gain(S, a, 0) = 1.0 (0/6)0.0 (6/6)1.0 =0.0 Gain(S, a, 12) = 1.0 (2/6)0.0 (4/6)0.811 = 0.439 Gain(S, a, 29) = 1.0 (5/6)0.971 (1/6)0.0 = 0.191 cand a node from leafparents if all brother nodes of cand are leafs then Najlepsze ci cie: c =12 add the parent of cand to leafparents return the modified tree Uczenie maszynowe - wprowadzenie i drzewa decyzyjne 60 Uczenie maszynowe - wprowadzenie i drzewa decyzyjne 50
Performance(α,uncov) szacuje jako warunku α na podstawie Funkcja niepokrytych przyk adów uncov dotychczas CN2: szukanie najlepszej reguly Generowanie regul zupelne: algorytm function Exhaustive-Rules(examples, decisions, selectors) returns a rule set function Learn-One-Rule-CN2(uncov, k) returns a rule inputs: uncov, the examples not covered by the previous rules rules } for each decision d decisions do k, the width of searching the most general empty condition best {best} candidates candidates } d repeat repeat newcandidates } for each candidate rule α d candidates do newcandidates } for each candidate α candidates do e neg a random example matching α but with a decision d for each selector s selectors excluding e neg do for each selector s of the form a=v or a v consistent with α do if α s candidates newcandidates then newcandidates newcandidates {α s} r new α s d if r new covers one or more objects with decision d in examples is not subsumed by another rule from rules newcandidates and r if new consistent with examples then rules rules r is new if Performance(α s,uncov)>performance(best,uncov) then best α s else newcandidates newcandidates r new retain only k best candidates in newcandidates according to Performance candidates newcandidates candidates newcandidates until candidates is empty until candidates is empty return best d (the most frequent decision among objects matching best) return rules Uczenie maszynowe - systemy regu owe 14 Uczenie maszynowe - systemy regu owe 18 CN2: miara jakosci reguly Generowanie regul: sekwencyjne pokrywanie n μ liczba przyk adów z uncov pasuj cych do α n d μ liczba przyk adów z uncov pasuj cych do α z najcz stsz decyzj d Pomys (heurystyczny): Regu y mo na generowa pojedynczo do momentu Generowanie regu zupe ne przegl da zazwyczaj wyk adniczo du podprzestrze regu, w praktyce niewykonalne pokrycia przez nie wszystkich obiektów treningowych prawdopodobie stwa m-estymata n d + mp d n + m <p d1,...,p dd μ pierwotny rozk ad prawdopodobie stwa w danych > rules } uncovered examples repeat function Sequential-Covering(examples) returns a rule set r Learn-One-Rule(examples, uncovered) rules rules r m μ parametr estymacji u ywa szczególnego przypadku, estymaty Laplace'a: CN2 rozk ad pierwotny < 1 D,..., 1 D > i m = D (D μ liczba decyzji) równomierny remove all examples covered by r from uncovered until uncovered is empty return rules n d + D 1 D n + D = n d +1 n + D Funkcja Learn-One-Rule wyszukuje heurystycznie jak najlepsz regu wzgl dem pewnej miary jako ci regu Uczenie maszynowe - systemy regu owe 20 Uczenie maszynowe - systemy regu owe 16
atrybutów R A jest reduktem lokalnym dla przyk adu x U Zbiór trn w przyk adów U zbiorze trn je li, 2: Fakt znalezienia minimalnego reduktu lokalnego dla danego przyk adu jest Problem Redukty lokalne AQ: szukanie najlepszej reguly function Learn-One-Rule-AQ(examples, uncov, d, k) returns a rule μ dla ka dego przyk adu y U trn z inn decyzj dec(y) dec(x) inputs: examples, all training examples uncov, the examples not covered by the previous rules d, decision of a return rule a istnieje i rozró niaj cy R od y: x x i y i R jest minimalnym zbiorem maj cym powy sz w asno, μ dla dowolnego R R istnieje przyk ad w U tzn. trn inn decyzj i warto ciami taki samymi jak x z wszystkich atrybutach a na i R k, the width of searching e pos a random example from uncov with decision d {the most general empty condition} candidates repeat e neg example with decision d covered by one or more conditions in candidates the maximum number of values = the corresponding values of e with pos selectors all selectors consistent with e pos excluding e neg candidates {x s: x candidates, y selectors} candidates {x candidates: y candidates more general than x} 1: Fakt reduktów lokalnych dla jednego przyk adu mo e by wyk adnicza wzgl - Liczba dem liczby atrybutów i liczby przyk adów treningowych retain only k best candidates in candidates according to Performance until candidates cover no examples with decision d best the best condition in candidates according to Performance return best d NP-trudny Uczenie maszynowe - systemy regu owe 26 Uczenie maszynowe - systemy regu owe 42 Generowanie regul z reduktow lokalnych AQ: miara jakosci reguly Performance(α d,examples) = pos included + neg excluded generowana reduktu R dla przyk adu x: Regu a z lokalnego a i = x i dec = dec(x) a i R pos included liczba przyk adów w examples z decyzj d pasuj cych do warunku α (tzn. usuni cie któregokolwiek selektora powoduje utrat spójno ci) tzw. wsparcie regu y neg excluded liczba przyk adów w examples z decyzj d wykluczanych przez warunek α Fakt 1: Regu a generowana z reduktu lokalnego jest regu spójn minimaln Fakt 2: Zbiór regu wygenerowanych ze wszystkich reduktów lokalnych = Uwaga Je li regu a jest spójna ze zbiorem treningowym, zbiór wszystkich minimalnych regu spójnych = zbiór wszystkich regu generowanych przez algorytm zupe ny (z selektorami równo ciowymi) tzn. warunek regu y wyklucza wszystkie przyk ady z decyzj d, Przypomnienie: Liczba wszystkich minimalnych regu spójnych mo e by wyk adnicza wzgl dem liczby atrybutów i przyk adów treningowych to miary jako ci regu y jest równa wsparciu regu y Performance(α d,examples) = pos included Fakt 3 (Bazan, 1998): Niech rules all zbiór wszystkich minimalnych regu spójnych. Istnieje algorytm symuluj cy klasyfikacj z maksymalizacj wsparcia w zbiorze regu rules all (bez jawnego liczenia regu ) wykonuj cy klasyfikacj pojedynczego obiektu w czasie O( U trn 2 A ). Uczenie maszynowe - systemy regu owe 43 Uczenie maszynowe - systemy regu owe 27
wylicza statystyczne górne oszacowanie b dów obu regu na podstawie C4.5rules przyk adów ze zbioru treningowego pokrywanych przez te regu y, i za- regu α s d regu skrócon α d, je li górne oszacowanie st puje dla regu y skróconej jest nie wi ksze ni dla regu y oryginalnej b du mo e by skrócona wielokrotnie, je li usuwanie kolejnych selektorów Regu a powoduje zwi kszenia górnego oszacowania b du regu y nie regu przed skróceniem wyklucza y si wzajemnie, Warunki skróceniu ju nie musz si wyklucza po Wniosek wymaga zastosowania wyboru najlepszej regu y Klasyfikacja usuni cia niektórych regu skróconych do uporz dkowania pozosta ych wed ug wa no ci i C4.5rules: skracanie regul α s d μ regu a przed skróceniem α d μ regu a po skróceniu Uczenie maszynowe - systemy regu owe 47 C4.5rules: klasyfikacja Fakt g osowania regu lub C4.5rules stosuje zaawansowane metody Obiekty klasyfikowane s wed ug najlepszej pasuj cej regu y Uczenie maszynowe - systemy regu owe 48