docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki...

91
POLITECHNIKA WROCŁAWSKA WYDZIAŁOWY ZAKŁAD INFORMATYKI WYDZIAŁ INFORMATYKI I ZARZĄDZANIA Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca Magisterska Ewoluujące automaty komórkowe jako metoda wzrostu sztucznych sieci neuronowych Andrzej Pastusiak Promotor: dr hab. Halina Kwaśnicka Ocena:

Transcript of docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki...

Page 1: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

POLITECHNIKA WROCŁAWSKA WYDZIAŁOWY ZAKŁAD INFORMATYKI

WYDZIAŁ INFORMATYKI I ZARZĄDZANIA

Wybrzeże Wyspiańskiego 27, 50-370 Wrocław

Praca Magisterska

Ewoluujące automaty komórkowe jako metoda wzrostu

sztucznych sieci neuronowych

Andrzej Pastusiak

Promotor: dr hab. Halina Kwaśnicka

Ocena:

Wrocław 2000

Page 2: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Chciałbym bardzo serdecznie podziękować mojemu promotorowi i opiekunowi naukowemu, Pani dr hab. Halinie Kwaśnickiej, za opiekę naukową oraz za wszelką pomoc niezbędną dla napisania niniejszej pracy.

Dziękuję również firmie System Services, której sprzęt posłużył do wykonana większości prezentowanych obliczeń.

Page 3: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Streszczenie

Praca jest próbą wszechstronnej oceny zaproponowanej przez Hugo de Garis idei modułów CoDi, będących ewolucyjnym podejściem do konstrukcji sieci neuronowych za pomocą automatu komórkowego. Przedstawiono wpływ użytych algorytmów ewolucyjnych na uzyskiwane wyniki oraz porównanie z niektórymi własnościami sztucznych sieci neuronowych. Zawiera ponadto opis skonstruowanego na potrzeby badań systemu równoległego oraz usprawnień poprawiających jego efektywność.

Abstract

This paper is a thorough attempt to evaluate CoDi model introduced by Hugo de Garis. CoDi is an evolutionary approach to constructing neural networks inside cellular automata. The influence of applied genetic algorithms and comparison with selected properties of neural networks is presented. The paper also contains the description of parallel system designed during research, and outlines the solutions improving its efficiency.

Page 4: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Spis treści

Wstęp1

1. Algorytmy ewolucyjne 31.1 Charakterystyka GA 4

1.1.1 Klasyczny GA 51.2 GA vs. EA 71.3 Porównanie EA z metodami klasycznymi 7

2. Sieci neuronowe 102.1 Podstawy biologiczne a model matematyczny neuronu 11

3. Automaty komórkowe 133.1 Cellular neural networks 15

3.1.1 Przykłady działania CNN 17

4. Moduł CoDi 194.1 Algorytm działania 19

4.1.1 Automat komórkowy 204.1.2 Faza wzrostu 224.1.3 Faza sygnalizacji 24

4.2 Kodowanie analogowe 26

5. Moduły CoDi i sztuczny mózg 275.1 Maszyna CAM-Brain (CBM). 27

5.1.1 Moduł automatu komórkowego CA 275.1.2 Jednostka obliczająca przystosowanie FEU 285.1.3 Jednostka algorytmu genetycznego GAU 295.1.4 Pamięć połączeń międzymodułowych MIM 295.1.5 Interfejs zewnętrzny 29

5.2 Robokoneko 295.3 Sztuczny mózg 305.4 Napotkane problemy 30

6. Opis systemu 326.1 Reprezentacja genetyczna oraz operatory 33

7. Implementacja 357.1 Różnice między implementacjami codi.slow i codi.fast 357.2 Szybkość algorytmu sekwencyjnego 367.3 Zrównoleglenie obliczeń 38

7.3.1 Komunikacja między procesami 387.3.2 Algorytm obciążania procesorów 397.3.3 Komunikacja w oparciu o gniazdka uniksowe (sockets) 397.3.4 Kodowanie przesyłanej informacji 407.3.5 Uzyskane przyśpieszenie 40

Page 5: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

8. Przeprowadzone doświadczenia 438.1 Eksperymenty wstępne 438.2 Rozpoznawanie wzorców statycznych 44

8.2.1 Zdolności generalizacji 478.3 Detektor poruszającej się linii 49

8.3.1 Podejście ewolucyjne 498.3.2 Podejście Monte Carlo 508.3.3 Porównanie zdolności generalizacji 528.3.4 Metody kodowania 53

9. Podsumowanie 56

Literatura 58

Dodatek A - Instrukcja obsługi 60

Page 6: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 1

Wstęp

Sztuczne sieci neuronowe, do nauczania których stosuje się algorytmy ewolucyjne, wydają się być tematem szeroko znanym. Istnieje wiele dróg umożliwiających zaprzęgnięcie algorytmów wzorowanych na ewolucji do tworzenia sieci o pożądanych właściwościach. Jednakże zespół naukowców skupionych wokół osoby Hugo de Garisa w Japonii zainicjował badania nad bardzo obiecującym kierunkiem łączącym automaty komórkowe z algorytmami genetycznymi [int 04]. Jakkolwiek prace nad tworzeniem sieci neuronowych w oparciu o automaty komórkowe były prowadzone wcześniej, zespół de Garisa skonsolidował dotychczasowe doświadczenia i wypracował spójny prosty model.

Przedstawiony przez de Garisa model, zwany modułami CoDi, miał początkowo służyć do budowy sztucznego mózgu – wstępnie kota, potem małego dziecka [Bul 98]. Model ten może być pomocny dla osiągnięcia bardzo ambitnego, wręcz futurystycznego, celu. Biorąc jednakże pod uwagę aktualne rezultaty, pozostała do przebycia droga wydaje się być długa, a cel odległy.

Zaprezentowana wyżej idea, wydawała się na tyle nowatorska i interesująca, iż uznano za celowe zajęcie się bliżej tym tematem. Niniejsza praca jest próbą wszechstronnej oceny zaproponowanej idei oraz porównaniem, gdzie jest to możliwe, z własnościami istniejących sieci neuronowych. Przedstawiony jest także wpływ użytych algorytmów ewolucyjnych, na uzyskiwane wyniki. Niebagatelny wpływ na prowadzone badanie miał fakt, iż moc obliczeniowa, niezbędna do efektywnego symulowania modułu CoDi, jest ogromna. Cechą algorytmów ewolucyjnych jest ich zachłanność na moc obliczeniową, gdyż uzyskiwane wyniki są tym lepsze, im więcej zostanie wykonanych obliczeń. Wymusiło to, skonstruowanie implementacji wysokowydajnego systemu równoległego do obliczeń ewolucyjnych oraz wprowadzenie kilku usprawnień poprawiających jego efektywność, które również zostały zaprezentowane.

W kolejnych rozdziałach przedstawiono wyniki prowadzonych w ramach niniejszej pracy badań. Począwszy od podstaw teoretycznych, istotnych w kontekście omawianych zagadnień, opis systemu i specyfikę implementacji równoległej, omówienie wyników przeprowadzonych doświadczeń, charakterystykę systemu mającego posłużyć do budowy sztucznego mózgu wraz z krótką polemiką i naszkicowaniem napotkanych problemów, do wniosków i przedstawienia dziedzin, w których moduły CoDi wydają się posiadać zastosowania. I tak kolejne rozdziały obejmują:

Rozdział pierwszy: Algorytmy ewolucyjne, odkrywa podstawy poszukiwania rozwiązań za pomocą obliczeń ewolucyjnych. Zwiera krótką charakterystykę i porównanie do istniejących metod rozwiązywania problemów.

Rozdział drugi: Sieci neuronowe, zawiera krótkie wprowadzenie do najistotniejszych zagadnień z nimi związanych, wraz z przedstawieniem terminologii i korzeni tej dziedziny nauki.

Rozdział trzeci: Automaty komórkowe, jest krótkim wprowadzeniem do teorii automatów komórkowych, wraz z przykładem ich zastosowań w robotyce.

Rozdział czwarty: Moduł CoDi, jest wyczerpującym opisem zaproponowanego przez de Garisa modelu.

Rozdział piąty: Moduły CoDi i sztuczny mózg, jest opisem założeń oraz implementacji sprzętowej modułów CoDi, mających na celu stworzenie sztucznego mózgu. Zawiera również krótką polemikę i próbę przybliżenia problemów stojących przed jego twórcami.

Page 7: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 2

Rozdział szósty: Opis systemu, zawiera istotne detale stworzonego systemu.

Rozdział siódmy: Implementacja, prezentuje wypracowane rozwiązanie równoległe, wraz z wprowadzonymi optymalizacjami i omówieniem efektywności stworzonego systemu.

Rozdział ósmy: Przeprowadzone doświadczenia, prezentuje zdobyte doświadczenia oraz omawia uzyskane wyniki podczas przeprowadzonych badań.

Rozdział dziewiąty: Podsumowanie, podsumowuje zdobytą wiedzę oraz nakreśla potencjalne dziedziny dalszych zastosowań opisywanego modelu.

Zamieszczono również dodatek A, który jest instrukcją obsługi do części opracowanego systemu, mogący stanowić podstawę i pomoc w dalszych badaniach.

Page 8: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 3

1. Algorytmy ewolucyjne

W ciągu ostatnich 30 lat narastało zainteresowanie systemami, w których do rozwiązywania zadań stosuje się zasady ewolucji i dziedziczności. Jednym z takich podejść są algorytmy genetyczne (GAs – ang. Genntic Algorithms) rozwinięte przez Johna Hollanda oraz jego kolegów i studentów z Uniwersytetu w Michigan. Najkrócej ujmując, GA to algorytmy poszukiwania oparte na mechanizmach doboru naturalnego i dziedziczności. Łączą w sobie ewolucyjną zasadę przeżycia najlepiej przystosowanych z systematyczną, choć zrandomizowaną wymianą informacji, tworząc metodę obdarzoną jakąś dozą pomysłowości [Gol 98].

Wszystkie metody symulacji środowiska oparte na obserwacji i modelowaniu ewolucji za pomocą komputera, nazywa się wspólnym terminem obliczeń ewolucyjnych (EA – ang. Evolutionary Computation), a wszelkie wykorzystywane w tych obliczeniach algorytmy określa się terminem algorytmy ewolucyjne (EAs –ang. Evolutionary Algorithms) [Kwa 99]. W systemach tych występuje populacja potencjalnych rozwiązań, pewien proces selekcji oraz pewne operatory „genetyczne”. Wszystkie systemy korzystające z zasady ewolucji określane będą mianem programu ewolucyjnego.

Rzecz jasna, dla danego zadania można stworzyć wiele programów ewolucyjnych. Takie programy mogą się różnić wieloma szczegółami. Mogą mieć inne struktury danych reprezentujące poszczególne osobniki, inne metody tworzenia populacji początkowej, inne sposoby uwzględniania ograniczeń występujących w zadaniu, inne parametry. Jednak działają one według tej samej zasady: populacja osobników podlega transformacji i w trakcie procesu ewolucyjnego osobniki starają się przetrwać.

Ze względu na bardzo szybki rozwój tych dziedzin w ostatnim czasie powstało pewne zamieszanie terminologiczne i często utożsamia się algorytmy ewolucyjne z algorytmami genetycznymi. Według najbardziej popularnej klasyfikacji [Kwa 99] wśród algorytmów ewolucyjnych wyróżnia się trzy główne klasy, wywodzące się z różnych korzeni i stosujące różne techniki:- algorytmy genetyczne (GAs – ang. Gennetic Algorithmes)- strategie ewolucyjne (ESs – ang. Evolutionary Strategies)- programowanie ewolucyjne (EP - ang. Evolutionary Programming)

Zatem GA według tej klasyfikacji jest specyficznym przypadkiem EA. Dość często w odniesieniu do algorytmów genetycznych używa się pojęć „zmodyfikowany algorytm genetyczny”, „specjalizowany algorytm genetyczny”, „niestandardowy algorytm genetyczny”. Prawdopodobnie wynika to z faktu, iż samo „algorytm genetyczny” mogłoby być mylące. Z drugiej strony „algorytm ewolucyjny” byłby terminem zbyt szerokim i nie oddawał bliskiego pokrewieństwa stosowanych rozwiązań do klasycznego GA.

Do formalnego opisu EA przyjęło się stosować nomenklaturę pseudo-biologiczną i niektóre określenia zaczerpnięto wprost z biologii i genetyki. EA są algorytmami probabilistycznymi [Mic 96] i operują na populacji składającej się z osobników W każdej iteracji t generuje się populację osobników . Każdy osobnik przedstawia możliwe rozwiązania rozpatrywanego zadania i w programie ewolucyjnym jest reprezentowany przez (być może skomplikowaną) strukturę danych S. Każde rozwiązanie ocenia się na podstawie pewnej miary jego „dopasowania” (ang. fitness). Tak więc nową populację w iteracji (t+1) tworzy się przez selekcję osobników najlepiej dopasowanych (faza selekcji). Pewne osobniki nowej populacji podlegają dodatkowo transformacji (faza zmiany) za pomocą operatorów „genetycznych”, dając w ten sposób

Page 9: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 4

nowe rozwiązanie. Mogą to być transformacje jednoargumentowe mi (typu mutacji), w których nowe osobniki powstają przez zmianę pojedynczego osobnika , i transformacje wieloargumentowe cj (typu krzyżowania), w których nowe osobniki powstają przez łączenie części kilku (dwóch lub więcej) osobników . Po wielu takich krokach program zbiega się i spodziewamy się, że najlepsze osobniki reprezentują rozwiązanie leżące blisko optymalnego (rozwiązanie rozsądne) [Mic 96].

1.1 Charakterystyka GA

Dla klasy algorytmów mających swoje podłoże w GA, osobnik określony jest przez swój genotyp (reprezentację genową) jak i przez swój fenotyp, czyli zewnętrzne uwidocznienie genów. Dla porównania biologia operuje na populacjach żywych organizmów, z których każdy jest wyróżniony przez swój unikatowy kod DNA określany genotypem. Dalej odpowiednio np. gen wzrostu (część genotypu) określa wzrost, czyli cechę osobniczą wzrostu (część fenotypu). W przyrodzie organizm składa się z wielu chromosomów, które z kolei składają się z pojedynczych genów. Geny te mieszają się ze sobą podczas krzyżowania się osobników. Proces ten nie jest przypadkowy i rządzą nim ścisłe reguły genetyczne, choć nie do końca jeszcze przez nas poznane. Aby proces takiej ewolucji nastąpił spełnione muszą być następujące warunki:- osobnik musi posiadać zdolność reprodukcji, - musi istnieć liczna populacja osobników, - w populacji na każdym etapie ewolucji powinna występować różnorodność cech

osobniczych, a co za tym idzie i zdolności przetrwania osobników w środowisku.

GA rozpoczyna działanie od stworzenia mocno zróżnicowanej populacji początkowej osobników. Każdy z osobników reprezentuje potencjalne rozwiązanie postawionego GA problemu. Dla klasycznego GA zazwyczaj zakłada się, że odwzorowanie ciągu kodowego w przestrzeń rozwiązań jest jednoznaczne, jednak dla każdego osobnika przypisana jest wartość kondycji, mierząca jego przystosowanie do życia w środowisku. Środowisko populacji jest określone przez tzw. funkcję celu, która określa wartość kondycji osobnika. W uproszczeniu proces ewolucji symulowany przez GA polega na modyfikowaniu osobników tak, aby w wyniku tego przyszłe pokolenia posiadały lepszą kondycję.

W przeciwieństwie do większości metod optymalizacyjnych, GA rozpoczyna równolegle przeszukiwanie przestrzeni rozwiązań w wielu punktach. W tradycyjnych metodach optymalizacji funkcji ciągłych i różniczkowalnych badane jest sąsiedztwo punktu startowego, a następnie dokonywane jest przemieszczenie w kierunku związanym z lokalnym gradientem. W ten sposób znaleziony punkt staje się punktem startowym w następnej iteracji. Są to szybkie metody lecz ograniczone do wyznaczenia lokalnego optimum. Metody te nie dają pewności, czy osiągnięte optimum jest lokalne czy też globalne, bez ograniczeń na przestrzeń poszukiwań lub wiedzy na temat rozwiązywanego problemu. Powyższe techniki nie pamiętają wcześniejszej sekwencji ruchów w przestrzeni rozwiązań i nie są w stanie wydobyć cennych informacji o kształcie funkcji celu na podstawie poprzednich ruchów. Inaczej jest w przypadku GA. Wychodzi on poza zwykłe sekwencyjne badanie każdego osobnika w populacji. Identyfikuje on i wykorzystuje wspólne dobre części już odnalezionych rozwiązań (osobników) tzw. bloki budujące (ang. building blocks). Bloki budujące odpowiadają powiązanym ze sobą zależnościami genom.

Page 10: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 5

1.1.1 Klasyczny GA

Jak wspomniano, algorytm genetyczny operuje na zbiorze ciągów kodowych reprezentujących konkretne rozwiązania, zwanym populacją. Zakłada się, że ciąg taki jest binarny o stałej długości.

Często stosując analogię biologiczną ciąg taki nazywany jest chromosomem. Analogicznie jak w organizmach żywych, w chromosomie można wyróżnić poszczególne geny binarnie kodujące pewne cechy osobnika, które jednoznacznie określają położenie w przestrzeni rozwiązań. Przystosowanie osobnika (ang. fitness) to funkcja przyporządkowująca lepszym osobnikom (rozwiązaniom) wartości wyższe niż gorszym. Liczba ciągów wchodzących w skład populacji jest stała. Kolejne iteracje GA poprzedza wylosowanie populacji początkowej, która składa się z osobników o losowo wygenerowanych wartościach genów.

W kolejnym etapie następuje ocena wszystkich osobników wchodzących w skład populacji (rys 1.1). Obliczenie funkcji przystosowania polega na zdekodowaniu osobników, czyli utworzeniu rozwiązania i jego ocenie poprzez funkcję przystosowania.

Jeżeli w populacji znajduje się osobnik spełniający postawione przed algorytmem warunki (warunek stopu), algorytm może zakończyć działanie. W przeciwnym wypadku na populacji przeprowadza się operacje genetyczne. W podstawowej wersji algorytmu pierwszą czynnością jest dokonanie selekcji. Tworzony jest nowy zbiór osobników na podstawie przyporządkowanego im przystosowania. Generalna zasada jest taka, że im większe przystosowanie, tym większe jest prawdopodobieństwo, że osobnik będzie przeniesiony do nowej populacji. Im przystosowanie wyższe tym liczniej reprezentowany będzie dany osobnik w nowej populacji. Tradycyjnie stosowaną metodą wyboru osobników jest metoda ruletki [Gol 98]. W metodzie tej każdemu osobnikowi odpowiada sektor na tarczy ruletki o rozmiarze proporcjonalnym do jego przystosowania względem sumy przystosowania wszystkich osobników w populacji. Selekcji osobników dokonuje się kręcąc wykalibrowaną tarczą ruletki tyle razy, jak liczna jest populacja. Za każdym razem do nowego pokolenia wybierany jest osobnik, którego wskazała tarcza ruletki.

wybór populacji początkowej

ocena przystosowania osobników

Czy osiągnięto zadowalające rozwiązanie?

selekcja

krzyżowanie

mutacja

Wynik działania algorytmu

Tak

Nie

Rysunek 1.1. Schemat blokowy działania GA

Page 11: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 6

Po zakończeniu reprodukcji na powstałej populacji dokonuje się podstawowych operacji genetycznych:- krzyżowania- mutacji

Przy krzyżowaniu pewien podzbiór osobników powstałych w wyniku selekcji dobiera się w pary (zazwyczaj w sposób losowy). Dla tak powstałej pary wybiera się (również losowo) punkt w binarnym ciągu kodowym. Tak wyznaczone podciągi następnie wymienia się między osobnikami uzyskując dwa nowe osobniki o zmodyfikowanych chromosomach. Często mówi się, iż z rodziców powstają potomkowie (rys 1.2).

Krzyżowanie można interpretować jako wymianę informacji genetycznej między potencjalnymi rozwiązaniami. Wybiórczy mechanizm selekcji powoduje, że podstawą tworzenia nowych rozwiązań są najlepsze dotychczasowe ciągi kodowe.

Mutacja polega na losowej zmianie jednego lub więcej genów wybranego chromosomu, z prawdopodobieństwem równym częstości mutacji (rys 1.3). Powszechnie jest uznawana za operację drugorzędną względem krzyżowania. Przeciwdziała ona wyniszczającej bogactwo reprezentacji operacji selekcji oraz grzęźnięciu poszukiwań w optimach lokalnych.

Dzięki powyższym operacjom otrzymuje się finalnie populację potomną, będącą bazą do kolejnych iteracji algorytmu.

Jak widać kluczowym zagadnieniem GA jest zdefiniowanie funkcji oceniającej osobniki oraz zakodowanie parametrów rozwiązywanego problemu w postaci ciągu binarnego o stałej długości.

Algorytm genetyczny dla każdego szczególnego zadania musi zawierać następujące pięć elementów:

1. podstawową reprezentację potencjalnych rozwiązań zadania,2. sposób tworzenia początkowej populacji potencjalnych rozwiązań,3. funkcję oceniającą, która gra rolę środowiska i ocenia rozwiązania według ich

dopasowania,4. podstawowe operatory, które wpływają na skład populacji dzieci,5. wartości różnych parametrów używanych w algorytmie genetycznym (rozmiar

populacji, prawdopodobieństwa użycia operatorów genetycznych, itp.).

1.2 GA vs. EA

W [Mic 96] zdefiniowano tę płytką i często niedostrzegalną różnicę między dwoma pojęciami. Podstawowa różnica koncepcyjna między klasycznymi GA i EA tkwi w definicji struktur danych opisujących chromosom osobnika oraz operatorach

punkt krzyżowania

osobnik 1

osobnik 2

osobnik 1

osobnik 2

krzyżowanie

Rysunek 1.2. Krzyżowanie

osobnik

mutacja nowy osobnik

punkt mutacji

Rysunek 1.3. Mutacja

Page 12: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 7

genetycznych. W klasycznym GA zakłada się, że chromosom jest reprezentowany w postaci ciągu bitów o stałej długości oraz dopuszcza dwa operatory genetyczne: mutacje oraz krzyżowanie (ang. corssing over). Takie podejście nie uwzględnia w żaden sposób specyfiki rozwiązywanego zadania. Wymaga, aby naturalna reprezentacja punktu z przestrzeni rozwiązań była zakodowana poprzez ciąg binarny. Często dla złożonych struktur danych takich jak macierze lub drzewa, takie przejście z punktu w przestrzeni rozwiązań na postać binarną nie jest trywialne. Dodatkowo klasyczne operatory genetyczne jak krzyżowanie i mutacja operujące wyłącznie na ciągach bitów, nie uwzględniają szczególnych własności kodowanej struktury. Efektem zastosowania tychże operatorów mogą być nowe struktury nie spełniająca narzuconych ograniczeń. Zatem pierwotne zadanie musi być zmodyfikowane do odpowiedniej postaci nadającej się do algorytmów genetycznych. Wymaga to zdefiniowania dekodera do i z postaci binarnej na postać reprezentującą punkt w przestrzeni rozwiązań. Zazwyczaj nie jest to proste. Przy przejściu na postać binarną i stosowaniu klasycznych operatorów genetycznych nie uwzględnia się specyfiki kodowanej struktury.

W odróżnieniu od GA programy ewolucyjne nie wymagają zmiany zadania, lecz modyfikacji reprezentacji chromosomowej i zastosowania odpowiednich operatorów genetycznych. Do kodowania punktu w przestrzeni rozwiązań używa się naturalnej reprezentacji rozwiązania i na takiej reprezentacji definiuje się operatory genetyczne.

Obecnie często odchodzi się [Mic 96] od algorytmów genetycznych w kierunku bardziej elastycznych programów ewolucyjnych. Mimo, iż GA są dobrze opracowane teoretycznie nie zadały egzaminu w wielu zagadnieniach praktycznych. Wydaje się, że główna przyczyna niepowodzeń jest taka sama, jak ich sukcesu – niezależność od rozpatrywanej dziedziny.

1.3 Porównanie EA z metodami klasycznymi

Algorytmami genetycznymi lub, jak wspomniano wcześniej, w szerszym znaczeniu algorytmami ewolucyjnymi określa się algorytmy poszukiwania rozwiązań, które działają w oparciu o mechanizmy doboru naturalnego i dziedziczności [int 01].

Badania nad tą gałęzią wiedzy zostały rozwinięte przez Johna Hollanda oraz jego współpracowników z Uniwersytetu Michigan w USA i bazują na znanych nam dotychczas zasadach funkcjonowania populacji organizmów żywych, zdolnych do przetrwania w zmiennym środowisku naturalnym.

Wiele problemów można przedstawić jako poszukiwanie najlepszego rozwiązania spośród zbioru wszystkich możliwych rozwiązań tworzących dziedzinę rozwiązania oraz spełniających narzucone z góry ograniczenia. Algorytmy rozwiązujące dane zadanie powinny przeszukać całą przestrzeń rozwiązań i wybrać te rozwiązania, które są najlepsze (optymalne). Proces poszukiwania optimum nazywa się optymalizacją, a jego celem jest znalezienie najlepszego rozwiązania – optimum globalnego. Zwykle jednak przeszukanie całej przestrzeni nie jest możliwe. Jedną z metod jest zawężenie przestrzeni rozwiązań poprzez ograniczenie zakresów parametrów opisujących problem. Najlepsze rozwiązanie w przestrzeni zawężonej nazywane jest optimum lokalnym [int 02].

Podczas rozwiązywania złożonych problemów często okazuje się, że klasyczne metody optymalizacji zawodzą. Istnieją oczywiście grupy zadań, do których stosuje się je z powodzeniem. Poniżej w wielkim skrócie porównane są metody klasyczne z metodą poszukiwania stosowaną przez AE. Metody analityczne wymagają znajomości przestrzeni rozwiązań w formie wzorów matematycznych. Wiele problemów jednak nie można łatwo opisać za pomocą wzorów

Page 13: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 8

matematycznych inne, nawet łatwe do sformalizowania, są nierozwiązywalne metodami analitycznymi. Metody analityczne rozwiązywania takich problemów, często są opracowane do konkretnego zagadnienia i nie są łatwo adaptowalne do innych problemów i innej przestrzeni rozwiązań.Metody przeglądowe polegają na sprawdzeniu wszystkich możliwych punktów przestrzeni rozwiązań. Oczywistą barierą stosowalności tej metody jest rozmiar przestrzeni rozwiązań. Przestrzeń taka dodatkowo musi być dyskretna, aby poszukiwanie zakończyło się w skończonej liczbie kroków. Ich główną zaletą jest to, że jako jedyne metody zawsze dają gwarancję na to, że znalezione przez nie rozwiązanie jest optimum globalnym.Metody poszukiwania losowego polegają na losowym błądzeniu po przestrzeni rozwiązań z nadzieją, że w końcu "trafione" zostanie globalnie optymalne rozwiązanie. W odróżnieniu od metod przeglądowych nadają się do przeszukiwania nieprzeliczalnych przestrzeni rozwiązań, jednak nie dają gwarancji znalezienia optimum globalnego w skończonej liczbie kroków.

Metody stosowane przez AE polegają na samodostosowaniu (adaptacji) reguł przeszukiwania przestrzeni rozwiązań do konkretnego zadania. Dzieje się to w sposób automatyczny, bez zaangażowania człowieka. Dzięki temu mogą one być stosowane bez zmian do różnych zadań. Ich dodatkową zaletą jest to, że prowadzą poszukiwania globalnie najlepszego rozwiązania. Ich wadą jest zaś brak pewności co do tego, że jakiekolwiek dobre rozwiązanie zostanie znalezione. Mogą przeszukiwać zarówno przestrzenie dyskretne jak i niepoliczalne. (Klasyczny GA poszukuje w przestrzeniach dyskretnych, gdyż przestrzeń rozwiązań jest jednoznacznie definiowana przez chromosom, mogący przyjąć skończoną liczbę wartości).

Analityczne metody poszukiwania są z powodzeniem stosowane dla ściśle określonych zadań, podczas gdy nieklasyczne metody mają większą efektywność dla szerokiego spektrum problemów. Podstawowe różnice pomiędzy EA a metodami tradycyjnymi są następujące:- EA prowadzą poszukiwania wychodząc nie z jednego punktu, lecz z pewnej ich

populacji,- EA korzystają tylko z funkcji celu, nie zaś jej pochodnych lub innych pomocniczych

informacji,- EA nie przetwarzają bezpośrednio parametrów zadania, lecz ich zakodowaną postać,- EA stosują probabilistyczne, a nie deterministyczne reguły wyboru.

Zalety te oraz duża elastyczność w implementacji EA sprawiają, że nadają się one do zadań, w których bardzo niewiele można powiedzieć o przestrzeni rozwiązań. Niestety bardzo poważnym mankamentem EA jest ich długi czas działania oraz to, że nie zawsze są one w stanie znaleźć globalne optimum lub nawet rozwiązanie bliskie optymalnemu. Jeżeli zostanie odnalezione jakieś rozwiązanie problemu nie mamy pewności, czy odnaleziony punkt w przestrzeni rozwiązań jest najlepszym z możliwych rozwiązań (optimum globalnym). Innego rodzaju niedogodnością związaną z EA jest to, że dla rzeczywistych zastosowań należy za każdym razem indywidualnie dobierać odpowiednie dla problemu operatory genetyczne.

Page 14: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 9

2. Sieci neuronowe

Sieci neuronowe (ang. NNs - Neural Networks) to skrócona forma terminu sztuczne sieci neuronowe (ang. ANNs - Artificial Neural Networks), powszechnie stosowanego w pracach z zakresu sztucznej inteligencji (ang. AI - Artificial Intelligence). Swe początki wywodzą jeszcze z lat 40-tych, kiedy to trwały prace nad badaniem komórek ośrodkowego układu nerwowego zwierząt i człowieka, czyli neuronów. Koniec lat 50-tych i początek 60-tych to prace między innymi Rosenblatta i Wightmana nad pierwszymi modelami neuronów i sieci. Lata 60-te i 70-te wiążą się z zahamowaniem badań po publikacji książki Minski’ego i Papeta (1969) wykazującej poważną ograniczoność pola zastosowań liniowych sieci neuronowych. Renesans nastąpił dopiero w latach 80-tych, kiedy to powszechna dostępność komputerowych technik symulacji przyczyniła się do intensyfikacji badań. Obecnie nawet w prasie codziennej pojawiają się artykuły o NNs.

Początkowe prace nad NNs były inspirowane przez modele biologicznych neuronów znajdujących się w układach nerwowych zwierząt i ludzi. Aczkolwiek, wraz z rozwojem tej dyscypliny, termin ten zaczął obejmować znacznie szersze spektrum modeli, których idea już znacząco odbiegała od analogii biologicznych. Obecnie w wielu publikacjach można spotkać różnorakie definicje NNs. Najogólniej rzecz ujmując można NNs zdefiniować jako wiele prostych procesorów (neuronów) połączonych siecią połączeń, poprzez którą wymieniane są informacje i równolegle przetwarzane. Najbardziej klasycznym przykładem NN jest sieć warstwowa, gdzie każdy z neuronów ma pewną liczbę wejść oraz jedno wyjście. Sygnały wejściowe są w sposób nieskomplikowany przetwarzane i dają w odpowiedzi wyjście neuronu. Ta informacja jest następnie przesyłana w sposób ciągły do neuronów warstwy następnej (rys. 2.4).

Wyróżnić można sieci jednokierunkowe (ang. feed forwarded), gdzie informacja jest przesyłana z wejść sieci do wyjść i nie występują cykle w połączeniach, oraz rekurencyjne (ang. feedback, bidirectional) ze sprzężeniami zwrotnymi, gdzie dodatkowo wyjścia neuronu mogą być powiązane z jego wejściami bądź bezpośrednio, bądź za pośrednictwem innych neuronów tworzących sieć. Jest także wiele modeli NNs, które nie miały biologicznej inspiracji i traktować je należy bardziej jako modele matematyczne (sieci Hopfielda, samoorganizujące się mapy) jednak ich własności nierzadko przypominają własności układów nerwowych istot żywych.

Rysunek 2.4. Schemat typowej sieci neuronowej

Page 15: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 10

Omawiając podwaliny leżące u podstaw tej dyscypliny należy wspomnieć ich klasyfikację ze względu na sposób nauki. Nauka sieci jest to proces przygotowywania sieci do rozwiązywania konkretnego problemu, który kształtuje sieć połączeń i/lub sposób przetwarzania informacji przez neurony. Proces nauki sieci można podzielić na dwie kategorie:- uczenie nadzorowane, zwane także nauką z nauczycielem (ang. supervised learning),- uczenie nienadzorowane (ang. unsupervised learning).

Uczenie nadzorowane to takie, gdzie na wejścia sieci podaje się pewne pobudzenie i następnie, w zależności od otrzymanej odpowiedzi, na wyjściach sieci tak poprawia się parametry i/lub architekturę sieci, aby sieć na prezentowane wzorce (pobudzenia) odpowiadała z coraz mniejszym błędem. Dla sieci warstwowych przykładem takiego sposobu nauki jest algorytm wstecznej propagacji błędu (ang. back propagation), gdzie zmierzona różnica między odpowiedzią sieci a wartością oczekiwaną (zwana błędem sieci) jest następnie propagowana wstecz, na wszystkie neurony mające wpływ na powstały błąd, w taki sposób, aby przy kolejnej prezentacji tego samego wzorca błąd był mniejszy. Często proces nauki jest procesem iteracyjnym służącym do wytworzenia sieci o pożądanych własnościach. Uczenie nienadzorowane charakteryzuje się tym, iż a priori nie zakładamy nic odnośnie odpowiedzi jaką mamy otrzymać od sieci. Zazwyczaj sieć służy wtedy do odnajdowania pewnych zależności w aktywacjach będących danymi dla procesu uczenia. Zazwyczaj takie podejście stosuje się do zagadnień klasyfikacji, rozpoznawania obrazów, do wstępnego podziału danych według klas podobieństwa (ang. clustering).

Obecnie NNs są szeroko stosowane do wielu złożonych zagadnień inżynierskich. Ich zdolności do uogólniania oraz operowania na danych niepewnych i niepełnych często znajdują zastosowanie w systemach rozpoznawania oraz klasyfikacji. Głównymi domenami zastosowań jest rozpoznawanie obrazów, głosu, sygnałów, jak również optymalizacja, kompresja danych, aproksymacja funkcji lub modelowanie, gdzie procesy fizyczne nie do końca są znane lub wysoce złożone.

Istnieje wiele rodzajów sieci neuronowych i wiele charakterystyk, którymi można je opisywać. W niniejszym rozdziale przedstawiony został tylko wierzchołek góry zagadnień związanych z aktualnymi badaniami w zakresie NN, oraz podstawowe terminy. Tematyka ta jest dobrze przedstawiona w literaturze zagranicznej jak i krajowej [Żur 96, Oso 97], a podstawy dziedziny są dobrze usystematyzowane. Poniżej zostanie przedstawionych kilka ciekawszych modeli sieci neuronowych oraz terminologia istotna w kontekście tematu niniejszej pracy.

2.1 Podstawy biologiczne a model matematyczny neuronu

Jak już zostało wspomniane, pierwowzorem sztucznej sieci neuronowej jest biologiczny układ nerwowy. Jest to złożona struktura, której główne elementy to komórki nerwowe (neurony) i połączenia między nimi. Dla pokazania poziomu złożoności można powiedzieć, że liczba komórek nerwowych w mózgu człowieka wynosi około 1010, zaś liczba połączeń między nimi sięga 1015. Szybkość przetwarzania mózgu oceniana jest na 1018 operacji na sekundę [Muc 96].

Page 16: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 11

Pojedynczy neuron biologiczny (rys. 2.5) składa się z ciała komórki, wielu dendrytów i aksonu [Żur 96, Cri 97]. Informacja dociera do neuronu poprzez dendryty, następnie jest przetwarzana, a odpowiedź jest wysyłana do aksonu. Pomiędzy neuronami sygnały są przesyłane poprzez złącza akson-dendryt, zwane synapsą. Wewnątrz neuronu przewodnictwo ma charakter elektryczny. Natomiast połączenie synaptyczne przewodzi impulsy na drodze chemicznej. Akson danego neuronu połączony jest poprzez synapsy z dendrytami wielu innych neuronów. Neuron reaguje stosownie do wartości wszystkich swoich pobudzeń otrzymanych poprzez dendryty. Impulsy przychodzące mogą być pobudzające lub hamujące. Warunkiem wysłania odpowiedzi do aksonu jest, aby potencjał pobudzający przewyższył potencjał hamujący o wartość zwaną progiem pobudzenia. Po wysłaniu pobudzenia neuron jest przez pewien czas nieaktywny i nie wysyła żadnych sygnałów (okres oporności). Krótki okres wysłania pobudzenia przez neuron nazywa się wystrzałem (ang. fire). Należy zwrócić uwagę, że w odróżnieniu od przetwarzania cyfrowego, biologiczne neurony działają asynchronicznie, a impulsy nerwowe nie są synchronizowane w czasie.

Taka interpretacja neuronów jest dużym uproszczeniem wiedzy neurobiologów, ale wystarczająca do zrozumienia podwalin, jakie legły u podstaw NNs. Biologiczne inspiracje miały wpływ na terminologię NN, które zapożyczyły wiele terminów z neurobiologii. I tak jednostki obliczeniowe często są zwane - neuronami, ich wejścia - dendrytami, a wyjścia - aksonami.

Rysunek 2.5. „Biologiczny” neuron

Page 17: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 12

3. Automaty komórkowe

Za twórcę automatów komórkowych (ang. CA – Cellular Automata) uważa się Janosa von Neumanna, Węgra pracującego w Princeton, autora „Mathematical Foundations of Quantum Mechanics”. Von Neumann znany jest także ekonomistom z prac nad teorią Keynesa. W końcu lat 40-tych zajmował się modelem „pierwotnej zupy” – cieczy, z której miało powstać życie. Jak wiadomo, wprowadził do swego modelu dyskretny czas i przestrzeń. Najsłynniejszym chyba automatem jest Life autorstwa angielskiego matematyka Johna H. Conwaya. W Life można widzieć model żyjącego środowiska, gdyż w użyciu są pojęcia „żywych” i „martwych” komórek. Ale jest to automat uniwersalny, czyli zdolny do każdej operacji logicznej [Kuł 00].

Automat komórkowy można postrzegać jako model obliczeniowy [Siw]. Mają formę sieci identycznych oddziałujących na siebie automatów zwanych komórkami (ang. cells). Automat komórkowy - jest pojęciem matematycznym i charakteryzuje się:- siecią komórek w przestrzeni D wymiarowej,- zbiorem stanów pojedynczej komórki zawierający ki elemntów. Zwykle wszystkie

komórki automatu mają taki sam zbiór stanów,- regułami F określających stan komórki w chwili t+1 w zależności od jej stanu w

chwili t oraz komórek ją otaczających , gdzie jest otoczeniem i-tej komórki.

Taka jest definicja automatu komórkowego tzw. deterministycznego. Jeśli ponadto funkcja zależy od zmiennej losowej, to automat nazywamy probabilistycznym. Dodatkowo wyróżnia się otoczenia typu Moore’a, gdzie za sąsiedztwo komórki si uważa się wszystkie komórki stykające się z si krawędzią lub rogiem oraz otoczenie von Neumanna, gdzie sąsiedztwem są tylko komórki przylegające krawędzią (rys. 3.6).

Jak widać, ważne parametry automatu to wymiar sieci D, liczba stanów pojedynczej komórki k oraz otoczenie. Często używanym parametrem jest promień r otoczenia, a notacją dla określenia całej rodziny automatów jest podanie dwóch liczb: (k,r). Notacja ta nie jest precyzyjna: nie podaje wymiaru sieci, w związku z czym nie musi być jasne, czy np. dla automatu dwuwymiarowego otoczenie jest otoczeniem von Neumanna czy otoczeniem Moore'a.

Przykładem automatu komórkowego może być automat Life. Automat Life jest zdefiniowany na dwuwymiarowej sieci kwadratowej, a więc D=2. Można sobie tę sieć wyobrażać jak papier w kratkę. Każda kratka to pojedyncza komórka. Zbiór stanów każdej komórki zawiera tylko dwa elementy (k=2). Inaczej mówiąc, komórka jest „żywa” (1) lub „martwa” (0). Reguła automatu Life jest następująca: jeśli w otoczeniu komórki

a b

Rysunek 3.6. (a) otoczenie von Neumanna, (b) otoczenie Moore'a

Page 18: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 13

(nie licząc jej samej) są w czasie trzy komórki żywe, to w czasie ta komórka jest żywa ( ). Jeżeli w jej otoczeniu w czasie są dwie komórki żywe, a ona sama również jest żywa, to pozostaje żywa również w czasie t+1 ( ). W pozostałych przypadkach jest ona martwa w czasie t+1 ( ). Life jest automatem deterministycznym.

Najdokładniej zbadaną rodziną automatów [Kuł 00] są jednowymiarowe (D=1) automaty deterministyczne o 2 stanach komórki (k=2) i otoczeniu składającym się z najbliższych sąsiadów. Zgodnie z powyższą notacją te automaty oznaczamy jako (2,1). Zatem argumentem funkcji F jest stan 3 komórek, każda może być w 2-óch stanach funkcja F musi więc być określona dla 23=8 różnych konfiguracji i przyjmuje jednen z 2-óch stanów. Można więc określić tę funkcję na 28=256 sposobów, co daje 256 możliwych automatów. Tak określone automaty nazywamy za Wolframem – elementarnymi. Często określa się automat elementarny, podając wartości funkcji stanów otoczenia w następującej kolejności:

Zgodnie z tą konwencją wystarczy podać ciąg ośmiu liczb, 0 lub 1. Wygodnie jest traktować ten ciąg jako kolejny numer automatu elementarnego, od 0 do 255, zapisany w postaci dwójkowej. Na przykład dla automatu 90 reguła F jest zdefiniowana następująco:

111 110 101 100 011 010 001 0000 1 0 1 1 0 1 0

Automat 90 jest równoważny działaniu XOR na stanach sąsiadów komórki centralnej. Wyróżnia się on tym, że z jednej komórki produkuje fraktal: dywan Sierpińskiego (rys. 3.7).

Szczególne znaczenie przypisywał Wolfram automatom tzw. legalnym, które spełniają pewne żądania dodatkowe. Mianowicie zachowany jest stan próżni (ang. quiescent state), czyli ostatni bit w regule F jest równy 0, oraz funkcja F jest

Rysunek 3.7. Efekt działania automatu 90 – dywan Sierpińskiego

Page 19: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 14

symetryczna, F(abc)=F(cba). Te warunki ograniczają zbiór do 32 automatów. Automaty elementarne są rodziną łatwą do badania, bo jest ich stosunkowo niewiele. W skład rodziny (3,1) wchodzi już automatów.

3.1 Cellular neural networks

Jednym z ciekawszych połączeń sieci neuronowych i automatów komórkowych są komórkowe sieci neuronowe (ang. CNNs - Cellular Neural Networks). Wykorzystywane są głównie do wstępnego przetwarzania obrazów przy ich rozpoznawaniu za pomocą systemów komputerowych.

Koncepcja CNN, narodziła się w 1988 w laboratoriom w Berkeley za sprawą Leona O. Chua [Mer 97]. Jednym z najistotniejszych powodów stosowania CNNs w rozpoznawaniu obrazów jest możliwość bardzo szybkiego przetwarzania obrazów za pomocą CNNs zrealizowanych jako układy sprzętowe bardzo wielkiej skali integracji (ang. VLSI). CNNs składają się z sieci nieliniowych komórek (elementów) przetwarzających. Podobnie, jak w sieciach neuronowych ich „inteligencja” bierze się ze współdziałania wielu połączonych elementów. Jednakże w odróżnieniu od NN ich połączenia przebiegają tylko do najbliższych sąsiadów w sensie geometrycznym sieci, niż pomiędzy warstwami elementów, jak to często bywa w wypadku sieci neuronowych. Najczęściej rozpatrywanym kształtem sieci jest regularna, kwadratowa, dwuwymiarowa siatka. Aczkolwiek czasem rozważa się sieci zbudowane na bazie trójkątów, sześciokątów. Poniżej przestawiona zostanie idea CNNs opartych na siatce kwadratu

gdy , określa komórkę w dwuwymiarowej przestrzeni MxN komórek. Każda z komórek oddziałuje tylko ze skończoną liczbą komórek z jej otoczenia, odległych nie dalej niż promień otoczenia r. Obszar interakcji jest zwany polem wrażliwości (ang. – receptive field) i definiuje się następująco:

(3.1)Zazwyczaj CNN definiuje się następująco:

(3.2)

gdzie U to macierz zawierająca obraz wejściowy, Y to macierz obrazu wyjściowego, a X to stan wewnętrzny komórek automatu. to funkcja przejścia automatu do następnego stanu, a to funkcja przejścia X na Y. Rozpisując postać macierzową uwzględniając funkcję sąsiedztwa możemy powyższe równanie zapisać jako:

(3.3)

CNN zmienia stan komórek w każdym cyklu synchronicznie i deterministycznie zgodnie z funkcją . Operacja ta jest wykonywana równocześnie dla wszystkich komórek i jest nazywana komórkową operacją logiczną (ang. CLO - Cellular Logic Operation). Obliczenia kończą się po spełnieniu zadanego kryterium stopu, którym zazwyczaj jest ustabilizowanie się układu.

Page 20: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 15

Przedstawiony model zakłada istnienie dyskretnego czasu (DT-CNN – Discrete Time CNN) Najczęściej jednak stosowany model CNN odbiega nieco od klasycznego podejścia CA, gdzie każda zmiana stanu związana jest z pojedynczym krokiem iteracji i zastosowaniu CLO oraz zakłada istnienie ciągłego czasu (CT-CNN - Continuous Time CNN). Różnica tkwi w symulowaniu zachowania ciągłego w czasie, za pomocą dyskretnej liczby kroków, stosując całkowanie numeryczne.Model ten uwidoczniony jest na rysunku 3. 8 i opisuje je równanie:

(3.4)

gdzie C to kondensator całkowania, R – rezystor sprzężenia zwrotnego. A i B to macierze o wymiarach [2r+1, 2r+1]. Macierz A zwana jest operatorem sprzężenia zwrotnego (ang. feedback operator), B to macierz kontrolna. Wskaźniki w tych macierzach wygodnie jest numerować od –r do +r zamiast od 1 do 2r+1 tak, że środkowy element ma indeks a0,0. I jest stałym pobudzeniem (ang. bias) f jest funkcją progową, przedstawioną na wykresie 3.1 i zdefiniowaną wzorem:

(3.5)

CNN operują na obrazach monochromatycznych tak, że –1 odpowiada bieli, a +1 czerni. Problematyczne może być zastosowanie powyższego wzoru do komórek brzegowych, które nie posiadają wszystkich sąsiadów. Wtedy zazwyczaj arbitralnie zakłada się, że wartości poza obszarem NxM macierzy Y i X mają pewną wartość, zazwyczaj 0.Zakładając, że C i R są równe 1, i że suma iloczynów odpowiada iloczynowi korelacji (ang. correlation product), możemy powyższe równanie zapisać:

(3.6)

Warunki początkowe można dla CNN ustawić w dwojaki sposób:

Rysunek 3.8. Model CT-CNN [Mer 97]

Wykres 3.1: Wykres funkcji f(x)

Page 21: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 16

- Obraz wejściowy jest początkowym stanem CNN (macierz X). Przy takim założeniu tylko macierz A i I są istotne natomiast, B=0

- W drugim wypadku stan początkowy automatu jest zazwyczaj stałą wartością, a obraz wejściowy jest podawany poprzez macierz kontrolną B.

3.1.1 Przykłady działania CNN

Na stronach WWW można odnaleźć sporo aplikacji pozwalających samodzielnie poeksperymentować z zaprezentowanym modelem. Według autora poniższe odsyłacze zasługują na uwagę:http://www.isi.ee.ethz.ch/~haenggi/CNN16_neg.htmlhttp://www.isi.ee.ethz.ch/~haenggi/CNN_web/CNNsim_adv.html

3.1.1.1 Wykrywanie krawędziWarunki początkowe [int 08]:X(0)=0U(t) to obraz wejściowy

, , (3.7)

Po ustabilizowaniu się układu otrzymujemy krawędzie wyodrębnione w obrazie wejściowym (rys. 3.9).

3.1.1.2 Usuwanie szumuStan początkowy CNN w chwili 0 -X(0) to obraz wejściowy, U(0) jest również obrazem wejściowym [Mer 97].

Rysunek 3.9. Efekt działania CNN

Page 22: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 17

, , I=0 (3.8)

Rysunek 3.10 przedstawia kolejne iteracje działania CNN usuwającej zanieczyszczenia (szum) z obrazu wejściowego (a).

Rysunek 3.10. Efekt działania CNN [Mer 97]

Page 23: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 18

4. Moduł CoDi

Jak wspomniano we wstępie sztuczne sieci neuronowe, których nauka opiera się o algorytmy ewolucyjne wydają się być tematem szeroko znanym. Istnieje wiele dróg umożliwiających zaprzęgnięcie ewolucji i algorytmów selekcji do tworzenia sieci o pożądanych właściwościach. Jednakże zespół naukowców skupionych wokół osoby Hugo de Garisa w Japonii zainicjował badania nad bardzo obiecującym kierunkiem łączącym automaty komórkowe z algorytmami genetycznymi [int 04]. Jakkolwiek prace nad tworzeniem sieci komórkowych w oparciu o CA były prowadzone wcześniej, zespół de Garisa skonsolidował dotychczasowe doświadczenia i wypracował spójny prosty model. Publikując szczegóły wykorzystanych algorytmów oraz ich kod źródłowy umożliwił szerokiej rzeszy badaczy odtworzenie ich eksperymentów oraz własne innowacje.

Nowatorskim podejściem jest wprowadzenie genetycznie kodowanej fazy wzrostu, gdzie na podstawie chromosomu, komórki automatu przekształcają się w aksony, dendryty albo neurony. Sam automat komórkowy składa się z sześciennych komórek, a każda z nich w fazie sygnalizacji w sposób odmienny przewodzi sygnały do i od komórek sąsiadów automatu. Wszelkie algorytmy i sposób działania automatu komórkowego zostały szczegółowo opisane w poniższym rozdziale. Autor starał się je opisać możliwie precyzyjnie bazując na pracy [Kor 98] oraz źródłach aplikacji w C udostępnionej przez autorów [int 05]. Ponieważ istnieją rozbieżności i niejasności między wspomnianą pracą i kodem źródłowym, jako podstawę do opisu przyjęto kod źródłowy, gdyż zapewnia on najbardziej formalny opis użytych algorytmów nie pozostawiający niejasności w przeciwieństwie do opisu werbalnego. Ponadto, z porównania aplikacji i pracy wynika, iż ta aplikacja była podstawą prezentowanych wyników.

4.1 Algorytm działania

Model CoDi (ang. Collect and Distribute) operuje w trójwymiarowej przestrzeni automatu komórkowego. Każda jego komórka kontaktuje się z każdym z 6 sąsiadów stykających się ścianami (sąsiedztwo von Neumanna). Faza tworzenia sieci neuronowej przebiega w 2 etapach. Pierwszy to faza wzrostu, gdzie na podstawie chromosomu konstruowana jest struktura sieci i poszczególne komórki nabierają specyficznych własności. Drugi etap to faza sygnalizacji, gdzie w tak skonstruowanej sieci podaje się sygnały wejściowe na neurony wejściowe oraz są odczytywane odpowiedzi z neuronów wyjściowych. Neuronami mogą być tylko niektóre komórki leżące na rzadszej siatce 2x2x3. Każda komórka posiada swoją orientację w przestrzeni 3D, tzn. jeden z kierunków jest wyróżniony i obok typu komórki, decyduje o jej reakcji na bodźce. Wizualna postać modułu CoDi po fazie wzrostu przedstawiona jest na rysunku 4.11.

W fazie wzrostu komórki na podstawie chromosomu i pobudzeń z sąsiednich komórek przekształcają swój typ. Ważne jest, że jeden chromosom determinuje jedną konkretną sieć. W trakcie fazy wzrostu każda z komórek może przekształcić swój typ na:- pusta - nie bierze udziału w fazie sygnalizacji, gdyż nie przewodzi sygnałów,- neuron - 4 z 6 połączeń są dendrytami (dostarczają impulsów) 2 są aksonami

rozsyłają odpowiedź neuronu. Neuron posiada akumulator (4 bity) sumujący napływające sygnały i „odpalający” (ang. fire) pobudzenie, kiedy przekroczona zostanie wartość progowa. Komórka może być zorientowana na 6 różnych sposobów w przestrzeni 3D,

Page 24: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 19

- dendryt - posiada 5 wejść i jedno wyjście. W wypadku dokładnie jednego pobudzenia na jednym z pięciu wejść, wysyła pobudzenie na swoje wyjście,

- akson - Przeciwieństwo dendrytu. Posiada 1 wejście i 5 wyjść. W każdym cyklu sygnalizacji rozsyła sygnał z wejścia na wyjścia.

Początkowo w fazie wzrostu automat składa się z samych pustych komórek, które zawierają 6 bitowy chromosom. To on będzie decydował o kierunku wzrostu drzew dendrytów i aksonów (wzrost prosto, skręt w lewo, podział w lewo i prawo itp.) Razem jest 26 możliwości. Pozycje neuronów wejściowych i wyjściowych są ustalone, natomiast informacja o położeniu pozostałych neuronów zawarta jest w chromosomie. Neurony wysyłają sygnały AKSON_SIG i DENDRYT_SIG do sąsiednich komórek. Puste komórki na podstawie tych sygnałów przekształcają się bądź w dendryty bądź w aksony oraz ustawiają swoją orientację w przestrzeni 3D i propagują sygnał dalej. Tak wzrasta trójwymiarowe drzewo aksonów i dendrytów, które styka się z analogicznymi drzewami wyrosłymi od innych neuronów.

W fazie sygnalizacji dostarczane są pobudzenia do neuronów, a te propagują je dalej do aksonów, z aksonów do dendrytów innych neuronów. W każdym cyklu przesyłana jest binarna informacja tylko miedzy sąsiednimi komórkami. Ponieważ przetwarzana informacja ma charakter binarny powstaje problem przekształcenia sygnałów wejściowych i wyjściowych na/z postaci binarnej do/na postać ciągłą.

Tak powstałej sieci podaje się sygnały i odczytuje odpowiedzi. Na tej podstawie określany jest stopień przystosowania (fitness) danego osobnika (chromosomu). Reprodukowane są najlepsze osobniki. Na całej populacji stosuje się standardowe operatory krzyżowania i mutacji. Po setkach pokoleń ewoluują moduły o pożądanych właściwościach określonych funkcją przystosowania.

4.1.1 Automat komórkowy

Automat komórkowy to trójwymiarowa kostka złożona z sześciennych komórek. Każda z komórek może przekazywać impulsy tylko do sąsiadów, z którymi styka się ścianą. W opisywanym modelu, automat komórkowy umożliwia budowanie struktury sieci neuronowej oraz po jej zbudowaniu (wzroście) za pomocą tego samego automatu z nieznacznie zmienionymi regułami umożliwia obliczenie wartości wyjść sieci na podstawie wejść. Takie podejście daje duże możliwości implementacji algorytmu bezpośrednio za pomocą układów sprzętowych.

Neuron

Dendryt

Akson

Rysunek 4.11. Trójwymiarowy model modułu CoDi

Page 25: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 20

Zarówno faza wzrostu sieci jak i faza obliczenia wyjść (sygnalizacji) przeprowadzana jest w wielu krokach, wedle reguł, które opisują jak mają zachowywać się komórki automatu w zależności od zmian w ich sąsiedztwie – 6 przylegających komórek. Dla trójwymiarowej kostki, każda komórka wymienia w jednym cyklu informacje z 6 sąsiadami (północnym (N) , południowym (S), zachodnim (W), wschodnim (E), górnym (G), dolnym (D)).

Chromosom przenosi cała informację potrzebną do wzrostu sieci. Przenosi on dla każdej komórki następującą informację (rys. 4.12):- informację dla fazy wzrostu: Chneuron – 1 bit. Informuje czy dana komórka jest

neuronem,- informację dla wszystkich komórek do fazy wzrostu. Determinuje ona sposób

wzrostu drzew dendrytów lub aksonów: Chwzrostu – 6 bitów, po jednym na każdy kierunek w 3D,

- informację tylko dla neuronów w fazie sygnalizacji o znaku wejść, czy sygnały napływające z różnych kierunków do neuronu są pobudzające, czy hamujące: Chznaku – 6 bitów, po jednym na każdy kierunek w 3D.

Poza informacja chromosomową, dodatkowo każdy automat komórkowy charakteryzują pozycje wejść oraz pozycje wyjść. Są to komórki, które będą pobudzane sygnałami wejściowymi (wejście sieci) oraz komórki, które dostarczają wyjścia. W przedstawianym modelu informacje te są zadane z góry - wejścia leżą na samym dole kostki (ściana D). Natomiast wyjścia są rozmieszczone w środkowej jej części, a nie jak podpowiadałaby intuicja po przeciwnej stronie, czyli na ścianie U. Dzieje się tak dlatego że kostka posiada zawinięcia (ang. wrap-around) i komórki z dolnej ściany łączą się z komórkami górnej.

Traktowanie pozycji wejść i wyjść jako składowych chromosomu podlegających mutacjom wydaje się niewłaściwe, gdyż ich zmiana spowodowałaby tak wielką zmianę w zachowaniu sieci, iż reszta informacji niesionej przez chromosom stałaby się bezwartościowa.

Istotne jest także że neurony nie mogą być rozmieszczone w dowolnych pozycjach, a tylko w komórkach leżących na pewnej siatce. W modelu przyjęto, że siatka ta jest 2x2x3. Oznacza to, że neuronem może zostać tylko komórka ze współrzędną X i Y podzielną przez 2 i Z podzielną przez 3. Założenie to powoduje, że neurony nie sąsiadują ze sobą, co upraszcza reguły automatu. Powinno także przyśpieszać ewolucję, gdyż zbyt gęste położenie neuronów nie powinno wpłynąć pozytywnie na zachowanie sieci.

Jak już zostało wspomniane, kostka posiada zawinięcia, wejście i wyjście komórek z dołu kostki jest połączone z odpowiadającym wyjściem i wejściem komórki z góry kostki. Podobnie z pozostałymi ścianami. W ten sposób nie ma zdegenerowanych

Chromosom neuron (czy komórka jest neuronem)

1 bit

Chromosom wzrostu

6 bitów

Chromosom każdej z komórek

Chromosom znaku

6 bitów

Rysunek 4.12. Informacja kodowana przez chromosom dla każdej z komórek

Page 26: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 21

komórek. Choć można także założyć, że wszystkie wejścia na zewnętrznych ścianach kostki są nieaktywne (równe 0).

4.1.2 Faza wzrostu

Pierwsza część reguł automatu komórkowego jest zakodowana w chromosomie, który ulega ewolucji z wykorzystaniem podstawowych algorytmów genetycznych. Druga część jest stała i nie ulega ewolucji. W opisywanym modelu w fazie wzrostu każda komórka przechowuje następujące informacje:- typ (2 bity),- bramka (0-5, 3 bity), orientacja komórki w przestrzeni. Dla aksonów wskazuje

kierunek wejścia, ale dla dendrytów i neuronów kierunek wyjścia,- IO pobudzenia od sąsiadów ( 6 buforów, dla każdego kierunku po 2 bity).Razem 17 bitów. Ponadto wykorzystywane są informacje przenoszone przez chromosom

w polu Chwzrostu i Chneuronu (rys. 4.13).Każda komórka w tej fazie przekształci się w jedną z 4 typów:- pusta- neuron- akson- dendryt

Początkowo wszystkie komórki są puste poza tymi, które mają w chromosomie ustawiony Chneuron. One od razu stają się neuronami – które następnie pobudzą sąsiadów do przekształcenia się bądź w dendryty, bądź w aksony, w efekcie łącząc ze sobą inne neurony [Kor 98].

Aktywne pole Chneuron powoduje że w tym miejscu sieci znajduje się neuron. Na podstawie 6 bitowego pola Chwzrostu modulo 6, neuron ustawia swoją bramkę, która określa orientację w przestrzeni 3D. Kierunek wskazywany przez bramkę i do niego przeciwny stanie się wyjściem neuronu – kierunkiem wzrostu aksonów. Pozostałe 4 kierunki to wejścia – w tych kierunkach będą rosły drzewa dendrytyczne. Dzięki symetrii liczba rzeczywistych orientacji neuronu redukuje się zatem do 3.

W każdym cyklu 6 buforów IO spełnia rolę dwukierunkowego połączenia między neuronami. Przed rozpoczęciem cyklu w buforach znajdują się sygnały wejściowe nadchodzące z 6 kierunków. Każda komórka na podstawie swojego typu, kierunku bramki oraz wartości wejść, może zmodyfikować swój typ oraz umieszcza w 6 buforach IO sygnały wyjściowe. W następnym cyklu staną się one sygnałami wejściowymi 6

Typ komórki

2 bity

Bramka

3 bity

Sygnały od / do sąsiada

Chromosom neuron (czy komórka jest neuronem)

1 bit

Chromosom wzrostu

6 bitów

Wykorzystywana informacja

chromosomu

Ustalane w trakcie fazy

wzrostu

Bufory przekazujące informacje między komórkami

N

2 bity bit

W

2 bity bit

S

2 bity bit

E

2 bity bit

G

2 bity bit

D

2 bity bit

Rysunek 4.13. Informacja wykorzystywana przez każdą komórkę w fazie wzrostu

Page 27: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 22

sąsiednich neuronów. Każdy z 6 sygnałów wyjściowych zostanie rozesłany w 6 kierunkach i stanie się pojedynczym sygnałem wejściowym sąsiedniego neuronu. W ten sposób bufory spełniają podwójną rolę wejść i wyjść.Wartości wejścia/wyjścia mogą być następujące:- NIEAKTYWNE- AKSON_SIG- DENDRYT_SIG

Faza wzrostu powinna trwać tak długo, dopóki następuje wzrost połączeń.

Oto reguły automatu w fazie wzrostu:

Reguły neuronuJeżeli komórka jest neuronem, to niezależnie od pobudzeń wejściowych wysyła w

kierunku wskazywanym przez bramkę, oraz do niego przeciwnym, AKSON_SIG, a we wszystkich pozostałych DENDRYT_SIG. W ten sposób od neuronu zaczną odrastać dendryty i aksony. Zachowanie neuronu w fazie wzrostu nie jest zależne od otrzymywanych na wejściu sygnałów.

Reguły komórki pustejJeżeli komórka jest pusta po zakończeniu cyklu może przekształcić się w dendryt

lub akson lub dalej pozostać pustą.Jeżeli dokładnie jedno z wejść niesie pobudzenie AKSON_SIG, to komórka

przekształca się w akson. W polu bramka zostanie zapamiętany kierunek skąd nadeszło pobudzenie. Później, w fazie sygnalizacji, z tego kierunku akson będzie oczekiwał wejścia, które będzie przesyłał dalej. Sześciobitowy Chwzrostu określa, w których kierunkach zostanie propagowany sygnał AKSON_SIG. W kierunkach, dla których bity Chwzrostu są ustawione, komórka wysyła AKSON_SIG. Pozostałe wyjścia będą nieaktywne.

Przez „wysyła” należy rozumieć pozostawienie w buforach IO wartości AKSON_SIG, DENDRYT_SIG lub NIEAKTYWNE. Wartość ta jest wyjściem komórki w danym cyklu, która w następnym cyklu będzie wejściem sąsiedniej komórki.

Zatem komórka pusta po otrzymaniu pobudzenia AKSON_SIG zmienia się w akson i propaguje dalej wzrost drzewa w kierunkach określonych przez Chwzrostu.

Podobnie wygląda postępowanie, gdy dokładnie jedno z wejść niesie pobudzenie DENDRYT_SIG. Komórka przekształca swój typ na dendryt. W polu bramka zostanie zapamiętany kierunek, skąd nadszedł sygnał DENDRYT_SIG. Wyjście z dendrytu będzie przekazywane właśnie w kierunku zapamiętanym w polu bramka. Na podstawie Chwzrostu

zostanie propagowany sygnał DENDRYT_SIG tylko w wybranych kierunkach (buforach IO) pobudzając dalszy wzrost drzewa dendrytów.

Gdy pusta komórka pobudzana jest więcej niż jednym sygnałem, nie reaguje. Wszystkie jej wyjścia przyjmują stan NIEAKTYWNE.

Reguły aksonuJeżeli komórka jest aksonem, to w każdym cyklu ustawia bufory wyjściowe na podstawie 6 bitów Chwzrostu. Dla tych kierunków, dla których bit jest ustawiony, komórka wysyła AKSON_SIG.

Reguły dendrytuGdy komórka jest dendrytem postępuje analogicznie jak akson, z tym że rozsyłany jest DENDRYT_SIG.

Page 28: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 23

Dodatkowe regułyW opisanym automacie występuje pewna asymetria przy rozsyłaniu sygnałów

AKSON_SIG i DENDRYT_SIG. Neuron generuje 2 razy więcej dendrytów niż aksonów. Dlatego w modelu wprowadzono pewną korektę. Są dwa cykle, w których rozsyłane są tylko sygnały AKSON_SIG, po czym następuje jeden cykl, gdzie rozsyłane są tylko sygnały DENDRYT_SIG. W ten sposób dysproporcja zostaje wyrównana.

4.1.3 Faza sygnalizacji

W fazie wzrostu uzyskaliśmy sieć połączonych neuronów. Tak skonstruowana sieć nie podlega już nauce, jak to ma miejsce w klasycznych sieciach neuronowych, gdzie po dobraniu topologii sieci dobiera się wagi połączeń. Należy zwrócić uwagę, że sieć jest siecią synchroniczną, a stan wejść i wyjść w każdym cyklu ulega zmianie. Aksony i dendryty mogą tworzyć sprzężenia zwrotne, dzięki czemu powinna istnieć możliwość zapamiętywania sygnałów podawanych na wejście. Kierunek przepływu informacji między poszczególnymi typami komórek uwidacznia rysunek 4.14.

W fazie sygnalizacji każda komórka zawiera poza polami ustalonymi w fazie wzrostu:- typ (2 bity),- bramka (0-5, 3 bity, kierunek wyjścia).Także:- IO pobudzenia od sąsiadów (6 buforów, dla każdego kierunku 1bit),- znacznik opóźnionego pobudzenia (ZOP) (1 bit),- aktywacja (4 bity).

dendryt

akson

akson

dendryt

dendryt

neuron

Rysunek 4.14. Struktura przepływu informacji między komórkami automatu

Page 29: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 24

Razem 16 bitów. Dodatkowo neurony wykorzystują informację pochodzącą z chromosomu - Chznaku (rys 4.15). Początkowo wszystkie pola są wyzerowane, poza typem i bramką, które w fazie sygnalizacji nie podlegają modyfikacjom. Wejście dostarczane jest do neuronów wejściowych w postaci binarnej. Jedynce odpowiada zwiększenie pola aktywacja o 2, zeru brak zmian. W ten sposób można podawać informację binarną, która wraz z czasem (liczbą cykli) może się zmieniać. Podobnie można odczytywać pobudzenie z neuronów wyjściowych po każdym cyklu sygnalizacji. Jeżeli aktywacja jest różna od 0, można przyjąć, że neuron jest pobudzony. Otrzymujemy odpowiedź binarną, zmienną w czasie. Należy pamiętać, aby do sieci wprowadzić odpowiednią liczba neuronów, które są pobudzane w każdym cyklu. W ten sposób dostarczane jest pewien poziom pobudzenia dla całego modułu.

Bufory IO spełniają analogiczną rolę jak w fazie sygnalizacji. Na początku każdego cyklu przechowują wejścia od sąsiadów, a po jego zakończeniu zawierają informację, która jest odpowiedzią neuronu w danym kierunku. Po zakończeniu cyklu wyjścia zgromadzone w buforach IO dane są rozsyłane do buforów IO sąsiadów, stając się ich wejściami w kolejnym cyklu.Oto reguły automatu w fazie sygnalizacji:

Reguły pustej komórkiPusta komórka nie reaguje i nie wysyła żądnych pobudzeń.

Reguły neuronuDla wszystkich kierunków wzrostu dendrytów (kierunki rożne od kierunku bramka

i do niego przeciwnego) sumowane są ich pobudzenia wejściowe z buforów IO. Z tym, że jeżeli bit w chromosomie znaku odpowiadający danemu kierunkowi jest ustawiony na 0, to pobudzenie traktowanej jest jako dodatnie (+1), w przeciwnym wypadku dane pobudzenie traktowane jest jako hamujące i ma wartość (-1). Do sumy dodaje się wartość pola aktywacji.

Jeżeli tak uzyskana aktywacja neuronu jest >=2, to ustawiany jest znacznik opóźnionego pobudzenia (ZOP) oraz zeruje się pole aktywacji. ZOP informuje, że neuron w następnym cyklu ma „wypalić” tzn. ustawić swoje wyjścia w kierunku aksonów. W ten sposób symulowane jest zachowanie prawdziwych neuronów, które reagują na pobudzenie z niewielkim opóźnieniem [Żur 96]. W następnym cyklu, jeżeli ZOP jest ustawiony, neuron na swoich wyjściach (w kierunku bramki i przeciwnym) ustawia stan aktywny oraz zeruje ZOP.

Jeżeli sumaryczna aktywacja jest w przedziale –7..1, to wartość ta zapisywana jest do pola aktywacja. W ten sposób aktywacja jest kumulowana w neuronie do momentu, gdy przekroczy ona bądź próg dolny –8, bądź górny 1.

Typ Komórki

2 bity

Bramka

3 bity

Aktywacja

4 bity

Modyfikowane w każdym cyklu fazy sygnalizacji

Ustalone w trakcie wzrostu

Chromosom znaku

6 bitów

Wykorzystywana informacja chromosomu

ZOP

1 bit

Sygnały od / do sąsiada

N

1 bit bit

W

1 bit bit

S

1 bit bit

E

1 bit bit

G

1 bit bit

D

1 bit bit

Rysunek 4.15. Informacja wykorzystywana przez każdą komórkę w fazie sygnalizacji

Page 30: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 25

Gdy całkowita aktywacja jest <-8, to pole jest zerowane. W ten sposób neuron reaguje na mocne pobudzenia hamujące.

Reguły aksonuUstawia na wszystkich 6 wyjściach oraz w polu aktywacji wartość odczytaną z

wejścia aksonu. Wejście aksonu to pobudzenie, które nadchodzi z kierunku wskazywanego przez pole bramka.

Reguły dendrytuGdy pobudzone jest dokładnie jedno wejście komórki, nie licząc wyjścia

wskazywanego przez pole bramka, to wyjście dendrytu jest ustawiane w stan aktywny. W przeciwnym przypadku wszystkie wyjścia dendrytu są nieaktywne.

4.2 Kodowanie analogowe

Sygnały otrzymywane z sieci mają postać dyskretną. Powstaje zatem problem jak przekształcić ciąg dyskretnych wartości 0 i 1 na wartości ciągłe. W [Kor 98] przedstawiono metodę SIIC (Spike Interval Information Coding). Polega ona na wymnożeniu sygnału wyjściowego z sieci przez specjalny filtr. Strumień bitów wyjściowych powinien być przynajmniej tak długi jak ilość próbek filtra. Filtr przedstawiony jest na wykresie 4.2. Początkowe wartości 0 wynikają z faktu, że pierwsze próbki wyjściowe nie mają znaczenia, gdyż sieć musi mieć czas na propagację pewnego

poziomu pobudzenia po całym module.Kolejne wartości wyjścia są mnożone przez kolejne wartości filtru. W ten sposób

uzyskujemy pierwszą ciągłą wartość. Następnie przesuwamy filtr o 1 próbkę wyjściową do przodu (1 bit) i ponownie mnożymy kolejne zero-jedynkowe wartości wyjścia przez odpowiadające wartości filtru. Tak otrzymujemy kolejne próbki oczekiwanej ciągłej funkcji. Błąd kwadratowy odległości próbek uzyskanej funkcji od funkcji żądanej może posłużyć jako funkcja fitness przy ocenie ewoluowanych układów.

Tak zdefiniowana operacja nosi nazwę konwolucji (ang. convolution). Odwrotna operacja zamieniająca sygnał analogowy w binarny nosi nazwę dekonwolucji (ang. deconvolution).

Wykres 4.2. Filtr konwolucji i dekonwolucji

Page 31: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 26

5. Moduły CoDi i sztuczny mózg

Hugo de Garis jest szefem laboratorium badawczego Brain Builder Group w ATR (Advanced Telecommunications Research Institute) w Kyoto. Oryginalnym celem projektu „CAM-Brain Project” z 1993 roku było zbudowanie z wykorzystaniem modułów CoDi, do roku 2001 sztucznego mózgu składającego się z miliarda neuronów. Owe moduły miały wzrastać i ewoluować w specjalnym urządzeniu opartym na układach sprzętowych FPGA (Field Programmable Gate Array) nazywanym CAM-Brain Machine, które może zmieniać stany komórek z szybkością 152 mld./s i wyewoluować jeden moduł w ciągu sekundy. Zakładano, że z taką prędkością możliwe będzie stworzenie sztucznego mózgu. Dziesiątki tysięcy modułów można by łączyć w zdefiniowaną wcześniej architekturę sztucznego mózgu. Wyewoluowane moduły miały być przechowywane w pamięci i dzięki szybkości CBM miały kontrolować tworzonego robota – kota, nazwanego Robokoneko. 24 marca 1999 ATR otrzymało działające CBM, które było projektowane i budowane od stycznia 1997. W ciągu roku 1999 zespół de Garisa próbował stworzyć mózg składający się z 32000 modułów i do 40 mln. neuronów kontrolujących zachowania robota [Bul 98,Tup 99].

5.1 Maszyna CAM-Brain (CBM).

Sztuczny mózg wspomagany przez CBM zawiera 32768 modułów neuronowych, każdy zawierający maksymalnie 1152 neurony, a więc razem 37,7 milionów neuronów. Każdy moduł może otrzymać sygnały z dochodzących aksonów od maksymalnie 188 innych modułów, przy czym każdy z tych aksonów może się jeszcze rozgałęziać i łączyć z wieloma dendrytami. Każdy moduł wysyła wychodzące gałęzie aksonów do maksymalnie 32768 innych modułów.

Ocenia się, że szybkość przetwarzania CBM jest rzędu 10000 komputerów PII 400MHz. Zasadniczą cechą CBM jest to, że neurony nie są ręcznie projektowane, lecz ewoluowane sprzętowo. Algorytmy genetyczne operują na chromosomach reprezentujących sieci neuronowe o różnych topologiach i funkcjach. Najlepiej wykonujące daną funkcję są wybierane i reprodukowane z wykorzystaniem rekombinacji i mutacji. Po kilkuset pokoleniach uzyskuje się skomplikowane sieci o założonej funkcjonalności i nie jest konieczna wiedza a priori przy założeniu, że znana jest pożądana funkcja wejścia/wyjścia.CBM składa się z 6 większych bloków:– moduł automatu komórkowego (ang. CA Module),– pamięci genotypu i fenotypu GPM (ang. Genotype/Phenotype Memory),– jednostki licząca przystosowanie FEU (ang. Fitness Evaluation Unit),– jednostki algorytmu genetycznego GAU (ang. Genetic Algorithm Unit),– pamięci połączeń międzymodułowych MIM (ang. Module Interconnection Memory),– interfejsu zewnętrznego.

5.1.1 Moduł automatu komórkowego CA

Stanowi on sprzętowy rdzeń CBM. Szybkość ewolucji mózgu jest przyspieszona za pomocą wysoce równoległego wykonania uaktualnień stanów komórek. Moduł CA składa się z identycznych sprzętowo jednostek logicznych (komórek), ułożonych w trójwymiarową strukturę 24x24x24 komórek. Komórki warstwy górnej są połączone rekurencyjnie z komórkami tworzącymi warstwę dolną, analogicznie połączone są

Page 32: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 27

warstwy boczne. Pozwala to na zwiększenie zdolności wzrostu aksonów i dendrytów. W trakcie obliczeń przetwarzany jest tylko jeden moduł. Dzięki wykorzystaniu odpowiednich buforów, w trakcie pracy jednego modułu następny jest już konfigurowany i nie ma przerw w pracy FPGA.

Powierzchnie sześcianu mają zewnętrzne połączenia pozwalające na przyjmowanie sygnałów z innych modułów. Każda powierzchnia ma macierz 64 połączeń powtórzoną po drugiej stronie, co daje 192 połączenia. Trzy połączenia położone w centralnej części każdej z powierzchni i jedno dodatkowe w rogu stanowią punkty wyjścia sygnałów.

Moduł CA jest zbudowany z urządzeń FPGA Xilinx XC6264. Są one w pełni rekonfigurowane, posiadają 16384 komórek logicznych zawierających przerzutnik, który może zmieniać stan z częstotliwością 220 MHz. Komórki połączone są z sąsiadami na kilku poziomach semantycznych zapewniając jednakowy czas propagacji niezależnie od długości połączenia. W celu stworzenia modułu w każdym urządzeniu XC6264 konfigurowane są identyczne komórki logiczne wraz z 1-bitowymi szynami sygnałowymi. XC6264 może w sposób optymalny modelować 192 (4x6x8) komórek CoDi. Taki elementarny blok komórek wymaga 208 połączeń w celu realizacji większego bloku 6 układów FPGA. W sumie koniecznych jest 72 układów XC6264, aby zbudować sześcian 24x24x24. CBM zawiera więc 72 połączone między sobą układy FPGA. Częstotliwość zmiany stanów komórek można wybrać spośród 8,25, 9,42 i 11 MHZ. Z tą częstotliwością wszystkie 13824 komórki są uaktualniane równolegle, co odpowiada szybkości 114 do 152 miliardów komórek na sekundę.

Każdy z 72 układów FPGA zawiera 16 MB pamięci przechowującej genotyp i fenotyp modułów neuronowych co daje w sumie 1180 MB. CBM może działać w dwóch trybach – ewolucji i normalnego działania. Tryb ewolucji obejmuje fazę wzrostu i fazę sygnalizacji. W czasie fazy wzrostu pamięć przechowuje chromosomy ewoluującej populacji modułu (genotyp). Moduł 13824 komórek potrzebuje ponad 91 kilobitów pamięci.

W trybie działania pamięć przechowuje fenotyp wyewoluowanych modułów. Dane fenotypu opisują drzewa aksonów i dendrytów oraz neurony zawarte w każdym module. Dane te są ładowane do modułu CA w celu skonfigurowania go zgodnie z wyewoluowaną funkcją.

Pamięć jest więc wykorzystywana do szybkiej rekonfiguracji układów FPGA. Rekonfiguracja odbywa się równolegle z działaniem modułu dzięki dualnym rejestrom w każdej komórce. Gwarantuje to płynne działanie bez konieczności oczekiwania na przeładowanie się modułu w trybie ewolucji, czy działania. Pamięć może obsługiwać do 32768 połączonych modułów naraz.

5.1.2 Jednostka obliczająca przystosowanie FEU

Sygnały w CBM stanowią ciągi impulsów – sekwencje jedynek rozdzielonych zerami podobne do tych w biologicznych neuronach. Informacja reprezentująca zewnętrzne lub wewnętrzne bodźce jest kodowana w postaci ciągów impulsów metodą Spike Interval Information Coding (rozdział 4.2).

Gdy moduł jest ewoluowany, liczone jest jego przystosowanie. W fazie sygnalizacji moduł otrzymuje do 188 różnych ciągów impulsów i generuje do 3 różnych ciągów wyjściowych. Porównanie ich z pożądanym wyjściem pozwala na określenie przystosowania modułów. Obliczanie przystosowania jest wspomagane przez jednostkę składającą się z bufora ciągu wejściowego, bufora ciągu docelowego oraz elementu liczącego przystosowanie. W każdym cyklu zegarowym ciąg wejściowy jest pobierany ze stosu i podawany na wejście modułu. W tym samym czasie pobierany jest ciąg docelowy,

Page 33: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 28

żeby można go było porównać z bieżącym wyjściem modułu. Element liczący przeprowadza konwolucję i liczy sumę bezwzględnych różnic kształtu fali dla całej fazy sygnalizacji. Po zakończeniu fazy sygnalizacji miara przystosowania jest natychmiast dostępna.

5.1.3 Jednostka algorytmu genetycznego GAU

W celu wyewoluowania modułu realizowana jest populacja modułów poprzez wyliczenie ich przystosowania zgodnie z powyższą procedurą. Do dalszej reprodukcji wybiera się podzbiór najlepszych modułów. Łączenie i mutacja wybranych modułów są wykonywane przez CBM z określoną dla fazy genetycznej prędkością. W tej fazie każda komórka stosuje maski krzyżowania i mutacji oraz rejestry rodziców i potomstwa. Generacja chromosomu potomka następuje więc w ciągu nanosekund bezpośrednio w sprzęcie, algorytm selekcji wykonywany jest na dołączonym przez szynę PCI komputerze.

5.1.4 Pamięć połączeń międzymodułowych MIM

Pamięć ta jest wykorzystywana w trybie działania, kiedy wymagana jest współpraca wielu modułów funkcjonujących jako jeden mózg. Każdy moduł może otrzymać sygnały od 188 innych. Lista modułów źródłowych jest przechowywana w zewnętrznym komputerze. Dla każdego z 32768 modułów pamięć sygnałów przechowuje trzy 128 bitowe ciągi impulsów wyjściowych. W trybie działania podczas konfigurowania modułu bufor sygnałów wejściowych również jest ładowany maksymalnie 188 ciągami impulsów, które zostały zapamiętane podczas poprzednich sygnalizacji modułów źródłowych. W tym samym czasie trzy ciągi wyjściowe bieżącego modułu są zapisywane w pamięci sygnałów. Jak widać cykliczne przeładowywanie modułów wiąże się z ciągłym zapisywaniem i odtwarzaniem ciągów z pamięci sygnałów.

Dla 32768 modułów szybkość działania CBM pozwala każdej komórce propagować w przybliżeniu 256-bitowe ciągi impulsów na sekundę. Taki ciąg może zawierać 64 bajty informacji zakodowanej metodą SIIC. Każdy neuron dostaje do 5 ciągów, neurony w mózgu przetwarzają do 188 milionów ciągów. Stąd szybkość przetwarzania informacji przez wszystkie neurony jest rzędu 12GB/s. Przy założeniu, że komórki dendrytów zajmują ok. 50% przestrzeni komórkowej i mają średnio 2,5 gałęzi przepustowość informacyjna dendrytów wynosi ok. 36GB/s.

5.1.5 Interfejs zewnętrzny

Architektura pozwala na przesyłanie i odbiór ciągów impulsów nie tylko do/z pamięci sygnałów lecz również poprzez zewnętrzny interfejs. Każdy moduł może otrzymać do 188 i wysłać do 4 ciągów do urządzenia zewnętrznego, np. robota, systemu przetwarzania mowy, itd. W mózgu z 32768 modułami szybkość informacyjna wynosi do 14 KB/s na moduł i 400 MB/s całościowo.

5.2 Robokoneko

Celem projektu CAM-Brain było początkowo skonstruowanie sztucznego kota, który w założeniach miał się uczyć, zapamiętywać i miał przypominać zachowanie żywego kota. Członkowie projektu przyznają, że wybór wynikł z powodów czysto strategicznych. Tworzenie mózgu wciąż jeszcze jest w fazie koncepcyjnej, a sztuczny kot miał zapewnić zainteresowanie sponsorów oraz mediów.

Page 34: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 29

Prawidłowe zachowanie kota miało zostać osiągnięte poprzez zastosowanie odpowiedniego zbioru reguł. Aby wyewoluować moduły kontrolujące ruchy kota, wydaje się celowe pobieranie stanu poruszających nim silników i podawanie go na wejście modułów. Planowano również instalację przyspieszeniomierzy i żyroskopów dostarczających dodatkowych danych oraz mikrofonów, kamer, czujników dotykowych.

Moduły kontroli ruchu miały być ewoluowane na symulatorze komputerowym, symulującym rzeczywiste mechaniczne środowisko. Mechaniczny pomiar przystosowania jest bowiem niepraktyczny i zbyt wolny. Początkowo robot miał być symulowany programowo za pomocą narzędzia symulacji rzeczywistości - Working Model 3D oraz oprogramowania połączonego z CBM pozwalającego na automatyczny pomiar i obliczenie przystosowania. Rzeczywisty robot nie jest wystarczająco niezawodny dla nauki zachowań ruchowych kota, która wymaga przecież tysięcy iteracji. Wyewoluowane w tym środowisku rozwiązanie miało być wprowadzone do sztucznego mózgu i umożliwić przetestowanie, czy generowane sygnały powodują identyczne z założonym zachowanie robota.

5.3 Sztuczny mózg

Twórcy projektu zakładali dualny sposób osiągnięcia celu – zbudowania sztucznego mózgu. W założeniach prace miały być oparte o koncepcję bottom-up i top-down. Pomysł tworzenia mózgu począwszy od pojedynczych modułów realizujących proste funkcje, łączonych w coraz bardziej skomplikowane systemy aż do stworzenia pełnego mózgu, można nazwać strategią bottom-up. Strategia top-down wymaga całościowej wizji, jak powinna wyglądać rola i współpraca modułów składających się na mózg. Może ona być skuteczna w przypadku prostych tworów, np. Robokoneko. W przypadku bardziej zaawansowanych projektów skuteczna może się okazać strategia top-down-top.

Architekt najwyższego poziomu proponuje schemat sztucznego mózgu, dzieląc go na moduły o jasno określonych funkcjach. Wyznacza się potem osoby, z których każda zajmie się konkretnym blokiem. Dalej postępuje się analogicznie, dzieląc problem na coraz mniejsze fragmenty, aż na którymś poziomie uzyskane zostaną bloki dające się zrealizować w module CoDi. Wyewoluowane moduły wracają do architekta wyższego poziomu, który dodaje geny kodujące połączenia między modułami, po czym testuje działanie całego bloku. W razie potrzeby modyfikuje założenia i odsyła moduły do ponownej realizacji. Gotowy blok przekazuje do poziomu wyższego. W ten sposób gotowe fragmenty przechodzą z powrotem do wyższych poziomów, docierając w końcu do najwyższego, gdzie złożony zostanie mózg.

5.4 Napotkane problemy

Projekt w ostatnim czasie stracił na rozgłosie. Jakkolwiek jest dalej kontynuowany, postawiony cel wydaje się jeszcze bardzo odległy. Wydaje się, że animatorom projektu od początku brakuje koncepcji, jak z pojedynczych modułów stworzyć urządzenie, które miałoby zdolności zapamiętywania, uczenia się i samoistnego doskonalenia swego zachowania. Jakkolwiek moduły CoDi są ciekawym podejściem do NNs, o tyle prace nad sieciami neuronowymi prowadzone są od lat 40-tych (rozdział 2). Koncepcja top-down i bootom-up, bardziej przypomina sposób na napisanie programu spełniającego specyfikację. Za pomocą CBM można wyhodować w krótkim czasie wiele modułów spełniających postawione zadanie, łączyć je w większe całości, jednak można również zaimplementować taką koncepcję za pomocą standardowych metod programistycznych,

Page 35: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 30

zamiast mozolnie ewoluować moduły o zadanych własnościach. Moduły CoDi mają teoretycznie zdolność zapamiętywania informacji, dzięki możliwości wykształcenia się sprzężeń zwrotnych między neuronami, jednak ta informacja jest przetwarzana przez moduł wyewoluowany wedle ściśle zadanych kryteriów – funkcji fitness. Stąd wszelkie zachowania modułu (lub wielu modułów) są w pewien sposób zaprogramowane i narzucone odgórnie. Można wstępnie zaprojektowany mózg douczać za pomocą procesów ewolucyjnych, jednak jak wyodrębnić który element wielomodułowej struktury zawiódł, jeżeli na przykład Robokoneko przewróci się. Problematyczne wydaje się rozstrzygnięcie, czy jest to układ odpowiedzialny za rozpoznawanie otoczenia, jego zapamiętywanie, czy za poruszanie się.

Koncepcja wielu modułów, sprowadza się w gruncie rzeczy do ewolucji jednego olbrzymiego modułu, którego funkcja fitness ocenia zachowanie się „mózgu” jako całości. Przy olbrzymiej liczbie neuronów istnieje zapewne rozwiązanie w przestrzeni rozwiązań dla takiego modułu, jednak konieczne jest zdefiniowanie funkcji przystosowania i znaleźć taki moduł w rozsądnym czasie. Dekompozycja całości na mniejsze bloki, na pewno redukuje czas poszukiwań i powoduje, że otrzymane wyniki mogą być zadowalające, jednak przypominają nowy język programowania, oparty na modułach CoDi. Takie podejście nie wykształci jednakże żadnych zachowań poza zaprogramowanymi w procesie dekompozycji.

Page 36: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 31

6. Opis systemu

Istotnym problemem, który należy rozważyć wykorzystując GA jest dobre zdefiniowanie funkcji przystosowania dla osobników populacji kodowanych za pomocą zestawu genów zawartych w chromosomie. W większości zastosowań operacje genetyczne takie, jak krzyżowanie i mutacja mają znikomy wpływ na szybkość procesów ewolucyjnych, a najbardziej czasochłonną częścią implementacji jest algorytm obliczania funkcji przystosowania. Dzieje się tak głównie za sprawą tego, że zazwyczaj do uzyskania dobrych wyników liczba osobników biorących udział w ewolucji powinna być możliwie największa. Liczby pokoleń również nie należy zmniejszać, aby dać możliwość GA dobrego przeszukania przestrzeni rozwiązań, nie dopuszczając do utykania w optimach lokalnych.

Podobnie jest w wypadku modułów CoDi, jednakże, jak stwierdzono we wstępnych testach, czas obliczenia funkcji przystosowania jest naprawdę duży i określenie pojedynczego przystosowania dla rozpatrywanej klasy problemów jest rzędu sekund. Zakładając skromne wielkości populacji 100 i liczbę pokoleń na 1000 cały eksperyment należy szacować w dniach.

W trakcie prac dość szybko stało się jasne, iż przeprowadzenie planowanych eksperymentów za pomocą implementacji wykorzystującej tylko jeden procesor, może być bardzo trudne, lub wręcz niemożliwe ze względu na olbrzymią ilość obliczeń, jakie należy wykonać w trakcie symulacji modułu CA będącego modułem CoDi.

Jak wiadomo algorytmy genetyczne są klasą problemów, które świetnie nadają się do paralelizacji i rozpraszania. Jednakże te z natury równoległe algorytmy, zazwyczaj rozwiązuje się sekwencyjnie [Gol 98]. Cechą GA jest to, że ich zapotrzebowanie na moc obliczeniową jest duże. Im więcej mocy obliczeniowej pochłonie proces ewolucji, tym możemy być pewniejsi, że wyniki są bliżej optimum globalnego problemu postawionego przed GA. W celu zrealizowania możliwie dużej liczby eksperymentów w rozsądnym czasie, niezbędne wydało się opracowanie obok implementacji sekwencyjnej, implementacji równoległej.

Moduły CoDi jako automaty komórkowe nadają się świetnie do zrównoleglenia, jednak komunikacja między poszczególnymi komórkami automatu powinna być szybka, ich liczba wielka, a operacje wykonywane w komórce zbyt proste, aby rozpatrywać zrównoleglenie obliczeń na poziomie komórek pojedynczego modułu. Przy tak drobnych operacjach bardziej adekwatna jest konstrukcja specjalnego sprzętu opartego o FPGA (ang. - Field Programmable Gate Array). Takie rozwiązanie jest już stworzone i funkcjonuje (rozdział 5.1). Rozpatrując możliwe do wykorzystania zasoby obliczeniowe opracowano implementację, w której zrównoleglona została najbardziej kosztowna z punktu mocy obliczeniowej operacja – obliczanie przystosowania.

Założono, że zrównolegleniu ulegnie sam proces wyznaczania przystosowania pojedynczego osobnika, natomiast cały proces ewolucji będzie scentralizowany. Proces master będzie przechowywał aktualny stan populacji, a procesy slave otrzymywać będą zadania obliczania przystosowania pojedynczych osobników. Centralny proces jest także odpowiedzialny za wykonywanie wszelkich operacji genetycznych na materiale genetycznym (selekcja, krzyżowanie, mutacja).

Takie podejście jak przedstawione w rozdziale 7 pozwoliło wydatnie przyśpieszyć prowadzone eksperymenty.

Page 37: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 32

6.1 Reprezentacja genetyczna oraz operatory

Reprezentacja genotypuGenotyp reprezentowany jest w najprostszy z możliwych sposobów. Chromosomy

każdej komórki zapisywane są kolejno w pamięci. Operacja mutacji na każdym z pól chromosomu (Chneuronu, Chwzrost oraz Chznaku) może być wykonywana z różnym prawdopodobieństwem. Przy krzyżowaniu uwzględniana jednakże jest trójwymiarowa relacja komórek.

Skalowanie funkcji przystosowaniaZastosowano algorytm skalowania liniowego zaproponowany przez Davida Goldberga

w [Gol 98]. Goldberg w swym modelu zaproponował skalowanie przystosowania według wzoru:

(6.9)przy zachowaniu dwóch podstawowych założeń:

(6.10)(6.11)

gdzie i to przystosowanie pierwotne oraz po przeskalowaniu indeksy dolne oznaczają przystosowanie średnie oraz maksymalne w populacji. określa, w ilu kopiach będzie rozmnożony najlepszy osobnik. Zazwyczaj przyjmuje się równe 2 i taka wartość została przyjęta we wszystkich testach. Jeżeli w populacji istnieją osobniki dużo gorzej przystosowane od średniej, z równania otrzymamy wartości ujemne. W takim wypadku Goldberg proponuje zastąpienie drugiego warunku przez .

Sposoby selekcjiW programie zostały zaimplementowane dwa podstawowe algorytmy selekcji:

1. Metoda ruletki , stochastyczna z powtórzeniami - roulette(pop_size,alpha)2. Metoda stochastyczna według reszt z powtórzeniami - roulette2(pop_size,alpha)gdzie pop_size to poziom nasycenia populacji, a alpha jest tempem dochodzenia rozmiaru populacji do poziomu nasycenia.

Dla każdego osobnika w populacji liczona jest jego wartość przystosowawcza , po czym poddawana jest skalowaniu. W wyniku otrzymujemy .Wartość oczekiwana liczby potomków i-tego osobnika w populacji N(t) jest równa stosunkowi jakości (wartości przystosowawczej) tego osobnika do średniej jakości populacji, zmodyfikowana o aktualny (w danym czasie) stopień nasycenia środowiska S(t):

(6.12)

(6.13)

gdzie N(t) jest rozmiarem populacji w chwili t.Parametr alpha reguluje tempo dochodzenia rozmiaru populacji do poziomu nasycenia środowiska pop_size (zwykle zakładamy alpha=1) [Kwa 99].

Algorytm zmodyfikowano wprowadzając element selekcji elitarnej tak, żeby określony procent najlepszych osobników przechodził do następnego pokolenia bez żadnych operacji genetycznych (krzyżowanie, mutacja). W ramach eksperymentów

Page 38: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 33

zakłada się jednak brak elitarnej selekcji, a używanym modelem selekcji jest metoda stochastyczna według reszt z powtórzeniami.

MutacjaOperator mutacji z zadanym prawdopodobieństwem dla każdej z 3 grup materiału

genetycznego (Chneuronu, Chwzrost, Chznaku) zmienia każdy z bitów na przeciwny.

Page 39: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 34

7. Implementacja

Przy symulacji modułów CoDi krytycznym problemem jest czas obliczania funkcji przystosowania pojedynczego modułu na podstawie zadanego chromosomu. W celu osiągnięcia maksymalnej wydajności dla każdego eksperymentu tworzony jest osobny program wykonawczy z zaszytymi wewnątrz niektórymi stałymi eksperymentu, a następnie jest wywoływany proces kompilacji i konsolidacji tak przygotowanego eksperymentu dając w wyniku program wykonywalny. Jak się okazało, takie podejście istotnie przyśpieszyło czas wykonania, w porównaniu z symulatorem CoDi proponowanym przez grupę GABRI z Gdańska [int 07] osiągnięto szacunkowe przyśpieszenie rzędu 2-3 razy. Dzięki zaszyciu takich stałych jak rozmiar modułu w program wykonywalny kompilator może generować znacznie lepiej zoptymalizowany kod dostosowany do konkretnego zadania. Dzięki zastosowaniu wielu szablonów C++ stworzona implementacja może być w sposób dowolny modyfikowana i koduje informację o czystych algorytmach bez ich ukonkretniania. Dopiero w fazie kompilacji poszczególne szablony są ukonkretniane parametrami eksperymentu.

Przyśpieszenie zostało także osiągnięte dzięki sprytnej implementacji niektórych algorytmów. Porównanie oryginalnych algorytmów implementacji modułu CoDi (codi.slow) ze zmodyfikowaną wersją realizującą ten sam algorytm (codi.fast) zostało szczegółowo przedstawione poniżej. Wprowadzone usprawnienia i modyfikacje zostaną przedstawione dalej.

7.1 Różnice między implementacjami codi.slow i codi.fast

W klasycznym podejściu (codi.slow) bardzo czasochłonną częścią algorytmu jest wymiana informacji między komórkami automatu komórkowego. Zakładając, iż w trójwymiarowej przestrzeni możemy wyróżnić 6 kierunków: północny (N), południowy (S), wschodni (E), zachodni (W), górny (G) oraz dolny (D), informacje między sąsiednimi komórkami są rozsyłane w 6 krokach. Najpierw informacje są przesyłane z kierunku N do S, następnie z S do N, i analogicznie z E do W, z W do E, z G do D i D do G. Dla standardowego rozmiaru modułu (24x24x24) daje to 6 cykli po 13824 przesłań dla jednego cyklu sygnalizacji.

Na rysunku 7.16 jest pokazany uproszczony do postaci jednowymiarowej schemat komórek. Każda z komórek pobiera ze swoich buforów IO informacje. W lewym znajduje się informacja napływająca od lewego sąsiada, a w prawym od prawego. Po przetworzeniu tych informacji, informacja dla lewego sąsiada pozostaje w lewym buforze, a dla prawego w prawym. Po zaktualizowaniu stanu przez wszystkie komórki, następuje zamiana informacji z sąsiadującymi komórkami. Lewy bufor każdej z komórek jest zmieniany z prawym buforem jej lewego sąsiada. Tak wygląda to w podejściu codi.slow.

Rysunek 7.16. Komunikacja między komórkami automatu w przypadku podejścia codi.slow

Page 40: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 35

„Sprytniejszym” rozwiązaniem jest takie, które wymaga tylko ograniczonej liczby przesłań (codi.fast). Można sobie wyobrazić, że do przesyłania informacji między komórkami używa się przesuwającej taśmy (rys. 7.17). Taśma A transportuje informacje z prawej strony w kierunku lewej. W odwrotnym kierunku transportuje je taśma B. Komórka chcąc przetworzyć informację odczytuje dane napływające od prawego sąsiada z taśmy A, a lewego z taśmy B. Po jej przetworzeniu zapisuje informację, dla lewego sąsiada na taśmie A (tam skąd nadeszła informacja od prawego). Analogicznie postępuje wysyłając dane do sąsiada prawego. Po tym kroku obydwie taśmy przesuwają się o jedną jednostkę, transportując tym samym zapisane informacje między komórkami. Pozostaje jeszcze przenieść informację pozostawioną przez komórkę X w miejsce skąd będzie ją czytać Y. To podejście można uogólnić dla komórek trójwymiarowych, mających nie dwu, a sześciu sąsiadów.

W zaimplementowanym algorytmie role taśm spełnia zarezerwowany obszar pamięci, który poza niezbędnym rozmiarem dla przechowania całej informacji, posiada jeszcze rezerwę na swoim końcu. Jednak operacja przesuwu taśm nie jest operacją przesuwania bloków pamięci, a jedynie operacją zmiany wskaźnika definiującego początkowe położenie danych. Dla taśmy A będzie to przesunięcie wskaźnika początku danych w stronę prawą. Niezbędne staje się rozszerzenie o jedną jednostkę obszaru przechowującego dane z prawej strony i w to miejsce skopiowanie informacji pozostawionej przez komórkę X. W tym celu jest rezerwowany obszar pamięci większy niż liczba komórek CA, co pozwala na wykonywanie tej operacji wielokrotnie bez wykonywania kopiowania dużych bloków pamięci. Ceną za takie rozwiązanie jest pośrednie wyznaczenie adresu pamięci, skąd komórka ma odczytywać i zapisywać informacje. Gdy obszar roboczy przesunie się do końca zarezerwowanego bloku, cała zawartość „taśmy” jest kopiowana na jego początek i proces zaczyna się od początku.

Takie rozwiązanie istotnie redukuje liczbę przesłań, natomiast w fazie przetwarzania stanu przez poszczególne komórki automatu informacja jest mocno rozproszona po różnych obszarach pamięci.

7.2 Szybkość algorytmu sekwencyjnego

W trakcie prac nad zrównolegleniem algorytmu zostało przeprowadzonych kilka interesujących pomiarów czasów wykonania algorytmów sekwencyjnych na różnych maszynach o różnych architekturach. Test polegał na obliczeniu 270 funkcji przystosowania modułu CoDi o rozmiarach 24x24x16. Każde obliczone przystosowanie wymagało przeprowadzenia fazy wzrostu i sygnalizacji. Faza sygnalizacji miała stałą długość wynoszącą 64 cykle. Natomiast faza wzrostu była średnio długa na 10 cykli. Daje to od 74 do 84 cykli przesłań w automacie komórkowym. Testy przeprowadzono na kilku maszynach opisanych w tabeli 7.1, w której podane są czasy wykonania dwóch

A

B X Y

Rysunek 7.17. Komunikacja między komórkami automatu w przypadku podejścia codi.fast

Page 41: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 36

wariantów implementacji tego samego algorytmu codi.slow i codi fast. Wyniki

zobrazowano również na wykresie 7.3.

Pierwszy codi.slow dość intensywnie wykonywał przepisywania miedzy sąsiednimi blokami pamięci. Drugi codi.fast intensywnie wykonywał odwołania pośrednie do silnie rozproszonych obszarów pamięci. Jak widać, implementacja codi.fast (skąd pochodzi nazwa) zdecydowanie lepiej radzi sobie na architekturach Pentium i Pentium II. Na innych architekturach nieco wydajniejszy okazał się codi.slow. Wydaje się, że takie wyniki głównie należy tłumaczyć rozmiarami cache’a i jego wydajnością.

Na wykresie widać porównanie wydajności czterech architektur. Zostały one obliczone z następującego wzoru:

(7.14)

Powyższy wzór powinien dawać taki sam indeks, dla tych samych architektur, różniących się tylko taktowaniem procesora i porównywać wydajność z 1MHz. Zatem słupek wyższy oznacza lepszą architekturę.

Maszyna ProcesorSystem operacyjny

Zegar procesora Kompilator codi.slow codi.fast

doc.t17.ds.pwr.wroc.pl (VC6) Pentium Windows NT 4 233 Visual C++ 6 258 129doc.t17.ds.pwr.wroc.pl (GCC) Pentium Windows NT 4 233 GCC 2.8.1 192 146ikar.t17.ds.pwr.wroc.pl Pentium II Linux 350 GCC 2.8.1 107 73sp2.wcss.wroc.pl Power2 AIX 77 GCC 2.8.1 326 382alice.ci.pwr.wroc.pl Ultra SunOS 170 GCC 2.8.1 148 159

Tabela 7.1. Czasy wykonania dla maszyn o różnych architekturach

050

100150200250300350400450

doc.t

17.ds

.pwr.w

roc.pl

(VC6)

doc.t

17.ds

.pwr.w

roc.pl

(GCC)

ikar.t1

7.ds.p

wr.wroc

.pl

sp2.w

css.w

roc.pl

alice.c

i.pwr.w

roc.pl

Czas

wyk

onan

ia [s

]

codi.slowcodi.fast

Wykres 7.3. Czasy wykonania dla maszyn o różnych architekturach

Page 42: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 37

Porównanie to nie jest już tak niekorzystne dla IBMa SP2 i widać, że ustępuje architekturze Pentium II głównie szybkością taktowania jednostki centralnej.

7.3 Zrównoleglenie obliczeń

Bardzo duże przyśpieszenie można osiągnąć implementując mechanizmy GA w sposób równoległy, który wydawać się może najnaturalniejszym sposobem realizacji. Tylko dzięki temu, iż została wykonana implementacja równolegle obliczająca fitness osobników na wielu procesorach i maszynach, było możliwe przytoczenie prezentowanych wyników.

7.3.1 Komunikacja między procesami

Komunikacja między procesami master i slave przebiega w klasyczny sposób – za pomocą dwóch podwójnych par skrzyżowanej operacji MPI_Send i MPI_Recv. Każde przesłanie danych sprowadza się do przesłania wartości całkowitej (MPI_INT) określającej długość paczki danych do odebrania. Paczka danych składa się z przesłanej właśnie liczby znaków (MPI_CHAR) i jest wysyłana asynchronicznie MPI_ISend. Na podstawie tak przesłanej informacji odbiorca rozkodowuje niezbędne dane.

Tak zaproponowane rozwiązanie jest może niezbyt wydajne, gdyż nadawca musi przekonwertować przesyłane dane na postać tekstową, a odbiorca musi je zinterpretować. Jednakże jest bardzo wygodne z punktu widzenia implementacji, gdzie dane możemy traktować jako strumień (plik) tekstowy i dodatkowo dając niezależność od wykorzystywanej architektury sprzętowej.

SlaveKażdy proces slave początkowo czeka na dane do obliczeń. Może otrzymać bądź

dane, bądź informację sygnalizującą, aby zakończył swoje wykonanie (paczka o długości 0). Po otrzymaniu paczki przystępuje do obliczeń. Po ich wykonaniu odsyła wyniki (w paczce) do procesu zarządcy i oczekuje na kolejne zadanie.

MasterPo rozpoczęciu pracy inicjuje wszelkie niezbędne struktury oraz sporządza listę

współpracujących z nim procesów obliczeniowych. Gromadzi dane o każdym ze

00,5

11,5

22,5

33,5

44,5

doc.t

17.ds

.pwr.w

roc.pl

(VC6)

doc.t

17.ds

.pwr.w

roc.pl

(GCC)

ikar.t1

7.ds.p

wr.wroc

.pl

sp2.w

css.w

roc.pl

alice.c

i.pwr.w

roc.pl

wsp

ółcz

ynni

k ar

chite

ktur

y (a

rch_

inde

x)

codi.slowcodi.fast

Wykres 7.4. Czasy wykonania dla maszyn o różnych architekturach

Page 43: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 38

„współpracowników" czy proces jest obciążony oraz oblicza wydajność każdego z nich. Na podstawie tych danych wyznacza liczbę obliczeń funkcji fitness dla każdego procesu dającą najszybszy czas obliczenia przystosowania wszystkich osobników populacji, zakładając, że wydajność węzłów pozostanie niezmieniona. Następnie generowane są paczki danych i rozsyłane do oczekujących procesów. Gdy wszystkie procesy mają rozdzielone zadania zgodnie z planem dystrybucji, master oczekuje na informację o długości paczki do odebrania od dowolnego z procesów (MPI_Wait). Po jej otrzymaniu pobierane są właściwe wyniki obliczeń – wyniki na wyjściach modułu CoDi z fazy sygnalizacji. Po stronie procesu centralnego są one następnie przekształcane na właściwą wartość funkcji przystosowania. Jeżeli konieczne, dokonywana jest korekcja planu przydziału zadań i dystrybuowane jest zadanie dla nieobciążonych procesów.

7.3.2 Algorytm obciążania procesorów

W ramach eksperymentu ewolucyjnego koszt obliczeniowy wyznaczenia wartości funkcji przystosowania nie zmienia się znacząco. W trakcie prowadzonych testów elementem, który niepotrzebnie spowalniał obliczenia była konieczność zbierania wszystkich wartości fitness przed przystąpieniem do operacji genetycznych i dystrybucją kolejnych zadań do poszczególnych węzłów. Najpowolniejszy węzeł często wstrzymywał pracę pozostałych mimo tego, iż inny szybszy mógłby wykonywać następne zadania. Aby zapewnić optymalne wykorzystanie wszystkich węzłów, proces Master zbiera ostatnie 10 czasów obliczenia funkcji fitness, dla każdego z węzłów. Na tej podstawie może prognozować czasy zakończenia obliczeń przez procesy slave. Przed przystąpieniem do ewolucji kolejnego pokolenia, tak rozkłada liczbę obliczeń dla każdego węzła, aby całkowity czas obliczenia fitness dla wszystkich osobników pokolenia był najkrótszy. W trakcie, gdy napływają wyniki, czasy prognozowanego zakończenia obliczeń mogą ulec zmianie i obliczenia mogą być przesunięte z węzła wolniejszego na węzeł szybszy. Jak pokazały testy, wprowadzenie tej modyfikacji pozwoliło przyśpieszyć obliczenia angażując także jednostki o stosunkowo małej mocy obliczeniowej względem innych.

Dzięki zastosowaniu prognozowania czasu zakończenia zadań, procesory są obciążane w sposób optymalny. Przy dużej populacji nawet bardzo wolne węzły nie spowalniają obliczeń.

Innym sposobem na przyśpieszenie mogłaby być zmiana algorytmu selekcji na taki, który nie wymaga znajomości wszystkich funkcji przystosowania przed przystąpieniem do operacji genetycznych.

7.3.3 Komunikacja w oparciu o gniazdka uniksowe (sockets)

Sposób przesyłania danych oparty o pakowanie danych w paczki o określonej długości i przesyłanie między odbiorcą i nadawcą został głównie narzucony przez fakt, iż możliwe jest również rozpraszanie obliczeń w oparciu o gniazdka uniksowe (ang. sockets). Jest to rozwiązanie dużo bardziej elastyczne i przenośne, gdyż nie wymaga instalacji oprogramowania zapewniającego obsługę MPI. Umożliwia ono dystrybucję zadań za pomocą rozległych sieci TCP/IP do heterogenicznych węzłów. Jak się okazało rozwiązanie to było dużo wygodniejsze w praktyce i z powodzeniem zastąpiło rozwiązanie oparte o MPI. Jego konstrukcja jest analogiczna do tego opartego o MPI – jedyną różnicą jest medium - protokół TCP w miejsce komunikacji MPI.

Ten sam program wykonawczy może realizować funkcje serwera obliczeń oraz centralnego procesu zarządcy ewolucji. Wybór dokonywany jest na podstawie

Page 44: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 39

parametrów linii komend. Dla procesu mającego być serwerem obliczeń jedynym parametrem jest port, na którym powinien nasłuchiwać nadchodzących połączeń. Centralny proces sterujący ewolucją jako parametry otrzymuje plik z listą adresów i portów maszyn, które mają wziąć udział w obliczeniach. Proces ten, podobnie jak master przy implementacji opartej o bibliotekę MPI, nie wykonuje obliczeń a jedynie łączy się z procesami obliczeniowymi, dystrybuuje obliczenia oraz przeprowadza operacje genetyczne. Implementacja oparta o gniazdka została stworzona przy wykorzystaniu przenośnej biblioteki socket++. Dzięki temu możliwe jest rozpraszanie obliczeń zarówno do systemów uniksowych i systemów operacyjnych z rodziny Windows. Umożliwia ona potraktowanie połączenia TCP jako obiektu strumieniowego C++, pozwalając bardzo wygodnie odwoływać się do operacji związanych z komunikacją TCP/IP.

Ze względu na utrzymanie przenośności między wspomnianymi systemami operacyjnymi, serwery obliczeń mogą obsługiwać tylko jedno nadchodzące połączenie w danej chwili. Możliwość obsługiwania wielu procesów centralnych wydaje się zbyteczna, gdyż taka konkurencja o dostęp do procesora powodowałaby spadek wydajności obliczeń. Same obliczenia mają charakter raczej długotrwały i akceptowanie większej liczby połączeń prowadziłoby do przeciążenia węzła

7.3.4 Kodowanie przesyłanej informacji

Wąskim gardłem przy połączeniu TCP okazał się rozmiar paczki, gdy był za duży, możliwe było wysyłanie jednej paczki w danej chwili, gdyż dane blokowały się na buforze TCP, co przy powolnym połączeniu jest bardzo niekorzystne.

Problem został rozwiązany za pomocą dwóch poprawek. Skrócono rozmiar paczki przez kodowanie informacji za pomocą binarnego strumienia bajtów ale tak, aby był on przenośny między platformami. Pozwoliło to zredukować rozmiar paczki kodującej chromosom od dwóch do trzech razy. Dawało to około 45 KB danych niezbędnych do przesłania do węzła obliczeniowego. Następnie ustawiono bufor TCP na maksymalny rozmiar – 64 KB, co pozwoliło rozsyłać dane równolegle do wszystkich węzłów jednocześnie.

Rozwiązanie z kodowaniem binarnym chromosomu ostatecznie zastosowano także w wersji MPI redukując ilość przesyłanych danych między węzłami.

7.3.5 Uzyskane przyśpieszenie

Dla algorytmów uruchamianych równolegle definiuje się przyśpieszenie (p) i efektywność (e):

(7.15)

(7.16)

gdzie tsek to czas wykonania algorytmu sekwencyjnego, tpar to czas wykonania algorytmu równoległego, a ncpu jest liczbą procesorów biorących udział w obliczeniach.

Postanowiono zmierzyć te współczynniki dla równoległej implementacji zarówno dla wersji opartej o bibliotekę MPI, jak i wersji opartej o gniazdka. Pierwszy z testów przeprowadzono na IBMie SP2 – 16 węzłowym superkomputerze. Jednak ze względu na to, iż maszyna była cały czas obciążona przez innych użytkowników, uniemożliwiło to przedstawienie obiektywnych wyników przyśpieszenia.

Page 45: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 40

Drugi z testów miał na celu zmierzenie przyśpieszenia uzyskiwanego dzięki zaangażowaniu równolegle liczących rozproszonych stacji PC z procesorami Pentium II i Pentium połączonych siecią Ethernet o przepustowości 100 Mbitów. Do dystrybucji zadań użyto równoległej wersji systemu opartej o gniazdka uniksowe. Maszyny na których przeprowadzano test nie miały równej mocy obliczeniowej i większość z nich była wyposażona w jeden procesor Pentium II 350 Mhz i Windows NT jako system operacyjny. W tabeli 7.2 zebrano uzyskane wyniki, i zobrazowano je na wykresach 7.-5. Jako test użyto zadania opisanego w rozdziale 8.3 długiego na 6 pokoleń.

Jak widać zastosowanie algorytmu równoległego, w bardzo istotny sposób może wpłynąć na przyśpieszenie czasu obliczeń. Efektywność poniżej 1 można tłumaczyć dwojako. Jedna z maszyn, będąca procesem master dystrybuującym zadnia, nie brała udziału w obliczeniach. Dodatkowo równoległe przetwarzanie wprowadzało kilkusekundowy narzut, na transmisję wzorców testowych do każdej z maszyn biorącej udział w obliczeniach. Ponieważ operacja ta nie była zrównoleglona, prowadzi to do spadku efektywności przy większej liczbie maszyn, a małej liczbie generacji. Maszyny nie miały równej mocy, co dodatkowo zakłóca prezentowany obraz. Nie mniej uzyskiwane przyśpieszenie było bardzo znaczące.

Można śmiało powiedzieć, iż klastry stacji roboczych połączonych siecią Fast Ethernet są tanią i bardzo wydajną alternatywą dla drogich superkomputerów oferowanych na rynku. Zważywszy na powszechność takich rozwiązań i moc dorównującą superkomputerom, wygodniejsze może okazać się przeprowadzanie długotrwałych obliczeń właśnie w takich środowiskach. Ze względu na specjalistyczne oprogramowanie w jakie wyposażone są superkomputery, bywają one często

Liczba maszyn

czas wykonania [s] przyśpieszenie efektywność

sek. 15592 1754 0,89 0,443 1000 1,56 0,524 694 2,25 0,565 537 2,90 0,586 441 3,54 0,597 389 4,01 0,578 359 4,34 0,549 336 4,64 0,52

10 315 4,95 0,5011 305 5,10 0,46

Tabela 7.2. Czas wykonania

0

500

1000

1500

2000

sek. 2 3 4 5 6 7 8 9 10 11

liczba maszyn

czas

wyk

onan

ia [s

]

Wykres 7.. Czas wykonania

0,00

1,00

2,00

3,00

4,00

5,00

6,00

2 3 4 5 6 7 8 9 10 11

liczba maszyn

przy

śpie

szen

ie

Wykres 7.6. Przyśpieszenie

0,000,100,200,300,400,500,600,700,800,901,00

2 3 4 5 6 7 8 9 10 11

liczba maszyn

efek

tyw

ność

Wykres 7.5. Efektywność

Page 46: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 41

przeciążone, dostęp do nich jest utrudniony, a oferowana moc niewystarczająca. Dla porównania, dość przestarzały superkomputer dostępny we Wrocławskim Centrum Sieciowo-Superkomputerowym – IBM SP2 dla przytoczonego przykładu, wykorzystując 1 z 16 węzłów potrzebowały około 3 godzin (około 10000 sekund). Wykorzystanie wszystkich 16 węzłów mogłoby ten czas zredukować do około 10 minut, jednak maszyna ta jest dość mocno obciążona ze względu na zainstalowane oprogramowanie i takie postępowanie, spowodowałoby protest innych użytkowników. Zespół współdziałających stacji roboczych PC okazał się lepszą alternatywą.

W trakcie prowadzonych badań okazało się, że dzięki zrównolegleniu obliczeń dla dużych eksperymentów i dużych populacji wyniki były uzyskiwane prawie o rząd wielkości szybciej. Jednakże sama biblioteka MPI okazała się mało praktyczna, gdyż stosunkowo trudno stosować ją w całkiem heterogenicznych rozproszonych środowiskach, ze względu na wymagania zgodności stosowanych implementacji MPI. Instalacja takiego oprogramowania wymaga interwencji administratora, co nie zawsze jest możliwe. W trakcie prac niewielka modyfikacja implementacji MPI, umożliwiła szybkie przejście na komunikację opartą o gniazdka uniksowe (sockets). Ze względu na rozwiązywany problem, prędkość komunikacji jest mało istotna, bardziej istotna jest możliwość rozpraszania obliczeń na maksymalną ilość maszyn. Takie rozwiązanie okazało się o wiele praktyczniejsze, gdyż umożliwiło wykonywanie obliczeń na heterogenicznych klastrach opartych o różnorakie systemy operacyjne (Windows NT, Linux, SunOS, AIX, IRIX) i różne architektury sprzętowe (Pentium, Sparc, Power2, MIPS).

Page 47: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 42

8. Przeprowadzone doświadczenia

Autor przeprowadził tylko niewielki podzbiór eksperymentów, jakie wydawały mu się celowe. Przyczyna tkwiła głównie w bardzo dużym czasie obliczeń i zapotrzebowaniu na moc obliczeniową. W początkowej fazie zostało przeprowadzonych kilka eksperymentów mających na celu ogólne zapoznanie się z nowym podejściem do ewolucji sieci neuronowych. Kolejne miały weryfikować wnioski wykorzystujące zdobytą wiedzę.

8.1 Eksperymenty wstępne

W początkowej fazie przeprowadzono szereg eksperymentów, które miały ustalić jakie operatory genetyczne i ich parametry zapewniają najszybsze poszukiwania optymalnych modułów. Wykonano szereg eksperymentów bazujących na standardowym problemie wykorzystywanym przy testach NNs - funkcji xor, która na pojedynczym wyjściu podaję wynik różnicy symetrycznej między wszystkimi wejściami. W tym celu przeprowadzono wiele usystematyzowanych pomiarów z różnymi rozmiarami modułów, liczbą wejść funkcji xor, rozmiarem populacji, prawdopodobieństwami mutacji i krzyżowania. Niestety, nie pozwoliły one dokładnie naszkicować sposobu doboru parametrów ewolucyjnych tak, aby algorytm genetyczny odnajdował dobre rozwiązania problemu. Odnaleziono jednak kilka tendencji.

Najbardziej widocznym wnioskiem było to, że powiększanie liczby osobników w pokoleniu powoduje, iż znajdowane rozwiązania są dużo lepszej jakości. Wydaje się to oczywiste, gdyż im więcej osobników, tym więcej punktów przestrzeni jest przeszukiwanych, ale jednocześnie wydłuża się czas obliczeń.

Innym z interesujących spostrzeżeń był fakt, iż wyniki są lepsze przy zdefiniowaniu kilku wejść w różnych częściach modułu i podawanie na nie stałego pobudzenia. Bez żadnego pobudzenia układ nie jest w stanie generować innych pobudzeń. Dostarczenie takich wejść będących odpowiednikami wejścia bias w klasycznych NNs powodowało iż moduły dużo szybciej nabierały pożądanych cech wraz z kolejnymi generacjami.

Nie udało się ustalić optymalnych wartości współczynnika krzyżowania wraz z dobranym do niego współczynnikiem mutacji. Przyczyny można się dopatrywać w skromnych wielkościach populacji – największe testowane populacje liczyły 60 osobników. Przy rozmiarach informacji genetycznej wahającej się od kilku do kilkunastu kilobajtów, tak skromna reprezentacja punktów przestrzeni rozwiązań nie zapewnia efektywnego działania operatora krzyżowania. Głównym motorem „postępu” był operator mutacji, który wprowadzając przypadkowe zmiany, przeszukiwał punkty przestrzeni w otoczeniu odnalezionych rozwiązań. Jednak zerowy współczynnik krzyżowania nie był wyborem najlepszym. Jego niewielka wartość zapewniała rzadkie makromutacje, pozwalające na wymianę nagromadzonych mutacji oraz utworzenie osobnika o genotypie mocno odbiegającym od aktualnych osobników występujących w populacji.

Odnalezione optimum prawdopodobieństwa dla współczynnika mutacji, to 0,001, a krzyżowania 0,08, wielkość populacji została dobierana w dalszych eksperymentach na 60.

Zauważono ponadto, iż funkcja przystosowanie nie powinna być liczona natychmiast po podaniu pierwszego sygnału. Sygnał podawany na wejście musi zostać w module poprawnie przetworzony, co wymaga kilkudziesięciu cykli sygnalizacji, aby został rozpropagowany po wszystkich komórkach modułu, a w szczególności dotarł (być

Page 48: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 43

może po przetworzeniu) do wyjścia/wyjść układu. W tym celu pomijano pierwsze kilkadziesiąt odpowiedzi na wyjściu. Bardziej interesujące wydają się być moduły poprawnie przetwarzające sygnał, a nie tylko te, które są go w stanie przetworzyć możliwie najszybciej.

W trakcie prac niezbędne okazało się przebadanie generatorów liczb pseudolosowych zaimplementowanych w bibliotekach standardowych różnych kompilatorów C++ (GCC i Visual C++). Zauważono, że zmiana platformy na której jest uruchamiany eksperyment ma wpływ na wyniki. Okazało się, że generatory liczb pseudolosowych mocno się różnią i dobór odpowiedniego generatora, może czasem przesądzić o porażce lub sukcesie całej ewolucji! Dobrym przykładem, który to stwierdził, była prosta implementacja symulująca pokerowe rozdanie kart. Program miał stwierdzić, czy prawdopodobieństwa wylosowania pokerowych układów kart, są we wszystkich kompilatorach jednakowe, zgodne z wyliczeniami teoretycznymi. Otóż skonstruowany prosty algorytm skompilowany za pomocą Visual C++ zachowywał się zgodnie z oczekiwaniami. Natomiast skompilowany GCC działał również poprawnie, ale tylko na platformach uniksowych. Program skompilowany GCC na platformę Windows pokazywał, że prawdopodobieństwo wylosowania pokera lub koloru jest równe 0. Przyczyna tkwiła w cykliczności odwołań do generatora i w tym wypadku nie było możliwości wylosowania 5 razy pod rząd tej samej liczby modulo 4. Wydaje się, że w wypadku modułów CoDi generator, jaki dostarczają producenci bibliotek standardowych, nie ma istotnego znaczenia, jednak rozpatrzenie tej kwestii jest niebagatelne w przypadku konstrukcji implementacji wykorzystujących algorytmy probabilistyczne. Zmodyfikowano wykorzystywany generator tak, aby każde odwołanie do niego, było poprzedzone przypadkową (psedoprzypadkową) liczbą odwołań.

8.2 Rozpoznawanie wzorców statycznych

Jedną z dziedzin, w której NNs są szeroko stosowane, jest klasyfikacja. Dobry klasyfikator powinien umieć dobrze przyporządkowywać wzorce podawane w trakcie budowy klasyfikatora. Poza tym kryterium, istotne jest, aby klasyfikator miał zdolności uogólniania szczególnych przypadków służących do jego budowy (nauki) w reguły bardziej ogólne, tak aby wzorce nigdy nie prezentowane były również prawidłowo klasyfikowane.

W tym eksperymencie postanowiono zbadać czy moduł CoDi, posługując się tylko mechanizmami ewolucyjnymi, jest w stanie nauczyć się rozpoznawać wzorce. Jako wzorce wybrano 10 reprezentacji graficznych cyfr arabskich od 0 do 9, podawanych na siatce 7x7 pikseli (rys. 8.18). Wzorce wejściowe były statyczne i nie zmieniały się w czasie, w odróżnieniu od eksperymentu prezentowanego w rozdziale 10.3.

Page 49: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 44

W tym celu wykorzystano moduł o rozmiarach 24x14x18 z 49 wejściami rozmieszczonymi równomiernie na płaszczyźnie z=0. Natomiast w płaszczyźnie z=12 znajdowało się 2, 4, 6, 8 lub 10 wyjść w zależności, ile rozpoznawano wzorców. Przy rozpoznawaniu N wzorców, dla pierwszego z nich oczekiwano samych jedynek na pierwszym wyjściu, a na pozostałych wyjściach miały pojawić się same zera. Dla drugiego wzorca jedynki miały pojawić się na drugim wyjściu itd. Współczynnik krzyżowania ustalono na 0,08, a mutacji na 0,001. Ewolucje przerywano po 2000 generacji z 60 osobnikami każda.

Funkcja fitness była zdefiniowana tak, aby premiować rozwiązania, gdzie na jednym z wyjść była przeważająca liczba dobrych odpowiedzi. Premiowano także bardzo mocno osobniki, które na właściwym wyjściu generowały 1. Dodatkowo założono, że na dobry wynik oczekujemy dopiero po 20 cyklach sygnalizacji od rozpoczęcia podawania sygnału na wejście, tak aby moduł miał czas na przesłanie i przetworzenie informacji wejściowej. W ten sposób oceniane było tylko 44 z 64 cykli. Formalnie algorytm oceny przystosowania wyglądał tak:

fitness=0if(na wyjściu powinna pojawić się jedynka){ if(liczba_jedyneks>=30)fitness = fitness + liczba_wzorców*liczba_jedynek/44; else fitness = fitness + 0.5*liczba_wzorców*liczba_jedynek/44;}else{ if(liczba_zer>30)fitness = fitness + liczba_zer/44; else fitness = fitness + 0.5*liczba_zer/44;}//Normalizacjafitnes s =fitness/(2*liczba_wzorców-1);

Podawano wszystkie testowane wzorce i na tej podstawie obliczano średnią wartość przystosowania – maksymalnie 1. Na poniższych wykresach przedstawione są wyniki ewolucji.

Rysunek 8.18. Wzorce uczące – 10 cyfr arabskich na siatce 7x7 pikseli0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

0 200 400 600 800 1000 1200 1400 1600 1800 2000

pokolenie

prys

toso

wan

ie

maksymalneśrednie

Wykres 8.7. Ewolucja układu rozpoznającego 2 wzorce (cyfry 0 i 1)

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

0 200 400 600 800 1000 1200 1400 1600 1800 2000

pokolenie

prys

toso

wan

ie

maksymalne

średnie

Wykres 8.8. Ewolucja układu rozpoznającego 4 wzorce (cyfry 0-3)

Page 50: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 45

Jak widać, algorytmy ewolucyjne są w zdolne wytworzyć strukturę automatu komórkowego zdolnego do rozpoznawania wzorców. Można zauważyć, że wyraźnie gorsze przystosowanie ma układ rozpoznający wszystkie 10 cyfr. Miał on jednak najtrudniejsze zadanie, cyfry 8 i 9 dość trudno odróżnić od 0, 3 lub 6.

8.2.1 Zdolności generalizacji

Często stawianym kryterium oceny sieci neuronowych są ich zdolności do generalizacji (uogólniania) oraz usuwania szumu lub zniekształceń z prezentowanych im wzorców w trakcie klasyfikacji. Zazwyczaj wymaga się, aby nauczona sieć, dla wzorca nigdy nie prezentowanego w trakcie nauki, dawała odpowiedź zgodną z najbliższym wzorcem ciągu uczącego. Przez najbliższy rozumie się pewną zadaną metrykę odległości między wzorcami. Dla wzorca leżącego w równych (lub prawie równych) odległościach do kilku wzorców z ciągu uczącego, jej odpowiedzią powinna być średnia ważona wyuczonych odpowiedzi dla sąsiednich wzorców, proporcjonalna do odległości do nich. Takie podejście jest zgodne z intuicją.

Postanowiono zbadać jak, „wyhodowane” w ten sposób rozwiązania, będą rozpoznawać wzorce. Ponieważ nie osiągnięto przystosowania równego 1, ważne wydaje się jakiego rodzaju błędy są popełniane przy klasyfikacji. Jako pierwsze przebadano osobniki, których zadaniem było rozpoznawanie 6 wzorców. W tym celu ostatnie pokolenie z ewolucji prezentowanej na wykresie 8.9 poddano dalszej ewolucji z selekcją elitarną i zmniejszonym współczynnikiem mutacji, a zwiększonym krzyżowania. Miało to na celu uzyskanie najlepszego osobnika z otoczenia już znalezionych. Przewidywania nie zawiodły i po kolejnych 600 epokach uzyskano osobnika z przystosowaniem bliskim maksymalnemu, a dokładnie 0,998. Następne 1000 pokoleń ewolucji nie odnalazło już lepszego osobnika.

Tak odnalezione rozwiązanie poddano interaktywnym testom. Wszystkie prezentowane wzorce były rozpoznawane niemal bezbłędnie. Interesujące okazały się testy z wzorcami nigdy nie prezentowanymi. Okazało się, że układ rozpoznawał wzorce na podstawie kilku cech odróżniających dany wzorzec od innych. Na rysunku zaznaczono obszary najbardziej wpływające na zaklasyfikowanie danego wzorca do danej kategorii.

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

0 200 400 600 800 1000 1200 1400 1600 1800 2000

pokolenie

prys

toso

wan

ie

maksymalneśrednie

Wykres 8.9. Ewolucja układu rozpoznającego 6 wzorców (cyfry 0-5)

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

0 200 400 600 800 1000 1200 1400 1600 1800 2000

pokolenie

prys

toso

wan

ie

maksymalne

średnie

Wykres 8.10. Ewolucja układu rozpoznającego 8 wzorców (cyfry 0-8)

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

0 500 1000 1500 2000 2500 3000 3500 4000

pokolenie

prys

toso

wan

ie

maksymalne

średnie

Wykres 8.11. Ewolucja układu rozpoznającego 10 wzorców (cyfry 0-9)

Page 51: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 46

Pozostałe piksele, poza zaznaczonymi, miały znikomy wpływ na to czy dany wzorzec jest klasyfikowany do zadanej kategorii. Można wysnuć stąd wniosek, że „wyhodowany” układ był niczym innym jak funkcją logiczną przekształcają 49 wejść w 10 wyjść. Funkcja ta jest realizowana przez skomplikowany układ połączeń i między neuronami w module CoDi i z powodzeniem spełnia narzucony cel ewolucji. Aby wykształcić zdolności generalizacji podobne do tych obserwowanych dla sieci neuronowych uczonych metodą wstecznej propagacji, niezbędne wydaje się takie skonstruowanie funkcji fitness, aby premiowała takie osobniki, których zdolności do rozpoznawania zmodyfikowanych lub zniekształconych wzorców są większe.

Przeprowadzono podobny eksperyment dla przypadku rozpoznawania 10 wzorców. Jednak tu mimo zastosowania elitarnego sposobu ewolucji nie udało się wyewoluować modułu rozpoznającego poprawnie wszystkie 10 wzorców. Maksymalne przystosowanie jakie udało się uzyskać to 0,932. Moduł często, dla prezentowanego wzorca odpowiadał jedynkami na kilku wyjściach, a nie tylko na pojedynczym wyjściu. Największe problemy sprawiały cyfry o zbliżonym do siebie wyglądzie (0,3,6,9,8). Funkcja przystosowania była specjalnie tak skonstruowana, aby premiować przede wszystkim poprawną odpowiedź na wyjściu związanym z rozpoznawanym wzorcem. Ten warunek został spełniony, co daje układowi przystosowanie 0,7. Pozostałe 0,3 premiowało osobniki, które na pozostałych wyjściach miały same zera. Przyczynę niemożliwości odnalezienia takiego rozwiązania można upatrywać w małych rozmiarach modułu, która uniemożliwiała wytworzenie odpowiedniej liczby połączeń. Inną przyczyną może być bardzo gęste upakowanie wyjść (a także wejść) wewnątrz układu, co powodowało, że sygnały docierające do jednego wyjścia zakłócały działanie sąsiednich. Wydaje się, że każdy układ ma pewną granicę pojemności informacyjnej, jaką może przetworzyć, związaną z jego rozmiarem. Nie jest możliwe mnożenie rozpoznawanych wzorców w nieskończoność dla tego samego modułu i w tym wypadku ta granica została osiągnięta.

8.3 Detektor poruszającej się linii

8.3.1 Podejście ewolucyjne

Celem eksperymentu było sprawdzenie, czy moduł CoDi jest w stanie przetwarzać zmieniające się w czasie sygnały. Czy jest możliwe wyewoluowanie modułu zdolnego do rozpoznawania zmiennego w czasie sygnału, oraz zmierzenie zdolności uogólniania tak znalezionego modułu CoDi.

Jako zadanie został wybrany eksperyment z poruszającą się linią - (ang. Hubel Wiesel Line Motion Detector) [int 04]. Wejściami tego eksperymentu jest siatka 16x12 wejść rozmieszczonych równomiernie na zewnętrznych ścianach modułu o wymiarach 24x24x24. W każdym cyklu sygnalizacji na wejście układu jest podawana jedna klatka animacji, a zadaniem układu będzie odróżnienie jednej animacji (sekwencji klatek) od innych. W omawianym teście były 4 animacje każda długa 200 cykli sygnalizacji, co można porównać do 200 klatek animacji. Pierwszy wzorzec to pionowa linia poruszająca się z prawa na lewo, druga linia poruszająca się z lewa na prawo. Analogiczne dwa przykłady dla linii poruszającej się z dołu do góry. Okres poruszania się linii to 50 cykli,

Rysunek 8.19. Najistotniejsze cechy rozpoznawanych wzorców

Page 52: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 47

czyli linia przebywała cały obszar pola 4 razy w trakcie eksperymentu. Moduł miał jedno wyście, którym miał wysyłać jedynki w momencie, gdy podawane wejście jest linią poruszającą się z lewej strony na prawą. W innych wypadkach wyjście miało być nieaktywne (generować zera). Funkcja fitness była zdefiniowana następująco:

fitness=0;if(rozpoznawany_wzorzec) if(liczba_jedynek>=0.7*dlugość_wzorca) fitness=fitness=6*liczba_jedynek/dlugość_wzorca; else fitness+=6/2* liczba_jedynek/dlugość_wzorca;else if(liczna_jedynek<=0.3*dlugosc_wzorca)fitness=fitness+1*liczba_jedynek/długość_wzorca else fitness=fitness+1/2*liczba_jedynek/długość_wzorca;fitness=fitness*4.0/9.0;

Tak zdefiniowane przystosowanie było obliczane dla każdego z prezentowanych wzorców i na jego podstawie było wyliczane średnie przystosowanie modułu. Maksymalna wartość przystosowanie osobnika wynosiła 1. Konstrukcja ta pozwala premiować rozwiązania generujące „zdecydowane” odpowiedzi. Jak pokazały doświadczenia, bez takiej presji zazwyczaj EA nie jest w stanie wydostać się z lokalnego optimum sprowadzającego się do generowania równej liczby jedynek i zer dla wszystkich wzorców. Premiuje on także sowitą nagrodą za rozpoznanie właściwego wzorca. W trakcie badań często EA utykał w optimum, które dawało wysoki fitness, a odpowiedzią były zawsze same zera. Aby nie dopuścić do takiego rozwoju ewolucji wykrycie wzorca, który ma być rozpoznany, jest premiowane bardziej niż prawidłowa klasyfikacja wzorców niepoprawnych. Przebieg ewolucji pokazano na wykresie 8.12.

Poniżej znajdują się otrzymane wyniki dla najlepszego osobnika w ostatnim pokoleniu, po usunięciu pierwszych 30 cykli (z 200) pomijanych przy obliczeniu funkcji fitness. Odpowiedź modułu na podanie wzorca, na który moduł miał odpowiadać samymi jedynkami:11111101111111011111110011101111001111111101111111111111011111110111111100101011110011111111011111111111110111111101111111011010110100111111110111111111111101111111011111

Oto trzy odpowiedzi modułu dla wyuczonych wzorców, dla których oczekiwaną odpowiedzią były same zera:011100000000000001000101110000100000000010011100000111000000000000000000011100001000000100100111000001110000000000000000000111000010000000001001110000011100000000000000000000000000000000000000000001000000101110000000100000000000000000000000000000001011001011100000010100000000000000000000000000000100000010111001000010000000000000000000000000001000000101110000000100000000000000000000000000000001011001011100000010100000000000000000000000000000100000010111001000010000000000000000000000000000000101100101110000

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

0 200 400 600 800 1000 1200 1400 1600 1800 2000

pokolenie

prys

toso

wan

ie

maksymalneśrednie

Wykres 8.12. Przebieg ewolucji

Page 53: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 48

„Wyhodowany” układ został także przebadany pod kątem odpowiedzi na szum. Przez szum należy rozumieć 200 klatek animacji z matrycą 16x12 wejść, gdzie każde z wejść przyjmuje wartości losowe 0 lub 1 z równym prawdopodobieństwem. Układ odpowiadał prawie dokładnie połową 0 i 1. Stosunek liczby jedynek do długości odpowiedzi wynosił 0,505 z odchyleniem standardowym z 50 prób 0,049. Jak widać, układ zareagował ”zupełnym niezdecydowaniem” na wzorce nie prezentowane w trakcie nauki co może dowodzić pewnych własności uogólniania i rozpoznawania, oraz rozróżniania tylko wzorców, pod kątem których był prowadzony proces nauki z wykorzystaniem EA. Przeprowadzony został także test, czy moduł ma zdolności uogólniania, w wypadku prezentacji wzorców nie występujących w ciągu uczącym. Wyniki te są omówione dalej w rozdziale 8.3.2, wraz z porównaniem ich z wynikami metody Monte Carlo.

8.3.2 Podejście Monte Carlo

W trakcie prowadzonych badań zostało odkryte, iż wartość współczynnika krzyżowania ma znikomy wpływ na polepszenie otrzymywanych wyników. Zbyt duża jego wartość, sugerowana zazwyczaj na poziomie kilku dziesiątych, uniemożliwiała wypracowanie dobrych rozwiązań przy testach z funkcją xor. Mała, na poziomie jednej dziesiątej, wydawała się najbardziej optymalna. Można przypuszczać, że przy tak dużym chromosomie, sięgającym w tym eksperymencie około 24*24*24*(6+6+1) bitów 22 kilobajty, krzyżowanie działało, jak makromutacja, wzbogacając niekiedy bogactwo genotypów występujących w pojedynczym pokoleniu, a tym samym przeciwdziałało utykaniu w optimach lokalnych. Całkowity brak krzyżowania, również dawał podobne wyniki (acz gorsze) niż jego stosowanie. Zatem ewolucja oparta tylko o przypadkowe poszukiwania przestrzeni rozwiązań niewiele odległych od aktualnie odnalezionych optimów w pewien sposób przypomina chaotyczne poszukiwania metodą Monte Carlo. Ważne zatem wydało się porównanie otrzymywanych wyników z bardzo naiwnym sposobem poszukiwania rozwiązań problemu – metodą Monte Carlo.

W tym celu powtórzono eksperyment z poruszającą się linią. Jednak tu każde „pokolenie” to zestaw 60 całkowicie losowo stworzonych chromosomów reprezentujących punkt z przestrzeni rozwiązań. „Pokolenie” gdyż w metodzie Monte Carlo trudno mówić o pokoleniach, a kolejno tworzone osobniki nie mają ze sobą żadnego związku. Jednak dla utrzymanie analogii do poprzednio prezentowanych wyników ewolucyjnych, takie podejście będzie dobrze służyć celom porównawczym obydwu metod.

Page 54: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 49

Wyniki otrzymane dla najlepszego rozwiązania uzyskanego metodą Monte Carlo (analogicznie jak w rozdziale 8.3.1):00000000001011111111111111111110011111111111111111111111111111111111111111111111100111111111111111111111111111111111111111111111111001111111111111111111111111111111111111011000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000011000000000000000000001101010101010101010101010101010101010101010101010110000000000000000000000000000000000000000000000000110101010101010101010101010101010101010101010101011000000000000000000000000000000000010101010101001111111111111111111111111111111111111111111111111001010101010101010101010101010101010101010101010100111111111111111111111111111111111111111

Jak widać, tak odnaleziony układ dość dobrze rozpoznał linie poruszającą się z lewa na prawo (pierwszy wiersz prezentowanych wyników – oczekiwano samych jedynek). Dobrze tę linię odróżniał od linii poruszającej się z lewa na prawo (drugi wiersz – oczekiwano samych zer). Jednak dużo gorzej klasyfikował linie poruszające się pionowo (2 ostatnie wiersze). Otrzymane najlepsze przystosowanie było o około 0,07 niższe od tego znalezionego drogą ewolucyjną. Sprawdzono również reakcję układu na podanie 50 wzorców zawierających szum. Stosunek liczby jedynek do długości odpowiedzi wynosił 0.497 z odchyleniem standardowym 0,040. Co jest bardzo zbliżoną odpowiedzią do układu otrzymanego drogą ewolucyjną. Dowodzi to, że i tak utworzony układ, reagował zgodnie z intuicją, na nie prezentowane w trakcie nauki wzorce.

8.3.3 Porównanie zdolności generalizacji

Testowi na zdolności generalizacji poddano 2 osobniki omawiane w rozdziale 8.3.1 i 8.3.2. Jako test ich zdolności do rozpoznawania nigdy nie prezentowanych wzorców wybrano linię poruszającą się z inną prędkością w stosunku do tej, na jakiej oparta była selekcja najlepszych modułów.

Jak widać na wykresie 8.14, moduł dla szerokiego spektrum prędkości rozpoznaje prawidłowo (większe wartości) zarówno linię poruszającą się z prawa do lewa, gdzie oczekiwano jedynek na wyjściu, oraz te linie, gdzie spodziewano się uzyskać zera. Widać wyraźne optimum w punkcie 1, gdzie prędkości testowe pokrywały się z wyuczonymi. Odpowiedź układu jest zupełnie inna niż dla szumu, gdzie jak wspomniano w 8.3.1, uzyskiwano równą liczbę zer i jedynek, co na wykresie odpowiadałoby wartości 0,5.

Analogiczny test dla osobnika odnalezionego metodą Monte Carlo wygląda zupełnie odmiennie.

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

0 200 400 600 800 1000 1200 1400 1600 1800 2000

"pokolenie"

Prze

stos

owan

ie n

ajle

psze

go o

dnal

ezio

nego

"o

sobn

ika"

Wykres 8.13. Przebieg poszukiwania optimum metodą Monte Carlo

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

0 1 2 3

stosunek prędkości testowej do wyuczonej

stos

unek

licz

by w

arto

ści o

czek

iwan

ych

do

dług

ości

odp

owie

dzi

prawo - lewolewo - prawodół - góragóra - dół

Wykres 8.14. Zdolności generalizacji dla osobnika odnalezionego przez EA

Page 55: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 50

Na wykresie 8.15 widać wyraźnie, że układ uzyskany tą metodą generuje bardzo chaotyczne odpowiedzi dla zbliżonych wzorców. Występuje wprawdzie optimum w punkcie jeden, jednakże dla wzorców z nieznacznie zmienioną prędkością poruszania się linii odpowiedzi są skrajnie różne.

Porównanie dwóch zaprezentowanych wykresów unaocznia, że procesy ewolucyjne charakteryzują się pewną przewagą nad przypadkowymi poszukiwaniami w przestrzeni rozwiązań. Odnalezione za pomocą EA rozwiązania cechuje stabilność oraz, jak można przypuszczać, rozwiązania te powinny mieć większe zdolności generalizacji. Odnaleziony za pomocą EA punkt w przestrzeni rozwiązania akumuluje bowiem wiele doświadczeń pokoleń ewolucji. Powinno to zatem premiować osobniki o bardziej stabilnych cechach, będące często produktem krzyżowania z innymi osobnikami. Taki proces wymusza odnajdowanie raczej optimów położonych w otoczeniu innych dobrych optimów. Rozwiązania odnajdowane za pomocą metod przypadkowego poszukiwania nie preferują takich rozwiązań. Akumulacja zmian w osobnikach EA powoduje, że ich cechy są w sposób płynny dostosowywane w kierunku wyznaczonym funkcją przystosowania. Dzięki temu w chromosomie jest odłożona pamięć doświadczeń zebranych w kolejnych generacjach.

8.3.4 Metody kodowania

Istotną kwestią przy projektowaniu EA jest rozważenie odpowiedniego sposobu kodowania rozwiązania, oraz zaprojektowanie operatorów genetycznych. Chromosom kodujący moduł CoDi charakteryzuje się dużą długością, dochodzącą do 20 kilobajtów. Zakodowanie tych informacji w taki sposób, aby poszczególne geny kodowały specyficzne własności ewoluowanego modułu wydaje się niemożliwe. Dowolna zmiana jednego bitu chromosomu, a zatem jednego bitu jednej z komórek automatu, może teoretycznie zmienić strukturę całej kodowanej sieci neuronowej.

Być może jakość ewolucji mogłaby być poprawiona stosując kodowanie, gdzie poszczególna cecha fenotypowa, nie jest kodowana przez tylko jeden gen, ale ich zbiór (efekt poligeniczny). Jednocześnie jeden gen nie musi wpływać tylko na jedną cechę projektowanego układu (efekt plejtropowy). Aby sprawdzić, czy takie podejście wpłynie

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

0 1 2 3

stosunek prędkości testowej do wyuczonej

stos

unek

licz

by w

arto

ści o

czek

iwan

ych

do

dług

ości

odp

owie

dzi

prawo - lewolewo - prawodół - góragóra - dół

Wykres 8.15. Zdolności generalizacji dla osobnika odnalezionego metodą Monte Carlo

Page 56: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 51

na szybkość lub jakość procesu ewolucji, powtórzono eksperyment z rozdziału 8.3.1 stosując odmienny sposób kodowania.

Na rysunku 8.20 widać ideę, w jaki sposób rozszerzono standardowy chromosom o elementy plejotropowości i poligeniczności. Zobrazowano 3 poziomy sposobu kodowania informacji, choć w rzeczywistości było ich 5. Każdy poziom przechowuje informację dotyczącą wszystkich komórek modułu. Cechy fentotypowe uzyskuje się stosując funkcję xor dla informacji z każdego poziomu uzyskując finalny chromosom, na podstawie którego budowany jest moduł. Zmiana pojedynczego bitu danych poziomu 0, wpłynie tylko na jedną komórkę, poziomu 1 na 8, natomiast poziomu 4 już na 4096 komórek. Współczynniki mutacji poszczególnych poziomów dobrano tak, aby prawdopodobieństwo zmiany cechy fenotypowej było takie samo niezależnie od tego, który bit będzie zmieniony. Zatem prawdopodobieństwo mutacji poziomu 1 jest 8 razy mniejsze od poziomu 0. Operacja krzyżowania zachodzi dla wszystkich poziomów w tym samym miejscu. Dla poziomów większych od 0 odnajduje się najbliższą pozycję podziału chromosomu odpowiadającą miejscu podziału poziomu 0.

Wszelkie parametry były identyczne jak w doświadczeniu z rozdziału 8.3.1. Wydłużono jedynie czas ewolucji do 3000 generacji. Jej przebieg pokazano na rysunku 8.16.

Jak można zauważyć. takie podejście faktycznie przyczyniło się do szybkiego wspinania się osobników na szczyt w początkowej fazie, lecz w późniejszej widać dużo rzadsze „skoki” najlepszego przystosowania do góry. Wynikać to może z faktu, iż zmiany genotypowe w tym podejściu zachodziły rzadziej lecz obejmowały większy obszar materiału genetycznego, co sprzyjało rozwojowi w pierwszym okresie, lecz powodowało jego zahamowanie w późniejszym, gdzie niezbędne były mniejsze, bardziej subtelne modyfikacje zachowania modułu.

Widać jednak, że w początkowym okresie poszukiwań takie podejście jest bardzo korzystne. Zastosowanie operatorów, których działanie zmienia się w czasie lub jest zależne od aktualnych parametrów populacji, pozwolić powinno na wydobycie cech korzystnego działania efektu plejotropowego i poligenicznego oraz standardowego podejścia (rys. 8.12).

akson

komórka

akson

komórka

akson

komórka

komórka

akso

n

akson

komórka

akson

komórka

komórka

akson

komórka

akson

komórka

komórka

akso

n

komórka

akson

komórka

akson

komórka

komórka

akson

Chrom. kom.

akson

Chrom. kom.

akson

Chrom. kom.

Chrom. kom.

akson

Chrom. kom.

akson

Chrom. kom.

akson

Chrom. kom.

Chrom. kom.

akson

Chrom. kom

akson

Chrom. kom.

akson

Chrom. kom.

Chrom. kom.

akson

Chrom. kom.

akson

Chrom. kom.

akson

Chrom. kom.

Chrom. kom.

akson Chromosom

wpływający na 8

komórek

akson Chromosom

wpływający na 8

komórek

akson

Chromosom wpływający

na 8 komórek

Chromosom wpływający

na 8 komórek

Chromosom wpływający

na 64 komórki

Poziom 0 Poziom 1 Poziom 2 Rysunek 8.20. Schemat chromosomu z efektem plejotropowym i poligenicznym

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

0 250 500 750 1000 1250 1500 1750 2000 2250 2500 2750 3000

pokolenie

prys

toso

wan

ie

maksymalne

średnie

Wykres 8.16. Przebieg ewolucji z wykorzystaniem efektu plejotropowego i poligenicznego

Page 57: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 52

9. Podsumowanie

W pracy zaprezentowano wszechstronną analizę modelu zaproponowanego przez Hugo de Garisa – modułu CoDi. Wykazano, że proponowany model, z powodzeniem jest w stanie rozpoznawać sygnały zmienne w czasie i posiada zdolności generalizacji, jednak podobnie jak w przypadku klasycznych sieci neuronowych, uzyskanie dobrych efektów uogólniania, wymaga dobrego zaprojektowania układu (sieci) oraz odpowiedniej prezentacji wzorców uczących. W wypadku modułów CoDi niezbędne wydaje się związanie funkcji przystosowania ewoluowanych modułów ze zdolnością uogólniania. Inaczej, zamiast odnaleźć rozwiązania ogólne, algorytmy ewolucyjne odnajdą pierwsze dobre rozwiązanie, które pokrywa się z ciągiem uczącym.

Udało się również wykazać, że algorytmy ewolucyjne są dobrym narzędziem, przy przeszukiwaniu przestrzeni rozwiązań, tak dużej, jak wielokilobajtowy chromosom modułu CoDi. Porównano to podejście z prostą metodą Monte Carlo i zaobserwowano, że ewolucyjne podejście jest znacząco lepsze nie tylko, jeśli chodzi o szybkość poszukiwań, lecz również jakość znalezionych rozwiązań. Zbadano także wpływ efektu plejotropowego i poligenicznego na przebieg ewolucji, gdzie odkryto, iż taki sposób kodowania, może poprawić efektywność EA w początkowej fazie ewolucji.

Wykazano ponadto, że przy implementacji algorytmów probabilistycznych, istotnym problemem, może być wybór używanego generatora liczb pseudolosowych. Jego błędna konstrukcja może prowadzić do mylnych wniosków bądź wyników.

Nie udało się zbadać, efektu działania kodowania SIIC (rozdz. 4.2), które wyśmienicie nadawać się powinno do kodowania informacji analogowych. Zrezygnowano także z testu nad zdolnościami zapamiętywania przez moduł CoDi, którego struktura połączeń może być strukturą rekurencyjną. Niemniej jednak badania takie zostały przeprowadzone przez grupę GABRI [int 07] i sugerują, że można wyewoluować moduły CoDi zdolne do zapamiętywania informacji wewnątrz modułu.

Cechą charakterystyczną modułów CoDi, odróżniającą ją od wielu innych sieci neuronowych, jest umiejętność przetwarzania sygnałów ciągłych, zmieniających się w czasie. W rozdziale 8.3, wykazano, że układy CoDi, mogą skutecznie operować na takich sygnałach. Można wnioskować, że zastosowanie modułów w celu obróbki takich sygnałów jak mowa ludzka powinno przynieść interesujące rezultaty. „Wyhodowanie” modułów rozpoznających dźwięki, lub wyodrębniających pewne charakterystyki z prezentowanych sygnałów wydaje się realne i warte kontynuacji.

W celu przeprowadzenia omawianych w pracy doświadczeń, niezbędne stało się skonstruowanie równoległego systemu obliczania funkcji przystosowania modułów. Prace nad tym systemem zaowocowały usprawnieniami, które wydatnie przyśpieszyły proces ewolucji redukując istotnie czas obliczania funkcji fitness.

Ze względu na ograniczone możliwości w dostępie do maszyn o dużej mocy obliczeniowej przeprowadzono tylko część planowanych eksperymentów. Dostęp do takich urządzeń jak opisywany w rozdziale 5.1 CBM, umożliwiłby skrócenie czasu obliczeń o 4 rzędy wielkości! Dzięki takim rozwiązaniom, badania miałyby bardziej charakter interaktywny niż wsadowy i umożliwiłyby podjęcie bardziej ambitnych prób zbadania tego niewątpliwie interesującego podejścia do sztucznej inteligencji i sieci neuronowych.

Autor jest przekonany, że wraz z rozwojem technologii informatycznych i elektronicznych, w niedługim czasie układy FPGA zyskają popularność także w urządzeniach klasy PC. Struktura logiczna takiego układu będzie mogła zostać dynamicznie przeprogramowana, na życzenie aplikacji. Dzięki takim rozwiązaniom

Page 58: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 53

możliwe stanie się błyskawiczne „zainstalowanie” w razie potrzeby wyspecjalizowanej karty graficznej, procesora sygnałowego lub koprocesora wysokiej dokładności lub urządzenia sprzętowo symulującego model CoDi. Wszystkich tych funkcji dostarczy pojedynczy układ FPGA, przeprogramowywany na życzenie.

Przy takim założeniu komórkowe sieci neuronowe mogą zyskać na znaczeniu i popularności. Obecnie największą barierą dla ich rozwoju jest bardzo długi czas symulacji ich zachowania. W [Gol 98] możemy przeczytać:

„Jest wielkim paradoksem, że w świecie, w którym algorytmy sekwencyjne przekształca się w równoległe, zazwyczaj dzięki niezliczonym trikom i łamańcom, algorytmy genetyczne (z natury w wysokim stopniu równoległe) są realizowane sekwencyjnie za pomocą równie nienaturalnych chwytów.”

Analogiczne stwierdzenie można sformułować w kontekście wielu prac nad sieciami neuronowymi, a komórkowymi w szczególności.

Page 59: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 54

Literatura

[Gol 98] David E. Goldberg Algorytmy genetyczne i ich zastosowania, WNT, Warszawa 1995

[Kwa 99] Halina Kwaśnicka Obliczenia ewolucyjne w sztucznej inteligencji, Oficyna wydawnicza Politechniki Wroclawskiej, Wrocław 1999

[Mic 96] Zbigniew Michalewicz Algorytmy genetyczne + struktury danych = programy ewolucyjne, WNT, Warszawa 1996

[int 01] http://www.arkus.wroc.pl/si.htm

[int 02] Andrzej Pastusiak Dokumentacja projektu oraz referat z seminarium z przedmiotu „Algorytmy genetyczne” http://www.ci.pwr.wroc.pl/~pastusia/ga3d.htm

[Żur 96] Jacek Żurada, Mariusz Barski, Wojciech Jędruch, Sztuczne sieci neuronowe, PWN, Warszawa 1996

[Oso 97] Stanisław Osowski, Sieci neuronowe w ujęciu algorytmicznym, WNT, Warszawa 1997

[Cri 97] Francis Crick, Zdumiewająca hipoteza, Prószyński i s-ka, Warszawa 1997

[Kuł 00] Krzysztof Kułakowski, Automaty komórkowe, 2000, http://fatcat.ftj.agh.edu.pl/~bold/skrypt/main

[int 04] Strona domowa Hugo de Garisa http://www.hip.atr.co.jp/~degaris/

[int 05] Kod źródłowy implementujący model CoDi. ftp://ftp.hip.atr.co.jp/pub/Dept6/degaris/codes/CoDi-1Bit.tar.gz

[Kor 98] Michael Korkin, Norberto. E. Nawa, Hugo de Garis A ‘Spike Interval Information Coding’ Representation for ATR's CAM-Brain Machine (CBM), 1998, http://www.hip.atr.co.jp/~degaris/papers/ices98.html

[int 06] Strona domowa Hugo de Garisa http://www.hip.atr.co.jp/~degaris/

[int 07] Gdańsk Artificial Brain Initiative - http://www.pg.gda.pl/~buller/eecs.html

[Siw] Paweł Siwak, Cellular automata http://staff.sk-kari.put.poznan.pl/siwak/Tutorials/CellularAutomata/index.html

[Boc 93] Nino Boccara, Eric Goles, Servet Martinez, Pierre Pico Cellular Automata and Cooperative Systems, Kluwer Academic Publishers 1993.

[Ciń 98] Sebastian Cińcio, Projektowanie sieci neuronowych za pomocą algorytmu genetycznego, Praca magisterska, Politechnika Wrocławska, Wrocław 1998

[Muc 96] Grzegorz Mucha, Zastosowanie sztucznych sieci neuronowych do analizy wybranych zagadnień mechaniki konstrukcji, Praca magisterska, Politechnika Krakowska, Kraków 1996. Dostępna pod adresem: http://www.twins.pk.edu.pl/~grzes/pol/dyplom/

[Mer 97] Lionel Merlat, Axel Köneke, Jean Merclé, A tutorial introduction to Cellular Neural Networks. 1997, Praca dostępna pod adresem http://www.sic.rma.ac.be/~lmerlat/Publis/essaim97.zip

[int 08] http://lab.analogic.sztaki.hu/csl-word/csl_contents.html

Page 60: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 55

[Bul 98] Andrzej Buller, Sztuczny mózg, to już nie fantazje, Prószyński i S-ka, Warszawa 1998

[Tup 99] Konrad Tupaj, Modelowanie mózgu, fizjologii komórki nerwowej, procesów umysłowych człowieka, Seminarium z przedmiotu Sieci Neuronowe II, Politechnika Wrocławska 1999

Page 61: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 56

Dodatek A - Instrukcja obsługi

Zaszycie takich stałych jak rozmiar modułu wewnątrz kodu programu, daje możliwość kompilacji możliwie najlepiej zoptymalizowanego kodu dostosowanego do konkretnego zadania. Dlatego w fazie generowania pojedynczego eksperymentu niezbędna okazała się faza kompilacji. Do kontroli wszystkich parametrów ewolucji niezbędna jest ingerencja w kod programu w pliku codi.cpp. Daje to pełną elastyczność i możliwość ingerencji w najdrobniejsze detale ewolucji. Jednakże wymaga to umiejętności programowania w C++ oraz znajomości szczegółów przyjętych rozwiązań. Aby zatem uprościć ten proces, został stworzony program ułatwiający planowanie standardowych eksperymentów generując stosunkowo ogólny eksperyment, gdzie wszelkie dane podajemy z konsoli i na tej podstawie generowany jest odpowiedni nagłówek przetwarzany następnie automatycznie w pożądany program wynikowy. Należy podkreślić, iż takie rozwiązanie zostało podyktowane zapewnieniem minimalnego czasu obliczeń, gdyż czas wygenerowania programu wynikowego z przygotowanych danych jest niewspółmiernie mały do czasu całkowitej ewolucji i pozwala przyśpieszyć ten proces kilkukrotnie. Wygenerowany program może posłużyć do przeprowadzenia eksperymentu. Za pomocą plików dyskowych można zadawać rozmieszczenie wejść w module CoDi oraz wartości wejść i oczekiwanych wyjść. Jako funkcję przystosowania przy takim podejściu oblicza się odległość Hamminga między wyjściem oczekiwanym a otrzymanym. Wartość ta jest następnie normalizowana do zakresu [0,1], tak że 0 odpowiada wszystkim wyjściom odwróconym, a 1 wszystkim wejściom poprawnym.

Implementacja została przygotowana na platformę Linux oraz kompilator w wersji co najmniej 2.8.1 wraz z zainstalowaną odpowiednią do wersji kompilatora biblioteką libstdc++. Wszelkie eksperymenty należy zacząć od rozpakowania biblioteki:

tar xzf codi-0.5.tar.gz

Przechodząc do kartoteki należy zbudować program ułatwiający przeprowadzanie eksperymentów bez potrzeby znajomości C++ i zawiłości implementacji.

cd codimake codi_setup

oraz wywołać program:

./codi_setup

Następnym krokiem jest stworzenie katalogu zawierającego dane wejściowe dla eksperymentu oraz przygotowanie plików z opisem eksperymentu.

mkdir xor_experiment

w katalogu tym należy umieścić co najmniej 4 pliki:

plik input.posW pierwszej linii zawiera liczbę wejść do modułu, a w następnych kolejno ich współrzędne X,Y,Z w module. Np.:

20 0 03 2 0

Page 62: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 57

plik output.posAnalogiczny format jak input.pos. Definiuje pozycje wyjść modułu oraz ich liczbę. Np.:

10 0 12

pliki zwierające serie wejść i wyjśćJest to seria par plików i0, o0, i1, o1, .. .innn, onnn.

Para zawiera wejście do modułu CoDi oraz oczekiwaną odpowiedź na wyjściu. Dla każdej takiej pary wykonywana jest faza sygnalizacji. Funkcja przystosowania jest średnią funkcji przystosowania modułu dla każdego testów. Pliki o postaci i??? rozpoczynają się liczbą identyczną z liczbą wejść podaną w pliku input.pos. Następnie umieszczone są linie zawierające sygnał, jaki ma być podawany w kolejnych cyklach sygnalizacji na poszczególne wejścia. Pliki o postaci o??? mają taki sam format, z tym że opisują oczekiwane wyjście dla tak zadanego wejścia i są one wykorzystywane do określenia przystosowania modułu. Należy podkreślić, że liczba bitów w każdej linii, pliku i??? i o??? powinna być zgodna, gdyż określa ona liczbę cykli fazy sygnalizacji dla danego testu. Miedzy różnymi testami ta zgodność nie musi być zachowana. Np. Dla wyewoluowania modułu realizującego funkcję XOR na dwóch wejściach:Plik i0:

20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Plik o0:

10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Plik i1:

21 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Plik o1:

11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Plik i2:

20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Plik o2:

Page 63: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 58

11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Plik i3:

21 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Plik o3:

10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Program sam rozpozna liczbę testów umieszczonych w katalogu eksperymentu.

Generacja programu wykonalnenegoNastępnie w głównym katalogu programu należy wywołać program generujący odpowiedni do naszych potrzeb program wykonawczy:

./codi_setup

Zadaje on serię pytań:

Enter module sizes X is multiply of 3, Y is multiply of 2 and Z is multiply of 2X Y Z:

Należy wprowadzić rozmiar modułu w trzech wymiarach oddzielając liczby białymi znakami.

Enter population size:

Rozmiar populacji osobników. Selekcja będzie się odbywać w sposób stochastyczny według reszt z powtórzeniami ze współczynnikiem alpha równym 1,0, poczynając od populacji o podanej wielkości z losowo wylosowanymi chromosomami. Ewolucja nie jest elitarna.

Enter xover rate:

Współczynnik crossing over.

Enter mutation rate:

Współczynnik mutacji. Dla wszystkich elementów chromosomu (Chneuronu, Chwzrost, Chznaku) na takim samym poziomie.

Number of generations:

Liczba generacji, po których ma zatrzymać się proces ewolucji a stan populacji zostanie zapisany w pliku output.6

Enter experiment dir:

Page 64: docus.no-ip.comdocus.no-ip.com/papers/mgr_nolinks.doc · Web viewWydziałowy Zakład Informatyki Wydział Informatyki i Zarządzania Wybrzeże Wyspiańskiego 27, 50-370 Wrocław Praca

Ewoluujące automaty komórkowe jako metoda wzrostu sieci neuronowych 59

Katalog w którym umieściliśmy powyżej zdefiniowane pliki względem bieżącego katalogu

Enter fitness log name:

Nazwa pliku, gdzie będą zapisywane dla każdego pokolenia trójki postaci:Numer pokolenia, najlepsze przystosowanie, średnie przystosowanie

Enter version (1-single thread, m-mpi parallel executable, s-socket master process)

Należy wpisać 1.Na podstawie tych danych zostanie wygenerowany plik experiment.h definiujący wszelkie parametry modułu. Np. o takiej postaci (w komentarzach dodano opis niektórych parametrów nie opisanych powyżej):

#define EXP_AUTO_GENERATED#define FAST 64#define MAX_GENERATIONS 1000#define SPACESIZEX 12#define SPACESIZEY 8#define SPACESIZEZ 8#define POP_SIZE 12#define XOVER_RATE 0.001#define MUT_RATE_A 0.001#define MUT_RATE_B 0.001#define OUTPUT_FILE "xor_experiment/xor_12_8_8_A"#define EXPERIMENT_DIR "xor_experiment/"#define BIN_CHROMO_IO#define X_GRID 3 // Neurony muszą być rozmieszczone na #define Y_GRID 2 // sietce 3x2x2#define Z_GRID 2#define AXON_DENDRIT_RATIO 2 //Współczynnik wzrostu aksonów i dendrytów opisany w [1]#define GROW_LOG 3 //Proces wzrostu logowany do pliku output.3#define SIG_LOG 4 //Proces sygnalizacji logowany do pliku output.4#define FIT_LOG 5 //Fitness osobników zapisywany do pliku output.5#define DUMP_LOG 6 // Plik z populacją końcową to output.6

Po wygenerowaniu powyższego pliku wywoływany jest program make, który tworzy program wykonywalny o nazwie codi. Jego uruchomienie rozpocznie proces ewolucji pozostawiając informację o przebiegu ewolucji w pliku o zadanej nazwie oraz populację końcową w pliku output.6. Wszystkie pliki będą umieszczone w katalogu eksperymentu.

Program w wersji pod systemy uniksowe jest dostępny pod adresem http://www.ci.pwr.wroc.pl/~pastusia/download/codi-0.5.tar.gz.