Kurz

logo

Neuronové sítě


Neuronové sítě (ANNs - artificial neural networks) jsou technický přístup inspirovaný nervovým systémem živých organismů. Jak si dále ukážeme, půjde tentokrát o spíše nealgoritmický přístup, který se úzce dotýká oblastí umělé inteligence jako je rozpoznávání a strojové učení. Aplikační doména je velmi široká a patří do ní oblasti jako rozpoznávání objektů v obrázcích, detekce nevyžádané pošty v emailové schránce či auto bez řidiče.

Jak bylo již zmíněno, předobrazem této technologie je lidský nervový systém. Základní jednotkou zde bude, překvapivě, neuron. Neuron byl poprvé popsán již v roce 1835 Janem Evangelistou Purkyněm, poznamejme však, že objev je mnohdy připisován i Španělovi S. R. Cajalovi. Pro představu komplexnosti reálné nervové soustavy si uveďme několik fakt a zajímavostí:

obrázek realistického neuronu akční potenciál realistického neuronu

Prozatím jsme si předsatavili neuron (a nervový systém) tak, jak jej obvykle chápeme. Model našeho umělého neuronu bude velmi jednoduchý, na vstupu přijme několik signálů v podobě čísel $x_1,\dots,x_N$ a podle určitého vzorce vydá výstupní signál $y$. Následující obrázek ukazuje vnitřní strukturu jednohuchého neuronu - perceptronu.

model jednoduchého neuronu - perceptronu

Na první pohled se může zdát umělý neuron složitý, ale neděje se zde nic hrozného. Rozeberme si kousek po kousku, co se zde děje.

model jednoduchého neuronu - perceptronu

Udělejme nyní drobný úkrok stranou a podívejme se na chvíli do oblasti rozpoznávání a strojového učení. Představme si typickou úlohu rozpoznávání, a to problém klasifikace. Dejme si za úkol navrhnout zařízení, které bude automaticky rozpoznávat muže a ženy. Mějme dva jednoduché senzory, které nám měří výšku $x_1$ a váhu $x_2$ jedné osoby. Naším cílem je určit, zda pro dané měření je osoba muž (třída 0) či žena (třída 1). Jinak řečeno, máme za úkol navrhnout přímku (ve složitějších případech nadrovinu, či nelineární zobrazení), která nám oddělí měření, u nichž jde o muže ( $y = 0$ ) a ženy ( $y = 1$ ). U tohoto vzorového problému je návrh takovéto funkce jednoduchý, ale jak máme obecně postupovat, když o problému nic nevíme? Obvykle předpokládáme, že máme nějakou formu trénovacích dat, ze kterých se pokusíme naši rozhodovací funkci namodelovat. Obecně existují tyto druhy učení:

učení s učitelem (angl. supervised learning)
máme k dispozici sadu trénovacích příkladů $T = \{ (\mathbf{x}_1, y_1),\dots,(\mathbf{x}_M,y_M) \}$, tedy pro jednotlivé vzorky měření $\mathbf{x}_i = (x_1,\dots,x_N)$ také správnou třídu $y_i$, do které patří
učení bez učitele (angl. unsupervised learning)
máme k dispozici sadu trénovacích příkladů $T = \{ \mathbf{x}_1,\dots,\mathbf{x}_M \}$, tedy pro jednotlivé vzorky měření $\mathbf{x}_i$ již neznáme správnou třídu, do které patří (tu musíme zjistit)
posilované učení (angl. reinforcement learning)
nemáme k dispozici žádnou sadu trénovacích dat, ty musí systém získat až za běhu díky interakci s okolním prostředím

Vraťme se znovu k našemu neuronu - perceptronu. Perceptron plní přesně funkci klasifikátoru pro rozpoznávací úlohu, kde uvažujeme model učení s učitelem. Pro 2D problém, jakým byl příklad s rozpoznáváním osob, si můžeme situaci ilustrovat tak, že někdo nám dopředu připraví soubor správně označených měření a perceptron hledá tzv. hraniční přímku, obecně nadrovinu (pozn.: v obrázku data přesně neodpovídají úloze muži/ženy), která odděluje obě třídy. Kde se tedy skrývá ono strojové učení? Podíváme-li se na problém detailněji, zjistíme, že námi hledaná hraniční přímka závisí právě na nastavení vah $\mathbf{w} = (w_0,\dots,w_N)$. Celý problém se tedy skrývá v nastavení váhového vektoru $\mathbf{w}$ za pomoci trénovací sady (pak již stačí hraniční přímku nastavit tak, aby měla klasifikace na trénovacích datech co nejmenší - nulovou - chybu).

úloha klasifikace nad označenými daty a vztah k perceptronu

Jak může takové učení vypadat? V našem případě jednoduchého perceptronu se použije následující pravidlo: $w_i(t+1) = w_i(t) + \eta e(t) x_i(t)$. Opět si popíšeme, jak pravidlo funguje.

Co více tedy chtít? Proč se vůbec zabývat nějakými neuronovými sítěmi? V roce 1969 vyšla studie, která nešťastně pozastavila (přinejmenším přibrzdila) výzkum neuronových sítí na dvě dekády. Tato studie ukázala na problém při modelování nejjednodušších logických spojek. Konkrétně, nelze výše popsaným způsobem naučit perceptron funkci XOR (exkluzivní/výlučné nebo). Je pravda, že pro tento a některé další problémy si lze matematicky pomoci, ale mnohdy jsou třídy tzv. lineárně neseparovatelné (neoddělitelné přímkou/nadrovinou) a je tedy nutné použít složitější model. Jak se později ukázalo, tuto zdánlivou překážku lze obejít, budeme-li uvažovat ne jeden neuron, ale hned několik. A to klidně v několika vrstvách za sebou (výstup jednoho neuronu je vstupem neuronu ve vrstvě výše). Lze poté ukázat, že takovouto více-vrstvou neuronovou sítí s dostatečným počtem neuronů je možné aproximovat libovolnou spočitatelnou funkci (což je velmi silná vlastnost).

modelování základních booleovských spojek diagram více-vrstvé neuronové sítě

Otázka učení více-vrstvých neuronových sítí je velmi zajímavá, bohužel ale také velmi obsáhlá a nad rámec tohoto kurzu. Zmiňme pouze nejzákladnější metodu zvanou zpětná propagace (angl. back propagation), která požívá obdobu učícího pravidla pro perceptron. Tentokrát ale neupravujeme váhy pouze jednomu neuronu, ale chybu/kvalitu výstupu šíříme zpětně od poslední vrstvy ke vstupní vrstvě. Samozřejmě si lze představit i složitější topologie sítí, například zpětnovazebné (rekurentní - angl. recurrent networks) sítě či sítě, kde místo neuronů jsou celé další sítě. Takovéto sítě se požívají například k udržení stavu po dlouhou dobu, např. k modelování krátkodobé paměti. Naopak velmi rozsáhlé dopředné (standardní, nerekurentní) sítě s velkým počtem vrstev jsou v dnešní době významným trendem v oblasti rozpoznávání objektů v obrázcích.

diagram rekurentní neuronové sítě

Test znalostí