NEURONOVÉ SÍTĚ A EVOLUČNÍ ALGORITMY NEURAL NETWORKS AND EVOLUTIONARY ALGORITHMS

Podobné dokumenty
Příloha 1. Náleţitosti a uspořádání textové části VŠKP

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY NÁVRH STRATEGIE ROZVOJE MALÉ RODINNÉ FIRMY THE DEVELOPMENT OF SMALL FAMILY OWNED COMPANY

Bakalářská práce bakalářský studijní obor Teleinformatika

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

ANALÝZA A KLASIFIKACE BIOMEDICÍNSKÝCH DAT. Institut biostatistiky a analýz

Umělé neuronové sítě

Rosenblattův perceptron

Metodický pokyn č. 1/09 pro odevzdávání, ukládání a zpřístupňování vysokoškolských závěrečných prací

Fiala P., Karhan P., Ptáček J. Oddělení lékařské fyziky a radiační ochrany Fakultní nemocnice Olomouc

5. Umělé neuronové sítě. neuronové sítě. Umělé Ondřej Valenta, Václav Matoušek. 5-1 Umělá inteligence a rozpoznávání, LS 2015

Architektura - struktura sítě výkonných prvků, jejich vzájemné propojení.

Vytěžování znalostí z dat

5. Umělé neuronové sítě. Neuronové sítě

DIPLOMOVÁ PRÁCE (MMSE) Pokyny pro vypracování

Neuronové sítě Ladislav Horký Karel Břinda

3. Vícevrstvé dopředné sítě

NÁVRH ŘEŠENÍ FLUKTUACE ZAMĚSTNANCŮ VE SPOLEČNOSTI

Využití neuronové sítě pro identifikaci realného systému

Algoritmy a struktury neuropočítačů ASN - P11

Projekční algoritmus. Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění. Jan Klíma

Algoritmy a struktury neuropočítačů ASN P4. Vícevrstvé sítě dopředné a Elmanovy MLNN s učením zpětného šíření chyby

Asociativní sítě (paměti) Asociace známého vstupního vzoru s daným výstupním vzorem. Typická funkce 1 / 44

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Emergence chování robotických agentů: neuroevoluce

SMĚRNICE REKTORA Č. 9/2007

II. Úlohy na vložené cykly a podprogramy

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi

AUTOMATIZACE CHYB OBJEDNÁVKOVÉHO SYSTÉMU AUTOMATION OF ORDERING SYSTEM ERRORS

Ambasadoři přírodovědných a technických oborů. Ing. Michal Řepka Březen - duben 2013

U Úvod do modelování a simulace systémů

Neuronové časové řady (ANN-TS)

NG C Implementace plně rekurentní

Neuropočítače. podnět. vnímání (senzory)

Trénování sítě pomocí učení s učitelem

PV021: Neuronové sítě. Tomáš Brázdil

Státnice odborné č. 20

Neuronové sítě v DPZ

13 Barvy a úpravy rastrového

Neuronové sítě. Vlasta Radová Západočeská univerzita v Plzni katedra kybernetiky

Neuronové sítě (11. přednáška)

Úloha - rozpoznávání číslic

Přednáška 13 Redukce dimenzionality

UNIVERZITA PARDUBICE Směrnice č. 13/2007 ve znění dodatku č. 1 Pravidla pro zveřejňování závěrečných prací a jejich základní jednotnou formální úpravu

Algoritmy a struktury neuropočítačů ASN - P1

Automatizace je proces při němž je řídicí funkce člověka nahrazována činností

2. RBF neuronové sítě

AVDAT Nelineární regresní model

1. Úvod do genetických algoritmů (GA)

Doporučení k uspořádání absolventské práce obhajované na Ústavu mikroelektroniky a Ústavu elektrotechnologie FEKT VUT v Brně ČÁST PRVNÍ

Algoritmy a struktury neuropočítačů ASN - P10. Aplikace UNS v biomedicíně

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ SMĚRNICE Č. 38/2017 ÚPRAVA, ODEVZDÁVÁNÍ, ZVEŘEJŇOVÁNÍ A UCHOVÁVÁNÍ VYSOKOŠKOLSKÝCH KVALIFIKAČNÍCH PRACÍ

Globální matice konstrukce

Algoritmy pro shlukování prostorových dat

Pokročilé operace s obrazem

Genetické algoritmy. Informační a komunikační technologie ve zdravotnictví

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Neuronové sítě AIL002. Iveta Mrázová 1 František Mráz 2. Neuronové sítě. 1 Katedra softwarového inženýrství. 2 Kabinet software a výuky informatiky

Detekce kartografického zobrazení z množiny

Základy matematiky pro FEK

Evoluční výpočetní techniky (EVT)

MĚŘENÍ A ANALÝZA ELEKTROAKUSTICKÝCH SOUSTAV NA MODELECH. Petr Kopecký ČVUT, Fakulta elektrotechnická, Katedra Radioelektroniky

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Úvod do optimalizace, metody hladké optimalizace

ití empirických modelů při i optimalizaci procesu mokré granulace léčivl ková SVK ÚOT

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

2. úkol MI-PAA. Jan Jůna (junajan)

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Katedra kybernetiky laboratoř Inteligentní Datové Analýzy (IDA) Katedra počítačů, Computational Intelligence Group

Profilová část maturitní zkoušky 2013/2014

OSA. maximalizace minimalizace 1/22

4EK213 LINEÁRNÍ MODELY

Numerické metody a programování. Lekce 8

Teorie systémů TES 1. Úvod

0.1 Úvod do lineární algebry

Lineární klasifikátory

ZÁKLADNÍ METODY REFLEKTOMETRIE

Rozpoznávání písmen. Jiří Šejnoha Rudolf Kadlec (c) 2005

Profilová část maturitní zkoušky 2017/2018

Principy počítačů I Netradiční stroje

REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB

METODY DOLOVÁNÍ V DATECH DATOVÉ SKLADY TEREZA HYNČICOVÁ H2IGE1

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA STROJNÍHO INŽENÝRSTVÍ

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ

Algoritmizace prostorových úloh

Tabulkový procesor. Základní rysy

Právní kontrola Mgr. Michal Prokop právník Odpovědný pracovník Ing. Aleš Kocourek, Ph.D. prorektor

0.1 Úvod do lineární algebry

IB112 Základy matematiky

Kontingenční tabulky v MS Excel 2010

Už bylo: Učení bez učitele (unsupervised learning) Kompetitivní modely

Jsou inspirovány poznatky o neuronech a nervových sítích živých organizmů a jejich schopnostmi:

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

OBSAHOVÁ STRÁNKA DP, BP

Stavový model a Kalmanův filtr

Úvod do lineární algebry

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

Jaroslav Tuma. 8. února 2010

IBM SPSS Neural Networks

Transkript:

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV BIOMEDICÍNSKÉHO INŽENÝRSTVÍ FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF BIOMEDICAL ENGINEERING NEURONOVÉ SÍTĚ A EVOLUČNÍ ALGORITMY NEURAL NETWORKS AND EVOLUTIONARY ALGORITHMS DIPLOMOVÁ PRÁCE MASTER S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR Jitka Svobodová Ing. Jan Hrubeš BRNO, 2009

zadání

LICENČNÍ SMLOUVA POSKYTOVANÁ K VÝKONU PRÁVA UŽÍT ŠKOLNÍ DÍLO 1. Pan/paní (dále jen autor ) uzavřená mezi smluvními stranami: Jméno a příjmení: Jitka Svobodová Bytem: 1. máje 32, Horka nad Moravou Narozen/a (datum a místo): 30. listopadu 1984 v Olomouci 2. Vysoké učení technické v Brně a Fakulta elektrotechniky a komunikačních technologií se sídlem Údolní 53, 602 00, Brno jejímž jménem jedná na základě písemného pověření děkanem fakulty: prof. Ing. Jiří Jan,CSc, předseda rady oboru Biomedicínské a ekologické inženýrství (dále jen nabyvatel ) Čl. 1 Specifikace školního díla 1. Předmětem této smlouvy je vysokoškolská kvalifikační práce (VŠKP): disertační práce diplomová práce bakalářská práce jiná práce, jejíž druh je specifikován jako... (dále jen VŠKP nebo dílo) Název VŠKP: Neuronové sítě a evoluční algoritmy Vedoucí/ školitel VŠKP: Ing. Jan Hrubeš Ústav: Ústav biomedicínského inženýrství Datum obhajoby VŠKP: VŠKP odevzdal autor nabyvateli * : v tištěné formě počet exemplářů: 2 v elektronické formě počet exemplářů: 2 2. Autor prohlašuje, že vytvořil samostatnou vlastní tvůrčí činností dílo shora popsané a specifikované. Autor dále prohlašuje, že při zpracovávání díla se sám nedostal do rozporu s autorským zákonem a předpisy souvisejícími a že je dílo dílem původním. 3. Dílo je chráněno jako dílo dle autorského zákona v platném znění. 4. Autor potvrzuje, že listinná a elektronická verze díla je identická. * hodící se zaškrtněte

Článek 2 Udělení licenčního oprávnění 1. Autor touto smlouvou poskytuje nabyvateli oprávnění (licenci) k výkonu práva uvedené dílo nevýdělečně užít, archivovat a zpřístupnit ke studijním, výukovým a výzkumným účelům včetně pořizovaní výpisů, opisů a rozmnoženin. 2. Licence je poskytována celosvětově, pro celou dobu trvání autorských a majetkových práv k dílu. 3. Autor souhlasí se zveřejněním díla v databázi přístupné v mezinárodní síti ihned po uzavření této smlouvy 1 rok po uzavření této smlouvy 3 roky po uzavření této smlouvy 5 let po uzavření této smlouvy 10 let po uzavření této smlouvy (z důvodu utajení v něm obsažených informací) 4. Nevýdělečné zveřejňování díla nabyvatelem v souladu s ustanovením 47 b) zákona č. 111/1998 Sb., v platném znění, nevyžaduje licenci a nabyvatel je k němu povinen a oprávněn ze zákona. Článek 3 Závěrečná ustanovení 1. Smlouva je sepsána ve třech vyhotoveních s platností originálu, přičemž po jednom vyhotovení obdrží autor a nabyvatel, další vyhotovení je vloženo do VŠKP. 2. Vztahy mezi smluvními stranami vzniklé a neupravené touto smlouvou se řídí autorským zákonem, občanským zákoníkem, vysokoškolským zákonem, zákonem o archivnictví, v platném znění, a popř. dalšími právními předpisy. 3. Licenční smlouva byla uzavřena na základě svobodné a pravé vůle smluvních stran, s plným porozuměním jejímu textu i důsledkům, nikoliv v tísni a za nápadně nevýhodných podmínek. 4. Licenční smlouva nabývá platnosti a účinnosti dnem jejího podpisu oběma smluvními stranami. V Brně dne 29. května 2009.. Nabyvatel Autor

Vysoké učení technické v Brně Fakulta elektrotechniky a komunikačních technologií Ústav biomedicínského inženýrství POPISNÝ SOUBOR ZÁVĚREČNÉ PRÁCE Autor: Jitka Svobodová Název závěrečné práce: Neuronové sítě a evoluční algoritmy Název závěrečné práce ENG: Neural networks and evolutionary algorithms Anotace závěrečné práce: Diplomová práce se zabývá použitím zvolených evolučních algoritmů k určení a úpravě parametrů neuronové sítě. K úpravě parametrů sítě se zpětným šířením chyby byly použity genetické algoritmy, evoluční strategie a evoluční programování. Součástí práce je program vytvořený v prostředí Matlab, ve kterém byly použité metody testovány na úlohách rozpoznávání vzorů a predikci průběhu funkce. Výsledkem práce jsou grafy průběhu chyby sítě a fitness během úpravy pomocí zvolených algoritmů a průběhů chyby při následném učení. Anotace závěrečné práce ENG: Objective of this master's thesis is optimizing of neural network topology using some of evolutionary algorithms. The backpropagation neural network was optimized using genetic algorithms, evolutionary programming and evolutionary strategies. The text contains an application in the Matlab environment which applies these methods to simple tasks as pattern recognition and function prediction. Created graphs of fitness and error functions are included as a result of this thesis. Klíčová slova: neuronové sítě, genetické algoritmy, evoluční programování, evoluční strategie Klíčová slova ENG: neural network, genetic algortihms, evolutionary programming, evolutionary strategies

Typ závěrečné práce: Diplomová práce Datový formát závěrečné práce: PDF Jazyk závěrečné práce: čeština Přidělovaný titul: Ing. Vedoucí závěrečné práce: Ing. Jan Hrubeš Škola: Vysoké učení technické v Brně Fakulta: Fakulta elektrotechniky a komunikačních technologií Ústav: Ústav biomedicínského inženýrství Studijní program: Elektrotechnika, elektronika, komunikační a řídící technika Studijní obor: Biomedicínské a ekologické inženýrství Bibliografická citace práce: SVOBODOVÁ, J. Neuronové sítě a evoluční algoritmy. Brno: Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií, 2009, 48 s. Vedoucí diplomové práce Ing. Jan Hrubeš.

Prohlášení Prohlašuji, že svou diplomovou práci na téma Neuronové sítě a evoluční algoritmy jsem vypracovala samostatně pod vedením vedoucího diplomové práce a s použitím odborné literatury a dalších informačních zdrojů, které jsou všechny citovány v práci a uvedeny v seznamu literatury na konci práce. Jako autorka uvedené diplomové práce dále prohlašuji, že v souvislosti s vytvořením této diplomové práce jsem neporušila autorská práva třetích osob, zejména jsem nezasáhla nedovoleným způsobem do cizích autorských práv osobnostních a jsem si plně vědoma následků porušení ustanovení 11 a následujících autorského zákona č. 121/2000 Sb., včetně možných trestněprávních důsledků vyplývajících z ustanovení 152 trestního zákona č. 140/1961 Sb. V Brně dne 29. května 2009...

Poděkování Děkuji vedoucímu diplomové práce Ing. Janu Hrubešovi za pomoc a trpělivost při zpracování mé diplomové práce. V Brně dne 29. května 2009...

Obsah 1 Úvod...11 2 Neuronové sítě, evoluční algoritmy...12 2.1 Biologické neuronové sítě...12 2.2 Umělé neuronové sítě...12 2.3 Evoluční algoritmy...15 3 Typy neuronových sítí...17 3.1 Perceptronová síť...17 3.2 Hopfieldova síť...20 3.3 Kohonenova síť...22 4 Učení sítě pomocí evolučních algoritmů...24 4.1 Učení metodou zpětného šíření chyby...24 4.2 Evoluční algoritmy...26 4.3 Použití genetických algoritmů, evolučních strategií a evolučního programování...27 4.3.1 Postup hledání nejvhodnějšího řešení pomocí genetického algoritmu 28 4.3.2 Postup hledání nejvhodnějšího řešení pomocí evolučních strategií 30 4.3.3 Postup hledání nejvhodnějšího řešení pomocí evolučního programování...30 4.4 Výsledky...33 4.4.1 Výsledky úpravy neuronové sítě pro rozpoznávání vzorů pomocí genetických algoritmů...33 4.4.2 Výsledky úpravy neuronové sítě pro predikci funkce pomocí evolučních strategií...37 4.4.3 Výsledky úpravy neuronové sítě pro rozpoznávání vzorů pomocí evolučního programování...42 5 Závěr...45 6 Přílohy...46 6.1 Sada vybraných znaků abecedy pro úlohu rozpoznávání vzorů...46 6.2 Funkce pro učení neuronové sítě k predikci hodnot...47 7 Použitá literatura...48

Seznam obrázků Obrázek 2-1: Biologický neuron...12 Obrázek 2-2: Model neuronu...13 Obrázek 2-3: Schéma analogie umělého a biologického neuronu...13 Obrázek 2-4 Obecné schéma genetického algoritmu pro neuronovou síť...16 Obrázek 3-1 Perceptron...17 Obrázek 3-2 Sigmoida...18 Obrázek 3-3: Hopfieldova síť...21 Obrázek 3-4: Kohonenova síť...22 Obrázek 4-1 Neuronová síť vhodná pro učení zpětným šířením chyby...24 Obrázek 4-2 Kódování spojení neuronové sítě pro zvolené evoluční algoritmy..26 Obrázek 4-3 Postup úpravy neuronové sítě pomocí zvolených evolučních algoritmů...27 Obrázek 4-4 Srovnání genetických algoritmů, evolučních strategií a evolučního programování...32 Obrázek 4-5 Průběh hodnoty fitness během cyklů genetického algoritmu...34 Obrázek 4-6 Průběh chyby sítě v průběhu generací genetického algoritmu...34 Obrázek 4-7: Vývoj chyby sítě v průběhu genetického algoritmu...35 Obrázek 4-8 Průběh chyby během učení nejvhodnější sítě...36 Obrázek 4-9 Zobrazení trénovací a testovací množiny sítě a příliš malým počtem neuronů...37 Obrázek 4-10 Průběh chyby sítě s příliš malým počtem neuronů...38 Obrázek 4-11 Trénovací s testovací množina sítě s relativně vhodnými parametry...38 Obrázek 4-12 Průběh funkce fitness v průběhu generací evolučních strategií...39 Obrázek 4-13 Průběh chyby sítě během úprav sítě evolučními strategiemi...40 Obrázek 4-14: Vývoj chyby sítě v průběhu evoluční strategií...40 Obrázek 4-15 Průběh chyby nejlepší sítě během následného učení...41 Obrázek 4-16 Průběh fitness během generací evolučního programování...42 Obrázek 4-17 Průběh chyby během úpravy sítě pomocí evolučního programování...43 Obrázek 4-18: Vývoj chyby sítě v průběhu evolučním programováním...43 Obrázek 4-19 Průběh chyby nejlepší sítě během učení...44 Obrázek 6-1 Trénovací množina pro úlohu rozpoznávání vzorů...46 Obrázek 6-2: Trénovací množina pro úlohu predikce hodnot funkce...47

1 Úvod Umělé neuronové sítě jsou výpočetní modely pro řešení úloh, které nejsou jednoznačně určeny. Tyto sítě se skládají z jednotlivých formálních neuronů, které jsou vzájemně propojeny, aby mezi nimi mohlo docházet k šíření signálu transformovaného danými přenosovými funkcemi. Mají široké využití například při rozpoznávání nebo kompresi obrazových a zvukových záznamů, nebo predikci vývoje časových řad. Jejich hlavní výhodou je schopnost paralelního zpracování dat, která zvyšuje rychlost výpočtu. Dále pak schopnost učení, při němž se mění parametry a případně struktura sítě. Pomocí zpětné vazby se hodnotí správnost řešení problému a jinak univerzální síť se přizpůsobí řešení konkrétní úlohy. Problémem však bývá návrh jejich struktury, kdy je obtížné určit počet vrstev, počty neuronů v jednotlivých vrstvách, počty a typy spojení. Další potíže mohou nastat při učení pomocí některých metod, které hledají lokální minimum chybové funkce a proto nemusejí najít nejlepší řešení. Evoluční algoritmy se snaží nalézt řešení problémů, pro které neexistuje přesný algoritmus, proto jsou vhodné k úpravám neuronové sítě a zlepšení jejich vlastností. Používají principy a operátory inspirované biologickou evolucí. Práce obsahuje teorii funkce neuronových sítí a evolučních algoritmů, návrh řešení pomocí evolučních algoritmů, výsledky testování postupů na úlohách rozpoznávání vzorů a predikci průběhu funkce a srovnání použitých metod. Teorie neuronových sítí a evolučních algoritmů je popsána v první části. Druhá část obsahuje popis některých typů neuronových sítí, třetí část obsahuje popis učení sítě pomocí evolučních algoritmů a výsledky konkrétních příkladů řešení. 11

2 Neuronové sítě, evoluční algoritmy 2.1 Biologické neuronové sítě Základním prvkem biologické neuronové sítě je nervová buňka, určená k přenosu, zpracování a uchování informací nutných k realizaci životních funkcí. Skládá se z těla, které představuje určitou převodní funkci, dendritů vstupů neuronu, a jednoho rozvětveného axonu výstupu neuronu. Výstup je závislý na vstupu podle zadané převodní funkce a s určitým zpožděním. Neuronová síť je tvořena propojením jednotlivých neuronů, kdy jsou synapse připojeny na dendrity, těla nebo výjimečně axony jiných neuronů. Tělo a axon jsou obaleny membránou schopnou šířit elektrické impulsy, které se přenášejí z axonu na dendrity jiných neuronů synaptickými branami. Propustnost těchto bran určuje intenzitu podráždění dalších neuronů, které při překročení prahového podráždění generují impuls a šíří tak informace. Po každém průchodu signálu se mění propustnost synapse. V průběhu učení se také mění propojení neuronů, spojení mohou vznikat a zanikat. Jeden neuron je propojen průměrně s deseti až sto tisíci jinými neurony. Nervové buňky nejsou po odumření nahrazeny, ale synapse se vytvářejí během celého života. Vznikají tak nové spoje, díky kterým má neuronová síť schopnost učení. [3], [5] Obrázek 2-1: Biologický neuron 2.2 Umělé neuronové sítě Umělé neuronové sítě jsou inspirovány biologickými. Jejich základem je matematický model neuronu umělý neuron. Neuronové sítě jsou modelovány množinou umělých neuronů, jejich specifickým seskupením a propojením. Umělé neurony mohou mít různou topologii a lze je popsat různými matematickými funkcemi. Proto se popisují pomocí matematického modelu, kde jsou dendrity modelovány konečným počtem vstupů x 1 až x n, stejný počet vah w 1 až w n představuje synapse a jediný výstup y je modelem axonu. Tento výstup se ale může, stejně jako biologický axon, větvit a být propojen se vstupy několika dalších neuronů. Tělo neuronu vyhodnocuje vstupy a transformuje je na výstup. 12

Obrázek 2-2: Model neuronu Obrázek 2-3: Schéma analogie umělého a biologického neuronu Vstupy neuronů jsou většinou vyjádřeny ve formě vektorů, jejichž hodnoty mohou mít kvalitativní booleovskou formu, kvantitativní formu jazykových proměnných nebo vstupních veličin vyjádřených reálnými čísly. Každý vstup neuronu má určenu váhu, která určuje citlivost, s jakou vstup ovlivňuje výstup neuronu. Závislost jednotlivých vstupů neuronů a jejich vah lze popsat pomocí obecného operátoru konfluence: z i ( k) x ( k) w ( k) = (1) i i Pro základní model neuronu je tento operátor zjednodušen na lineární, proto může být nahrazen součinem: z i ( k) x ( k) w ( k) = (2) i i Práh je podle biologického neuronu hodnota, kterou musí vstupní signál překonat, aby se mohl dále šířit neuronovou sítí. U modelu neuronu zprostředkovává práh posunutí signálu při vstupu do aktivační funkce. Během učení se prahová hodnota může měnit stejně jako váhy. Při překročení prahu se neuron aktivuje a výstupní signál z neuronu roste až do hodnoty určené oborem hodnot aktivační funkce neuronu. Vstupní hodnoty se v neuronu transformují na výstup pomocí dvou výpočetních procedur: agregační a aktivační funkce. 13

Agregační funkce slučuje vstupní signály neuronu pomocí obecného operátoru agregace: n ( k) = G x ( k) w ( k) y_a, (3) i=1 i i který lze pro základní model neuronu upravit jako součet a zavést do vztahu práh: n ( k) x ( k) w ( k) + Θ y_a = i i (4) i= 1 Jestliže je práh považován za určitý případ váhy w 0, lze tento vztah zapsat ve formě n ( k) = x ( k) w ( k) y_a. (5) i= 0 i i Aktivační funkce neuronu převádí vstupní hodnotu signálu na výstupní. Přenosové funkce mohou být různé, jejich volba závisí na konkrétní úloze nebo i na vrstvě, ve které neuron leží. Je možné použít i výstupní funkci, která modeluje přenos signálu axonem. Její výstup může být identický se signálem vystupujícím z aktivační funkce v případě identické výstupní funkce, nebo je výstupní signál výstupní funkce dán určitou funkční závislostí mezi výstupem aktivační a výstupní funkce. Topologií neuronové sítě se rozumí umístění jednotlivých neuronů v síti a vzájemné propojení s ostatními neurony. Neurony bývají uspořádány do vrstev: vstupní, do které vstupuje signál z okolí, skrytých vrstev a výstupní, z níž signál vystupuje dále do okolí. Výstupní signál je potom odezvou sítě na vstupní signály. Neurony vstupní vrstvy modelují biologické receptory, neurony ve skrytých vrstvách dráhy šíření signálů a neurony výstupní vrstvy odpovídají efektorům. Neurony lze propojit s neurony ve stejné vrstvě, v různých vrstvách a spojení lze použít i jako zpětnou vazbu. Učení neuronové sítě je dynamický proces, některé parametry sítě se v čase mění a dochází tak k přizpůsobování výstupů sítě požadovaným výstupům. Těmito parametry jsou většinou váhy spojení mezi neurony, ale mohou se měnit i vlastnosti aktivační funkce nebo struktura sítě. Změny parametrů sítě jsou dány algoritmem učení. Základním algoritmem učení je Hebbovo pravidlo. To předpokládá, že jestliže jsou dva propojené neurony ve stejném okamžiku aktivní, je jejich vazba zesílena úpravou váhy. Naopak pokud jsou oba neurony neaktivní, je vazba zeslabena. V případě, že je jeden z neuronů aktivní a druhý neaktivní, váhy se nemění. Toto pravidlo lze vyjádřit matematicky: ( k) x ( k) w = α x, (6) ij i j kde α vyjadřuje rychlost učení, x j je presynaptický stav neuronu j a x i je postsynaptický stav neuronu i. Při učení s učitelem je třeba systému předložit informace o požadovaném výstupu sítě. Hledaná transformační funkce je dána hodnotou vstupní proměnné x i a výstupem y i požadovaným k této hodnotě. Tyto hodnoty se během učení 14

porovnávají s odezvou neuronové sítě na vstupní signál a dochází ke změnám vah, aby byl rozdíl mezi skutečným a požadovaným výstupem co nejmenší. Velikost změny váhy je úměrná velikosti chyby mezi požadovanými a vypočtenými hodnotami. Učení bez učitele se zakládá na třídění vstupních vektorů podle podobných vlastností a ukládání podobných vektorů do map. Neuronové síti se při tomto způsobu učení předkládají pouze hodnoty vstupních proměnných bez hodnot odpovídajících požadovaných výstupů, proto není třeba znát učící množinu hodnot. Hledají se nejmenší vzdálenosti vzoru a aktuálních hodnot. [3], [5] 2.3 Evoluční algoritmy Evoluční algoritmy pracují na základě pravděpodobnostní adaptace inspirované přírodní evolucí. Jejich principem je stochastické procházení populace jedinců, kteří představují možná řešení problému. Vybrané evoluční algoritmy (genetické algoritmy, evoluční strategie a evoluční programování) pracují na obdobném principu, liší se pouze v použitých operátorech a způsobu výběru jedinců pro další generaci. Na počátku je fenotyp, který označuje upravovanou vlastnost sítě, převeden na číselnou reprezentaci, genotyp. Potom je náhodně vygenerována sada možných řešení, každému z nich je přiřazena hodnota vhodnosti podle toho, jak řešení vyhovuje. Následuje proces selekce, kdy jsou vybráni jedinci pro následující operaci. Vyšší pravděpodobnost výběru mají jedinci s vyšší hodnotou vhodnosti. Dalšími operacemi jsou křížení a mutace, díky nimž vznikají v generaci noví jedinci. Jedinci s nižší vhodností jsou vyřazeni z populace. Tento postup se opakuje, dokud není dosaženo zadaných podmínek pro ukončení. Průměrná vhodnost populace by v průběhu generací měla narůstat a ustálit se v bodě optima. Na počátku algoritmu evolučního programování je náhodná populace řešení. Pro každého jedince z této populace se mutací vytvoří potomek a vypočítají se hodnoty vhodnosti. Z populace je zachována polovina jedinců s nejvyššími hodnotami vhodnosti, Tito jedinci se stávají počáteční populací dalšího kroku. Proces se opakuje, dokud není dosaženo dostatečně vhodného řešení. Jediným operátorem je zde mutace, pomocí níž se prochází prostor řešení. Evoluční strategie pracují podobně, ale narozdíl od evolučního programování se porovnává potomek se svým rodičem a v případě, že je potomek vhodnější, nahradí rodiče. Zvolené evoluční algoritmy se s neuronovými sítěmi používají zejména k hledání vhodné topologie a následnému učení sítě. Jejich výhodou je relativně rychlé nalezení kvalitních řešení z rozsáhlých nebo komplexních množin. Použití evolučních algoritmů narozdíl od gradientních metod závisí na pravděpodobnostních technikách, a proto lze během generací nalézt lepší řešení, přestože jejich prostor řešení je mnohem větší. Spolehlivější, ale pomalejší jsou evoluční algoritmy závislé na operátoru mutace, které nepoužívají křížení, nebo má křížení menší váhu. Obecně učení pomocí evolučních algoritmů probíhá v cyklu, kde se data pro evoluci sítě převádějí na genotyp, například binární číslo, 15

a pro učení je nutné je převést zpět na fenotyp, dekadické číslo. U algoritmů, kde nedochází ke křížení, lze pracovat přímo s hodnotou fenotypu. Obrázek 2-4 Obecné schéma genetického algoritmu pro neuronovou síť Pomocí evolučních algoritmů lze měnit počty vrstev, neuronů, spojení a váhy. Je také možné upravovat strukturu i váhy sítě zároveň. Různé náhodné počáteční hodnoty vah vedou k různým výsledkům a různé trénovací algoritmy způsobí získání různých výsledků i v případě stejných počátečních vah. Jednou z možností je i částečné trénování sítě před použitím genetických operátorů. Chování neuronové sítě závisí nejvíce na její architektuře, která se může i v případě řešení stejného problému lišit v počtu skrytých vrstev nebo typu a počtu spojení. Příliš malá síť není schopna se naučit řešit daný problém, příliš velká síť může ztratit univerzálnost a rychlost. Při pokusech o hledání vhodné topologie nelze určit, která část sítě funguje správně a kterou je potřeba změnit. Proto je výhodné použít evoluční algoritmy, které vyhodnotí chování sítě a podle něj přidávají nebo odebírají prvky sítě. Chování sítě lze vyhodnotit až po naučení sítě. To často probíhá se zadaným počtem kroků na známé sadě dat. Síť získá univerzálnost použitím různých datových sad pro učení. Evoluční algoritmus by měl upřednostňovat univerzálnější síť. Na rozdíl od gradientních metod evoluční algoritmy mohou hledat řešení, aniž by zůstaly v lokálním minimu funkce, proto je možné jejich využití i při úpravě vah. Toto řešení je ale oproti použití gradientních metod pomalejší. Je proto vhodnější evoluční algoritmy použít k nalezení vhodné oblasti v prostoru řešení a učení provádět gradientní metodou. [8], [10] 16

3 Typy neuronových sítí 3.1 Perceptronová síť Obrázek 3-1 Perceptron Perceptronová síť používá neuron se skokovou aktivační funkcí a učení s učitelem. Požadovaná funkce neuronové sítě je dána vektorem vzorů a vektorem odpovídajících požadovaných hodnot. Agregační funkcí je vážený součet vstupů n ξ = w x θ = w x (7) i i i= 1 i= 0 n i i a aktivační funkcí je hyperbolický tangens nebo sigmoida f 1 1+ e ( ξ ) = λξ, (8) kde λ je parametr strmosti. 17

Obrázek 3-2 Sigmoida Perceptrony sousedních vrstev jsou vzájemně propojeny tak, že výstup neuronu se šíří do všech vstupů neuronů následující vrstvy. Počet vrstev i neuronů je závislý na konkrétní úloze a v praxi se určuje heuristicky. Vstupy, stavy a váhy jsou obecně reálná čísla. Učení sítě má fázi vybavování a učení. Ve fázi vybavování je vstupům sítě předložen vzor, který se potom postupně dopředně šíří přes váhy neuronů, transformuje se a prochází až na výstup. Hodnoty potenciálů od první k poslední vrstvě lze vypočítat podle vztahu: ξ j = wij yi, (9) i kde w ij jsou váhy mezi i-tým a j-tým neuronem. Výstup další vrstvy je potom dán vztahem: y j ( ξ ) = f, (10) j kde aktivační funkce je sigmoida, případně hyperbolický tangens. Hodnoty výstupů poslední vrstvy jsou hodnotami výstupů celé sítě. Učením ve vícevrstvé perceptronové síti se dosáhne nastavení vah, při kterém je odchylka mezi reálnými a požadovanými výstupy co nejmenší vzhledem k předloženým trénovacím vzorům. Chyba sítě je definována: E = E k, (11) k kde index k prochází všechny trénovací vzory a E k je chyba trénovacího vzoru s indexem k: E k ( = 1 y j d kj 2 ), (12) j kde j je index pro procházení neuronů výstupní vrstvy a d kj je j-tý prvek požadovaného výstupu k-tého trénovacího vzoru. K minimalizaci chyby lze použít gradientní metodu, ve které se všechny váhy nastaví na náhodně 18

generované nízké hodnoty s nulovou střední hodnotou (nebo hodnotou blízkou nule). Následně se předloží všechny trénovací vzory, vypočte se výsledná chyba a dojde k úpravě vah podle vztahu: w ij ( t ) = wij ( t) + wij +1, (13) změny vah w ij jsou dány vztahem: E wij = η, (14) w ij kde η je parametr učení ležící v intervalu od 0 do 1. Parciální derivace vyjadřuje minimalizaci chyby pomocí vah gradientní metodou. Váhy mohou být upravovány až po dokončení učení všech trénovacích vzorů nebo po každém předloženém vzoru. Jestliže úprava vah probíhá po předložení všech trénovacích vzorů, nezáleží na pořadí, v jakém přicházejí jednotlivé vzory na vstupy neuronové sítě. V obou případech se v učení pokračuje tak dlouho, dokud není dosaženo dostatečně malé chyby. Metoda zpětného šíření je učícím pravidlem pro vícevrstvou perceptronovou síť. Její průběh se dělí na dvě části: dopředný krok, při kterém se signál šíří sítí, jednotlivé neurony se aktivují a vypočítá se celková chyba sítě E, a zpětný krok, při kterém se vypočítají nové hodnoty parametrů sítě. Algoritmus učení: 1. Sestavení neuronové sítě podle řešené úlohy, určení počtu skrytých vrstev sítě a neuronů ve všech vrstvách, sestavení množin trénovacích a testovacích vektorů. Nastavení počátečních vah spojení mezi jednotlivými neurony a strmosti aktivačních funkcí neuronů. 2. Výběr vzoru trénovací množiny a jeho předložení na vstup neuronové sítě, výpočet výstupů jednotlivých neuronů z rovnic: n z _ a j = xivij, j = 1,2,..., p, (15) i= 0 kde z_a j jsou vstupní potenciály neuronů ve skryté vrstvě, x i jsou vstupy do skrytých neuronů (x 0 =1), v ij jsou váhy spojení mezi vstupy a neurony ve skryté vrstvě, n je počet vstupů a p je počet neuronů ve skryté vrstvě. z j 1 ( z _ a j ) = s j z _ a j = f, (16) 1+ e kde z j je aktivační funkce neuronů ve skryté vrstvě, a s j jsou strmosti aktivačních funkcí. p y _ a = z i w i, (17) i= 0 kde y_a je vstupní potenciál výstupního neuronu, z i jsou vstupy do výstupního neuronu (z 0 =1), w i jsou váhy spojení mezi neurony ve skryté vrstvě a výstupním neuronem, p je počet neuronů ve skryté vrstvě. 19

y M ( y a) = s y _ a = g, (18) _ 0 kde s 0 je strmost aktivační funkce výstupního neuronu. 3. Výpočet hodnoty kriteriální funkce ze vztahu: 1 2 e = ( y s y M ) (19) 2 4. Výpočet přírůstků vah z rovnice: e = α = α[ ys ym ] s z j (20) w w 0 j Pak nové hodnoty vah lze vypočítat ze vztahu: n s w j = w j + w j, j = 0,..., p (21) kde s označuje původní hodnotu a n novou hodnotu vah w. Případně lze vypočítat přírůstky strmostí podle vztahu: s e = α = α[ ys ym ] y _ a (22) s 0 0 Pro nové strmosti platí: s n s 0 = s0 + s0 (23) Podle těchto vztahů se modifikují váhy a případně i strmosti. 5. Po provedení předchozích čtyř bodů pro všechny vzory trénovací množiny se vypočítá hodnota kriteriální funkce pro trénovací množinu. Po dosažení kritéria ukončení (obvykle dostatečně malé chyby), vypočte se hodnota kriteriální funkce pro testovací množinu a učení se ukončí. Pokud není chyba dostatečně malá, opakuje se proces pro další epochu. [3] 3.2 Hopfieldova síť Hopfieldova síť je jednovrstvá síť, kde každý její neuron je vstupní a zároveň výstupní. Do každého neuronu vstupují signály z jednoho externího vstupu a zároveň z výstupů všech ostatních neuronů. Výstup každého neuronu je externí a také je veden i na vstupy všech ostatních neuronů přes váhy w ij (kde i = 1, 2,..., n a j = 1, 2,..., n). Tím je vytvořena symetrická cyklická síť a matice vah je symetrická podle hlavní diagonály, protože váhy, které vedou z jednoho neuronu do druhého, jsou v obou směrech stejné: w ij =w ji. Na diagonále budou váhy nulové: w ii =0, protože výstup není veden na vstup vlastního neuronu. 20

Obrázek 3-3: Hopfieldova síť Na obrázku 3.3 je znázorněno uspořádání Hopfieldovy sítě. Černě jsou označeny vstupy x 1 až x 4, obecně x 1 až x n a výstupy y 1 až y 4, obecně y 1 až y n. Neuron počítá svůj potenciál ξ jako vážený součet vstupů a pomocí aktivační funkce f ( ξ ) aktivuje svůj výstup. Aktivační funkce může být sigmoidální nebo nelineární. Pro nelineární funkci platí: 1 proξ 0 f ( ξ ) = (24) 1 proξ < 0 Učení je v Hopfieldově síti jednorázový proces. Po každý vzor se vytvoří matice, jejíž oba rozměry odpovídají počtu vstupů a její prvky vzniknou vzájemným vynásobením všech vstupů. Výsledná matice vah vznikne sečtením všech dílčích matic jednotlivých vzorů. Nastavení vah se řídí Hebbovým zákonem, podle kterého jsou podporovány souhlasné aktivity dvou neuronů a rozdílné aktivity jsou potlačovány změnou vah: w ij s xki xkj pro i j =, (25) k = 0 1 pro i = j kde s je počet dílčích matic jednotlivých vzorů a x ki a x kj jsou i-té a j-té prvky k- tého trénovacího vzoru. Vybavování je iterační děj založený na porovnávání vzorů. Za správný se považuje vzor, který má nejmenší Hammingovu vzdálenost. Počáteční stavy neuronů jsou nejprve nastaveny podle vztahu i ( ) xi y 0 =, (26) kde i = 1, 2,..., n, a poté jsou tyto stavy změněny iterací podle vztahu y i n ( t ) = f w y ( t) + 1 ij j, (27) i= 1 kde j= 1, 2,..., n a f je aktivační funkce. V každém kroku se opraví výstupy, které dále opět slouží jako vstupy do sítě. Iterace probíhá tak dlouho, dokud nejsou stavy ve dvou po sobě 21

jdoucích cyklech shodné. Chování Hopfieldovy sítě je dáno energetickou funkcí, která je definována vztahem: 1 E = 2 i j i w x x ij i j. (28) Tuto funkci lze ovlivnit hodnotami vah. Při učení je třeba v konkrétním místě minimalizovat hodnotu chybové funkce, ale nesmí se poškodit informace o dříve uložených vzorech. [3] 3.3 Kohonenova síť Kohonenova síť patří mezi samoorganizující se sítě a je tvořena jednou vrstvou neuronů v Kohonenově kompetiční vrstvě. Vstupy jsou propojeny se všemi neurony. Váhový vektor neuronu lze považovat za souřadnice určující polohu neuronu v prostoru. Neurony mezi sebou mají vazby uspořádané do zvolené topologické mřížky. Obrázek 3-4: Kohonenova síť Síť je tvořena formálními neurony, které nemají práh a jejichž výstup je obvykle dvouhodnotový aktivní nebo neaktivní. Vždy se aktivuje pouze jeden neuron. Na počátku je možné váhy nastavit na náhodná čísla, na hodnoty náhodně vybraných vzorů, nebo nalézt první dvě hlavní komponenty a jejich pomocí vytvořit pravidelnou mřížku. Učení probíhá na principu určení vzdáleností mezi předkládanými vstupními vektory a souřadnicemi neuronů v kompetiční vrstvě. Neuron s nejmenší vzdáleností je aktivován a do jeho okolí se zahrnou neurony, které jsou mu nejbližší z hlediska zvoleného kritéria. Poté jsou váhy těchto neuronů upraveny. Po dosažení předem určeného počtu iterací je proces učení ukončen. Při vybavování je aktivován výstup neuronu, jehož vzdálenost od předloženého vzoru je minimální: d ( ) * = min, (29) j d j kde j * je index neuronu s minimální vzdáleností od předloženého vzoru, vzdálenost d j se vypočítá podle vztahu: 22

d j = m ( i= 1 x i w 2 ij ), (30) kde j je index pro procházení všech neuronů kompetiční vrstvy, m je počet neuronů kompetiční vrstvy, x i jsou prvky předloženého vzoru a w ij jsou váhy neuronů. [3] 23

4 Učení sítě pomocí evolučních algoritmů 4.1 Učení metodou zpětného šíření chyby K učení sítě byla zvolena metoda zpětného šíření chyby, gradientní metoda, která minimalizuje čtverce chybové funkce. Celková chyba sítě byla vypočítávána podle vztahu: E c k= 1 j= 1 ( p r 1 2 = d kj ykj ), (31) 2 kde index k prochází trénovací vzory, j prochází neurony výstupní vrstvy. Změna vah byla určena ze vztahu E c w jk = α, (32) w jk kde α je koeficient učení. [3] Obrázek 4-1 Neuronová síť vhodná pro učení zpětným šířením chyby Vektor trénovacího vzoru x je přiveden na vstupy neuronové sítě. Délka vektoru závisí na řešené úloze. Trénovací vzor je v případě problému rozpoznávání obrazců nebo písmen abecedy převeden z matice funkcí reshape na vektor binárních hodnot. U úlohy předpovídání průběhu funkce byl použit jako trénovací vzor vektor několika hodnot funkce. Matice vah mezi vrstvami jsou na počátku učení nastaveny náhodně na hodnoty 0 až 1 a jejich rozměry odpovídají počtům neuronů v přilehlých vrstvách. Jako převodní funkce byla pro rozpoznávání vzorů u všech neuronů zvolena sigmoida o stejné strmosti. V případě predikce průběhu funkce je třeba použít hyperbolický tangens, aby bylo možné získat na výstupu i záporné hodnoty. Vektor výstupů y obsahuje hodnoty 24

od 0 do 1 a je porovnán se známým vektorem požadovaných výstupů. V případě rozpoznávání vzorů je to vektor o délce odpovídající počtu rozpoznávaných vzorů. Konkrétní vzor je určen hodnotou 1 na odpovídající pozici, ostatní hodnoty vektoru jsou nulové. Pro předpovídání průběhu funkce je požadovaným výstupem jediná hodnota, která určuje následující hodnotu funkce. [6] Výpočty chyb neuronů a přepočty vah: δ W δ W vystup = y ( 1 y) ( d y) = W + α δ vystup y vystup vystup vystup n = vystupn ( 1 vystupn ) ( δ n+ 1 Wn+ 1) Postup učení: n = W + α δ vstup n n n % Výpočet chyby poslední (n-té) vrstvy a přepočet vah % mezi vrstvou n a n-1 pro i-tý trénovací vzor (i-tý % sloupec matice tren_vystupy), n je celkový počet % vrstev sítě delta{n}=y{n}.*(1-y{n}).*(tren_vystupy(:,i)-y{n}); delta_vah{n}=delta_vah{n}+koef_uceni*delta{n}*y{n-1}'; % Výpočet chyb vnitřních vrstev a přepočet vah for j=n-1:-1:2 delta{j}=y{j}.*(1-y{j}).*(vahy{j+1}'*delta{j+1}); delta_vah{j}=delta_vah{j}+koef_uceni*delta{j}*y{j-1}'; end 1. inicializace vah: pro každou sousední dvojici vrstev se vytvoří matice náhodných čísel v rozsahu od 0 do 1 2. předložení vektoru trénovacího vzoru 3. výpočet výstupu sítě dopředným šířením 4. výpočet chyby sítě (rozdílu mezi požadovaným a reálným výstupem) 5. adaptace vah 6. ukončení v případě, že je splněn požadavek na velikost chyby, jinak se opakují body 2 6 Váhy je možné upravovat po každém tréninkovém vzoru nebo, v případě akumulovaného učení, až po předložení všech trénovacích vzorů a výpočtech jejich chyb. Při adaptaci po každém vzoru záleží na pořadí předložených vzorů, váhy se mění rychleji, ale výpočet trvá oproti akumulovanému učení déle. Pro rozpoznávání vzorů byly proto váhy upravovány po předložení všech vzorů. V případě předpovídání průběhu funkce se váhy adaptovaly po každém trénovacím vzoru. Funkce pro učení neuronové sítě: Vstupními proměnnými jsou počet vstupů, výstupů, vektor počtů neuronů ve skrytých vrstvách, koeficient učení, matice trénovacích vstupů a matice 25

odpovídajících trénovacích výstupů. Funkce vrací matice vah a hodnoty chyby a počet epoch učení. Jako převodní funkce neuronu je použita sigmoida a podmínkou ukončení je pokles chyby sítě pod zadanou hodnotu, případně maximální počet epoch učení. [6] 4.2 Evoluční algoritmy Zvolené evoluční algoritmy (genetické algoritmy, evoluční strategie a evoluční programování) lze použít k návrhu počtu skrytých vrstev, počtu neuronů ve skrytých vrstvách, případně vah a spojení mezi neurony. Počáteční populace je náhodně vygenerovaná množina možných řešení. Pro určení počtu neuronů je počáteční populací vektor přirozených čísel o délce odpovídající počtu skrytých vrstev sítě. Nejprve je pro každého jedince náhodně generován počet skrytých vrstev a potom pro každou vrstvu počet neuronů. Pro počet spojení jsou počáteční populací čtvercové matice spojení z jednotlivých uzlů o rozměrech odpovídajícím počtu uzlů. Hodnota 1 odpovídá existujícímu spojení mezi dvěma neurony určenými příslušným řádkem a sloupcem matice, hodnota 0 znamená, že mezi těmito uzly spojení neexistuje. Počáteční populací vah jsou náhodně generované matice. Obrázek 4-2 Kódování spojení neuronové sítě pro zvolené evoluční algoritmy Každému jedinci z počáteční populace je určena vhodnost (fitness), která závisí na schopnosti jedince řešit daný problém. V případě neuronové sítě je to dostatečně malá chyba při zachování univerzálnosti sítě a lze zohlednit případně i rychlost učení. Před použitím genetických operátorů lze síť částečně natrénovat s omezením minimální chyby a se zadaným maximálním počtem iterací. Selekce je provedena soubojem, kdy je polovina jedinců s vyšší hodnotou fitness vybrána a zbylá polovina odstraněna. Toto řešení je jednodušší než pravidlo rulety, která umožňuje i výběr jedinců s menší vhodností, ale s pravděpodobností úměrnou hodnotě fitness. V tomto případě je možné před 26

samotným výběrem určit elitu několika jedinců s nejvyšší vhodností, kteří nejsou do výběru zařazeni, a jsou přímo označeni jako vybraní. V případě splnění podmínek ukončení je jedinec s nejvyšší hodnotou fitness zvolen z výsledné populace jako síť s nejlepšími parametry. Jestliže podmínky ukončení nejsou splněny, provedou se operace s danými genetickými operátory. Je-li použito křížení, převádí se fenotyp na genotyp, například binární číslo, a je třeba vytvořit náhodné dvojice pro křížení. Po vzniku nové populace se znovu vypočítá vhodnost a hodnotí splnění podmínek ukončení. [6] Obrázek 4-3 Postup úpravy neuronové sítě pomocí zvolených evolučních algoritmů 4.3 Použití genetických algoritmů, evolučních strategií a evolučního programování U všech těchto metod lze použít stejné nebo podobné kódování problému. Požadovanou vlastnost sítě je třeba zapsat například jako vektor nebo matici, pro kterou se opakovaně náhodně generují výchozí hodnoty. Genetické algoritmy používají operátory selekce, křížení i mutace. Proto jsou výpočetně náročnější než evoluční strategie a evoluční programování. 27

4.3.1 Postup hledání nejvhodnějšího řešení pomocí genetického algoritmu 1. kódování úlohy: převedení parametru na číselnou hodnotu. Počet vrstev a váhy je možné kódovat reálnými čísly a v případě potřeby převést na binární. Počet vrstev a neuronů v nich je pole proměnné délky. Počet prvků pole označuje počet vrstev, hodnoty jednotlivých prvků určují počty neuronů. Váhy jsou matice reálných čísel o rozměrech daných počty vrstev, které jsou spojeny s těmito vahami. Spojení se kódují binárně, hodnota 1 v matici určuje, že mezi uzly určenými řádkem a sloupcem matice existuje spojení a označuje jeho směr od neuronu daného číslem řádku k neuronu danému číslem sloupce. Matice je čtvercová a rozměr odpovídá počtu neuronů, které je třeba před zápisem do matice označit čísly. 2. vytvoření počáteční populace: náhodně generované hodnoty jsou přiřazeny do pole 3. stanovení fitness každého jedince v populaci: volání neuronové sítě se zadaným počtem epoch učení, hodnotu fitness potom lze vypočítat pomocí vrácené chyby sítě. Během výpočtu může chyba klesnout pod hodnotu danou v neuronové síti jako podmínku ukončení, proto je vhodné, aby funkce vracela i počet epoch učení a ten je potom možné zahrnout i do výpočtu vhodnosti. 4. testování podmínky ukončení: například maximální počet cyklů algoritmu, maximální počet cyklů s nezměněnou hodnotou fitness nebo dostatečná hodnota fitness 5. výběr jedinců, kteří budou použiti ke křížení: možnost výběru ruletou, kdy ke křížení postupují jedinci vybraní náhodně, jejich šance odpovídá jejich fitness. V případě výběru soubojem jsou náhodně zvoleny dvojice a ke křížení je z dvojice zvolen jedinec s vyšší fitness. [index,index] = sort(arrayfun(@extract_fitness,reseni)); %funkce arrayfun zavolá funkci extract_fitness, která vrací hodnoty fitness všech prvků struktury reseni, a hodnoty jsou vzestupně seřazeny (funkce vrací indexy prvků) reseni_sort=reseni(index); %přiřazení prvků podle indexu elita=reseni_sort(pocet_jedincu-1:pocet_jedincu); %výber 2 prvků s nejvyšší vhodností, označení za elitu serazeni=randperm(pocet_jedincu-2); %náhodné sežazení ostatních prvků pro výběr dvojic do souboje reseni_rand(serazeni)=reseni_sort(1:pocet_jedincu-2); %náhodné seřazení zbylých prvků for j=1:2:polovina-1 %procházení zbývajích prvků po dvojicích if reseni_rand(j).fitness>reseni_rand(j+1).fitness %přiřazení prvku s vyšší hodnotou fitness do další generace reseni_pulka(j)=reseni_rand(j); else reseni_pulka(j)=reseni_rand(j+1); end 28

end reseni_pulka(polovina-1:polovina)=elita(1:2); %přidání elity mezi jedince zařazené do další populace funkce extract_fitness: function [fitness] = extract_fitness(reseni) fitness = reseni.fitness; %proměnné fitness se přiřadí hodnoty položky fitness struktury reseni 6. převedení na genotyp 7. určení náhodných párů pro křížení, funkce randperm(x) vytvoří vektor náhodných čísel o délce x bez opakování, prvky tohoto vektoru byly použity jako indexy k náhodnému seřazení jedinců, aby bylo možné křížit vždy dva po sobě jdoucí páry serazeni=randperm(polovina); %serazeni je vektor náhodných čísel bez opakování (vektor má délku o hodnotě proměnné polovina) for j=1:polovina reseni_random(j)=reseni_pulka(serazeni(j)); %náhodné seřazení podle pořadí daného vektorem serazeni end 8. křížení: je třeba porovnat délku řetězců, protože počet vrstev není stejný pro všechny jedince populace. Je třeba oba řetězce z páru rozdělit na stejném místě (dáno náhodně), přiřadit druhou část kratšího řetězce k první části delšího a naopak. Místo rozdělení se určí náhodně z kratšího řetězce, aby nedošlo k určení místa rozdělení mimo něj. if delka_prvni>=delka_druhy %porovnání délek vektorů, počet vrstev nemusí být stejný pro oba jedince z páru deleni=floor(delka_druhy*rand); %určení místa rozdělení řetězce, maximum je délka kratšího vektoru, aby nedošlo k pokusu o dělení řetězců mimo jeden z nich treti_do_paru=[druhy(1:deleni) prvni(deleni+1:length(prvni))]; %pomocná proměnná k přiřazení nových hodnot bez nežádoucího přepsání původních druhy(1:deleni)=prvni(1:deleni); %přiřazení hodnot do druhé proměnné, s přepsáním původních (už nepotřebných) hodnot prvni=treti_do_paru; %přepsání proměnné první hodnotou pomocné proměnné else deleni=floor(delka_prvni*rand); %stejný postup pro opačný případ, kdy je druhý řetězec delší treti_do_paru=[prvni(1:deleni) druhy(deleni+1:length(druhy))]; druhy(deleni+1:length(prvni))=prvni(deleni+1:length(prvni)); prvni=treti_do_paru; end 9. mutace: náhodný výběr pozice k provedení změny, pokud je na tomto místě hodnota 1, je změněna na 0 a naopak for j=1:polovina delka=size(n_generace(j).binarni,2); %určení délky řetězce index_zmeny=ceil(delka*rand); %výběr pozice, která bude změněna 29

end if n_generace(j).binarni(index_zmeny)=='1'%záměna hodnoty 1 za 0 n_generace(j).binarni(index_zmeny)='0'; else n_generace(j).binarni(index_zmeny)='1'; %záměna hodnoty 0 za 1 end nova_generace(j).vrstvy= bin2dec(n_generace); %převod na fenotyp 10. po převedení zpět na fenotyp se zavolá funkce neuronové sítě a vypočítá se hodnota fitness pro každého jedince, polovina původní populace a potomci vzniklí křížením a mutací tvoří novou populaci 4.3.2 Postup hledání nejvhodnějšího řešení pomocí evolučních strategií 1. kódování úlohy: u evolučních strategií lze použít reálné kódování. Počet vrstev a neuronů v nich je pole proměnné délky. Počet prvků pole označuje počet vrstev, hodnoty jednotlivých prvků určují počty neuronů. Váhy jsou matice reálných čísel o rozměrech daných počty vrstev, které jsou spojeny s těmito vahami. Spojení se kódují binárně stejně jako u genetických algoritmů. 2. vytvoření počáteční populace 3. testování podmínky ukončení, pokud podmínka není splněna, vytvoří se nová populace 4. mutace, náhodně je vybrán prvek každého řetězce počáteční populace a jeho hodnota změněna, vzniká nový řetězec (potomek), původní řetězec se zachová 5. volání funkce neuronové sítě, která vrátí chybu pro výpočet vhodnosti každého jedince v populaci (rodičů i potomků) 6. každý potomek je porovnán se svým rodičem a jedinec s větší hodnotou fitness se stane součástí další generace if nova_generace(j).fitness>reseni(j).fitness %porovnání vhodností 2 jedinců, ten s vyšší hodnotou fitness je vybrán do nové reseni(j)=nova_generace(j); end 4.3.3 Postup hledání nejvhodnějšího řešení pomocí evolučního programování Většina kroků je shodná s postupem evolučních strategií, evoluční programování se liší ve způsobu výběru jedinců, kteří vytvoří následující generaci, a testování podmínky ukončení. Průběh algoritmu by měl být ukončen dosažením požadované chyby nebo hodnoty fitness. 30

1. kódování úlohy je možné provést stejně jako při použití evolučních strategií 2. vytvoření počáteční populace 3. testování podmínky ukončení: omezení dosažením potřebné hodnoty fitness nebo chyby 4. výpočet fitness 5. jedinci jsou seřazeni podle vhodnosti a polovina s vyšší hodnotou fitness se stává následující generací [index,index] = sort(arrayfun(@extract_fitness,reseni)); %volání funkce arrayfun a seřazení reseni_sort=reseni(index); %seřazení jedinců podle indexu reseni =reseni_sort(pocet_jedincu+1:end); %výběr poloviny jedinců s vyšší hodnotou fitness 31

Srovnání genetických algoritmů, evolučních strategií a evolučního programování Obrázek 4-4 Srovnání genetických algoritmů, evolučních strategií a evolučního programování 32

4.4 Výsledky Evoluční strategie a evoluční programování se od sebe liší pouze způsobem výběru jedinců pro použití operátoru mutace, proto jsou podobně výpočetně náročné. Genetické algoritmy vyhodnocovaly dané úlohy pomaleji. Nejlepší výsledky byly získány při úpravě počtů vrstev a neuronů pomocí evolučních algoritmů. Pro zpracování použitých úloh téměř neměla význam evoluce spojení nebo vah, protože výpočet těchto parametrů vyžaduje zpracování velkého množství matic. Proto bylo možné pro tyto jednoduché úlohy získat rychleji požadovaný výsledek v případě evoluce počtů vrstev a počtů neuronů a následného učení sítě zpětným šířením chyby, kdy počáteční váhy byly nastaveny náhodně. Nastavení počátečních vah nebo spojení evolučním algoritmem je výhodnější pro složitější problémy. 4.4.1 Výsledky úpravy neuronové sítě pro rozpoznávání vzorů pomocí genetických algoritmů Tato metoda byla pro oba problémy pomalejší než zbylé dvě. Po ukončení algoritmu se ale vybraná síť s nejvyšší hodnotou fitness učila relativně rychle a byla po naučení schopna rozeznat předložené vzory. K učení byla použita sada jednoduchých obrázků: devět písmen abecedy o rozměru 5x7 (zobrazena v příloze 1). Maximum cyklů genetického algoritmu: 40 Počet jedinců v populaci: 32 Maximum skrytých vrstev: 4 Maximální počet neuronů v každé vrstvě: 32 Omezení počtu epoch učení: 100 epoch nebo chyba 0.1 Použitá sada vzorů: 9 znaků abecedy (A, B, C, D, E, F, H, I, J) Koeficient učení: 0,2 Počet vstupů: 35 Počet výstupů: 9 Síť se učí metodou zpětného šíření chyby: akumulovaným učením, kde nezáleží na pořadí předkládaných vzorů, rozdíl vah pro adaptaci se sčítá po každém vzoru a po předložení všech vzorů je suma přičtena k hodnotám vah. Váhy se tak mění pomaleji, ale učení je rychlejší. Pro učení bylo použito jako sada vzorů 9 znaků abecedy o rozměru 5x7, proto byl počet vstupů 35 a výstupů 9 (počet výstupů odpovídá počtu rozpoznávaných znaků). Počet skrytých vrstev byl omezen na 4. V průběhu generací průměrný počet vrstev stoupal, protože jako kvalitnější byly v tomto případě často označovány právě sítě se čtyřmi skrytými vrstvami. Výsledné počty neuronů ve skrytých vrstvách pro nejlepší řešení: 29, 29, 27, 31 (směrem od vstupní vrstvy k výstupní), ve vstupní vrstvě bylo 15 neuronů. Hodnota fitness byla 0,38 a chyba 0,1. 33

Obrázek 4-5 Průběh hodnoty fitness během cyklů genetického algoritmu V grafu je zobrazen průběh hodnoty fitness, maximální hodnota vždy narůstá, síť s nejvyšší hodnotou fitness zůstává označena jako nejlepší, protože jedinec s nejvyšší fitness zvítězí v souboji vždy, takže může být nahrazen (případně i vyřazen z populace), pouze když se křížením nebo mutací vytvoří silnější jedinec. Průměrná hodnota mírně kolísá, protože se počítá i z hodnot fitness potomků před selekcí. Maximální fitness je při ukončení běhu programu 0,38. Opačný průběh má chyba. Minimální chyba je chyba sítě aktuálně označené jako nejlepší. Minimální chyba je v tomto případě 0,1. Obrázek 4-6 Průběh chyby sítě v průběhu generací genetického algoritmu 34

Vývoj chyby sítě byl výrazně ovlivněn genetickým algoritmem, na obrázku 4-9 lze vidět občasné kolísání způsobené výraznou změnou v síti nebo výběrem vhodnější sítě. Následný pokles je potom způsoben učením sítě. Mezi těmito úseky se síť výrazně neměnila, chyba pouze mírně klesala. Obrázek 4-7: Vývoj chyby sítě v průběhu genetického algoritmu Nejrychlejší výpočet byl pro rozpoznávání vzorů proveden pomocí evolučních strategií, které jsou rychlejší než genetické algoritmy, protože nepoužívají operátor křížení. V případě evolučního programování se také používá pouze operátor mutace a pro další generaci se vybírá polovina jedinců s nejvyšší vhodností, proto je rychlost srovnatelná s evolučními strategiemi. V případě nastavování počtů spojení byly výpočty velmi pomalé a nejlepší výsledky měly sítě se souměrnými počty spojení. Průběh fitness a chyby záleží na nastavení vah v neuronové síti a počáteční populaci evolučního algoritmu. 35

Obrázek 4-8 Průběh chyby během učení nejvhodnější sítě Váhy a struktura sítě byly nastaveny na hodnoty uložené před ukončením práce genetického algoritmu a následné učení sítě proběhlo s těmito uloženými vahami jako počátečními. 36

4.4.2 Výsledky úpravy neuronové sítě pro predikci funkce pomocí evolučních strategií Maximum cyklů evolučních strategií: 20 Počet jedinců v populaci: 32 Maximum skrytých vrstev: 7 Maximální počet neuronů v každé vrstvě: 32 Omezení počtu epoch učení: 100 epoch nebo chyba 0.1. Použitá sada vzorů: po 4 po sobě jdoucích bodech funkce y = 0,5 0,2 cos x + 0,5 sin 3 x ( ( ) ( )) Požadovaným výstupem byla následující hodnota funkce. Koeficient učení: 0,2 Počet vstupů: 4 Počet výstupů: 1 Pro učení sítě byla zvolena funkce y = 0,5 ( 0,2 cos( x) + 0,5 sin( 3 x) ) (funkce nabývá pouze kladných hodnot), aby bylo možné použít stejnou síť jako pro úlohu rozpoznávání vzorů. Pro zvětšení rozsahu do záporných hodnot je třeba změnit funkci neuronu například na tanh, jehož funkční hodnoty leží v intervalu -1 a 1, a změnit způsob přepočtu vah. Výpočty předpovídání průběhu funkce byly pomalejší než výpočet úlohy rozpoznávání vzorů. Jako lepší sítě byly označovány ty, které měly ve vstupní nebo alespoň jedné skryté vrstvě několikanásobně větší počet neuronů oproti počtu vstupů. Na obrázku 4.9 je zobrazeno chování sítě s příliš malým počtem neuronů ve skrytých vrstvách: ve vstupní vrstvě bylo 8 a ve skryté 12 neuronů. Obrázek 4-9 Zobrazení trénovací a testovací množiny sítě a příliš malým počtem neuronů 37

V tomto případě byla chyba sítě relativně vysoká i po velkém počtu epoch učení. Obrázek 4-10 Průběh chyby sítě s příliš malým počtem neuronů V případě sítě s vhodným počtem neuronů byl výsledek lepší. Nejvhodnější byly sítě s jednou nebo dvěma skrytými vrstvami. Alespoň v jedné ze skrytých vrstev nebo ve vstupní vrstvě byl relativně velký počet neuronů. Všechny metody evolučních algoritmů byly v tomto případě velmi pomalé, stejně jako následné učení a vybavování sítě. Obrázek 4-11 Trénovací s testovací množina sítě s relativně vhodnými parametry 38

Hodnota nejvyšší fitness se v tomto případě příliš neměnila, stejně jako nejmenší chyba. Kvůli náročnosti výpočtu byl zvolen malý počet cyklů evoluční strategie. Hodnota fitness závisí na parametrech sítě a nastavení vah. Obě tyto hodnoty lze pomocí evolučních strategií ovlivnit. Obrázek 4-12 Průběh funkce fitness v průběhu generací evolučních strategií Chyba sítě byla vyšší než u úlohy rozpoznávaní vzorů, protože síť byla pro použití evolučního algoritmu nastavena na maximální počet iterací 100 (stejně jako u předchozího příkladu), ale tento problém je složitější (obsahuje více trénovacích vzorů) a potřebuje více epoch učení. Síť se učí metodou zpětného šíření chyby. Váhy jsou upraveny po předložení každého vzoru, proto záleží na pořadí předkládaných vzorů. 39

Obrázek 4-13 Průběh chyby sítě během úprav sítě evolučními strategiemi Vývoj chyby sítě byl výrazně ovlivněn evolučními strategiemi, na obrázku 4-14 lze vidět občasné kolísání způsobené výraznou změnou v síti nebo výběrem vhodnější sítě. Následný pokles je potom způsoben učením sítě. Mezi těmito úseky se síť výrazně neměnila, chyba pouze mírně klesala. Obrázek 4-14: Vývoj chyby sítě v průběhu evoluční strategií 40

Nejrychlejší metodu pro predikci průběhu funkce lze těžko určit. Všechny metody byly relativně pomalé. Bylo tudíž potřeba provést mnoho cyklů evolučního algoritmu i učení neuronové sítě. Učení sítě označené jako nejlepší probíhalo relativně pomalu, chyba se pod hodnotu 0,5 dostala asi po tisíci epochách. Síť měla 4 skryté vrstvy o počtech neuronů 27, 18, 12 a 4 (směrem od vstupní vrstvy k výstupní), počet neuronů vstupní vrstvy byl 12. Obrázek 4-15 Průběh chyby nejlepší sítě během následného učení 41

4.4.3 Výsledky úpravy neuronové sítě pro rozpoznávání vzorů pomocí evolučního programování K učení byla použita sada jednoduchých obrázků: devět písmen abecedy o rozměru 5x7 (zobrazena v příloze 1). Hodnota maximální fitness kolísala, protože pro možné použití mutace byli vybráni všichni jedinci a v případě, že se mutace použila právě na jedince označeného jako nejlepšího, změnila se jeho vhodnost. Pravděpodobnost mutace je nastavena na vyšší hodnotu než v případě genetických algoritmů, protože u evolučního programování nedochází ke křížení. Maximum cyklů evolučního programování: určeno dosažením požadované chyby Počet jedinců v populaci: 32 Maximum skrytých vrstev: 4 Maximální počet neuronů v každé vrstvě: 32 Omezení počtu epoch učení: 100 epoch nebo chyba 0.1 Použitá sada vzorů: 9 znaků abecedy (A, B, C, D, E, F, H, I, J) Koeficient učení: 0,2 Počet vstupů: 35 Počet výstupů: 9 Obrázek 4-16 Průběh fitness během generací evolučního programování Počet skrytých vrstev byl omezen na 4, síť označená jako nejlepší ale měla pouze jednu se 31 neurony. Počet neuronů ve vstupní vrstvě byl 24. Konečná hodnota fitness byla 0,23 a chyba 0,29. 42

Obrázek 4-17 Průběh chyby během úpravy sítě pomocí evolučního programování Vývoj chyby sítě byl výrazně ovlivněn evolučním programováním, na obrázku 4-18 lze vidět občasné kolísání způsobené výraznou změnou v síti nebo výběrem vhodnější sítě. Následný pokles je potom způsoben učením sítě. Mezi těmito úseky se síť výrazně neměnila, chyba pouze mírně klesala. Obrázek 4-18: Vývoj chyby sítě v průběhu evolučním programováním 43

Při následném učení vybrané sítě klesla chyba po 1000 epochách asi na 0,15, což je horší výsledek než u sítě dané genetickým algoritmem, ale nelze říct, že by jedna nebo druhá metoda byla vhodnější, protože počáteční populace nebyla stejná. I v případě stejné počáteční populace by však záleželo na náhodném určení místa mutace a pravděpodobnostech mutací u obou metod, u genetického algoritmu navíc na pravděpodobnosti křížení. Obrázek 4-19 Průběh chyby nejlepší sítě během učení 44

5 Závěr Cílem práce bylo seznámení s teorií neuronových sítí a vybraných evolučních algoritmů, návrh metody pro úpravu topologie neuronové sítě a její implementace v prostředí MATLAB. Pro úpravu sítě byly zvoleny genetické algoritmy, evoluční strategie a evoluční programování, pro učení sítě metoda zpětného šíření chyby. Vybrané evoluční algoritmy byly použity k výběru vhodné topologie sítě (počtu skrytých vrstev, počtů neuronů v jednotlivých vrstvách a spojení mezi jednotlivými neurony). K učení sítě byly použity dvě úlohy: rozpoznávání vzorů, kde byly jako předlohy použity obrázky znázorňující několik písmen abecedy, a předpovídání průběhu funkce. Všechny metody byly výpočetně náročné, nejdéle trvalo vyhodnocení pomocí genetických algoritmů. Pro získání chyby srovnatelné s ostatními metodami bylo třeba provést stejný nebo vyšší počet cyklů algoritmu, přičemž tvorba jedné generace o stejném počtu jedinců trvala déle než u zbylých dvou metod. Nejrychlejší metodou pro oba problémy byly evoluční strategie, protože narozdíl od genetických algoritmů nepoužívají operátor křížení a oproti evolučnímu programování je výhodnější jejich způsob selekce. Srovnání těchto metod ale nelze považovat za příliš objektivní, protože počáteční populace i hodnoty vah byly voleny náhodně. Úpravy spojení a vah pomocí vybraných evolučních algoritmů byly výpočetně velmi náročné, protože pracovaly s velkým množstvím dat. Proto bylo pro použité jednoduché úlohy výhodnější pomocí vybrané metody určit pouze vhodný počet skrytých vrstev sítě a počty neuronů. Volba topologie sítě i její učení bylo rychlejší u úlohy rozpoznávání obrazců, která používala menší množství vzorů o větší délce než úloha predikce hodnot funkce. Sítě označené jako nejvhodnější pro rozpoznávání vzorů měly u všech metod od jedné do čtyř skrytých vrstev. Pro predikci hodnot funkce měly nejlepší vlastnosti sítě se třemi až pěti vnitřními vrstvami. Výsledkem práce jsou grafy, které znázorňují vývoj sítě upravené pomocí vybraných metod a program vytvořený v prostředí Matlab. Vývoj sítě byl reprezentován průběhem maximální a průměrné fitness, jejíž hodnota se zvyšovala se stoupajícím počtem generací. Naopak chyba sítě klesala a zmenšoval se rozdíl mezi hodnotou minimální a střední chyby. 45

6 Přílohy 6.1 Sada vybraných znaků abecedy pro úlohu rozpoznávání vzorů Obrázek 6-1 Trénovací množina pro úlohu rozpoznávání vzorů 46