Problém XOR v neuronových sítích.
Úvod
Toto je první ze série příspěvků věnovaných implementacím umělých neuronových sítí (ANN). Cílem článku je pomoci čtenáři získat představu o základních pojmech předtím, než přejde k algoritmickým implementacím, které budou následovat.
Nepředpokládají se žádné předchozí znalosti, i když v zájmu stručnosti není v článku vysvětlena veškerá terminologie. Místo toho jsou uvedeny hypertextové odkazy na Wikipedii a další zdroje, kde může být vyžadováno další čtení.
Jedná se o rozsáhlé téma. ANN mají širokou škálu aplikací a lze je použít pro učení pod dohledem, bez dohledu, částečně pod dohledem a pro učení s posilováním. A to ještě předtím, než se dostanete k architekturám specifickým pro daný problém v rámci těchto kategorií. Někde ale začít musíme, takže abychom zúžili záběr, začneme aplikací ANN na jednoduchý problém.
Problém XOr
Problém XOr neboli „výlučné nebo“ je klasickým problémem ve výzkumu ANN. Jedná se o problém použití neuronové sítě k předpovědi výstupů logických hradel XOr vzhledem ke dvěma binárním vstupům. Funkce XOr by měla vrátit pravdivou hodnotu, pokud se oba vstupy nerovnají, a nepravdivou hodnotu, pokud se rovnají. Všechny možné vstupy a předpovězené výstupy jsou zobrazeny na obrázku 1.
XOr je klasifikační problém a problém, u kterého jsou očekávané výstupy předem známy. Je proto vhodné použít přístup učení pod dohledem.
Na první pohled se zdá, že XOr je velmi jednoduchý problém, nicméně Minksy a Papert (1969) ukázali, že to byl velký problém pro architektury neuronových sítí z 60. let, známé jako perceptrony.
Perceptrony
Stejně jako všechny ANN se perceptron skládá ze sítě jednotek, které jsou analogické biologickým neuronům. Jednotka může přijímat vstup od jiných jednotek. Při tom vezme součet všech přijatých hodnot a rozhodne, zda bude signál předávat dál ostatním jednotkám, ke kterým je připojena. Tomuto postupu se říká aktivace. Aktivační funkce používá nějaké prostředky k redukci součtu vstupních hodnot na 1 nebo 0 (nebo na hodnotu velmi blízkou 1 nebo 0), aby vyjádřila aktivaci nebo její nedostatek. Jiná forma jednotky, známá jako zkreslovací jednotka, se vždy aktivuje a obvykle posílá všem jednotkám, ke kterým je připojena, pevně zakódovanou hodnotu 1.
Perceptrony obsahují jednu vrstvu vstupních jednotek – včetně jedné zkreslovací jednotky – a jednu výstupní jednotku (viz obrázek 2). Zde je zkreslující jednotka znázorněna čárkovaným kroužkem, zatímco ostatní jednotky jsou znázorněny modrými kroužky. Existují dvě nepředpojaté vstupní jednotky, které představují dvě binární vstupní hodnoty pro XOr. Může být zahrnut libovolný počet vstupních jednotek.
Perceptron je typ sítě s dopředným šířením, což znamená, že proces generování výstupu – známý jako dopředné šíření – probíhá jedním směrem ze vstupní vrstvy do výstupní vrstvy. Mezi jednotkami ve vstupní vrstvě nejsou žádná spojení. Místo toho jsou všechny jednotky ve vstupní vrstvě připojeny přímo k výstupní jednotce.
Zjednodušené vysvětlení procesu dopředného šíření je takové, že vstupní hodnoty X1 a X2 jsou spolu s hodnotou zkreslení 1 vynásobeny příslušnými váhami W0..W2 a rozebrány do výstupní jednotky. Výstupní jednotka vezme součet těchto hodnot a použije aktivační funkci – obvykle Heavsideovu krokovou funkci – k převodu výsledné hodnoty na 0 nebo 1, čímž klasifikuje vstupní hodnoty jako 0 nebo 1.
Je to nastavení váhových veličin, které dává autorovi sítě kontrolu nad procesem převodu vstupních hodnot na výstupní hodnotu. Právě váhy určují, kde je nakreslena klasifikační čára, čára, která rozděluje datové body do klasifikačních skupin. Pokud je všem datovým bodům na jedné straně klasifikační čáry přiřazena třída 0, všechny ostatní jsou klasifikovány jako 1.
Omezení této architektury spočívá v tom, že je schopna oddělit datové body pouze jednou čarou. To je nešťastné, protože vstupy XOr nejsou lineárně oddělitelné. To je patrné zejména při vykreslení vstupních hodnot XOr do grafu. Jak ukazuje obrázek 3, není možné oddělit předpovědi 1 a 0 jedinou klasifikační přímkou.