Jednoduché neuronové sítě
www.ssakhk.cz/nn/index.html
Autor: Jindřich Fišnar (fisnar@ssakhk.cz)
Střední škola aplikované kybernetiky (www.ssakhk.cz),
Hradec Králové

Hlavní myšlenka programu
Algoritmus poskytuje nejlepší uspořádání neuronové sítě tím, že jeho reakce
byly v průběhu testování podle žebříčku hodnot nejlepší. Je možné představit
si tuto neuronovou síť jako funkci s mnoha parametry a jedním výsledkem, číslem,
které odpovídá kvalitě testované neuronové sítě. Celý proces “učení se” je
hledáním upravené funkce, takové jejíž výsledek je během testu nejvyšší.
Popis funkce neuronové sítě
Ve své podstatě se matematika snaží kopírovat přírodu. Základní složkou neuronové sítě je neuron. Neuron má několik výstupů (může mít jenom jeden v případě vstupních neuronů) a několik vstupů (nebo jen jeden v případě výstupních neuronů). Tvoří některou funkci mezi těmito vstupy a výstupy. Problémem je, že funkce nebyla určena přírodním neuronem. Zjednodušme tuto neuronovou funkci tak, aby byla co nejjednodušší a bylo možné ji zrealizovat na standardním osobním počítači. Abychom mohli zjednodušit funkci neuronu, musíme nejdříve představit biologický neuron. Neuronová síť pracuje pomocí elektrických impulsů. Tyto neuronové impulsy nabíjejí neuron a jeho napětí se zvyšuje. Vytvořený náboj se objevuje v neuronových výstupech, ale každý výstup (synapse) má odlišný náboj v krátkém odporu. To znamená, že po vstupu následujících neuronů se hodnota změní. A to je jedna z nejjednodušších realizací neuronu.
Termín neuronová síť zahrnuje spojení několika neuronů s výše
zmíněnými vlastnostmi. Komplexní funkce neuronové sítě je odvozena funkcemi
jednoduchých neuronů, upravením jejich výstupů a individuálním způsobem organizace
spojujícího neuronu. Čím bude funkce realizovaná neuronem jednodušší, tím
vyšší bude muset být počet neuronů, řečeno jiným způsobem, pokud by neuronové
funkce odpovídaly síťovým funkcím, stačil by jeden. Vhodným seskupení neuronů
můžeme ušetřit mnoho neuronů nebo realizovat paměť (pomocí zpětné vazby). Během
nevhodné volby by se problém mohl stát neřešitelným. Předpokládejme, že způsob
neuronových spojení a jejich funkcí je během testu konstantní. Jediným způsobem,
jak lze změnit chování sítě, je nalezení úpravy výstupů všech neuronů.
Popis programu
Na hřišti je omezený prostor. V tomto prostoru se pohybují dva hráči. První se “učí” jak běhat a druhý ho chytá. Jinak řečeno první neuronová síť je sestavena tak, aby se vzdalovala od chytající a chytající se snaží dostat blíž k utíkající.
Obě neuronové sítě mají stejné seskupení neuronů a všechny jejich neurony provádějí stejnou funkci. Dohromady mají deset vstupů – 4 vstupy pro zjištění, zda se hranice hřiště dotýkají (možné hodnoty 0 – 1), 4 k indikování směrového vektoru protivníka (každý z těchto vstupů představuje jeden směr, pokud je směr k protivníkovi opačný než uvedený směr vstupu, je hodnota rovna nule, jinak v pořadí odpovídajícímu směrům nahoru, doprava, dolů, doleva) a další dva vstupy zpětné vazby (je zde zahrnuta hodnota odpovídající zpětné vazby výstupu z posledního kroku testu). Z dalších šesti výstupů jsou čtyři pro určení směru kroku (krok může být učiněn pouze nahoru, doprava, dolů a doleva, což je určeno výstupem s největší hodnotou) a dva výstupy zpětné vazby.
Jeden test má určitý počet kroků, během každého kroku jsou plněny vstupy, aby byla naznačena existující situace, nakonec se síť použije pro určení výsledků (výstupy se nechají projít sítí), tyto výsledky se realizují (tzn. krok je veden k určení směru) a celkové provedení sítě je zhodnoceno, výsledky se přidají k celkovým výsledkům.
Obě sítě mají na začátku testu nulové konto výsledků a nulovou zpětnou vazbu.
Obě sítě získávají během testu body za svoje počínání podle žebříčku
hodnot. Ten určuje, co by měly neuronové sítě dělat a jaký směr by mělo nabrat
jejich rozhodnutí, určuje, kolik bodů bude uděleno nebo odečteno za jednotlivý
postup sítě v daném kroku testu a nepřímo určuje celkovou kvalitu sítě.
Například existuje žebříček proudící neuronové sítě: krok k chycení
(odstranění) +2, vzdálenost zůstala stejná +1, krok směrem k chytajícímu
(přichází blíž) –1. Úprava žebříčku hodnot je jednou z kritických situací a
může ovlivnit rychlost vývoje. Během realizace je nezbytné vzít v úvahu mnoho
detailů, např. skutečnost, že vítězstvím pro běžícího je nebýt chycen během
celého testu, proto se body za čas (běžící získá každým krokem testu jednu
desetinu bodu a chytající jednu desetinu ztrácí) budou přičítat k celkového
hodnocení na konci každého testu.