Michał Buraczyński
Transkrypt
Michał Buraczyński
Wydział Elektroniki Politechniki Wrocławskiej Wrocław, 18.05.2007 Kierunek: Informatyka Algorytmy koewolucyjne Praca zaliczeniowa z kursu: INE 3802 – Informatyka systemów autonomicznych Autor: Michał Buraczyński Prowadzący: Dr inŜ. Marek Piasecki 1. Koewolucja w biologii W biologii koewolucja oznacza współzaleŜną ewolucję dwóch lub większej liczby gatunków. KaŜdy z tych gatunków w pewien sposób wywiera nacisk na pozostałe, przyczyniając się do ich ewolucji. Ewolucja będąca wynikiem oddziaływania takiego jak np. klimat, nie jest koewolucja, poniewaŜ klimat nie jest Ŝywy i nie podlega ewolucji biologicznej. Koewolucją jest ewolucja będąca wynikiem oddziaływania jeden na jednego, takiego jakie zachodzi np. między owadami a roślinami przez nie zapylanymi, między drapieŜnikiem a ofiarą (z jednej strony następowały przystosowania drapieŜników do zdobywania ofiar, z drugiej – przystosowania ofiar do uniknięcia drapieŜnika). Przykładami koewolucji w układzie drapieŜnik – ofiara są [6]: a) mimikra – przystosowanie ochronne występujące u zwierząt (zwłaszcza owadów), polegające na tym, Ŝe zwierzęta bezbronne upodabniają się do zwierząt zdolnych do obrony przybierając ich kształt lub barwy. Mogą teŜ przybierać kształty i barwy otoczenia tak, Ŝeby być trudnym do wykrycia przez naturalnych wrogów; b) mimikra agresywna – przybieranie z przez drapieŜcę formy atrakcyjnej dla ofiary; c) mimetyzm – naśladownictwo – upodabnianie się do otoczenia w celu ukrycia się przed wrogiem lub przed potencjalna ofiarą. W nauce funkcjonuje równieŜ pojęcie: „mimikra kulturowa”. W memetyce polega na tym, iŜ pewne socjotypy ewoluują w ten sposób, aby upodabniać się do innych, podobnie jak 1 w biologii na zasadzie mimikry cechy fenotypowe pewnych organizmów upodabniają się do innych, dając tym organizmom lepsze moŜliwości dostosowawcze. Efektem mimikry kulturowej jest pojawianie się np. nowych idei mających wywoływać odpowiednie reakcje poprzez włączenie w nie memów utrwalonych w kulturze ideologii. 2. Algorytmy genetyczne Algorytmy genetyczne (GA) opierają się na modelu ewolucji Darwina oraz genetyce. Ewolucja następuje dzięki selekcji osobników na podstawie ich funkcji oceny oraz stosowaniu prostych operatorów krzyŜowania oraz mutacji. Algorytmy genetyczne znajdują zastosowanie tam, gdzie nie jest dobrze określony lub poznany sposób rozwiązania problemu, ale znany jest sposób oceny jakości rozwiązania. GA są z powodzeniem stosowane w problemach optymalizacji czy uczeniu maszynowym. Nie kaŜdy problem, moŜe by jednak w łatwy sposób przekształcony na problem rozwiązywalny przez GA. Podejście oparte na koewolucji jest rozwinięciem tradycyjnych GA i wydaje się mieć większe zastosowanie w rozwiązywaniu złoŜonych problemów. 3. Model koewolucyjny W podejściu koewolucyjny modelowane jest środowisko składające się z dwóch lub więcej gatunków, których ewolucja częściowo zaleŜy od ich wzajemnych związków. Podobnie jak w naturze, gatunki są genetycznie izolowane, tj. osobniki z dwóch róŜnych gatunków nie mogą się krzyŜować. WyróŜnia się dwa rodzaje algorytmów koewolucyjnych (CEA): a) konkurujące (ang. competitive coevolutionary algorithms) Prawdopodobieństwo przeŜycia gatunku zaleŜy od zachowania innych gatunków. W najprostszym scenariuszu istnieją tylko dwa gatunki, np. drapieŜnik i ofiara, Ŝywiciel i pasoŜyt. Klasycznym przykładem jest eksperyment zaproponowany przez Hillis’a [3], w którym rozróŜniane były dwie populacje: algorytmów sortujących oraz zbiorów liczb do posortowania. Funkcja oceny algorytmu sortującego zaleŜała od ilości zbiorów, które potrafił poprawnie posortować. Funkcja oceny problemu zaleŜała od liczby algorytmów, które sobie z nim nie poradziły. b) współpracujące (ang. cooperative coevolutionary algorithms - CCEA) Gatunki są zachęcane do kooperacji przez nagradzanie za wspólne rozwiązywanie problemów. Karze się je natomiast, za duŜą samodzielność. 2 W ogólności działanie algorytmów kooperacyjnych moŜna opisać następującym kodem [4]: t=0 FOR EACH gatunek S Zainicjalizuj Pt (S ) losowymi osobnikami FOR EACH gatunek S Oblicz funkcję oceny dla kaŜdego osobnika w Pt (S ) WHILE warunek zakończenia == FALSE BEGIN FOR EACH gatunek S BEGIN Wybierz osobniki do reprodukcji z populacji Pt (S ) Zastosuj operatory genetyczne Oblicz funkcję oceny Zastąp osobniki z Pt (S ) potomkami w celu otrzymania populacji Pt +1 (S ) END t = t +1 END Rysunek 1 – ogólna postać działania algorytmów koewolucyjnych. Początkowo tworzona jest określona liczba populacji, kaŜda odpowiada jednemu gatunkowi. Populację wypełnia się osobnikami. Oblicz się wartość funkcji celu dla kaŜdego osobnika w kaŜdej populacji. Jeśli zadowalające rozwiązanie nie zostało znalezione, kontynuuje się ewolucję osobników. NaleŜy wybrać osobniki do reprodukcji, bazując na ich funkcji oceny - moŜna stosować metody znane z GA, tj. ruletka, wybór proporcjonalny. Dla wybranych osobników stosuje się operatory takie jak krzyŜowanie i mutacja, w wyniku czego powstają potomkowie. Stara populacja zastępowana jest nowymi osobnikami. PowyŜszy algorytm praktycznie nie róŜni się od klasycznych algorytmów ewolucyjnych. Istotnym elementem jest sposób oceniania osobników. Nie są one oceniane w odosobnieniu. Przed dokonaniem oceny danego osobnika, łączy się go z osobnikami (reprezentantami) pozostałych gatunków. Dla takiego związku ostatecznie oblicza się funkcję celu, jej wartość zostaje przypisana do osobnika dla którego była liczona (nie do reprezentantów) – rys. 3. Sposób w jaki dobiera się reprezentantów zaleŜy od dziedziny problemu. Jedną z metod jest wybieranie najlepszych osobników w populacji. Stosowane jest równieŜ wybieranie losowe. 3 Wybierz reprezentantów z pozostałych populacji FOR EACH osobnik i w Pt (S ) BEGIN Stwórz związek i z reprezentantami pozostałych gatunków Oblicz funkcję oceny dla związku Przypisz wartość funkcji do i END Rysunek 2 – metoda oceniania osobników. Rysunek 3 – [4] funkcja oceny kaŜdego osobnika (fitness) w danym gatunku, obliczana jest przy wykorzystaniu reprezentantów (representative) z pozostałych gatunków. 4 4. Zastosowanie Wydaje się, Ŝe algorytmy koewolucyjne mogą znaleźć zastosowanie w obszarach, w których klasyczne algorytmy ewolucyjne byłyby skazane na niepowodzenie. Pierwszą grupę takich problemów, stanowią te o duŜej złoŜoności i wyraźnej strukturalizacji. Zakładając, Ŝe podział problemu na części zostanie przeprowadzony prawidłowo, zastosowanie CCEA w takich przypadkach jest bardzo intuicyjne. Poszczególne gatunki mogą koewoluować, kaŜdy „zajmując się” własną częścią problemu. Takie podejście jest bardziej efektywne niŜ tradycyjne EA, które traktowałyby problem jako całość. Ponadto dzięki stosowaniu izolacji genetycznej, obliczenia wykonywane przez CCEA mogą być w prosty sposób rozpraszane na wiele maszyn (np. kaŜdy gatunek na innej maszynie). Nie istnieje problem współdzielenia zasobów, poniewaŜ kaŜdy gatunek szuka rozwiązania w lokalnej przestrzeni rozwiązań. Kolejny obszar zastosowań, to problemy optymalizacyjne, których przestrzeń argumentów jest bardzo duŜa, a w szczególności nieskończona. W literaturze często spotyka się przykład sortowania ciągów liczb: naleŜy znaleźć taki algorytm, który potrafi posortować kaŜdy (skończony) ciąg liczb. Oczywistym jest, Ŝe testowanie algorytmów dla wszystkich moŜliwych ciągów jest niewykonalne. W klasycznych EA prawdopodobnie wybrano by klika ciągów (zadań) i dla nich przeprowadzano testy. Istnieje jednak prawdopodobieństwo, Ŝe algorytm otrzymany w ten sposób byłby zoptymalizowany dla konkretnych ciągów. MoŜna równieŜ losować zadania. Takie podejście utrudnia jednak proces uczenia się. Zastosowanie konkurującego algorytmu koewolucyjnego (zaproponowane przez Hillis’a [3]) pozwala na stopniowe ewoluowanie zadań i rozwiązań, eliminując wady EA. Istnieją dziedziny, dla których koewolucja jest wręcz stworzona. Są to problemy z natury interaktywne, np. gry. ZałóŜmy, Ŝe naszym zadaniem jest znalezienie strategii gry w warcaby. W jaki sposób dokonać pomiaru jakości strategii? MoŜna wyobrazić sobie statyczne metody pomiaru: uŜyć wszystkich moŜliwych strategii dla przeciwnika; uŜyć losowych strategii; uŜyć najlepszych strategii. Wszystkie te metody mają te same wady, które wykazano w poprzednim przykładzie. MoŜna równieŜ zastosować koewolucję, czyli testy adaptacyjne. Zakładając, Ŝe strategia testująca i testowana, rozwijają się w dwóch róŜnych populacjach, naszym celem jest doskonalenie obu z nich. 5 5. Patologie W idealnym środowisku, w kaŜdej iteracji powinno powstawać coraz lepsze rozwiązanie. „Wyścig zbrojeń” między zadaniem a rozwiązaniem, powinien „kierować” algorytm po przestrzeni rozwiązań, unikając przy tym ekstremów lokalnych. Badania nad CEA wykazały jednak, Ŝe czasem pojawiają się niepoŜądane zachowania. W literaturze określa się je mianem patologii. NajwaŜniejsze z nich to [2][4][6]: a) Utrata gradientu – zachodzi w algorytmach konkurujących, gdy jedna z populacji uzyskuje nagle tak wysoki poziom rozwoju, Ŝe pozostałe nie są w stanie się od niej niczego nauczyć. Klasycznym przykładem jest gra w szachy między arcymistrzem, a początkującym graczem. Jeśli początkujący gracz nie uzyskuje Ŝadnych informacji poza tymi, które wynikają bezpośrednio z gry, jest mało prawdopodobne, Ŝe poprawi swoje umiejętności. b) Zapętlenie – występuje gdy struktura związki między strategiami są nieprzechodnie, tzn. strategia A wygrywa z B, strategia B z C, C z D, a D z A. Powstaje obieg zamknięty w którym przemieszczają się kolejne populacje gatunków. c) Stabilizacja – wartość funkcji oceny nie zmienia się pomimo postępującej koewolucji d) Red Queen – poniewaŜ pomiaru przystosowania populacji często dokonuje się na podstawie innej populacji (algorytmy konkurujące), otrzymywany wynik jest względny. Nie zawsze więc moŜna ocenić, czy między populacjami dokonuje się wyścig zbrojeń, czy nastąpiła stagnacja. 6. Podsumowanie Pomimo wielu zalet algorytmów koewolucyjnych i ich częstej przewagi nad algorytmami ewolucyjnymi, są one wciąŜ rzadko stosowane. DuŜe nadzieje pokładane w CEA zostały szybko rozwiane, przez pierwsze eksperymenty. WciąŜ uboga wiedza teoretyczna na temat CEA często mija się z praktyką. To co w przyrodzie sprawdza się doskonale, nie zawsze działa tak samo w informatyce. Wydaje się, Ŝe w przypadku CCEA sposób dekompozycji problemu jest kluczowy dla jego działania. Dlatego poznanie i udokumentowanie poprawnych praktyk dekomponowania zadań jest istotne dla rozwoju CCEA. Prace nad tym zagadnieniem przyniosły pierwsze rozwiązania automatyzujące dekompozycję [5]. Część patologicznych zachowań CEA nie została jeszcze wyjaśniona. Znalezienie mechanizmów ich rozwiązania moŜe przyczynić się do zwiększenia obszaru zastosowań. 6 Literatura [1] Konrad Falkowski, Paweł Wnuk-Lipiński, Marcin śybura , Niszowanie i koewolucja, [2] Sevan Gregory Ficici, Solution Concepts in Coevolutionary Algorithms, 2004 [3] D. Hillis. Co-evolving parasites improves simulated evolution as an optimization Procedure, 1990. [4] Mitchell A. Potter, The Design and Analysis of a Computational Model of Cooperative Coevolution, 1997 [5] Risto Miikkulainen, Kenneth O. Stanley, Competitive Coevolution through Evolutionary Complexification, 2004 [6] R. Paul Wiegand, An Analysis of Cooperative Coevolutionary Algorithms, 2003 [7] http://pl.wikipedia.org/ 7