Úvod

Nejprve si v pythonu napíšu kód pro sestavení základní neuronové sítě, na které budu ilustrovat základní myšlenky jejich stavby a funkce

Základní schéma neuronové sítě, normalizační funkce

Neuronová síť se zkládá ze vstupů, synapsí, neuronů a výstupů.

V mém příkladu budu mít 3 vstupy, 1 neuron a 1 výstup

Hodnota daného neuronu je sumou násobků vstupu a jeho váhy. Na tuto sumu aplikujeme normalizační funkci (Sigmoid).

$$ \sum_{i=1}^{3}x_i w_i = x_1 w_1 + x_2 w_2 + x_3 w_3 $$

Aplikace normalizační funkce Sigmoid.

$$ \phi(\sum_{i=1}^{3}x_i w_i) $$

$$ \phi(x) = \frac{1}{1+e^{-x}} \rightarrow \phi(x) = \frac{1}{1+e^{-\sum_{i=1}^{3}x_i w_i)}} $$

Normalizační fuknce vrací hodnotu mezi 0 a 1

Trénovací proces

  1. Použijeme vstupy z trénovacích dat a necháme vygenerovat výstup na základě náhodně iniciovaných vah jednotlivých synapsí.1. Použijeme vstupy z trénovacích dat a necháme vygenerovat výstup na základě náhodně iniciovaných vah jednotlivých synapsí.
  2. Vypočítáme chybu, která je rozdílem mezi skutečným výstupem a vygenerovaným výstupem.
  3. V závislosti na velikosti chyby nastavíme v dalším kroku nové hodnoty vah synapsí.
  4. Tento ostup opakujeme např. 20.000 krát.

Zpětná propagace

Nastavení váhy synapse = chyba x vstup x $\phi$'(výstup)

Chyba = výstup – vypočtený výstup

Vstup = buď 1 nebo 0

$$ \phi(x) = \frac{1}{1+e^{-x}} \rightarrow \phi'(x) = \phi(x).(1 – \phi(x)) $$

Z tohoto vztahu vyplývá, že derivace normalizační fuknce sigmoid nám určuje rychlost změny dané váhy (tečna v daném bodě funkce). Pokud je výstup vysoké kladné nebo záporné číslo, znamená to, že neuron si je jistý ve svém odhadu a váhá již není tolik korigována. Naopak v případě nízkých hodnot okolo nuly, je rychlost změny velká, což značí velkou nejistotu a tyto váhy musejí být adekvátně přenastaveny. Toto přenastavení nazýváme zpětná propagace.

Grafické znázornění postupné korekce chyby neuronové sítě v průběhu 20.000 iterací zpětné propagace.