Neuronové sítě – vývoj a testování

Díl 1

Už jste každý asi slyšel o neuronových sítích. Co si pod tímto výrazem představit? Kde a jak se dají využít? Jde toto modelování neuronů využít v praxi či dokonce ve hrách?

Řekl bych to asi takto: "pokud všechno selže, použijte neuronovou síť". Samozřejmě je to přehnaně řečeno, ale neuronové sítě se užívají tam, kde:

Stavba a systém modelování sítě

Historie modelování umělých neuronových sítí (artificial neural network) sahá až do poloviny 20. století. Jde o výpočetní model, který je odvozen od chování biologických neuronů. Všechno toto modelování prošlo za tuto dobu mnohaletým testováním a vývojem, které zde nebudeme rozebírat. Jen si snad uvedeme několik výrazů, se kterými se budeme setkávat ve vztahu k umělým neuronovým sítím, jejich modelováním a praktického použití v aplikacích.

Neuron

Základní stavba modelu umělého neuronuJe základní stavební dílec neuronové sítě. Má jeden výstup a libovolný počet vstupů. Každý výstup je prezentován jednou hodnotou, která je dále šířena neuronovou sítí.

Synapse

Synapse jsou spojení mezi jednotlivými neurony. Počet synapsí určuje velikost či mohutnost neuronové sítě, tzn. že větší počet synapsí v neuronové síti má možnost uchovat větší množství dat.

Váha

Váha je hodnota, která je násobitelem nesené informace. V podstatě se jedná o paměť hodnoty, která je představitelem řešeného algoritmu.

Vstup a vstupní vrstva

Každý vstup je prezentován jednou synapsí a každá synapse na vstupu do neuronu disponuje jednou váhou (kromě vstupních neuronů). Vstupní vrstva (první vrstva) jsou pak vstupní synapse, přes které vstupují zpracovávaná data do sítě.

Práh a přenosové funkce

Práh je hodnota, při které se aktivuje výstup neuronu. Přenosová funkce je pak funkcí, která upravuje výstup na hodnoty, které se dále šíří v neuronové síti.

Nejpoužívanější přenosovou funkcí je sigmoida, kterou používáme i my ve svých modelech.

Výstup a výstupní vrstva

Každý výstup je zpracován výstupní (přenosovou) funkcí a výsledná hodnota je poskytnuta synapsí dále v neuronové síti. Výstupy ve výstupní vrstvě (poslední vrstva) jsou potom zpracované jako konečné výstupy z celého modelu neuronové sítě.

Skrytá vrstva

Jedná se o vrstvu nebo vrstvy, které se nacházejí mezi vstupní a výstupní vrstvou (jejich vstupy a výstupy jsou v neuronové síti skryté).

Neuronová síť

Příklad neuronové sítě a pomocná role biasNeuronovou sítí se myslí rozložení jednotlivých neuronů ve vrstvách a spojení synapsemi. Určitý tvar neuronové sítě, je definován počtem neuronů v jednotlivých vrstvách a jednotlivými spojeními mezi neurony.
Samozřejmě lze namodelovat nejrůznější tvary, symetrické, asymetrické nebo různě deformované, ale pro zjednodušení se budeme zabývat jen sítěmi, které mají sice libovolný počet vrstev i libovolný počet neuronů v jednotlivých vrstvách, ale jednotlivé neurony v následných vrstvách jsou propojeny každý s každým (feed-forward).
Tzn. když zapíšeme tvar neuronové sítě 2-5-3, znamená to 3 vrstvy s počtem neuronů 2, 5 a 3 a počtem synapsí 2×5 a 5×3, celkem 25.

Momentum

Momentum (hybnost) je koeficient, který pomáhá při učení sítě v udržení zpětného šíření algoritmu. V praxi to znamená asi něco takového, že udržuje učící algoritmus v dynamice učení.

Bias

Bias neboli vychýlení nedovolí při učení neuronové sítě spočinout v lokálních minimech, ale pořád ji nepatrně rozvažuje, aby algoritmus divergoval až do globálního minima. Každý neuron, kromě první vrstvy, má vstup s váhou bias.

Učení

Učení neuronové sítě se dá rozdělit na dvě hlavní skupiny:

V našich modelech používáme zatím jen učení neuronové sítě s učitelem algoritmem Back-Propagation. Znamená to, že výstupní hodnota, která je zpracována modelem sítě se porovná s výsledkem pro učení a zpětně se v neuronové síti upraví váhy na jednotlivých vstupech neuronu. Tímto opakovaným trénováním sady vzorků pro učení se konečný model dováží do požadovaného stavu.

Normalizace dat

Každá síť pracuje v nějakém oboru hodnot. Neuronová síť se sigmoidální funkcí například s hodnotami mezi 0 až 1. Z toho plyne, že vstupní a posléze výstupní data se musí normalizovat pro zpracování neuronovou sítí. Nejednodušší normalizací je lineární normalizace dat, ale nemusí být pro každou úlohu dostatečně vhodná.

Základní aplikace pro testování a vývoj

Nyní si můžete vyzkoušet naši vývojovou a testovací aplikaci. Umožňuje vytvoření sítě, zadávat vstupní a výstupní data pro učení sítě a vyhodnotit vstupní data, která jsou zobrazena jako výstupní výsledky sítě (hodnoty, stavově nebo graficky).

Aplikace obsahuje textovou nápovědu po najetí myší na určitý ovládací prvek.
Z přiložených souborů si můžete otevřít nějaká vzorová data, např.: funkci „XOR", „binární dekodér 1 z 8". Samozřejmě neuronová síť nemusí používat jako vstupní hodnoty jen 0 a 1. V příkladu „stejné vstupy" naleznete rozšíření funkce XOR, kde vyhodnotí stejné vstupy jako 1 a rozdílné vstupy jako 0.

Urax.zip vývojová a testovací aplikace ke stažení (332 kB)
(Stažený soubor rozbalte do nějakého adresáře. Balíček obsahuje aplikaci a vzorová data)

Příště si ukážeme konečně nějaký použitelný příklad – nalezení pozice.

Hezké a příjemné testování přeje Shrimphood.net

-fjura-

Odkazy

Další projekty Neuronové sítě

http://cs.wikipedia.org/wiki/Neuronov%C3%A1_s%C3%AD%C5%A5
http://cgg.mff.cuni.cz/~pepca/prg022/mucha/

Galerie

| Více