Vizualizace jako nástroj studia chování modelů přírodních systémů
Transkript
České vysoké učení technické v Praze Fakulta elektrotechnická Diplomová práce Vizualizace jako nástroj studia chování modelů přírodních systémů Jan Saidl Vedoucí práce: Ing. Pavel Kordík Studijní program: Informatika a výpočetní technika leden 2006 ii Poděkování Rád bych poděkoval Ing. Pavlu Kordíkovi za vedení při mém studiu neuronových sítí, genetických algoritmů a za četné a velmi podnětné rady při psaní této diplomové práce. Můj velký dík patří mé matce, která mě po dlouhá léta podporovala v mém studiu a to i v době, která nebyla tou nejlehčí. Také bych rád poděkoval své přítelkyni Soně, která mi svým optimismem vždy dokázala dodat energii pro další práci. iii iv Prohlášení Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu §60 zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Karlových Varech dne 20.1. 2006 ............................................................. v vi Abstract The common topic of all experiments in this thesis is the vizualization of neural network behaviour. We had some difficulties dealing with the multidimensional character of the models, therefore we had to study and apply several concepts for multivariate data projection. Approaches proposed in this thesis are unique, so we spend a lot of time tuning them to be applicable to real-world problems. Finally we applied genetic algorithm preserving diversity to find interesting behaviour of neural network in multidimensional space. Abstrakt Společným tématem všech eperimentů této diplomové práce je vizualizace chování neuronových sítí. Velkou výzvou byla multidimenzionalita dat. Abychom tento problém vyřešili, museli jsme nastudovat a posléze aplikovat několik metod projekce dat. Navržené metody jsou unikátní, proto jsme strávili mnoho času jejich vyladěním, aby byly použitelné pro řešení reálných problémů. Hlavním cílem práce je implementace genetického algoritmu vyhledávajícím zajímavé oblasti chování neuronových sítí v multidimenzionálním prostoru. Důležitou vlastností algoritmu je zachování diverzity. vii viii Obsah 1 Motivace 1 I 3 Teorie 2 Neuronové sítě 4 2.1 Inspirace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 Umělá neuronová síť . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Učení zpětným šířením signálu - BackPropagation . . . . . . . . . . . . . 5 2.4 Group Method of Data Handling (GMDH) . . . . . . . . . . . . . . . . . 6 2.5 Group of Adaptive Models Evolution (GAME) . . . . . . . . . . . . . . . 8 2.6 Skupinové učení (Ensemble learning) . . . . . . . . . . . . . . . . . . . . 10 3 Genetické algoritmy 11 3.1 Inspirace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 Analogie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3 Algoritmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.4 Fitness funkce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.5 Elitismus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.6 Diverzita populace a její zachování . . . . . . . . . . . . . . . . . . . . . 13 4 Vizualizace dat II 15 4.1 Scatterplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2 Scatterplot matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.3 Další vizualizační techniky mnohadimenzionálních dat . . . . . . . . . . . 16 Vlastní práce 17 5 Cíle mé práce 18 6 Nové pohledy na neuronové sítě 19 6.1 Vizualizace modelů neuronových sítí . . . . . . . . . . . . . . . . . . . . 19 6.1.1 Vizualizace modelů řešící klasifikační úlohu . . . . . . . . . . . . . 19 6.1.2 Zobrazení reálných dat . . . . . . . . . . . . . . . . . . . . . . . . 20 6.1.3 Vizualizace skupiny modelů řešící klasifikační úlohu . . . . . . . . 23 ix 6.2 Násobení odezev modelů neuronových sítí . . . . . . . . . . . . . . . . . 7 Vyhledávání zajímavých oblastí chovaní modelů 23 25 7.1 Aplikace genetického algoritmu . . . . . . . . . . . . . . . . . . . . . . . 27 7.2 Zakódování chromosomu . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 7.3 Fitness funkce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 7.4 Selekce chromosomu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 7.5 Křížení chromosomů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 7.6 Mutace chromosomu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 8 Experimenty 8.1 8.2 Uměle vytvořená data s malou dimenzí . . . . . . . . . . . . . . . . . . . 32 8.1.1 Fitness funkce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 8.1.2 Diverzita populace . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Uměle vytvořená data s dimenzí vstupního vektoru tři . . . . . . . . . . 39 Ohodnocení významnosti vstupních parametrů (feature ranking) . 41 Reálná data - spotřeba energie budovy . . . . . . . . . . . . . . . . . . . 43 8.3.1 44 8.2.1 8.3 32 Ohodnocení významnosti vstupních parametrů (feature ranking) . 9 Implementace 46 9.1 Vizualizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 9.2 Rozhraní pro genetické algoritmy . . . . . . . . . . . . . . . . . . . . . . 47 9.3 Třída Population . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 9.4 Vizualizační třída GA a konfigurační třída GAConfig pro aplikaci GAME 48 9.5 Aplikace navrženého rozhraní Chromosome . . . . . . . . . . . . . . . . . 49 9.6 Rozhraní tříd GA a GAConfig . . . . . . . . . . . . . . . . . . . . . . . . 49 10 Další práce 51 11 Závěr 52 12 Literatura 55 x Seznam obrázků 2.1 Umělý neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 Umělá neuronová síť . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 Učení neuronové sítě s učitelem . . . . . . . . . . . . . . . . . . . . . . . 6 2.4 GMDH síť . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.5 Srovnání MIA GMDH sítě se sítí GAME . . . . . . . . . . . . . . . . . . 9 2.6 Schéma Bagging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.1 Schéma genetického algoritmu . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2 Diverzita populace - Niching . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.1 Scaterrplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2 Scatterplot matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 6.1 Schématická ukázka vizualizace klasifikačního modelu . . . . . . . . . . . 20 6.2 Vizualizace klasifikačního modelu Iris setosa . . . . . . . . . . . . . . . . 20 6.3 Vizualizace klasifikačního modelu Iris versicolor . . . . . . . . . . . . . . 21 6.4 Vizualizace klasifikačního modelu Iris virginica . . . . . . . . . . . . . . . 21 6.5 Vizualizace klasifikačního modelu spirál . . . . . . . . . . . . . . . . . . . 22 6.6 Vizualizace klasifikačního modelu Iris a učících dat . . . . . . . . . . . . 22 6.7 Vizualizace několika klasifikačních modelů Iris versicolor . . . . . . . . . 23 6.8 Vizualizace násobení odezev modelů pro jednotlivé třídy . . . . . . . . . 24 6.9 Vizualizace odezev modelů Iris pro všechny třídy . . . . . . . . . . . . . 24 7.1 Podmínky pro zajímavou oblast . . . . . . . . . . . . . . . . . . . . . . . 25 7.2 Zakódování chromosomu . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 7.3 Vliv základu exponentu c na selekční operátor (změnu selekčního tlaku) . 29 7.4 Porovnání pravděpodobností selekce . . . . . . . . . . . . . . . . . . . . . 30 7.5 Křížení chromosomů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 8.1 Uměle vygenerovaná učící data a odezvy modelů . . . . . . . . . . . . . . 32 8.2 Závislost fitness funkce na xstart a xvelikost . . . . . . . . . . . . . . . . . . 34 8.3 Řezy grafem fitness funkce . . . . . . . . . . . . . . . . . . . . . . . . . . 34 8.4 Porovnání dvou typů fitness a) součet b) součin . . . . . . . . . . . . . . 35 8.5 Řezy grafem fitness funkce v součinovém tvaru . . . . . . . . . . . . . . . 35 8.6 Transformační funkce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 8.7 Porovnání fitness funkcí . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 xi 8.8 Závislost poměrné velikosti fitness funkcí . . . . . . . . . . . . . . . . . . 36 8.9 Vývoj diverzity populace bez použití metody Niching . . . . . . . . . . . 37 8.10 Vývoj diverzity populace s použitím metody Niching . . . . . . . . . . . 38 8.11 Nejlepší nalezené chromosomy jednotlivých druhů zleva doprava podle klesající hodnoty fitness funkce . . . . . . . . . . . . . . . . . . . . . . . . . 39 8.12 Definiční obor množiny učících dat . . . . . . . . . . . . . . . . . . . . . 39 8.13 Diverzita populace pro jednotlivé vstupní parametry x, y a z . . . . . . . 40 8.14 Průběhy jednotlivých parametrů z funkce generující trénovací data . . . . 41 8.15 Nejlepší chromosomy pro jednotlivé vstupní parametry x, y a z v generaci 10 a 50 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 8.16 Nejlepší chromosomy pro jednotlivé vstupní parametry temp, humid, solar, wind a spotřeby elektrické energie a teplé a studené vody v 50. generaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 8.17 Porovnání významnosti vstupních parametrů genetického algoritmu a GAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 9.1 Rozhraní konfigurační třídy . . . . . . . . . . . . . . . . . . . . . . . . . 50 9.2 Průběh genetického algoritmu . . . . . . . . . . . . . . . . . . . . . . . . 50 xii KAPITOLA 1. MOTIVACE 1 1 Motivace Schopnost člověka měřit a zaznamenávat jakoukoliv dostupnou informaci vede ke vzniku velkých souborů dat. Dalším krokem pro zpracování takových dat je jejich analýza. Jednou z možností je jejich vizualizace a následné vizuální vyhledávání nových souvislostí a informací. Velkým problémem při vizualizaci takových dat je počet parametrů, ze kterých se data skládají (dimensionalita). Dnes se již běžně setkáváme s nástroji pro vizualizaci mnohadimenzionálních dat. Vědecká vizualizace umožňující snadnou orientaci v multidimenzionálních datech je stará několik desítek let [6]. S rychlým rozvojem hardwaru je stále snadnější realizovat složitější a lepší postupy pro analýzu a vizualizaci multidimenzionálních dat. A to nejen díky výpočetní síle současných počítačů, ale i díky možnosti zobrazovacích zařízení. Dalším způsobem pro vyhledávání nových informací a závislostí v datech je možnost modelování dat. Jednou z možností jsou neuronové sítě. V této diplomové práci se zabývám možností vizualizace chování modelů neuronových sítí. Kriteriem hodnotícím kvalitu modelu neuronové sítě je schopnost modelu správně reagovat na vstupní parametry. V této práci se snažím spojit možnosti vizualizace mnohadimenzionálních dat s vizualizací chování modelu a tím umožnit snadnou vizuální kontrolu kvality modelu. Stavový prostor, který je dán rozsahem vstupních parametrů modelu neuronové sítě, je s rostoucím počtem vstupních parametrů (rostoucí dimenzí) tak velký, že manuální kontrola odezvy modelu je téměř nemožná. Dalším cílem této práce je usnadnit vyhledávání takových oblastí chování modelu, které jsou zajímavé. Poprvé jsem se setkal s pojmem neuronová síť v předmětu Neuronové sítě a neuropočítače Doc. Ing. Miroslava Šnorka, CSc., který nás na přednáškách seznámil se součastným stavem tohoto oboru. V cvičení tohto předmětu jsem se seznamil s aplikací GAME, kterou intenzivně vyvíjí Ing. Pavel Kordík a pod jeho vedením jsem začal přispívat vizualizačními moduly pro tuto aplikaci. V rámci semestrálního projektu začaly vznikat základy vizualizačních modulů klasifikačních modelů neuronových sítí. Na tuto práci jsem poté navázal touto diplomovou prácí s modulem vyhledávajícím zajímavé oblasti chování regresních modelů neuronových sítí. 2 KAPITOLA 1. MOTIVACE Část I Teorie 3 4 KAPITOLA 2. NEURONOVÉ SÍTĚ 2 Neuronové sítě První krok v tvorbě umělé neuronové sítě udělali v roce 1943 Warren McCulloch a Walter Pitts, když vytvořili matematický model umělého neuronu. Později, v šedesátých letech, Rossenblatt publikoval svou práci o perceptronu (velmi jednoduchém modelu neuronu) a algoritmus pro jeho učení. Navíc vytvořil první umělou neuronovou síť složenou z perceptronů schopnou rozpoznávat znaky. Na konci 60. let publikoval slavný matematik Minsky práci, ve které dokázal, že jednovrstvý perceptron není schopný řešit lineálně neseparabilní problémy. Tento důkaz způsobil úpadek zájmu o umělé neuronové sítě, který trval až do poloviny 80. let. V roce 1986 publikoval Rumelhart, Winton a Williams článek o učícím algoritmu BackPropagation (metoda zpětného šíření signálu), kde představili jednoduchý učící algoritmus aplikovatelný na širokou škálu problémů. Tento algoritmus je popsán v kapitole 2.3. Rychlý rozvoj počítačů umožňuje snáze aplikovat nové metody a zájem o tuto oblast stále narůstá. 2.1 Inspirace Neuronové sítě jsou inspirovány biologickým mozkem. Nové poznatky nám pomáhají při modelování přírodních systémů. Neuronové sítě jsou používány pro svou schopnost učit se na omezené množině (vstupů a výstupů) a generalizovat tedy dávat výsledky i u vstupů, u kterých neznáme výstupy. Obrázek 2.1: Umělý neuron Základním stavebním kamenem biologické neuronové sítě je neuron. Neuron má tři části: denrity, soma a axon. Dendrity jsou vstupy a každý neuron jich má několik. Dendrity poskytují neuronu vstupní signály, které jsou v těle neuronu (soma) sečteny a podle výsledného signálu a prahové funkce je vyslán signál na výstup neuronu (axon). Neuron má pouze jeden výstup (axon), který se dále větví a je napojen přes synapse na další neurony. Synapse se dělí na dva druhy. Excitační synapse zvyšují hodnotu signálu a inhibiční, které naopak snižují hodnotu signálu. Míra, o kolik se hodnota signálu zvýší nebo sníží, se liší u každé synapse. 2.2 Umělá neuronová síť Neuronová síť vzniká ve fázi, které se říká trénovací. V této fázi máme k dispozici množinu trénovacích dat, která se skládá z vektorů vstupních hodnot a výstupní hodnoty. Počet vstupů sítě odpovídá dimenzi vektoru z množiny trénovacích dat. Tyto vektory jsou síti KAPITOLA 2. NEURONOVÉ SÍTĚ 5 postupně předkládány. Podle odezvy sítě jsou upravovány parametry neuronové sítě tak, aby výstup sítě co nejvíce odpovídal očekávané hodnotě. Výhodou umělých neuronových sítí je jejich schopnost generalizovat. Po naučení je síť schopná reagovat i na vstupní vektory, které jí nebyly předloženy v trénovací fázi. Vnitřní struktura sítě se dělí na vrstvy. První vstupní vrstva slouží pouze k distribuci vstupních hodnot do další již skryté vrstvy. Skrytých vrstev může být libovolný počet. Mezi jednotlivými vrstvami existuje propojení. Každý neuron předchozí vrstvy je propojen s neuronem následující vrstvy. To s jakou významností bude propojení přispívat do neuronu je dáno váhou, která je nastavována v učící fázi. Za poslední skrytou vrstvou je vrstva výstupní, která reprezentuje výstup neuronové sítě. Obrázek 2.2: Umělá neuronová síť 2.3 Učení zpětným šířením signálu - BackPropagation Znovuobjevení algoritmu BackPropagation [1] přineslo v osmdesátých letech nové možnosti v oblasti neuronových sítí. Při použití tohoto algoritmu je struktura sítě vytvořena předem a během učící fáze se již nemění. Algoritmus používá techniku učení s učitelem. Je tedy nutné mít k dispozici učící množinu dat. Využívá se pro neuronové sítě s dopředným šířením signálu. To znamená, že síť nemá žádné zpětné propojení neuronů nebo propojení ve smyčce. Algoritmus probíhá iteračně. Prvním krokem je porovnání výstupů neuronové sítě s učícím vzorkem. To je provedeno přiložením učícího vzorku na vstupy sítě a porovnáním výstupů neuronové sítě s očekávanou hodnotou, kterou známe z učícího vzorku. Na základě odchylky od vzorku je vypočítána odchylka. Dále je pro každý neuron spočítán výstup který by měl správně mít a jeho lokální odchylka od skutečné hodnoty. Podle této odchylky je změněna váha neuronu, tak aby byla minimalizována odchylka na výstupu neuronové sítě. Postupně jsou síti předloženy všechny učící vzorky, tomu se říká epocha učení. Algoritmus probíhá tak dlouho, až chyba na výstupu neuronové sítě klesne pod předem zadanou hodnotu nebo pokud je proveden určitý počet epoch učení. 6 KAPITOLA 2. NEURONOVÉ SÍTĚ Již název algoritmu říká, že chyba a tím i učení se šíří zpětně. Chyba se šíří z výstupních neuronů k vnitřním neuronům neuronové sítě. Algoritmus je založen na minimalizaci odchylky výstupů neuronové sítě od všech vzorků z učící množiny. Velikost odchylky neuronové sítě popisuje její míru naučenosti. Obrázek 2.3: Učení neuronové sítě s učitelem 2.4 Group Method of Data Handling (GMDH) Neuronové sítě typu GMDH [1] jsou sítě, které jsou vytvářeny indukcí. Na rozdíl od sítí, které používají algoritmus Backpropagation, struktura sítě typu GMDH není předem známá a vzniká až ve fázi učení. Síť typu GMDH vychází z několika základních stavebních jednotek, které během fáze učení kombinuje a snaží se vytvořit model odpovídající trénovací množině dat. Při vytváření modelu se používá pravidlo ”nejsilnější přežívá”, kde nejsilnější je ten model, který nejlépe odpovídá validační množině dat. Tuto selekci můžeme popsat m∗ = argminCR(m) , kde m ∈ M a CR (m) = f (P, C, σ, T, V ) kde m∗ je hledaný nejlepší model, M je množina všech modelů, CR je externí kriterium, které definuje kvalitu modelu na základě P vstupních proměnných, složitosti modelu C, rozptylu šumu σ, typu transformace T a referenční funkce V . Pro konečnou referenční funkci V odpovídá množina vstupních proměnných P struktuře modelu C. To zjednoduší externí kriterium CR na funkci f ∗ (C), což znamená, že model je reprezentován funkcí vstupních proměnných. Síť se skládá ze dvou typů neuronů. První typ neuronu - distribuční je obsažen pouze v první (vstupní) vrstvě. Tento neuron má pouze jeden vstup a několik výstupů. Jeho jedinou funkcí je distribuovat vstupní hodnotu na vstupy neuronů v první skryté vrstvě. Skryté vrstvy jsou složeny z druhého typu neuronu, který realizuje transformační funkci a na počtu jejích parametru závisí i počet vstupů do daného neuronu. Jeho výstup, stejně KAPITOLA 2. NEURONOVÉ SÍTĚ 7 jako výstup distribučního neuronu, může být rozvětven a připojen na vstupy v další skryté vrstvě. Aktivní neurony typicky realizují polynomiální funkci a jednotlivé aktivní neurony se od sebe liší pouze koeficienty těchto polynomů. Obrázek 2.4: GMDH síť Počet a propojení mezi neurony dvou skrytých vrstev je dáno až ve fázi učení, která splývá s tvorbou sítě. Na začátku je pouze první vrstva složená z distribučních neuronů. Tvorba skryté vrstvy je stále stejná. Vždy vznikne právě tolik nových neuronů, kolik existuje kombinací vstupů z předchozí vrstvy. Učení sítě probíhá s učitelem. Před učením není známa struktura neuronové sítě. Síť vzniká vrstvu po vrstvě, až v procesu učení. Na začátku je jasná pouze velikost (šířka) vstupní vrstvy. Ta má právě tolik distribučních neuronů, kolik je prvků (jaká je dimenze) vstupního vektoru. Učení sítě splývá s její tvorbou. Za vstupní vrstvou při učení přirůstají další a další skryté vrstvy a tento proces probíhá tak dlouho, pokud není splněno kritérium kvality výstupní sítě. Algoritmus tvorby skrytých vrstev je stále stejný. V každé vrstvě vznikne tolik neuronů, kolik je úplných kombinací dvojic výstupů vrstvy předchozí. Pak se jednotlivé neurony konfigurují. To znamená, že se vypočtou všechny koeficienty jejich polynomu. Pak se nově utvořená vrstva zmrazí. To znamená, že se během dalšího učení již její parametry nemění a vrstva slouží pouze k distribuci signálu. Může jen dojít k selekci neuronů v ní obsažených. Postup při učení neuronové sítě typu GMDH: 1. konfigurace k-té vrstvy vytvoření nových neuronů výpočet koeficientů polynomu v každém polynomu 2. selekce neuronů v k-té vrstvě 8 KAPITOLA 2. NEURONOVÉ SÍTĚ 3. ukončení učení sítě Konfigurace a selekce se opakují tak dlouho, dokud síť nedosahuje požadované chyby. Konfigurace k-té vrstvy probíhá tak, že pro každou dvojicí výstupů předchozí vrstvy vytvoříme nový neuron. Je-li tedy počet výstupů předchozí vrstvy N , vznikne takto m=C N 2 ! = N (N − 1) 2 nových neuronů. Každý neuron má své vlastní koeficienty u přenosové funkce (polynomu). Po provedení prvního kroku tedy máme sestaveno m obecných přenosových polynomů, u nichž je třeba určit konkretní hodnoty koeficientů. K tomu slouží učící množina dat. Ta obsahuje vzory (dvojice vstupů a výstupu). Přiložíme-li na vstupy neuronu hodnotu hodnoty výstupů z předchozí vrstvy a dosadímeli hodnotu požadovaného výstupu sítě, máme pro každý neuron aktuální vrstvy lineární kombinaci n koeficientů. Pro určení hodnoty koeficientů polynomu existuje řada algoritmů. Nejjednodušší spočívá v náhodném výběru n vstupních vektorů z učící množiny a koeficienty pak dostaneme vyřešením soustavy n lineárních rovnic o n neznámých. Při selekci neuronů vypočteme střední kvadratickou odchylku každého neuronu pro soubor tzv. validačních dat. Ta jsme získali tak, že jsme soubor vstupních dat předem rozdělili na část použitou při učení sítě a na část testovací, kterou zkoumáme, jak kvalitně naučená síť aproximuje. Výpočet této odchylky tedy probíhá se souborem jiných dat, než která byla použita k učení. Výpočet střední kvadratické odchylky může například probíhat podle tohoto vzorce: 2 r = Pk i=1 (yi − ŷi )2 , 2 i=1 yi Pk kde yi je hodnota požadovaného výstupu, ŷi skutečný výstup uvažovaného neuronu a k počet vektorů testovací množiny. Neurony aktuální vrstvy seřadíme podle dosažené chyby. To znamená, že neurony s menší chybou budou před neurony s chybou větší. V síti ponecháme jen vyhovující neurony. To znamená, že odstraníme neurony z konce setříděné posloupnosti. Jsou to totiž neurony s největší chybou a nechceme tedy, aby jako takové měly na chování sítě v dalším pokračování algoritmu vliv. Neurony, které v aktuální vrstvě zůstaly, zmrazíme. Jejich koeficienty se při další tvorbě sítě už měnit nebudou a v dalším pokračování algoritmu tyto neurony budou sloužit pouze k distribuci dat do vrstev následujících. Učení sítě je ukončeno, když splňuje síť naše požadavky na výstup. Postupujeme tak, že v každém učícím kroku otestujeme, zda nejlepší neuron s požadovanou přesností neaproximuje všechny vstupní vektory testovací množiny. V kladném případě tvorba sítě skončila a právě tento neuron je výstupním neuronem celé sítě. 2.5 Group of Adaptive Models Evolution (GAME) Metoda GAME [4] vylepšuje neuronovou síť typu GMDH. Dokáže generovat přesnější modely pro rozličná data. Hlavním přínosem metody GAME je její schopnost generovat KAPITOLA 2. NEURONOVÉ SÍTĚ 9 Obrázek 2.5: Srovnání MIA GMDH sítě se sítí GAME skupiny samoadaptujících se modelů podle charakteru a komplexnosti zadaných dat. Induktivní model neuronové sítě roste do takové velikosti, aby byl schopen zadanou úlohu vyřešit s požadovanou přesností. Model se skládá z jednotek (neuronů), které nejlépe modelují vnitřní vztahy v datech. Jak je vidět na obrázku 2.5 síť typu GAME má více stupňů volnosti než síť typu GMDH (jednotky s více vstupy, propojení mezi vrstvami v síti). S rostoucí dimenzí zadaných dat je nemožné bez další heuristiky vyhledat v obrovském stavovém prostoru různých modelů správnou topologii. Metoda GAME v sobě zahrnuje genetický algoritmus, který vyvíjí optimální strukturu modelu. Dalšími vylepšeními jsou: • několik typů jednotek (neuronů), které soutěží o přežití v modelu • rostoucí složitost modelu • propojení mezi vrstvami • generování skupiny modelů, které zvyšují věrohodnost odezvy modelů • genetický algoritmus pro vytváření optimální topologie modelu • metoda niching, která umožňuje zachování méně přesných, ale zajímavějších neuronů v modelu Metoda GAME generuje na množině učících dat modely s podobnou přesností. Modely jsou testovány na náhodných podmnožinách množiny učících dat. Modely se skládají z podobných typů jednotek (neuronů) a mají podobnou složitost. Je velice obtížné zvolit jen jeden nejlepší model, protože modely jsou si velice podobné. Proto vzniká skupina (ensemble) modelů. Výhody skupinového učení jsou popsány dále. 10 2.6 KAPITOLA 2. NEURONOVÉ SÍTĚ Skupinové učení (Ensemble learning) Tato technika je založena na myšlence, že skupina konečného počtu modelů neuronových sítí je naučena pro řešení stejné úlohy. Skupinové učení je nový přístup, kde je skupina neuronových sítí trénována pro řešení stejné úlohy. Tato metoda byla poprvé prezentována Hansenem a Salamonem [2], kteří ukázali, že schopnost neuronových sítí zevšeobecňovat může být značně zvýšena seskupením několika neuronových sítí a jejich společným naučením a kombinováním odezev jednotlivých modelů. Aplikace GAME, kterou dále popisuji v kapitole 2.5, vytváří takovou skupinu modelů, jejímž použitím narozdíl od jednoho modelu, je možné zvýšit přesnost modelování [14]. V GAME je použita metoda Bagging [2], která je schématicky znázorněna na obrázku 2.6. Tato metoda generuje několik trénovacích množin z originální množiny dat a poté probíhá trénování modelů. Tento způsob umožňuje vznik diverzity v nové skupině modelů tím, že každý model je trénován na jiné podmnožině trénovacích dat. Obrázek 2.6: Schéma Bagging KAPITOLA 3. GENETICKÉ ALGORITMY 11 3 Genetické algoritmy 3.1 Inspirace Genetické algoritmy [13] jsou inspirovány přírodou a používané termíny jsou převzaty z biologie. Populace živočišných druhů na Zemi jsou tvořeny jedinci, kde každý jedinec je definován skupinou chromosomů, které jsou tvořeny geny. Geny mohou nabývat různých hodnot alley a tím kódovat různé vlastnosti jedince. Skupina chromosomů, pak vytváří genom, který určuje všechny vlastnosti jedince. Genom je pro každého jedince specifický a pokud dva jedinci mají stejný genom, pak jsou identičtí. Při rozmnožování dochází k náhodné výměně (křížení) genů mezi rodiči, kteří jsou v přírodě vybírání podle schopnosti reprodukovat se a přežít v daném prostředí. Tím vzniká nový jedinec s unikátním genomem a tím i vlastnostmi. Při křížení dochází i k mutaci, při které dojde k náhodné změně některých genů, a která do populace vnáší větší rozmanitost. 3.2 Analogie Genetické algoritmy používají podobné techniky a snaží se napodobit ”úspěch” přírody. Možné řešení problému je jedincem, a jeho genom jsou parametry, které toto řešení definují. Parametry jsou vetšinou uloženy v podobě řetězce, který se skládá z předem známé abecedy. Znaky řetězce jsou geny, které mohou nabývat různých hodnot abeced (allelamy). Hodnoty znaků mohou být jak binární (0 a 1), tak reálné. Kvalitu jedince a jeho vhodnost pro použití jako rodiče pro další generaci definujeme pomocí fitness funkcí. Fitness funkce je ohodnocením každého jedince a svou hodnotou musí zvýhodňovat lepší řešení problému. 3.3 Algoritmus 1. Inicializace první populace Na začátku je potřeba vytvořit populaci. Ta může být buď zcela náhodná nebo pokud chceme zkrátit dobu výpočtu můžeme vytvořit první populaci tak, aby neobsahovala zcela nevhodná řešení. Další možností je vytvořit populaci s větším počtem jedinců s tím, že algoritmus při provádění první selekce vybere lepší jedince. 2. Výpočet fitness funkce Pro každého jedince z populace se vypočte fitness funkce, která určuje vhodnost jedince stát se rodičem pro další populaci. Během tohoto kroku se také vyhodnocuje zastavovací kritérium. Zastavovací kritérium určí zda je v populaci jedinec, který je dostatečně kvalitní a je možné algoritmus ukončit. 3. Vytvoření nové populace 12 KAPITOLA 3. GENETICKÉ ALGORITMY Obrázek 3.1: Schéma genetického algoritmu Při vytváření nové populace opakovaně používáme operátory selekce a křížení. Operátor selekce vybírá vhodné kandidáty na rodiče a následně jejich křížením vzniká jedinec, který je zařazen do nové populace. To provádíme tak dlouho dokud nová populace nemá dostatečný počet jedinců. 4. Mutace Na každého jedince v populaci je aplikován operátor mutace, který náhodně se zadanou pravděpodobností pozmění geny jedince. 5. Elitismus Do nové populace zahrneme i několik nejlepších jedinců ze staré populace. Tím se docílí zachování nejlepších doposud nalezených řešení pro další generace a zároveň maximální hodnota fitness funkce bude v průběhu algoritmu neklesající. 6. Stáří Starou populaci nahradíme novou a pokračujeme opět výpočtem fitness funkce. KAPITOLA 3. GENETICKÉ ALGORITMY 3.4 13 Fitness funkce Fitness funkce je měřítkem úspěšnosti jedince v populaci. Čím lepší (větší) je hodnota fitness funkce, tím se jedinec stává perspektivnějším kandidátem na rodiče. Pokud se jedinec stane rodičem, je jeho řešení předáno do další generace. Fitness funkce by měla postihnout všechna kriteria řešené úlohy. Kladné vlastnosti by měly zvyšovat hodnotu fitness funkce a naopak záporné vlastnosti by hodnotu fitness funkce měly snižovat. Na správném navržení fitness funkce závisí správnost celého genetického algoritmu. Velkou výhodou generických algoritmů je jejich schopnost „fungovatÿ i s fitness funkcí, která ne zcela optimálně popisuje hledané řešení. Genetický algoritmus pak konverguje pomaleji, ale z jeho chování lze odvodit správné nastavení fitness funkce, které bude konvergovat rychleji. 3.5 Elitismus Způsob, jakým se vybírají kandidáti na rodiče pro novou populaci, nezaručuje, že v nové populaci bude vždy obsažen jedinec, který popisuje doposud nejlepší nalezené řešení. Aby se zabránilo zapomenutí již nalezeného nejlepšího řešení jsou do nové populace automaticky vkládáni nejlepší jedinci ze staré populace. Tím je zaručen neklesající průběh maximální hodnoty fitness funkce v celé populaci. 3.6 Diverzita populace a její zachování Mechanismus, jakým se generují nové populace, nepodporuje diverzitu v populaci. Je to dáno tím, že je vždy upřednostňováno pouze jedno nejlepší řešení v rámci populace. Pokud populace obsahuje i jiné řešení, jehož hodnota fitness funkce je nižší než maximální hodnota fitness funkce v populaci, ale zároveň toto řešení je jiné, je potřeba zajistit přežití jedince do další populace. Způsob určení odlišnosti takového jedince je závislý na řešeném problému. Obrázek 3.2: Suboptimální řešení nalezená metodou zachovávající diverzitu populace Odlišnost dvou řešení je vyjádřena jejich vzdáleností. O tomto se mluví jako o vzdálenosti genotypu - lze se setkat také se vzdáleností phenotypu.[10]. V případě, kdy je chromosom 14 KAPITOLA 3. GENETICKÉ ALGORITMY zakódován do binárního řetězce, je možné vzdálenost dvou chromosomů vyjádřit Hammingovou vzdáleností. V případě, kdy je chromosom zakódován jako n-dimenzionální vektor reálných čísel, je možné použít Euklidovou vzdálenost d (~x, ~y ) = n X (xi − yi )2 , i=0 kde ~x a ~y jsou vektory dvou řešení. Genetický algoritmus, který používá tuto metodu, pak vypadá následovně: generuj počáteční populaci n chromosomů opakuj pro m generací opakuj n/2 krát aplikuj operátor selekce a vyber dva chromosomy aplikuj operátor křížení na p1 a p2 a vygeneruj aplikuj operátor mutace na c1,c2 jestliže [ d(p1,c1) + d(p2,c2) ] > [d(p1,c2) + jestliže f(c1) > f(p1) potom vyměň v populaci jestliže f(c2) > f(p2) potom vyměň v populaci jinak jestliže f(c2) > f(p1) potom vyměň v populaci jestliže f(c1) > f(p2) potom vyměň v populaci p1,p2 potomky c1,c2 d(p2,c1) ] p1 za c1 p2 za c2 p1 za c2 p2 za c1 na rozdíl od běžného genetického algoritmu, který vypadá takto: generuj počáteční populaci n chromosomů opakuj pro m generací opakuj n/2 krát aplikuj operátor selekce a vyber dva chromosomy p1,p2 aplikuj operátor křížení na p1 a p2 a vygeneruj potomky c1,c2 aplikuj operátor mutace na c1,c2 jestliže f(c1) > f(p1) potom vyměň v populaci p1 za c1 jestliže f(c2) > f(p2) potom vyměň v populaci p2 za c2 KAPITOLA 4. VIZUALIZACE DAT 15 4 Vizualizace dat Jelikož se v této prácí věnuji vizualizaci „mnohadimenzionálníhoÿ chování neuronové sítě, stručně zmíním teorii vizualizace mnohadimenzionálních dat, která se k tématu vztahuje, a ze které jsou čerpány některé myšlenky. Při používání neuronových sítí se setkáváme s velkými soubory dat. Pro alespoň základní odhalení jejich struktury je možné použít několik přístupů. Textový výpis datových vektorů je pro člověka, který neví co hledá, nečitelný. Na tomto místě přichází na řadu vizualizace jako nástroj pro první náhled a rozpoznání struktury souborů dat. Při vizualizaci hraje velkou roli dimenze zkoumaných dat. Pochopitelně s rostoucí dimenzí se vizualizace a nahlédnutí struktury dat stává složitější a složitější. 4.1 Scatterplot Pro zobrazení dvourozměrných datových vektorů je vizualizace jednoduchá. Pokud je jeden datový vektor popsán d~ = (x, y) zobrazí se v grafu, kde na jedné ose je vynesena hodnota x, na druhé y a na jejich souřadnicích je zobrazena značka. Takovému grafu se říká Scatterplot. Příklad takového grafu je na obrázku 4.1 Obrázek 4.1: Scaterrplot a) 2D graf b) 2D graf s referenční mřížkou 4.2 Scatterplot matrix Pokud je dimenze datového vektoru větší než dvě. V grafu Scatterplot je informace dalších složek ztracena. Pro alespoň částečný náhled na závislosti mezi daty je možné použit graf Scatterplot matrix. Jedná se o stejný princip popsaný výše s tím rozdílem, 16 KAPITOLA 4. VIZUALIZACE DAT že grafů je více. Do matice jsou zobrazeny všechny kombinace složek datového vektoru. Na obrázku 4.2 je příklad grafu Scatterplot matrix. Jsou na něm zobrazena data, kde datový vektor má dimenzi tři a jsou to data, která jsem později použil pro generování množiny testovacích dat v kapitole 8.2. Obrázek 4.2: Scatterplot matrix pro datové vektory s dimenzí tři 4.3 Další vizualizační techniky mnohadimenzionálních dat Pro vizualizaci mnohadimenzionálních dat existuje mnoho dalších technik. Jednou z nich je Grand Tour od Daniela Asimova [9]. Tato technika umožňuje vizualizovat pdimenzionální datové vektory tak, že použije dvě proměnné k vytvoření řezu, jednu proměnnou jako čas a zbylé proměnné, kterých je (p − 3), promítne do vybraného řezu. Proměnná, která je interpretována jako čas a může být použita pro vytvoření animace. Část II Vlastní práce 17 18 KAPITOLA 5. CÍLE MÉ PRÁCE 5 Cíle mé práce V této kapitole bych rád zmínil cíle, kterých jsem se při psaní diplomové práce snažil dosáhnout. V první části mé práce jsem se věnoval vizualizaci odezev modelů neuronových sítí. Popisuji mnou implementované metody vizualizace modelů neuronových sítí řešících klasifikační úlohy v závislosti na mnoha vstupních parametrech. Dále popisuji způsob jak vizuálně ověřit správnost odezev modelů neuronové sítě na množině učících a testovacích dat. Tyto metody jsem aplikoval na vizualizaci skupiny modelů neuronové sítě vzniklých skupinovým učením v aplikaci GAME. V další části popisuji způsob vyhledávání zajímavých oblastí chování skupiny regresních modelů neuronové sítě pomocí genetického algoritmu. Definuji, co je zajímavá oblast a jak zajímavou oblast popsat. Pro vyhledávání zajímavých oblastí jsem použil genetický algoritmus. Pro jeho aplikaci bylo třeba definovat zakódování zajímavé oblasti do chromosomu, nastavit parametry genetického algoritmu a v neposlední řadě stanovit tvar fitness funkce. Stanovení fitness funkce se ukázalo jako nějvětším problémem při hledání zajímavých oblastí chování modelů. Součástí mé diplomové práce je i implementace metod pro zachování diverzity populace genetického algoritmu. Pro splnění této podmínky jsem implementoval metodu Deterministic Crowding [8]. Výsledky této metody jsem ověřil v průběhu experimentů. Na závěr jsem se věnoval experimentům s vyhledáváním zajímavých oblastí. Tyto experimenty zabírají podstatnou část mé práce. Experimenty na umělých datech o malé dimenzi mi pomohly navrhnout správný tvar fitness funkce a zjištění vlivu parametrů genetického algoritmu na kvalitu nalezeného řešení. Experimenty jsem prováděl i na datech o vyšší dimenzi vstupního vektoru a na reálných datech. KAPITOLA 6. NOVÉ POHLEDY NA NEURONOVÉ SÍTĚ 19 6 Nové pohledy na neuronové sítě Mým úkolem je vizualizovat odezvu modelu neuronové sítě. Na neuronovou síť se budu dívat jako na černou krabičku (blackbox), u které neznám její vnitřní strukturu. Neuronová síť je schopná po předložení vstupního vektoru vrátit svou odezvu. Všechny metody vizualizace zmíněné dále v textu jsem implementoval jako vizualizační moduly do aplikace GAME, vyvíjené Ing. Pavlem Kordíkem. 6.1 Vizualizace modelů neuronových sítí Cílem vizualizace modelu neuronové sítě je co nejpřehledněji zobrazit chování modelu neuronové sítě a tím umožnit získání nových poznatků o datech, ze kterých byl model vytvořen. Vizualizace může také napomoci k detailnějšímu prozkoumání kvality modelu. Zjistit, jak model v jednotlivých místech klasifikuje, a to nejen v místech, kde jsou k dispozici učící data, ale i v jejich okolí. 6.1.1 Vizualizace modelů řešící klasifikační úlohu Úkolem modelů, které řeší klasifikační úlohu, je rozhodnout na základě vstupů, zda se jedná čí nejedná o člena dané třídy. Na model neuronové sítě se tedy můžeme dívat jako na odezvu, která je dána vstupním vektorem a přenosovou funkcí y = f (~x), kde ~x = (x1 , x2 , ..., xn ), kde xi ∈ h0; 1i kde n je dimenze vstupního vektoru (počet vstupních parametrů modelu). Po předložení vstupního vektoru ~x modelu získáme odezvu y. Předpokládám, že odezva modelu je již normalizována do intervalu h0; 1i, kde 0 říká, že na základě vstupních parametrů se nejedná o člena dané třídy. Naopak 1 znamená, že se jedná o člena dané třídy. Vzhledem k tomu, že odezva modelu může nabývat hodnot z intervalu h0; 1i je třeba v grafu znázornit i částečnou příslušnost k dané třídě. Částečná příslušnost je v grafu zobrazena jako míra průhlednosti. Vybereme-li dva parametry xi a xj ze vstupního vektoru, můžeme pro všechny jejich kombinace (0; 1) × (0; 1) získat odezvu modelu jako funkci dvou proměnných: y = f (~x) = f (x1 , ..., xi , ..., xj , ...., xn ) , kde xi , xj ∈ h0; 1i , (k 6= i, j) = konst. Odezvu je možné zobrazit jako graf, na kterém je barevně zobrazena příslušnost k dané třídě. Vzhledem k tomu, že modely generované aplikací GAME jsou často velice výpočetně náročné, bylo při implementaci nutné zobrazovaný graf parametrizovat rozlišením, které udává počet bodů, pro které je odezva modelu vypočítána. Na obrázku 6.1 je schématicky znázorněn příklad při rozlišení 10. Je tedy nutné spočítat odezvu modelu pro 10 ∗ 10 = 100bodů. Pro toto rozlišení je možné sledovat změny klasifikace při změně vstupních parametrů v reálném čase. Pro podrobné zkoumání a generování obrázku pro prezentační 20 KAPITOLA 6. NOVÉ POHLEDY NA NEURONOVÉ SÍTĚ Obrázek 6.1: Schématická ukázka vizualizace klasifikačního modelu účely je vhodné vyšší rozlišení. Graf je rozdělen na čtvercové oblasti a podle odezvy modelu v každém čtverci je vypočítána průhlednost. Odezva modelu ovšem závisí na nastavení ostatních vstupů (k 6= i, j). Jejichž změna ovlivní hodnotu odezvy modelu, na což graf reaguje změnou průhlednosti v jednotlivých čtvercích. Obrázek 6.2: Vizualizace klasifikačního modelu - data Iris setosa v rozlišení 100 a 10 Na obrázcích 6.2, 6.3 a 6.4 je zobrazena vizualizace modelů, které jsou naučeny na datech Iris [5]. Data obsahují datové vektory o dimenzi 4, které jsou přiřazeny vždy k jedné ze tří druhů kosatce (Setosa, Versicolour a Virginica). Datové vektory obsahují parametry délky a šířky okvětních a kališních lístků (petal length, petal width, sepal length, sepal width). 6.1.2 Zobrazení reálných dat Další kvalitou při vizualizaci modelů neuronových sítí je možnost vizuální kontroly, zda odezva modelů neuronové sítě odpovídá datům z množiny učících dat nebo z množiny KAPITOLA 6. NOVÉ POHLEDY NA NEURONOVÉ SÍTĚ 21 Obrázek 6.3: Vizualizace klasifikačního modelu - data Iris versicolor v rozlišení 100 a 10 Obrázek 6.4: Vizualizace klasifikačního modelu - data Iris virginica v rozlišení 100 a 10 dat, kterou máme k testování. Problém je opět snadno řešitelný v případě malé dimenze vstupního vektoru. Pokud je vstupní vektor dvoudimenzionální, není problém zobrazit množinu dat do grafu formou značek, které budou svou barvou vyjadřovat příslušnost ke třídě, kterou reprezentují. Jedním z nejtěžších úkolů pro neuronové sítě je klasifikace do dvou tříd, kde každá třída je složena z jedné ze dvou do sebe zapletených spirál [5]. Na obrázku 6.5 jsou zobrazeny dvě množiny učících dat právě pro tento problém. Jedna spirála (třída) je zobrazena červenými značkami a druhá spirála (třída) modrými značkami. Značky jsou dány množinou učících dat. Každý vektor učících dat svými atributy udává polohu jedné značky. Zobrazený model neuronové sítě je naučen na spirálu (třídu) zobrazenou modrými značkami. Na první pohled je zřejmé jak byl model neuronové sítě úspěšný, kde jsou jeho odezvy správné a kde naopak odpovídá špatně. Pokud je dimenze větší, je tento způsob již nevyhovující. Graf zobrazuje odezvy modelů jen v řezu definovaným dvěma vstupními parametry a pokud značky zobrazíme stejným způsobem jako v případě dvou dimenzí, bez ohledu na ostatní dimenze, zaniká rozdíl mezi značkami, které jsou různě vzdálené v ostatních dimenzích. Pro určení významnosti jednotlivých značek v právě zobrazeném řezu, je nutné u každé značky vyhodnotit její vzdálenost od řezu. Jedním ze způsobů je výpočet Euklidovy vzdálenosti datového vektoru d~ od středu našeho souřadného systému (vektoru ~x). s2 = k=n X (dk − xk )2 k=0 k 6= i, j kde i a j jsou indexy vstupních parametrů, které definují zobrazovaný řez. Pro určení 22 KAPITOLA 6. NOVÉ POHLEDY NA NEURONOVÉ SÍTĚ velikosti l značky je použit vztah: c, s = 0 0<s≤k l= nezobrazeno, s > k c , c+s kde c je velikost nejbližší značky. Největší značka je značka, která se nachází přímo v rovině zobrazovaného řezu. Pokud je značek příliš mnoho, stává se graf nepřehledný. Z toho důvodu je definována konstanta k, která zabrání v zobrazení značek, pro jejichž vzdálenost od roviny řezu platí s > k. Velikost značky potom určuje významnost jednotlivých značek. Čím je značka větší, tím blíž je zobrazovanému řezu a naopak čím je menší, tím je vzdálenější a zároveň méně důležitá. Odezva modelu neuronové sítě by měla tedy zahrnout všechny velké značky třídy, kterou modeluje. Obrázek 6.5: Vizualizace vzoru pro učící data a naučeného klasifikačního modelu Na obrázku 6.6 je zobrazen příklad z kapitoly 6.1.1 s tím rozdílem, že jsou v grafech zobrazeny i značky učících dat. Značky učících dat jsou různě velké. To způsobují odlišné hodnoty složek datového vektoru. Na obrázku je vidět, že všechny tři modely pro všechny tři třídy jsou správně naučené v místech, kde jsou k dispozici učící data. Obrázek 6.6: Vizualizace klasifikačního modelu Iris a učících dat KAPITOLA 6. NOVÉ POHLEDY NA NEURONOVÉ SÍTĚ 6.1.3 23 Vizualizace skupiny modelů řešící klasifikační úlohu Postup, který jsme použili pro jeden model, je snadno použitelný i pokud chceme vizualizovat více modelů do jednoho grafu. Pokud modely klasifikují stejnou třídu, je velice pravděpodobné, že jejich odezvy se budou překrývat. Překrývání odezev jednotlivých modelů lze vyřešit částečnou průhledností, které nám umožní i sledovat, kde se modely nejvíce shodují. Místa, kde bude intenzita zabarvení největší jsou místa, kde se shodlo nejvíce modelů. V případě, že modely klasifikují různé třídy, jsou jejich odezvy zobrazeny různými barvami. Obrázek 6.7: Vizualizace několika klasifikačních modelů Iris versicolor 6.2 Násobení odezev modelů neuronových sítí Pokud máme skupinu modelů, která vznikla při skupinovém učení popsaném v kapitole 2.6 a zobrazíme jejich odezvy technikou popsanou v kapitole 6.1.3, je patrné, že jednotlivé modely mají správnou odezvu v blízkosti učících dat, ale odezvy ve zbylém prostoru se již liší. Modely v místech, kde nejsou definována učící data, odezvu domýšlejí. Toje způsobeno tím, že taková odezva je náhodná a a je matoucí. Není jasné, kde si model vymýšlí a kde se jeho odezva zakládá na trénovacích datech. Takovou odezvu je třeba odfiltrovat. Při zobrazení odezev všech modelů bez ohledu na počet modelů, které se shodují, je oblast, která zobrazuje členství k třídě větší než oblast definovaná učícími daty. Pro skupinu m modelů, jejichž odezva yi ∈ h0; 1i, pro i ∈ h0; mi, je odezva celé skupiny dána: y0 = m Y yi i=1 Výsledná odezva je opět v intervalu y 0 ∈ h0; 1i. Na obrázku 6.8 je zobrazena operace násobení tří modelů pro tři klasifikační třídy dat Iris [5] (setosa, virginica, versicolor). Každý z modelů správně klasifikuje množinu učících dat, ale také označuje oblast, kde data nejsou definována. Každý model může mít tuto oblast náhodné odezvy na jiném místě a proto operace násobení odfiltruje tuto nezajímavou informaci. 24 KAPITOLA 6. NOVÉ POHLEDY NA NEURONOVÉ SÍTĚ Obrázek 6.8: Vizualizace násobení odezev modelů pro jednotlivé třídy Obrázek 6.9: Vizualizace odezev modelů Iris pro všechny třídy a) bez operace násobení b) s operací násobení KAPITOLA 7. VYHLEDÁVÁNÍ ZAJÍMAVÝCH OBLASTÍ CHOVANÍ MODELŮ 25 7 Vyhledávání zajímavých oblastí chovaní modelů V této části se budu zabývat pouze skupinami regresních modelů, které vznikly při skupinovém učení popsaném v kapitole 2.6 v prostředí aplikace GAME. Hlavním problémem při studování chování modelů neuronových sítí je velká dimensionalita vstupních dat. Model neuronové sítě je definován pro jakoukoliv kombinaci vstupních parametrů. Orientovat se v tomto obrovském prostoru bez další znalosti závislostí v množině učících dat je téměř nemožné. Víme, jaké chování modelů je zajímavé, ale problémem je najít tyto zajímavé oblasti (nastavit vstupní parametry), které tomuto chování odpovídají. Při vyhledávání zajímavých oblastí je prvním krokem definování, co je zajímavá oblast. Z této definice je možné odvodit podmínky, které umožní aplikovat genetický algoritmus na vyhledávání takových oblastí. Na model neuronové sítě se můžeme dívat jako na odezvu, která je dána vstupním vektorem a přenosovou funkcí y = f (~x), kde ~x = (x1 , x2 , ..., xn ), kde xi ∈ h0; 1i kde n je dimenze vstupního vektoru (počet vstupních parametrů modelu). Po předložení vstupního vektoru ~x i-tému modelu získáme odezvu yi , která je normalizovaná do intervalu h0; 1i. Obrázek 7.1: Podmínky pro zajímavou oblast Při skupinovém učení bylo vytvořeno m modelů neuronové sítě. Odezvy modelů budou zkoumány vždy pro jeden vstupní parametr xj , kde 1 ≤ j ≤ n. Tento vstupní parametr je proměnnou, která pro jedno nastavení ostatních vstupních parametrů určuje průběh odezvy modelů. Pro jedno nastavení vstupního vektoru ~x je tedy možné zobrazit průběh odezvy jednoho modelu jako funkci jedné proměnné yi (xj ), kde xj ∈ hxstart ; xstart + xvelikost i 26 KAPITOLA 7. VYHLEDÁVÁNÍ ZAJÍMAVÝCH OBLASTÍ CHOVANÍ MODELŮ je vybraný vstupní parametr a i je index jednoho ze skupiny modelů. Úkolem genetického algoritmu je najít takové nastavení vstupního vektoru ~x a parametrů xstart , xvelikost určující oblast, aby odezvy yi modelů splňovaly následující podmínky pro „zajímavou oblastÿ: 1. odezvy modelů jsou na intervalu hxstart ; x + xvelikost i co nejpodobnější Jak již bylo napsáno v kapitole 2.5, v místech kde jsou odezvy modelů podobné, je pravděpodobné, že odezvy jsou správné. To je dáno tím, že v průběhu trénování modelů je odezva nejdříve náhodná a postupně je upravována, tak aby odpovídala množině učících dat. Z toho plyne, že v místech, kde je možné odezvu modelů porovnat s daty z trénovací množiny, jsou odezvy modelů podobné a na ostatních místech jsou náhodné. Místa, kde jsou odezvy modelů náhodné je třeba odfiltrovat a vyhledat jen místa, kde se modely shodují. Míra podobnosti modelů p na intervalu hxstart ; x + xvelikost i je dána: p= 1 xstart +x Xvelikost xvelikost j=xstart arg max (fi (j)) − arg min (fi (j)) 0<i≤m 0<i≤m 2. nalezená oblast je co největší (maximalizace parametru xvelikost ) Odezvy modelů se mohou na nějaké oblasti shodnout a splnit tím první podmínku. Podmínkou pro rozlišení dvou takovýchto oblastí je velikost nalezené oblasti. Velikostí se rozumí na jak velkém intervalu pro zkoumaný vstupní parametr xj jsou odezvy modelů podobné. 3. změna v chování průměrné odezvy modelů na nalezeném intervalu hxstart ; xstart + xvelikost i Pokud jsou odezvy modelů podobné na dostatečně velkém intervalu vstupního parametru, je další podmínkou definující zajímavou oblast samotný průběh odezev modelů. Modely se na zkoumaném intervalu chovají podobně a je tedy možné vycházet z jejích průměrné hodnoty ȳ(xj ) = m 1 X yi (xj ), kde xi ∈ h0; 1i m i=1 kde m je počet zkoumaných modelů a yi je odezva i-tého modelu. Pokud je průběh na zkoumaném intervalu konstantní, je zřejmé, že modely na změnu zkoumaného parametru nereagují. Taková oblast není tak zajímavá jako v případě, kdy se průměrná odezva modelů mění. Jedním ze způsobů jak tyto změny poznat je porovnání minimální a maximální hodnoty průměrné odezvy modelů na zkoumaném intervalu. Z těchto hodnot je odvozen parametr yvelikost = arg max (ȳ(t)) − arg min (ȳ(t)) , kde xstart < t ≤ xvelikost KAPITOLA 7. VYHLEDÁVÁNÍ ZAJÍMAVÝCH OBLASTÍ CHOVANÍ MODELŮ 27 7.1 Aplikace genetického algoritmu Pro řešení úlohy popsané v předešlé kapitole lze použít genetický algoritmus. Při použití genetického algoritmu je výhodou snadné zakódování řešení do chromosomu a ohodnocení „zajímavé oblastiÿ. Algoritmus bude hledat globální a v lepším případě i lokální maxima fitness funkce, která budou odpovídat „zajímavým oblastemÿ. 7.2 Zakódování chromosomu Parametry, které definují „zajímavou oblastÿ, jsou vstupní vektor ~x a interval hxstart ; xstart + xvelikost i. Chromosom je tedy vektor o dimenzi n + 1. Prvních n − 1 složek jsou vstupní parametry modelů, kde je vynechán jeden parametr s indexem j. Tento parametr je vynechán, protože právě pro něj je odezva modelů zkoumána a pro jeho hodnoty z intervalu h0; 1i jsou odezvy modelů vyhodnocovány. Pro které hodnoty vstupního parametru xj jsou odezvy modelů zkoumány definují zbylé dvě složky vektoru chromosomu xstart a xvelikost , které musí splňovat podmínky: xstart ≥ 0 a xstart + xvelikost ≤ 1 Na obrázku 7.2 je chromosom znázorněn jako n + 1 dimenzionální vektor reálných čísel. Obrázek 7.2: Zakódování chromosomu 7.3 Fitness funkce Pro každý chromosom je možné spočítat fitness funkci, která určuje míru zajímavosti oblasti, kterou chromosom popisuje. Fitness funkce musí zahrnovat všechny podmínky které definují „zajímavou oblastÿ. Proto se fitness funkce skládá ze tří částí. 1. Šířka vybrané oblast xvelikost , která je jedním z parametrů, který genetický algoritmus nastavuje. 2. Další částí je změna chování modelů yvelikost ve vybrané oblasti, která je dána odezvami modelů. 3. Poslední částí fitness funkce je podobnost modelů p ve zkoumané oblasti. Výsledná hodnota fitness funkce chromosomu je tedy funkcí tří proměnných f itness(p, xvelikost , yvelikost ) 28 KAPITOLA 7. VYHLEDÁVÁNÍ ZAJÍMAVÝCH OBLASTÍ CHOVANÍ MODELŮ Každá ze zmíněných částí je jinak důležitá a proto tvar samotné fitness funkce jsem stanovil až na základě experimentů, které jsou popsány v kapitole 8. 7.4 Selekce chromosomu Při vytváření nové populace je třeba na základě hodnoty fitness funkce vybrat vhodné chromosomy jako rodiče, kteří budou sloužit jako vzor. Tuto funkci v genetickém algoritmu zastává operátor selekce. Cílem selekce je zvýhodnit lepší chromosomy před horšími. Při implementaci jsem použil dva typy operátoru selekce. • Proporcionální selekce (nebo také ruletová selekce) Algoritmus toho operátoru je: Vstup: populace o m chromosomech Výstup: jeden chromosom součet = součet všech hodnot fitness hledaný_součet = náhodná hodnota z intervalu (0,součet) opakuj pro i = {1,2, ... m } částečný_součet = částečný_součet + fitness(i) dokud (i < m) a (částečný_součet > hledaný_součet) I když hraje u tohoto selekčního operátoru velkou roli náhoda, jsou šance jednotlivých chromosomů přímoúměrné jejich hodnotě fitness funkce. Pravděpodobnost výběru i-tého chromosomu je f itness(i) pi = Pm j=0 f itness(i) Nevýhodou tohoto selekčního operátoru je, že je kladen velký důraz na absolutní hodnotu fitness funkce. Pokud se v populaci vyskytne chromosom, který má řádově větší fitness než ostatní, skončí po několika generacích genetický algoritmus s populací, která bude obsahovat jen tento jeden chromosom nebo jemu podobné. • Exponenciální ranking Tento selekční operátor odstraňuje některé nevýhody proporcionálního selekčního operátoru. Předpokladem je, že na vstupu je seřazená posloupnost chromosomů od nejlepšího k nejhoršímu (podle klesající hodnoty fitness funkce). Pokud v populaci existuje chromosom s výrazně lepší hodnotou fitness funkce, má stále největší pravděpodobnost být vybrán, ale již nezpůsobí předčasnou konvergenci genetického algoritmu. Pravděpodobnost výběru i-tého z m chromosomů je: ci pi = Pm i=1 ci KAPITOLA 7. VYHLEDÁVÁNÍ ZAJÍMAVÝCH OBLASTÍ CHOVANÍ MODELŮ 29 pro index chromosomu i a náhodně vybrané číslo r z intervalu (0; 1) platí: r= i X cj Pm j=1 k=1 ck Z této rovnosti plyne: i= ln (r (cm − 1) + 1) ln c a jelikož index chromosomu musí být celé číslo, je index roven bic. Základ exponentu c je parametr, který je v intervalu (0; 1), jehož změnou lze měnit selekční tlak. Selekční tlak udává míru zvýhodnění lepších chromosomu před horšími. Změna selekčního tlaku tak ovlivňuje míru zachování variability v populaci a tím předčasnou konvergenci genetického algoritmu k lokálnímu maximu. Vliv parametru c je zobrazen na obrázku 7.3. Obrázek 7.3: Vliv základu exponentu c na selekční operátor (změnu selekčního tlaku) 7.5 Křížení chromosomů Po vybrání (selekci) vhodných kandidátů na rodiče, je použit operátor křížení. Jelikož chromosomy jsou zakódovány jako vektory reálných čísel, je křížení dvou chromosomů prováděno výpočtem aritmetického průměru pro každou složku vektoru. Složky vektoru chromosomu potomka jsou definovány: pi = ai + bi , pro i ∈ {1, 2, ..., n + 1} 2 kde n je dimenze vektoru vstupních dat. Tento způsob křížení generuje jen jednoho potomka na dva rodiče, protože takto definovaný operátor křížení je symetrický a nelze použít metodu pro zachování diverzity populace popsané v kapitole 3.6. 30 KAPITOLA 7. VYHLEDÁVÁNÍ ZAJÍMAVÝCH OBLASTÍ CHOVANÍ MODELŮ Obrázek 7.4: Porovnání pravděpodobností selekce a) proporcionální selekce b) exponenciální ranking Jiným operátorem křížení je jednotné křížení. Tento operátor pro všechny složky vektoru chromosomů se zadanou pravděpodobností vyměňuje jednotlivé položky a tím vznikají dva noví potomci. Při použití tohoto operátoru křížení vzniknou již dva potomci. Obrázek 7.5: Křížení chromosomů 7.6 Mutace chromosomu Dalším a posledním operátorem je operátor mutace. Operátor mutace modifikuje se zadanou pravděpodobností a velikostí jednotlivé složky vektoru chromosomu. Operátor mutace slouží genetickému algoritmu ke generování nových řešení. Nastavení pravděpodobnosti a velikosti mutace je otázkou experimentů. Příliš velká pravděpodobnost nebo KAPITOLA 7. VYHLEDÁVÁNÍ ZAJÍMAVÝCH OBLASTÍ CHOVANÍ MODELŮ 31 velikost mutace může způsobit nefunkčnost genetického algoritmu, ale na druhou stranu může způsobit nalezení zcela nového řešení. 32 KAPITOLA 8. EXPERIMENTY 8 Experimenty V této kapitole popisuji experimenty, které jsem provedl v rámci diplomové práce. Pro testování navrženého genetického algoritmu, nastavení parametrů fitness funkce a otestování implementace vylepšení pro zachování diverzity populace bylo potřeba vygenerovat množinu jednoduchých trénovacích dat, na kterých lze snadno ověřit správnost výsledků nalezených genetickým algoritmem. 8.1 Uměle vytvořená data s malou dimenzí Tato množina dat má jeden vstupní parametr v rozsahu x ∈ h0; 1i a jeden výstupní parametr y ∈ h0; 1i. Tato množina byla předložena aplikaci GAME popsané v kapitole 2.5, která vytvořila skupinu deseti modelů. Uspořádání množiny trénovacích dat a odezvy modelů jsou na obrázku 8.1. Obrázek 8.1: Uměle vygenerovaná učící data a odezvy modelů 8.1.1 Fitness funkce Pro ověření správnosti výpočtu fitness funkce jsem použil právě takto jednoduchá data z důvodu, že prostor k prohledávání je natolik malý, že umožňuje výpočet hodnoty fitness v celém prostoru. Chromosom pro tyto data obsahuje jen dvě položky xstart a xvelikost . První tvar fitness funkce, který jsem použil, byl: f itness1 = xvelikost + yvelikost + 1 p KAPITOLA 8. EXPERIMENTY 33 Pro zvětšení důležitosti některých částí jsem provedl několik experimentů, ve kterých jsem změnil fitness funkci následovně: f itness2 = x2velikost + yvelikost + 1 p f itness3 = xvelikost + yvelikost + 1 p2 2 f itness4 = xvelikost + yvelikost + 1 p f itness5 = exvelikost + yvelikost + 1 p f itness6 = xvelikost + eyvelikost + 1 p Na obrázku 8.2 jsou zobrazeny grafy zobrazující velikost fitness funkce v závislosti na parametrech xstart a xvelikost . Velikost fitness funkce je na grafech znázorněna mírou zabarvení. Tmavší zabarvení znázorňuje větší hodnotu fitness funkce a tím i zajímavější oblast. Fitness funkce ve všech případech správně ohodnotila chromosomy, které obsahují trénovací data. Ve všech případech se nepovedlo zvýhodnit chromosomy, které obsahují větší oblasti, před chromosomy, které obsahují oblasti malé. Neúspěch této fitness funkce mě vedl k vytvoření fitness funkce ve tvaru: f itness = xvelikost ∗ yvelikost ∗ 1 p Na obrázku 8.4 jsou dva grafy zobrazující velikost fitness funkce. Levý graf zobrazuje fitness v součtovém tvaru a pravý graf v součinovém tvaru. Na grafech obou fitness funkcí jsou jasně vidět části, které odpovídají rozložení učících dat. Na grafu f itnesssoucet je vidět, že dobře ohodnocuje i takové chromosomy, které mají malou hodnotu xvelikost . Toto chování ovšem není žádoucí, protože nesplňuje podmínku maximalizace parametru xvelikost , která je popsána v kapitole 7. Druhá fitness funkce f itnesssoucin již lépe ohodnocuje chromosomy, které mají parametr xvelikost větší. Na grafu funkce f itnesssoucin je také vidět oblast přes obě dvě oblasti trénovacích dat, které se nacházejí na grafu více vpravo. Toto ohodnocení není špatné, protože mezi oblastmi trénovacích dat, kde modely neměly vzor v trénovacích datech, se většina modelů shodla. Fitness funkce f itnesssoucet tuto oblast ohodnotila nízkou hodnotou fitness funkce a není součástí možného řešení. Aby bylo možné ještě více znevýhodnit malé a tím méně zajímavé oblasti, provedl jsem na jednotlivých částech fitness funkce transformaci, která podle základu exponentu c znevýhodňuje menší oblasti před většími. Transformace má tvar: f (x) = (c−x − 1)c , kde c ∈ (0; 1) 1−c 34 KAPITOLA 8. EXPERIMENTY Obrázek 8.2: Závislost fitness funkce na xstart a xvelikost Obrázek 8.3: Řezy grafem fitness funkce pro různé hodnoty parametru xstart a typy fitness funkce Na obrázku 8.6 je graf pro několik hodnot parametru základu exponentu c. Na grafu je vidět, že s klesající hodnotou parametru c jsou více zvýhodňovány větší hodnoty transformovaného parametru. Na obrázku 8.7 jsou grafy zobrazující hodnoty fitness funkce pro různé hodnoty parametru c. Na prvním grafu pro parametr c = 0, 01 je rozdíl fitness funkce mezi menší a větší oblastí velmi výrazný. Na dalších grafech je vidět, že s rostoucí hodnotou parametru c se rozdíl zmenšuje. Toto chování má za následek zvýhodnění větších oblastí. Na obrázku 8.8 je zobrazen řez pro xstart = 0.4 a hodnoty fitness funkce v poměru se svým maximem pro jednotlivé hodnoty parametru c. KAPITOLA 8. EXPERIMENTY 35 Obrázek 8.4: Porovnání dvou typů fitness a) součet b) součin Obrázek 8.5: Řezy grafem fitness funkce v součinovém tvaru pro různé hodnoty parametru xstart a typy fitness funkce Obrázek 8.6: Transformační funkce pro různé hodnoty parametru základu exponentu c 36 KAPITOLA 8. EXPERIMENTY Obrázek 8.7: Porovnání fitness funkcí s různým koeficientem c transformace parametru xvelikost Obrázek 8.8: Závislost poměrné velikosti fitness funkce s různým koeficientem c pro xstart = 0.4 KAPITOLA 8. EXPERIMENTY 8.1.2 37 Diverzita populace Zachování diverzity populace, které bylo popsáno v kapitole 3.6, je při řešení této úlohy velkou výhodou. Možnost nalezení více zajímavých oblastí umožňuje lépe studovat chování modelů neuronových sítí. Pro popsání diverzity populace je definována vzdálenost mezi dvěma chromosomy. Aby se diverzita populace zachovala nebo alespoň udržela po co nejdelší dobu je nutné upravit proces vzniku nové populace, jak bylo popsáno v kapitole 3.6. Pro vyzkoušení správné funkce jsem provedl dva experimenty na stejné skupině modelů. V prvním experimentu jsem použil obyčejný genetický algoritmus. Ve druhém experimentu jsem použil genetický algoritmus zachovávající diverzitu v populaci metodou Deterministic Crowding [8]. Pro zobrazení diverzity v populaci jsem použil grafy, které mají na obou osách indexy chromosomů v populaci a na jejich souřadnicích je zobrazena jejich vzdálenost. Vzdálenost je vyjádřena mírou ztmavnutí. Čím je barva tmavší, tím je vzdálenost chromosomů větší. Bílá barva tedy znamená, že chromosomy jsou identické. Chromosomy jsou na grafu seřazeny podle klesající hodnoty fitness funkce. Hodnota fitness funkce pro chromosomy na horizontální ose je zobrazena červeně a pro chromosomy na vertikální ose je zobrazena zeleně. Graf je diagonálně souměrný. Obrázek 8.9: Vývoj diverzity populace bez použití metody Niching Na obrázku 8.9 je zobrazeno několik generací genetického algoritmu. Na grafu první generace je zřejmé, že populace je vygenerována náhodně. S dalšími generacemi se v populaci více rozmnožují chromosomy, které mají lepší fitness na úkor slabších chromosomů. To je 38 KAPITOLA 8. EXPERIMENTY na grafech znázorněno rozrůstajícími se jednobarevnými oblastmi. Jejich drobné odstíny jsou způsobeny operátorem mutace, který náhodně mění některé z genů chromosomů. Od 32. generace jsou v populaci již jen dva různé chromosomy. Od této generace již soupeří jen mezi sebou a převládnutí lepšího druhu chromosomu je jen otázkou několika generací. Druhý slabší chromosom je silnějším chromosomem nakonec vytlačen. Obrázek 8.10: Vývoj diverzity populace s použitím metody Niching Na obrázku 8.10 jsou zobrazeny grafy generací druhého experimentu. V tomto případě se genetický algoritmus snaží zachovat diverzitu populace. Průběh je v prvních generacích stejný. Opět vznikají různé druhy chromosomů, které postupně zvětšují svůj počet. Rozdíl nastává v generaci, kdy v prvním experimentu začal lepší druh chromosomů vytlačovat slabší druh chromosomů. Zde způsobí Niching. Tím má slabší druh chromosomu větší šanci na to, že nebude vytlačen lepším druhem chromosomů. Je třeba zdůraznit, že tato metoda zachování diverzity populace nezaručí, že slabší druh chromosomů bude v populaci stále. Jelikož má menší hodnotu fitness funkce, má i menší pravděpodobnost, že bude vybrán selekčním operátorem jako rodič pro novou populaci. Tato pravděpodobnost může způsobit, že se počet chromosomů tohoto druhu v jedné populaci náhodně rapidně zmenší a v následujících populacích již nebude obsažen. Diverzita je v populaci tedy zachována jen po určitý konečný čas. Na obrázku 8.11 jsou zobrazeny tři nejperspektivnější chromosomy, které byly nalezeny. KAPITOLA 8. EXPERIMENTY 39 Obrázek 8.11: Nejlepší nalezené chromosomy jednotlivých druhů zleva doprava podle klesající hodnoty fitness funkce 8.2 Uměle vytvořená data s dimenzí vstupního vektoru tři Pro ověření implementace genetického algoritmu jednoduchá data z kapitoly 8.1 nejsou kvuli velikosti dimenze vstupního vektru postačující. Vytvořil jsem rozsáhlejší umělá data vygenerovaná na základě funkce: f (x, y, z) = sin(2πx) + (2y − 1)2 + z + 1 , pro x, y, z ∈ (0; 1) 4 Množinu učících dat jsem vytvořil ve čtyřech skupinách. Vstupem pro generátor těchto dat byla čtveřice bodů bi = [x, y, z] s poloměry ri , které určovaly oblast ve tvaru koule: x2i + yi2 + zi2 ≤ ri2 V těchto oblastech bylo náhodně vygenerováno čtyřicet bodů v každé oblasti. Na obrázku 8.12 jsou zobrazeny body [x, y, z]. Obrázek 8.12: Definiční obor množiny učících dat 40 KAPITOLA 8. EXPERIMENTY Tyto body jsem použil pro vygenerování množiny trénovacích dat, která se skládá z vektorů: ~x = (x, y, z, f (x, y, z)) Poté byla nad daty spuštěna aplikace GAME, pomocí které vzniklo deset modelů neuronové sítě. Nad takto naučenými modely jsem spustil pro každý vstupní parametr x, y a z genetický algoritmus pro vyhledání zajímavých oblastí. Na obrázku 8.15 jsou v prvním sloupci zobrazeny nejlepší chromosomy populace z desáté generace. V druhém sloupci jsou již nejlepší chromosomy populace z padesáté generace. Je patrné, že modely správně identifikovaly průběhy jednotlivých vstupních parametrů tak, jak byly zadány ve funkci generující množinu učících dat. Rozdíl mezi chromosomy z desáté a padesáté generace je zejména v parametru určující shodu skupiny modelů na vybrané oblasti. V tabulce 8.1 jsou uvedeny hodnoty parametrů všech nejlepších nalezených chromosomů. generace 10 10 10 50 50 50 x 0.512 0.059 0.512 0.195 y 0.850 0.479 0.995 0.687 z xstart xvelikost ystart yvelikost f itness 0.239 0.18 0.58 0.28 0.58 1.02 0.995 0.38 0.35 0.49 0.4 1.00 - 0.12 0.75 0.18 0.5 1.09 0.598 0.12 0.75 0.18 0.5 4.39 0.995 0.0 0.75 0.57 0.14 2.48 0 0.92 0.56 0.2 4.18 Tabulka 8.1: Hodnoty popisující nalezená řešení Na obrázku 8.13 jsou zobrazeny grafy diverzity v různých generacích. U parametru x již ve 22. generaci existuje jen jeden druh chromosomu. Pro zbylé dva parametry y a z existuje sice více druhů chromosomu, ale ty se liší jen ve velikosti oblasti a nepřinášejí žádnou novou informaci o chování modelů. Obrázek 8.13: Diverzita populace pro jednotlivé vstupní parametry x, y a z KAPITOLA 8. EXPERIMENTY 8.2.1 41 Ohodnocení významnosti vstupních parametrů (feature ranking) Velice zajímavé je srovnání relativních hodnot fitness funkce nejlepších chromosomů, která ja vypočtena pro každý parametr: f itnessi pi = Pn , j=1 f intessj kde n je počet parametrů. V tabulce 8.2 je srovnání těchto hodnot s hodnotami z GAME. Pomocí těchto hodnot je možné stanovit, jak ovlivňují jednotlivé vstupní parametry výslednou odezvu modelů. Tím lze stanovit významnost každého vstupního parametru. Z vypočtených hodnot je patrné, že nejvýznamnější je parametr x a nejméně ovlivňuje průběh parametr y. Tyto zjištěné hodnoty se shodují s hodnotami nalezenými pomocí GAME. parametr GA GAME x 40% 50% y 22% 22% z 38% 28% Tabulka 8.2: Porovnání významnosti vstupních parametrů genetického algoritmu a GAME Obrázek 8.14: Průběhy jednotlivých parametrů z funkce generující trénovací data 42 KAPITOLA 8. EXPERIMENTY Obrázek 8.15: Nejlepší chromosomy pro jednotlivé vstupní parametry x, y a z v generaci 10 a 50 KAPITOLA 8. EXPERIMENTY 8.3 43 Reálná data - spotřeba energie budovy Pro experiment s reálnými daty jsem si vybral data [7], která obsahují průběh spotřeby elektrické energie (wbe) a teplé (wbhw) a studené (wbcw) vody v závislosti na času, venkovní teplotě (temp), vlhkosti (humid), slunečnímu záření (solar) a rychlosti větru (wind). Ukázka dat je v tabulce 8.3. month day year hour temp humid solar wind wbe wbcw 9 1 89 200 81.9 0.0184 0 7.62 496.07 7.2 9 1 89 300 80.7 0.0187 0 7.94 497.06 7.1 9 1 89 400 79.7 0.0194 0 7.72 496.67 7.1 9 1 89 500 79 0.0197 0.1 6.08 494.54 7.1 9 1 89 600 78.9 0.0199 0.1 5.68 498.09 7 9 1 89 700 78.5 0.0202 0.5 3.87 516.96 7 9 1 89 800 78.7 0.0207 47.5 5.34 589.44 7 wbhw 0.4 0.5 0.5 0.6 0.6 0.6 0.6 Tabulka 8.3: Ukázka dat „building datasetÿ spotřeby energie budovy V aplikaci GAME jsem vygeneroval deset modelů neuronové sítě pro každou z měřených energií. Na obrázku 8.16 jsou grafy nejlepších chromosomů po padesáti generacích genetického algoritmu. V každém grafu je zobrazena závislost energií na jednom ze vstupních parametrů. Při provádění genetického algoritmu pro všechny energie i vstupní parametry vždy zůstal v populaci jen jeden druh chromosomu. Nejzajímavější graf je závislost spotřeby na teplotě. Na tomto grafu je patrná rostoucí závislost spotřeby studené vody a elektrické energie na teplotě a klesající závislost spotřeby teplé vody na teplotě. V tabulce 8.4 jsou uvedeny hodnoty nejlepších řešení (chromosomů) pro jednotlivé energie a vstupní parametry. energie temp humid solar wind xstart ystart xvelikost yvelikost f itness wbcw 0.2 0.3 0.12 0.06 0.24 0.94 0.61 17.01 wbe 0.43 0.09 0.12 0.03 0.11 0.9 0.43 3.96 wbhw 0.23 0.23 0.57 0.05 0.06 0.953 0.79 38.29 wbcw 0.74 - 0.47 0.17 0.06 0.65 0.94 0.19 8.93 wbe 0.71 - 0.08 0.74 0.19 0.6 0.75 0.06 1.8 wbhw 0.84 - 0.23 0.58 0.0 0.07 1 0.05 2.75 wbcw 0.57 0.33 0.2 0.02 0.57 0.98 0.03 2.51 wbe 0.57 0.21 - 0.41 0.0 0.35 0.94 0.31 4.96 wbhw 0.71 0.67 0.6 0.0 0.16 1.0 0.01 1.33 wbcw 0.66 0.26 0.92 - 0.01 0.64 0.98 0.05 2.58 wbe 0.85 0.45 0.395 - 0.06 0.64 0.9 0.22 5.18 wbhw 0.6 0.36 0.31 0.0 0.29 1.0 0.04 1.96 Tabulka 8.4: Nejlepší nalezené chromosomy 44 KAPITOLA 8. EXPERIMENTY Obrázek 8.16: Nejlepší chromosomy pro jednotlivé vstupní parametry temp, humid, solar, wind a spotřeby elektrické energie a teplé a studené vody v 50. generaci 8.3.1 Ohodnocení významnosti vstupních parametrů (feature ranking) V tabulce 8.5 jsou uvedeny hodnoty relativních hodnot fitness funkce pro jednotlivé energie a vstupní parametry porovnané s hodnotami, jak je určila GAME. Je vidět, že obě metody se shodují v pořadí vyhodnocení významnosti jednotlivých vstupních parametrů. KAPITOLA 8. EXPERIMENTY wbcw parametr GA GAME temp 55% 41% humid 29% 31% solar 8% 11% wind 8% 15% 45 GA 25% 11% 31% 33% wbe wbhw GAME GA GAME 26% 86% 51% 9% 6% 30% 41% 3% 13% 22% 4% 4% Tabulka 8.5: Porovnání významnosti vstupních parametrů genetického algoritmu a GAME Obrázek 8.17: Porovnání významnosti vstupních parametrů genetického algoritmu a GAME 46 KAPITOLA 9. IMPLEMENTACE 9 Implementace Při implementaci obou úloh vizualizace chování modelů neuronových sítí i vyhledávání zajímavých oblastí jsem pracoval v prostředí poměrně rozsáhlé aplikace GAME implementující stejnojmenou metodu popsanou v kapitole 2.5. Modulární charakter této aplikace mi ale poskytoval velkou volnost při implementaci. Aplikace GAME je implementována v jazyce JAVA a tím byl dán i programovací jazyk pro mou diplomovou práci. 9.1 Vizualizace Při řešení této úlohy vznikly tři třídy. • Třída pro vizualizaci odezvy jednoho modelu neuronové sítě Clasification2D. • Třída pro vizualizaci odezvy skupiny modelů neuronové sítě ClasificationMulti2D. • A třída ScatterplotMatrix pro zobrazení odezvy jednoho modelu neuronové sítě v závislosti na všech kombinacích vstupních parametrů. Jelikož všechny třídy řeší podobný úkol, což je vizualizace jedné nebo více funkcí f (x, y) ∈ h0; 1i pro x, y ∈ h0; 1i vytvořil jsem třídu GraphLayerFunction2D pro vizualizaci takové funkce a rozhraní, které této třídě zprostředkovává data. Rozhraní definuje funkci: • public double getDoubleValue(double x, double y); funkce vrací hodnotu vizualizované funkce pro parametry x a y. Implementace výše zmíněných tříd pro vizualizaci odezev modelů neuronových sítí použitím třídy GraphLayerFunction2D spočívala v implementaci rozhraní pro zprostředkování dat. Pro vizualizaci množiny terénovacích dat jsem, podobně jako v případě vizualizace odezev, implementoval třídu GraphLayerSpots a rozhraní pro zprostředkování datových vektorů GraphLayerSpotsInterface. Třída GraphLayerSpots implementuje vizualizaci bodů tak jak je popsáno v kapitole 6.1.2. • public int SpotsCount(); Definuje počet zobrazovaných vektorů. • public TSpot getSpot(int index); Funkce zprostředkovává bod na určitém indexu. Index je v rozsahu od 0 do SpotsCount() - 1; • public double getMinKlobouk(); Nastavení konstanty c (viz. 6.1.2) pro maximální velikost značky. KAPITOLA 9. IMPLEMENTACE 47 • public double getMaxKlobouk(); Nastavení konstanty k (viz. 6.1.2) pro maximální vzdálenost vektoru od zobrazovaného řezu. • public void drawSpot(Graphics g, TIntSpot s); Pro vykreslení vlastního bodu je možné definovat vlastní funkci pro vykreslení značky. Implementace rozšíření pro vizualizaci datových vektorů do vizualizačních tříd spočívalo v implementaci rozhraní GraphLayerSpotsInterface a použití třídy GraphLayerSpots. 9.2 Rozhraní pro genetické algoritmy Genetický algoritmus jsem se snažil implementovat pokud možno co nejobecněji. Z toho důvodu vzniklo rozhraní Chromosome , které definuje všechny potřebné vlastnosti chromosomu. • public double fitness(); Základní vlastností chromosomu je výpočet fitness funkce. Chromosom na základě svých parametrů (genů) spočítá hodnotu fitness funkce. • public void mutate(double MutationSize); Pro vnesení rozmanitosti do populace je třeba, aby chromosom zmutoval (změnil své geny). Parametr MutationSize, který je v intervalu h0, 1i, udává jak velká maximálně mutace může být. • public Chromosome crossing(Population p, Chromosome X); Křížení, je jedním z operátorů používaných v genetickém algoritmu. Chromosom musí být schopen se zkřížit alespoň s chromosomem stejného typu. • public double getDistanceFrom(Chromosome ch); Výpočet vzdálenosti od jiného chromosomu je jednou z cest k zachování diverzity v populaci. Chromosom musí být schopen vyjádřit svou vzdálenost od jiného chromosomu stejného typu. Dále je třeba mít zdroj nových náhodných chromosomů, které vytváří počáteční populaci nebo doplňují populaci do potřebné velikosti při vytváření nové generace populace. public interface ChromosomeGenerator { public Chromosome ChromosomeGenerator(); } 48 KAPITOLA 9. IMPLEMENTACE 9.3 Třída Population public class Population implements ChromosomeGenerator { public Population(int size, ChromosomeGenerator generator) private Chromosome Select() public Population nextPopulation() public Chromosome maxFitness() public Chromosome minFitness() public Chromosome getChromosome(int index) public double SetMutationProbability(double value) public double SetMutationSize(double value) public double SetCrossingSize(double value) } Samotný genetický algoritmus je implementován ve třídě Population. Konstruktor třídy má dva parametry: velikost populace a generátor chromosomů. Konstruktor vytvoří pomocí generátoru chromosomů počáteční populaci. Genetický algoritmus má několik parametrů. Jsou to: • pravděpodobnost mutace, která se zadává hodnotou z intervalu h0; 1i. Její hodnota udává pravděpodobnost, s jakou bude na nějaký chromosom uplatněn operátor mutace. • velikost mutace, která se zadává hodnotou z intervalu h0; 1i. Její hodnota udává, jak maximálně velká může mutace chromosomu být. • velikost křížení, která se zadává hodnotou z intervalu h0; 1i. Její hodnota udává, jak velké procento nových chromosomů, při vytváření nové populace vznikne křížením. Základní funkcí této třídy je vytváření nové populace nextPopulation. Tato funkce vygeneruje novou populaci, jejíž chromosomy jsou potomky současné populace. Při vytváření nové populace je jednou z podstatných operací ovlivňující novou populaci operátor selekce. Tento operátor implementuje funkce Select, která vrací chromosom ze současné populace, vybraný na základě selekčního operátoru. Třída Population obsahuje několik základních funkcí. Jsou to funkce: • maxFitness(), která vrací chromosom, který má v populaci největší fitness. 9.4 Vizualizační třída GA a konfigurační třída GAConfig pro aplikaci GAME Pro propojení mé implementace genetického algoritmu a aplikace GAME slouží třída GA a její konfigurační třída GACfg. Třída GA implementuje rozhraní Graph, což je rozhraní, KAPITOLA 9. IMPLEMENTACE 49 které ji zpřístupňuje v nabídce aplikace GAME a spouští její inicializaci. Konfigurační třída GACfg implementuje rozhraní GConfig, které zpřístupňuje konfiguraci v aplikaci GAME. 9.5 Aplikace navrženého rozhraní Chromosome Třída BaseRange je implementací mnou výše popsaného chromosomu 7.2 a fitness funkce 7.3. Tato třída implementuje rozhraní Chromosome a je tedy použitelná pro třídu implementující genetický algoritmus Population. Jelikož v průběhu experimentování docházelo k častým změnám v kódu chromosomu, stala se z třídy BaseRange třída rodičovská, která definuje zakódovaní chromosomu, a funkce pro výpočet fitness funkce a křížení chromosomu se přesunuly do tříd potomků, kde bylo snadnější tyto funkce měnit. 9.6 Rozhraní tříd GA a GAConfig Instanci třídy Population obsahuje třída GA, která vytváří vlákno, ve kterém je spuštěn výpočet nových populací genetického algoritmu. Pro konfiguraci parametrů, nastavení zobrazení výstupů a vizualizace průběhu genetického algoritmu slouží třída GAConfig. Na obrázku 9.1 je zobrazeno rozhraní konfigurační třídy. Jelikož konfigurační třída obsahuje mnoho parametrů, jsou parametry rozděleny do skupin. • Graph Tento panel obsahuje skupinu parametrů určujících, jaké informace jsou v průběhu genetického algoritmu k dispozici. • Genetic algorithm Na tomto panelu je možné nastavit pravděpodobnosti a velikosti jednotlivých operátorů používaných genetickým algoritmem. • Chromosome Tento panel nastavuje koeficienty transformací jednotlivých kriterií použité pří výpočtu fitness funkce. Také je možné nastavit s jakou hustotou bude vzorkován právě zkoumaný vstupní parametr. • Visualization Na tomto panelu je možné nastavit s jakým rozlišením a jak často budou vykreslovány informace o průběhu genetického algoritmu. Na obrázku 9.2 je ukázka průběhu genetického algoritmu. Je zobrazen vývoj maximální hodnoty fitness funkce, aktuální a nejlepší dosud nalezená populace a je zobrazen nejlepší chromosom z nejlepší populace. Pod grafy populací jsou zobrazeny souhrnné informace: index generace, minimální, maximální a průměrná hodnota fitness funkce v populaci, velikost populace a hodnoty nejlepšího chromosomu v populaci. 50 KAPITOLA 9. IMPLEMENTACE Obrázek 9.1: Rozhraní konfigurační třídy Obrázek 9.2: Průběh genetického algoritmu KAPITOLA 10. DALŠÍ PRÁCE 51 10 Další práce Při implementaci této práce se ukázalo, že některé problémy by se daly řešit jiným způsobem a bylo by zajímavé vyzkoušet, jakých výsledků by se tímto jiným postupem dalo dosáhnout. Bohužel jsem neměl dostatek času k jejích podrobnému rozpracování. V této kapitole uvádím tyto nápady a postřehy pro případ dalšího vývoje. V další práci by bylo zajímavé implementovat jiný výpočet vzdálenosti datového vektoru od aktuálního zobrazovaného řezu než nyní implementované Euklidovy vzdálenosti uvedené v kapitole 6.1.2. Do vypočtené vzdálenosti by měl každý vstupní parametr přispívat podle své významnosti. Významnost každého vstupního parametru by definovala velikost změny odezvy modelu, k jaké dojde mezi zobrazovaným řezem a polohou datového vektoru. Pokud by tedy tato změna byla malá, což znamená, že mezi zobrazovaným řezem a datovým vektorem nedochází ke změně klasifikační třídy, byla by vzdálenost nulová. Na druhou stranu, pokud by byla změna velká a došlo by tedy ke změně klasifikační třídy, odpovídala by vzdálenost právě této změně. Pro další vylepšení fitness funkce by mohlo být zajímavé implementovat jiný výpočet parametru yvelikost uvedeného v kapitole 7. Současný výpočet znevýhodňuje oblasti, ve kterých nedochází k velké změně průměrné odezvy skupiny modelů, ale zároveň se odezva hodně mění. Z toho důvodu by bylo výhodnější spíše než rozdíl maxima a minima průměrné odezvy skupiny modelů použít výpočet integrálu v dané oblasti. Implementovaný modul pro vyhledávání zajímavých oblastí by se dal upravit pro automatické generování zprávy o naučenosti modelu. Výstupem takové akce by byl dokument, který by obsahoval nejlepší nalezené oblasti pro každý vstupní parametr a poskytnul by tak snadný a rychlý náhled na právě vytvořenou skupinu modelů. Cely koncept by se dal rozšířit i na problemy modelů rečících klasifikační úlohy. V tomto případě by bylo nutné opět experimentalne zjistit nejvhodnější tvar fitness funkce a nastavení parametrů genetického algoritmu. 52 KAPITOLA 11. ZÁVĚR 11 Závěr V této práci jsem prostudoval teorii neuronových sítí, vizualizace vícerozměrných dat, geneticke algoritmy a techniky vizualizace chování modelů přírodních systémů reprezentovaných neuronovou sítí. Jako zdroj modelů přírodních systémů mi sloužila aplikace GAME [4], jejímž autorem je vedoucí mé diplomové práce Ing. Pavel Kordík. Do aplikace GAME jsem integroval vizualizační moduly pro studium chování modelu a ověřování jeho kvality. Moduly jsou navrženy tak, aby respektovali mnohadimenzionální podstatu problemu. V práci jsem také implementoval niching genetický algoritmus zajišťující automatické nalezení zajímavých oblastí. Experimentoval jsem s parametry a nastavením genetického algoritmu, až se mi ho povedlo vyladit tak, že je úspěšně nasaditelný na modely reálných dat. Vedlejším produktem je i možnost inteligentniho určování významnosti vstupnich parametrů z hodnoty nejlepší dosažené fitness funkce. V první části mé práce se věnují vizualizaci modelů řešících úlohu klasifikace. V rámci práce jsem navrhnul a implementoval vizualizační modul pro aplikaci GAME umožňující vizualizaci a následné studium chování modelů. Modul umožňuje vizualizaci odezvy jednoho modelu v závislosti na dvou vstupních parametrech, které určují řez mnohadimenzionálním prostorem, ve kterém má model definovanou odezvu. Jako další kvalitu pro studium modelu jsem implementoval vizualizaci datových vektorů trénovacích dat pro vizuální kontrolu správnosti odezvy modelu. Pro správnou interpretaci vzdálenosti datových vektorů od studovaného řezu jsem použil Euklidovu vzdálenost. Pro komplexnější pohled na modely a studovananá data se pohled na odezvu modelu v závislosti na dvou parametrech stal nedostatečným. Proto jsem implementoval modul ScatterplotMatrix, který stejnou metodou jako pro dva vybrané vstupní parametry, vizualizuje odezvy modelu pro všechny kombinace vstupních parametrů. Jelikož aplikace GAME vytváří vybranou skupinu modelů, kde jsou všechny modely naučeny pro řešení stejného problému, věnoval jsem se dále vizualizaci odezev více modelů do jednoho grafu. Používal jsem stejné postupy jako při vizualizaci jednoho modelu. Díky snadné implementaci průhlednosti v prostředí jazyka JAVA nebyla modifikace již stávajícího modulu obtížná. Dalším krokem byla implementace násobení odezev modelů klasifikujících stejnou třídu dat. Tento způsob vizualizace v kombinaci s vizualizací datových vektorů učících dat pomohl ukázat, zda kombinace modelů přesněji klasifikuje správné oblasti dat. V druhé části diplomové práce jsem implementoval algoritmus na vyhledávání zajímavých oblastí chování skupiny regresních modelů neuronových sítí. Pro genetický algoritmus jsem definoval podmínky, které popisují zajímavou oblast chování modelů. Genetický algoritmus jsem implementoval zcela obecně. Experimentování se díky obecné implementaci značně zjednodušilo. V rámci experimentů jsem se snažil definovat tvar fitness funkce, která by co nejlépe popisovala zajímavou oblast. Pro ověření správnosti navržené fitness funkce jsem vygeneroval jednoduchá data, na kterých se snadno dalo ověřit její chování. Stanovení správného tvaru fitness funkce se ukázalo jako největší problém. Hodnotu fitness funkce ovlivňovaly i parametry, které nastavovaly důležitost jednotlivých podmínek, ze kterých se fitness funkce skládá. Experimentoval jsem s transformací parametru ovlivňující velikost nale- KAPITOLA 11. ZÁVĚR 53 zené oblasti. Po stanovení tvaru fitness funkce, jsem se věnoval experimentů s parametry genetického algoritmu. Experimentoval jsem typem selekčního operátoru a s nastavením selekčního tlaku. V další části jsem se snažil o implementaci metody Niching pro zachování diverzity populace. Tato technika by měla zajistit, že pro jednu skupinu modelů bude nalezeno nejen nejoptimálnější řešení, ale také další suboptimální řešení, které také splňují podmínky pro zajímavou oblast chování modelů. Abych mohl tuto techniku implementovat, musel jsem změnit stávající genetický algoritmus. Na skupině modelů vytvořených na umělých datech jsem poté srovnával nalezená řešení s použitím klasického genetického algoritmu a s použitím metody pro zachování diverzity populace. Pro výpočet diverzity v populaci bylo třeba definovat způsob výpočtu odlišnosti dvou řešení (chromosomů). Pro tento výpočet jsem použil Euklidovu vzdálenost. Abych mohl sledovat vývoj diverzity v populaci a následně snadno vyhledat nejlepší a zároveň nejodlišnější řešení v populaci, vytvořil jsem matici vzdáleností, která zobrazuje vzájemnou vzdálenost mezi všemi řešeními. Metoda se ukázala jako funkční a povedlo se s její pomocí zachovat v populaci i další řešení, která mají menší ohodnocení fitness funkcí. Diplomová práce obsahuje několik obrázků zachycujících vývoj diverzity populace v jednotlivých generacích. Pro další otestování genetického algoritmu jsem vytvořil umělá trénovací data, která mají větší dimenzi vektoru vstupních parametrů a stavový prostor, ve kterém je odezva vytvořených modelů definována, je větší a tím je pro genetický algoritmus náročnější vyhledat optimální řešení. I se složitějšími daty si mnou navržený algoritmus poradil a vyhledal oblasti, ve kterých odezva většiny modelů odpovídala předpisu funkce, ze kterého byla vytvořena množina učících dat. Aplikace metody pro zachování diverzity populace v tomto případě nenalezla další suboptimální řešení a algoritmus konvergoval vždy jen do jednoho řešení. V rámci experimentů jsem výše zmíněné techniky použil i na reálná data. Souboru dat, který jsem použil, obsahuje údaje o spotřebě elektrické energie a horké a studené vody v závislosti na několika parametrech. Nalezené oblasti odpovídají předpokládaným závislostem v datech. Implementované moduly, které spolupracují s aplikací GAME, při prováděných experimentech pracovaly bez chyb a díky mnoha způsobům exportu dat bylo možné pohodlně zpracovávat a analyzovat průběh genetického algoritmu a ověřovat správnost prováděných prováděných výpočtů. Mnou implementované moduly našly uplatnění a usnadňují další výzkum modelů přírodních systémů realizovaných pomocí neuronových sítí v aplikaci GAME. 54 KAPITOLA 11. ZÁVĚR KAPITOLA 12. LITERATURA 55 12 Literatura [1] ŠNOREK M. Neuronové ISBN 80-01-02549-7 sítě a neuropočítače, ČVUT, Praha, 2004, [2] HANSEN L. K.; SALAMON P. Neural network ensembles, IEEE Trans. Pattern Anal. Machine Inteligence, 1990 [3] ANDERSON D., McNEIL G. Artificial Neural Networks Technology, 1992, http://www.dacs.dtic.mil/techs/neural/ [4] KORDÍK P. GAME - Group of Adaptive Models Evolution, ČVUT, 2005 [5] UCI Machine Learning Repository, UCI Machine Learning Repository Content Summary, WWW http://www.ics.uci.edu/~mlearn/MLSummary.html [6] WONG P. Ch.; BERGERON R. D. 30 Years of Multidimensional Multivariate Visualization, Department of Computer Science University of New Hampshire [7] PRECHELT L. PROBEN1 - A Set of Benchmarks and Benchmarking Rules for Neural Network Training Algorithms, Fakultät für Informatik, Universität Karlsruhe, 1994 [8] MAHFOUD S. W. Niching methods for genetic algorithms, Doctoral dissertation, IlliGAL Rep.95001, Urbana U. of Illinois, Illinois Genetic Algorithms Lab, 1995. [9] ASIMOV D. The grand tour: A tool for viewing multidimensional data., SIAM Journal on Scientific and Statistical Computing, 6(1):128-143 [10] STANLEY K. Efficient Evolution of Neural Networks Through Complexification, Ph.D. Thesis, Department of Computer Sciences, The University of Texas at Austin, 2004 [11] ANKERST M. Visual Data Mining with Pixel-oriented Visualization Techniques, The Boeing Company, Seatle, 2001. [12] ANKERST M. Visual Data Mining,Ph.D. thesis, University of Munich, published by www.dissertation.de, 2000 [13] OŠMERA P. Genetické algoritmy a jejich aplikace, Vysoké učení technické v Brně, Fakulta srojního inženýrství, Brno, Prosinec 2001 [14] KORDÍK P.; Šnorek M. Ensemble Techniques for Credibility Estimation of GAME Models, Department of Computer Science and Engineering, Czech Technical University, Prague
Podobné dokumenty
Algoritmy pro optimalizaci sítí GAME Miroslav Janošík
Tato práce se zabývá problémem optimalizačních úloh. Konkrétně se jedná o optimalizaci jednotek neuronové sítě GAME. Součástí práce je teoretický rozbor problému, kde jsou popsány
některé z optimal...
Velkou naural tit
– Spočti f(x) pro každé x z
P(t)
– Opakuj n/2 krát:
• selekcí vyber pár rodičů x, y
z P(t)
• s pravděpodobností pC
aplikuj křížení na x, y
• s pravděpodobností pM
mutuj každý bit x, y
• Vlož x, y d...
Počítačová síť a internet — cvičení
uživatelÿ, musíme svou práci s čísly alespoň částečně přizpůsobit tomuto stroji. Takže kde a jak
se u počítačů a jiných výpočetních zařízení s jinými číselnými soustavami setkáváme:
• binární (dvoj...
Rozvojový projekt na rok 2011 - Helpdesk
Vyměněné řídící jednotky přístupového systému (20 ks) – splněno (výměna zastaralých řídících jednotek
provedena celkem ve 20 budovách JU, díky důsledné kontrole dodavatele, jednání o cenách a organ...
Stáhnout prezentaci
KLM - Klasický lineární model, GLM – Zobecněné lineární modely, GAM – Zobecněné aditivní modely, LDA – Lineární diskriminační analýza, CARTKlasifikační a regresní stromy, RF – Random forest, SVM – ...
Výroční zpráva Ústavu informatiky AV ČR za rok 2001
symetrické lineární algebraické soustavy (B). Bylo ukázáno, že numerická nestabilita
iteračních metod může být předurčena volbou počítané báze bez ohledu na vlastní
implementaci (B). V návaznosti n...
Analýza antropologických dat metodami výpocetn´ı inteligence Bc
testuji modul pro automatické předzpracovánı́ dat, implementovaný do programu GAME, jehož
výsledky poté porovnávám s ostatnı́mi metodami. Mou snahou bylo také shromáždit a porovnat výs...
Marketingová strategie rozvoje cestovního ruchu
regionalizací uvedenou v Marketingové strategii rozvoje cestovního ruchu v Moravskoslezském kraji
(Vítkovsko jako součást TO Jeseníky,). Je navíc zřejmé, že některé obce turistické oblasti nemají
z...
Sylabus Základy bioinženýrství N319002
správnou interpretaci, pochopení a začlenění do kontextů je třeba mít znalosti základních
předmětů, jako jsou Fyzika, Matematika, Analytická a Fyzikální chemie, Biochemie,
Mikrobiologie, Chemické i...
Poměr frekvencí tónů vzdálených o oktávu je 2:1
Zatím jsme neřešili z jakého oboru je závisle proměnná. Délka vlasů je jistě z oboru reálných čísel. Ale když
ji chcete zapsat do počítače, bude to číslo zapsané jen s určitou přesností (máme k dis...