Projekt struktury sieci neuronowej

Podobne dokumenty
Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

Algorytm genetyczny (genetic algorithm)-

Wydajność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych

Strefa pokrycia radiowego wokół stacji bazowych. Zasięg stacji bazowych Zazębianie się komórek

Analiza ilościowa w przetwarzaniu równoległym

Analiza efektywności przetwarzania współbieżnego

Macierzowe algorytmy równoległe

3. Macierze i Układy Równań Liniowych

5. Algorytm genetyczny przykład zastosowania

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

SIEĆ NEURONOWA DO OCENY KOŃCOWEJ PRZEDSIĘWZIĘCIA (PROJEKTU)

S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

5. Model komunikujących się procesów, komunikaty

Sztuczna Inteligencja Tematy projektów Sieci Neuronowe

8. Neuron z ciągłą funkcją aktywacji.

Optymalizacja optymalizacji

Programowanie dynamiczne

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Numeryczna algebra liniowa

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

Czas w systemach rozproszonych. Krzysztof Banaś Systemy rozproszone 1

Zadanie 5 - Algorytmy genetyczne (optymalizacja)

Aproksymacja funkcji a regresja symboliczna

SIECI KOMPUTEROWE Adresowanie IP

Testy De Jonga. Problemy. 1 Optymalizacja dyskretna i ciągła

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Algorytmy sztucznej inteligencji

Definicje. Algorytm to:

dr inż. Jarosław Forenc

Sortowanie Shella Shell Sort

Algorytm. a programowanie -

Efektywność algorytmów

Algorytmy Równoległe i Rozproszone Część VI - Systemy rozproszone, podstawowe pojęcia

Uczenie się pojedynczego neuronu. Jeśli zastosowana zostanie funkcja bipolarna s y: y=-1 gdy z<0 y=1 gdy z>=0. Wówczas: W 1 x 1 + w 2 x 2 + = 0

FUNKCJA LINIOWA - WYKRES

Przykładowe rozwiązania

Algorytm wstecznej propagacji błędów dla sieci RBF Michał Bereta

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Zadania jednorodne 5.A.Modele przetwarzania równoległego. Rafał Walkowiak Przetwarzanie równoległe Politechnika Poznańska 2010/2011

LEKCJA TEMAT: Zasada działania komputera.

Projekt Sieci neuronowe

Przesyłania danych przez protokół TCP/IP

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

Programowanie celowe #1

INFORMATYKA POZIOM ROZSZERZONY

Modelowanie niezawodności prostych struktur sprzętowych

Algorytmy genetyczne

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Zadania laboratoryjne i projektowe - wersja β

Technologie informacyjne - wykład 12 -

Zadanie transportowe i problem komiwojażera. Tadeusz Trzaskalik

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

Przetwarzanie równoległe

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

1 Wprowadzenie do algorytmiki

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Algorytmy genetyczne jako metoda wyszukiwania wzorców. Seminarium Metod Inteligencji Obliczeniowej Warszawa 26 X 2005 mgr inż.

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Eksploracja Danych. wykład 4. Sebastian Zając. 10 maja 2017 WMP.SNŚ UKSW. Sebastian Zając (WMP.SNŚ UKSW) Eksploracja Danych 10 maja / 18

Zależności funkcyjne

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Wprowadzenie do programowania współbieżnego

Priorytetyzacja przypadków testowych za pomocą macierzy

Funkcje wymierne. Funkcja homograficzna. Równania i nierówności wymierne.

Mosty przełączniki. zasady pracy pętle mostowe STP. Domeny kolizyjne, a rozgłoszeniowe

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Klasyfikator. ˆp(k x) = 1 K. I(ρ(x,x i ) ρ(x,x (K) ))I(y i =k),k =1,...,L,

Programowanie dynamiczne cz. 2

Dlaczego Meru Networks architektura jednokanałowa Architektura jednokanałowa:

Uproszczony opis obsługi ruchu w węźle IP. Trasa routingu. Warunek:

STATYKA Z UWZGLĘDNIENIEM DUŻYCH SIŁ OSIOWYCH

Analiza korespondencji

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Przygotowanie materiału uczącego dla OCR w oparciu o aplikację Wycinanki.

Algorytmy genetyczne w interpolacji wielomianowej

Podstawy OpenCL część 2

Metody przeszukiwania

Rozkład pracy w biurze rachunkowym Organizacja pracy przed i po wdrożeniu SaldeoSMART Proces wdrożenia Efekty wdrożenia SaldeoSMART

Elementy modelowania matematycznego

System Rozproszone Komunikator Dokumentacja. Maciej Muszkowski Jakub Narloch

Zagadnienia optymalizacji i aproksymacji. Sieci neuronowe.

Programowanie współbieżne Wykład 2. Iwona Kochańska

METODY INŻYNIERII WIEDZY KNOWLEDGE ENGINEERING AND DATA MINING

Algorytmy klasteryzacji jako metoda dyskretyzacji w algorytmach eksploracji danych. Łukasz Przybyłek, Jakub Niwa Studenckie Koło Naukowe BRAINS

Programowanie komputerów

4. Procesy pojęcia podstawowe

Algorytmy genetyczne. Materiały do laboratorium PSI. Studia stacjonarne i niestacjonarne

Obrona rozprawy doktorskiej Neuro-genetyczny system komputerowy do prognozowania zmiany indeksu giełdowego

Licencjonowanie w środowiskach wirtualnych

w sieciach szerokopasmowych CATV i ISP - Model OSI

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

Transkrypt:

Projekt struktury sieci neuronowej Sieci neuronowe są stosowane między innymi jako narzędzie klasyfikacyjne, poprawne określenie struktury sieci pozwala na uzyskanie struktury sprawnie i w miarę bezbłędnie oceniającej podobieństwa pomiędzy wzorcami przedstawianymi jej w procesie uczenia oraz nowymi zadanymi do rozpoznawania. Zwykle najwięcej problemów nastręcza proces uczenia sieci. Zbyt duża liczba neuronów wydłuża proces uczenia sieci oraz zmniejsza jej zdolności klasyfikacyjne. Z kolei niedobór neuronów sprawia, że wyuczenie sieci na podstawie wzorców uczących staje się wręcz niemożliwe, co pociąga za sobą niepoprawną klasyfikację nowych przypadków. W rozwiązaniu powyższego problemu pomocnym okazuje się wykorzystanie algorytmu genetycznego. Algorytmy genetyczne, niejako z definicji mają wbudowaną równoległość. Jeżeli dodatkowo przyjmiemy, że jednocześnie rozpatrywać będziemy grupę populacji zamiast jednej, to zbiór takich populacji można potraktować jako zbiór procesów. Dodatkowo wprowadzenie wymiany informacji genetycznej pomiędzy populacjami może wpłynąć na szybsze znalezienie poszukiwanego rozwiązania. 1 1

Algorytm genetyczny 1. Przetworzenie danych wejściowych (dane wejściowe obejmują parametry populacji początkowej, wzorce uczące oraz testujące dla projektowanej sieci neuronowej, warunki wstrzymania pracy algorytmu) 2. Utworzenie populacji początkowej i jej ocena 3. Generacja nowej populacji i jej ocena operacje genetyczne (operacje krzyżowania oraz mutacji) ocena otrzymanych osobników - dla każdego osobnika w populacji: odwzorowanie osobnika w sieć neuronową, usunięcie zbędnych połączeń lub nadmiarowych neuronów, wyuczenie sieci neuronowej, testowanie sieci, ocena sieci (błąd średniokwadratowy, czas uczenia sieci, itp.), przypisanie osobnikowi wartości określającej jego przystosowanie 4. Klasyfikacja osobników pod względem wartości przystosowania na podstawie oceny przeprowadzonej w poprzednim punkcie (operacja selekcji) i zestawienie nowej populacji 5. Jeżeli nowa populacja nie spełnia założeń (nie zachodzi warunek końca algorytmu) powrót do punktu 3 6. Koniec algorytmu, wyprowadzenie wyników 2 2

Dekompozycja 1 Proces zrównoleglania rozpoczynamy od podziału zadania na podzadania. Możemy zastosować zarówno podział dziedzinowy jak i funkcjonalny. Przy dekompozycji dziedzinowej podział początkowej populacji umożliwi nam proste zrównoleglenie algorytmu poprzez przeszukiwanie tej samej przestrzeni jednocześnie przez większą liczbę współpracujących (wymieniających dane) procesów. Możemy tego dokonać w dwojaki sposób. Po pierwsze możemy podzielić początkową populację na rozłączne zbiory. Wymagać to będzie określenia funkcji podobieństwa sieci neuronowych. Funkcja taka pozwoli na określenie zbiorów, a co za tym idzie, na taki podział przestrzeni początkowej, że każdy z procesów przeszukiwał będzie inny fragment tej przestrzeni. Przestrzeń poszukiwań Wylosowane osobniki Podzbiory osobników 3 3

Dekompozycja 2 Przy takim podziale zrównoleglenie algorytmu będzie polegać na: podziale przestrzeni poszukiwań powieleniu wzorców uczących (każda populacja wykorzystuje te same wzorce) utworzeniu wielu procesów realizujących ten sam algorytm genetyczny rozesłaniu danych do procesów. Po takiej dekompozycji problemu nie są wymagane praktycznie żadne zmiany w przedstawionym algorytmie, jedynie w przedostatnim kroku niezbędna będzie pewna modyfikacja gdyż może mieć miejsce wymiana informacji pomiędzy procesami. 4 4

Dekompozycja 3 Drugim sposobem podziału populacji wejściowej jest jej podział na mniejsze populacje w całkowicie losowy sposób. Początkowo utworzoną populację dzielimy na mniejsze, równe populacje nie zakładając żadnych dodatkowych warunków, co do samego przebiegu podziału. Podział ten można zobrazować za pomocą prostej której każdy odcinek przypisany zostaje do jednego z procesorów. P1 P2 P3 P4 P5 P6 Podział powyższy posiada niestety pewne wady. Populacja początkowa może zostać podzielona tak, że wszystkie procesy przetwarzają dokładnie takie same podobne dane. Może to doprowadzić do tego, że proces poszukiwania rozwiązania będzie mało efektywny. Niemniej jednak nie można arbitralnie stwierdzić, że podział taki jest niekorzystny, a to ze względu na to, iż algorytmy genetyczne charakteryzuje pewna losowość. 5 5

Dekompozycja 4 Innym sposobem dekompozycji jest wprowadzenie dodatkowego elementu pośredniczącego w komunikacji pomiędzy procesami. Taki dodatkowy proces komunikacyjny obsługiwałyby przykładowo cztery procesy obliczeniowe. Dodatkowo procesy te posiadałyby możliwość komunikacji z innymi tego typu procesami. Rozwiązanie takie pozwalałoby na dryft genetyczny pomiędzy oddalonymi populacjami. Procesy komunikacyjne Procesy obliczeniowe 6 6

Dekompozycja 5 Dostępność materiału genetycznego z odległej populacji, czyli należącej do innego węzła komunikacyjnego, byłaby ograniczona, ale nie niemożliwa. Rozwiązanie takie pozwala na lepsze zrównoleglenie procesu wymiany osobników, oraz przerzuca ciężar oceny przydatności osobników w populacji na procesy pośredniczące. W rozwiązaniu tym utworzone zostałyby dwa rodzaje procesów, z których każdy miałby diametralnie różne zadania do wykonania. W powyższym podziale, który jest podziałem funkcjonalnym przedstawiony algorytm zostałoby zmodyfikowany ze względu na istnienie pośredników w komunikacji pomiędzy procesami obliczeniowymi. Z podziałem tym związany jest również współistniejący podział dziedzinowy populacji przydzielanej do procesów obliczeniowych. 7 7

Ocena dekompozycji Podział 1,2 (podziały dziedzinowe) praktycznie nie została określona większa liczba procesów niż dostępna liczba procesorów. Na każdym z procesorów analizowana jest mniejsza liczba sieci neuronowych (mniejsza populacja). Każde z zadań realizowanych na różnych procesorach ma podobny rozmiar (na każdym z procesorów wykorzystywany jest ten sam algorytm sekwencyjny). Zwiększenie liczby przetwarzanych danych wejściowych pociąga za sobą zwiększenie wymaganej liczby procesów, co przy takiej samej liczbie procesorów zwiększy ich obciążenie. Podział 3 (podział funkcjonalny) - jeżeli przyjmiemy, że procesy pośredniczące w komunikacji uruchamiane są na osobnym procesorze to liczba procesów jest równa liczbie procesorów, jeśli nie to otrzymujemy większą liczbę procesów niż procesorów, pewne procesory będą obsługiwać procesy obliczeniowe i komunikacyjne. Procesy różnią się zasadniczo, zarówno pod względem pełnionych funkcji jak i metod komunikacji (dwa rodzaje procesów). Liczba procesów rośnie wraz ze wzrostem ilości danych wejściowych. Rozważając dwie przedstawione dekompozycje dziedzinowe można zauważyć, że praktycznie charakteryzują się one taką samą strukturą komunikacyjną, zasadnicza różnica między nimi leży w samym podziale dziedziny. Biorąc pod uwagę, że kontrolowany podział pierwotnej populacji pozwoli najprawdopodobniej na osiągnięcie lepszej wydajności algorytmu genetycznego, podział drugi zostaje wyeliminowany z dalszych rozważań. Tak więc do dalszych rozważań pozostawiamy podział pierwszy, dziedzinowy oraz drugi funkcjonalny. 8 8

Komunikacja 1 Przyjmijmy następujące oznaczenia: p - liczba procesów S - liczba sąsiadów danego procesu. Pod pojęciem sąsiada rozumieć będziemy proces oddalony od aktualnie rozpatrywanego dokładnie o jedną jednostkę odległości. Logiczna architektura procesorów tworzy sieć typu krata z połączonymi skrajnymi procesorami w wierszach i kolumnach (ang. mesh-wraparound) PPs = Ps/p - rozmiar populacji przetwarzanej przez proces (po podziale populacji początkowej), Ps jest rozmiarem populacji początkowej (praktycznie wyrażany jest przez liczbę osobników w populacji) w - rozmiar komunikatu 9 9

Komunikacja 2 Komunikacja pomiędzy procesami w podziale dziedzinowym ma następujące cechy: 1. Każdy proces posiada skończoną liczbę sąsiadów 2. Każdy proces posiada dwa porty komunikacyjne: wejściowy i wyjściowy oraz odpowiednią liczbę kanałów komunikacyjnych. 3. Długość komunikatu zależna jest od rozmiaru populacji (dla naszych rozważań dokładny jego rozmiar nie jest istotny). 4. Dla każdego cyklu komunikacyjnego można określić ilość informacji, jaka zostanie przesłana, i tak K = S * p określa łączną liczbę komunikatów natomiast I = w * K łączną ilość informacji. 5. Komunikacja jest równoległa, wiele procesów jednocześnie przesyła komunikaty. 6. Dla każdego procesu algorytm wymiany danych wygląda identycznie i można go przedstawić w następujący sposób: k oznacza numer kolumny, r numer wiersza (para <r, k> jest identyfikatorem procesu) 10 10

Komunikacja 3 Rozesłanie w wierszach faza 1 (wysłanie w lewo) if(k%2 == 0) { wyślij w lewo odbierz z prawej } else { odbierz z prawej 0 wyślij w lewo } Krok 1 1 0 1 2 Krok 2 2 11 11

Komunikacja 4 Rozesłanie w wierszach faza 2 (wysłanie w prawo) if(k%2 == 0) { wyślij w prawo odbierz z lewej } else { odbierz z lewej wyślij w prawo } 0 1 0 1 2 2 12 12

Komunikacja 5 if(r%2 == 0) { wysłanie w górę odbiór z dołu } else { odbiór z dołu wysłanie w górę } Rozesłanie w kolumnach faza 3 (wysyłanie w górę) 0 1 0 1 2 2 13 13

if(r%2 == 0) { wysłanie w dół obiór z góry } else { odbiór z góry wysłanie w dół } Komunikacja 6 Rozesłanie w kolumnach faza 4 (wysłanie w dół) 0 1 0 1 2 2 14 14

Komunikacja 7 Struktura kanałów komunikacyjnych przy podziale dziedzinowym Proces rozpatrywany Proces sąsiedni Kanał komunikacyjny Granica sąsiedztwa 15 15

Komunikacja 8 Dla podziału funkcjonalnego, przyjmijmy, że podział danych początkowych będzie taki sam jak przy podziale dziedzinowym. Inny natomiast, będzie ich przydział do zadań. Wynika to z faktu, że procesy będą podzielone na dwie grupy funkcjonalne. Pierwsza z nich, procesy obliczeniowe, zajmować się będzie przetwarzaniem populacji. Druga grupa, procesy pośredniczące, zajmować się będzie wymianą osobników pomiędzy procesami grupy pierwszej, oraz ogólną oceną sytuacji całej populacji globalnej. Procesy pośredniczące w wymianie komunikatów będą dalej traktowane jako procesy serwerów, natomiast procesy wykonujące obliczenia to procesy klientów. Klienci do poprawnej pracy potrzebują wymiany informacji z innymi procesami i takie właśnie żądania realizują procesy serwerów. Wprowadźmy następujące oznaczenia; Cp liczba procesów klientów Sv - liczba procesów serwerów (zwykle spełniony jest warunek p= Sv * 4 + Sv). 16 16

Komunikacja 9 1. Każdy proces serwera obsługuje skończoną liczbę klientów 2. Każdy proces posiada dwa porty komunikacyjne: wejściowy oraz wyjściowy. 3. Każdy proces klienta posiada jeden kanał komunikacyjny. Każdy proces serwera posiada do ośmiu kanałów komunikacyjnych. 4. Długość komunikatu zależy od początkowego rozmiaru populacji. Ilość osobników przekazywanych do serwera jest większa w porównaniu z podziałem dziedzinowym, gdyż to on tak naprawdę zdecyduje co z nimi zrobić (komu przekazać). Dodatkowo rośnie rozmiar każdego komunikatu, gdyż należy dodatkowo przesłać parametry opisujące populację: rozmiar, średnie przystosowanie, minimalne przystosowanie, maksymalne przystosowanie, itp. 5. Ze względu na brak synchronizacji podczas komunikacji nie można jednoznacznie określić ilości informacji przepływającej przez kanały komunikacyjne. Można jedynie określić, ile informacji wymienianej będzie w jednym cyklu komunikacji z serwerem: Łączna liczba komunikatów: K = Sv * Cp Łączna ilość informacji: I = w * K Dodatkowo można określić ilość komunikacji pomiędzy serwerami. Będzie ona dokładnie taka jak w przypadku pierwszym, a to ze względu na logiczne rzutowanie struktury połączeń między serwerami na strukturę sieci typu krata. Komunikacja między serwerami występować będzie w pewnych z góry określonych cyklach, przy dodatkowym założeniu komunikacji nieblokującej. 17 17

Komunikacja 10 6. Komunikacja klientów z serwerem jest sekwencyjna, równoległość komunikacji występuje na poziomie wymiany informacji pomiędzy serwerami oraz grup procesów związanych z poszczególnymi serwerami. 7. Dla każdego procesu klienta proces wymiany danych wygląda następująco: Przejęto dodatkowo następujące oznaczenia: my_sv proces serwer, do którego przypisany jest klient, CL zbiór procesów klientów, do których przypisany jest serwer, SL zbiór serwerów z którymi połączony jest dany serwer, dla każdego serwera ważny jest jego identyfikator w strukturze połączeń między serwerami: k - numer kolumny, r - numer rzędu, (para <r, k> jest identyfikatorem procesu). do { do{ oblicz przystosowanie kolejnego osobnika }while(istnieją nieocenione osobniki) przygotuj osobniki do wysłania przygotuj parametry populacji do wysłania send(my_sv,parametry) send(my_sv,osobniki) przygotowanie nowej populacji recv(my_sv,osobniki) dodaj nowe osobniki do populacji }while(!stop) 18 18

Komunikacja 11 Komunikacja po stronie serwera jest komunikacją opartą o skanowanie portów. Pozwoli to na nieskrępowaną pracę klientów w przypadku opieszałości jednego z nich. do { NewCL = CL do { dla każdego c z NewCL { if(jest komunikat od c) { recv(c,parametry) recv(c,osobniki) NewCL = NewCL - c }}} while(newcl 0) opracowanie informacji dla każdego c z CL { if(c przygotowany do odbioru) send(c,osobniki) } NewSL = SL dla każdego s należącego do SL { if(jest komunikat od s) { recv(s,osobniki) send(s,osobniki) NewSL = NewSL s }}} 19 19

Ocena komunikacji Możemy łatwo zauważyć, że przy obu podziałach komunikacja jest typu lokalnego, to znaczy procesy komunikują się bezpośrednio ze swoimi najbliższymi sąsiadami. Przy podziale dziedzinowym obciążenie komunikacją każdego z procesów jest identyczne a przy podziale funkcjonalnym nie jest równomierne. W obu przypadkach obliczenia przebiegają równolegle, natomiast dla podziału dziedzinowego komunikacja odbywa się równolegle, gdy przy podziale funkcjonalnym może mieć miejsce komunikacja sekwencyjna. Wynika z tego, że struktura komunikacyjne dla podziału dziedzinowego jest korzystniejsza niż dla podziału funkcjonalnego. 20 20

Aglomeracja 1 Aglomeracja - ma ona na celu między innymi zmniejszenie liczby komunikatów przesyłanych pomiędzy zadaniami. Proces aglomeracji dotyczy głównie zadań, które nie mogą wykonywać się równolegle. Jednak aglomeracja może być również przydatna w przypadku zadań równoległych. Dotyczy to zadań o intensywnej komunikacji lokalnej, gdzie zmniejszenie ilości komunikatów kompensuje zwiększenie czasu przetwarzania. Aglomeracja może być także korzystna dla tych zadań, których komunikacja jest sekwencyjna. W naszym przypadku dla zaproponowanych rozwiązań nie występuje problem sekwencyjności zadań. Możemy jednak spróbować dokonać aglomeracji zadań równoległych dla pierwszego, jak i drugiego modelu komunikacji W pierwszym modelu łączone będą dane, tak aby każdy z procesorów przetwarzał większe porcje informacji, natomiast w modelu drugim łączyć będziemy funkcjonalności procesów. 21 21

Aglomeracja 2 Cechy powyższej aglomeracji są następujące: dane znajdujące się w kolumnach są przetwarzane przez jeden procesor (dla każdej kolumny), powoduje to zwiększenie czasu obliczeń T obl =T obl *n ze względu na aglomerację danych zmniejsza się liczba wymaganych komunikatów, łączna liczba komunikatów przed aglomeracją wynosiła K = n 2 *4, a po aglomeracji K = n*2, zwiększenie długości komunikatu, przed aglomeracją długość komunikatu równa była w, a po aglomeracji wynosi w*n, występuje również zwiększenie rozmiaru populacji, a co za tym idzie: zmniejszenie odległości między różnorodnym materiałem genetycznym, szybsza unifikacja materiału genetycznego oraz zmniejszenie różnorodności populacji Proces obliczeniowy przed aglomeracją Proces po aglomeracji 22 22

Aglomeracja 3 Dla drugiego sposobu aglomeracji możemy sformułować następujące wnioski: zwiększenie czasu obliczeń T obl =T obl *4 zmniejszenie liczby komunikatów, przed aglomeracją K=n 2 *4, a po aglomeracji odpowiednio dla różnej liczby procesorów: p=4 => K=0, p=8 => K=2, p=16 =>K=8 zwiększenie długości komunikatu, przed aglomeracją długość komunikatu równa była w a po aglomeracji długość komunikatu równa jest 4*w dodatkowo występuje zwiększenie rozmiaru populacji jak dla pierwszego sposobu aglomeracji. Proces obliczeniowy przed aglomeracją Proces po aglomeracji 23 23

Ocena aglomeracji Dla podziału funkcjonalnego aglomeracja może być wykonana poprzez połączenie funkcjonalności klientów połączonych z serwerem z funkcjonalnością serwerów. Otrzymamy w ten sposób model identyczny z drugim zaproponowanym dla podziału dziedzinowego, dlatego rozważania te pominiemy. Dla pierwszego sposobu aglomeracji (aglomeracja paskowa) otrzymujemy: zmniejszenie kosztu komunikacji (mniejsza liczba komunikatów - t s ), paczki komunikatów znacznie większe, brak replikacji obliczeń oraz danych. Przy założeniu, że powielane w celu rozesłania fragmenty populacji to replikacja danych, możemy wprowadzić termin częściowej replikacji. Rozmiar danych pozostaje stały w czasie wykonania programu. Identyczny rozmiar zadań (procesów), ale tylko zbliżone czasy przetwarzania. Ponieważ postać osobnika determinuje czas wyznaczania dla niego wartości funkcji przystosowania (uczenie sieci neuronowej) czasy przetwarzania poszczególnych zadań mogą się różnić. Nie ma zatem pełnej synchronizacji, ale ze względu na przetwarzanie takiej samej ilości danych, różnice te nie powinny być znaczące. Możliwe jest także zastosowanie w algorytmie genetycznym pewnych mechanizmów zmniejszających ryzyko dużych opóźnień. Liczba zadań wzrasta wraz z rozmiarem danych. Równoległość pozostaje na tym samym poziomie. Możliwe jest dalsze redukowanie liczby przetwarzanych zadań aż do pojedynczego procesu. Trzeba jednak wziąć pod uwagę proporcjonalne zmniejszanie rozmiaru problemu, tak aby nie przeciążać pojedynczych procesorów. Dla drugiego sposobu aglomeracji (aglomeracja blokowa) uzyskujemy podobne wnioski. Oba sposoby aglomeracji powinny być dalej rozpatrywane. 24 24

Przydział procesorów Pierwszy ze sposobów to indeksowanie z alokacją pakietową. Budując ten model zakładamy, że dane wejściowe podlegają wcześniejszemu uporządkowaniu. Polega to na takiej klasyfikacji osobników, że osobniki o zbliżonym materiale genetycznym znajdują się blisko siebie. Dane te dzielimy następnie na tyle równych pakietów, ile mamy do dyspozycji procesorów. Każdemu pakietowi przypisana zostanie konkretna wartość określająca jego położenie w przestrzeni procesów. Każdy z procesorów posiadał będzie unikalny identyfikator, nie tylko wyróżniający go w strukturze, ale również określający jego sąsiedztwo. W początkowej fazie wszystkie dane (podzielone i przygotowane do rozesłania) znajdują się w procesorze zerowym. Następuje faza grupowego przesłania komunikatów każdy z procesorów otrzymuje inny komunikat (ang. one-to-allpersonalized), w której dane rozsyłane są do odpowiednich procesorów. W ten sposób każdy z procesorów przetwarza takie dane, że sąsiednie procesory posiadają dane o zbliżonym materiale genetycznym (obszary sąsiednie w przestrzeni poszukiwań). Drugie podejście do przydziału zadań do procesorów związane jest z wyrównywaniem obciążeń. W modelu tym, wszystkie kroki byłyby identyczne jak poprzednio. Różnica pojawiałaby się w ilości danych biorących udział w obliczeniach, posiadanych przez każdy z procesorów. W modelu tym założylibyśmy, że ilość danych adekwatna jest do obciążenia procesora. Ze względu na różnice czasowe w trakcie uczenia sieci neuronowej należy rozważyć możliwość różnorodnego rozmieszczenia danych początkowych. W modelu tym należałoby określić średni czas obliczeń dla kilku rodzajów sieci i na tej podstawie decydować jaka ilość danych ma być przetwarzana przez każdy z procesorów. Takie rozwiązanie napotyka jednak duże trudności. Konieczne byłyby negocjacje, albo dodatkowy proces zarządzający rozkładem danych. Najprawdopodobniej skutkowałoby to znacznym obniżeniem wydajności całego procesu obliczeniowego. Z tego też względu końcowe rozwiązanie powinno wykorzystywać pierwszą z propozycji przydziału zadań do procesorów. 25 25

Ocena efektywności Przyjmijmy następujące oznaczenia: T S - czas potrzebny na wykonanie programu uruchomionego na jednym procesorze (czas sekwencyjny) T P - czas potrzebny na wykonanie programu na maszynie wieloprocesorowej (czas równoległy) T kom, T obl, T bezcz odpowiednio czasy komunikacji, obliczeń oraz bezczynności N - liczba procesorów w kolumnach jak i wierszach (N*N = p łączna liczba procesorów) PPs - liczba osobników w każdej z populacji t c - czas przetwarzania pojedynczego osobnika w rozmiar przesyłanego komunikatu (zależy od rozmiaru pojedynczego osobnika) Wyznaczmy czas przetwarzania sekwencyjnego, będzie on iloczynem liczby osobników w każdej populacji, całkowitej liczby procesorów oraz czasu przetwarzania pojedynczego osobnika, wyraża się on następującym wzorem: T t N * s c * 2 PPs 26 26

Ocena efektywności Załóżmy, równomierny rozdział zadań pomiędzy dostępne procesory (na podstawie rozważań z poprzednich punktów jest ono uzasadnione). Pomijając dodatkowo czas bezczynności możemy przyjąć, że czas wykonania równoległego będzie sumą czasów komunikacji oraz obliczeń każdego z procesorów podzieloną przez liczbę procesorów. Łączna liczba komunikatów wynosi N 2 * 4 (gdzie N 2 = p), więc czas komunikacji wyraża się wzorem T kom = 2 * (t s + t w * w) * p * 4, natomiast czas wynosi obliczeń T obl = t c * p *PPs. Stąd czas przetwarzania równoległego wyraża się wzorem: T p 2*( t t * w)*4* p s w p t c * p * PPs 27 27

Ocena efektywności 3 Po podstawieniu powyższych zależności do wzoru na efektywność i wykonaniu prostych przekształceń otrzymujemy następujące wyrażenie określające efektywność naszej aplikacji: E 2*( t s t w t c * p * PPs * w)*4* p t c * p * PPs Powyższe rozważania należy dodatkowo rozszerzyć o analizę spadku efektywności podczas stopniowego zwiększania liczby procesorów dla różnych rozmiarów problemu. Pozwoli to na późniejsze określenie możliwości skalowalności algorytmu. W tym celu konieczne jest dokładne wyznaczenie czasów: t s, t c, oraz t w dla konkretnego komputera. Otrzymany w wyniku powyższych rozważań szkielet rozwiązania nosi w literaturze nazwę wyspowego równoległego algorytmu genetycznego. 28 28