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

Podobne dokumenty