Umělá neuronová síť

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Příklad neuronové sítě: vstup, skrytá vrstva, výstup Umělá neuronová síť, anglicky Artificial Neural Network či jen Neural Network (ANN, NN), je jeden z výpočetních modelů používaných v oblasti umělé inteligence. Vzorem je chování neuronů v mozku, od toho je odvozen i název, v současnosti se však princip neuronových sítí od původního zamýšleného napodobení neuronů liší.

Umělá neuronová síť je struktura určená pro distribuované paralelní zpracování dat. Skládá se z umělých (formálních) neuronů, jejichž volným předobrazem je biologický neuron. +more Neurony jsou vzájemně propojeny synaptickými vazbami a navzájem si předávají signály a transformují je pomocí aktivačních přenosových funkcí. Neuron má libovolný počet vstupů, ale pouze jeden výstup.

...
...
...
...
...
+more images (2)

Využití

Neuronové sítě se používají mimo jiné pro rozpoznávání obrazů (např. ve formě pixelů) či akustických (např. +more rozpoznávání řeči) nebo elektrických (např. EKG, EEG) signálů, dále ke klasifikaci, kompresi či segmentaci dat, k predikci vývoje časových řad (např. burzovních indexů), k analýze psaného textu či k filtrování spamu. V lékařství slouží k diagnostice onemocnění či k prohlubování znalostí o fungování informačních systémů (nervových soustav) živých organismů. Například Grossbergova síť vznikla původně jako simulace fyziologického modelu rozpoznávání vzorů na sítnici lidského oka.

Historie

První umělé neurony byly vytvořeny Warrenem McCullochem a Walterem v roce 1943. Tyto neurony fungovaly tak, že byl jejich výstup 0 nebo 1 v závislosti na tom, jestli vážená suma vstupních signálů překročila prahovou hranici, nebo ne. +more Jejich teorie byla, že takový neuron v principu spočte jakoukoli aritmetickou či logickou funkci. Tehdy však nebyla vypracována žádná tréninková metoda.

V padesátých letech přichází Frank Rosenblatt s perceptrony, které doprovází již i učící pravidla. Perceptrony využívá k rozpoznávání vzorů. +more Mimo to dokazuje, že pokud existují váhy, které zadaný problém řeší, pak k nim učící pravidlo konverguje.

Počáteční nadšení však uvadá, když je zjištěno, že takovýto perceptron umí řešit pouze lineárně separovatelné úlohy. Frank Rosenblatt se sice snaží model upravit a rozšířit, ale nedaří se mu to a tak až do osmdesátých let přestává být o perceptrony a neuronové sítě zájem.

V 80. letech dochází k vývoji vícevrstvých perceptronových sítí s asociačními pravidly, schopných aproximovat libovolnou vektorovou funkci, díky čemuž dochází k nové vlně zájmu o neuronové sítě, který později částečně upadá díky neschopnosti učit sítě o větším počtu vrstev. +more Až okolo roku 2010 opět dochází k renesanci neuronových síti díky objevu hloubkového učení.

Nejužívanější způsob učení neuronových síti je algoritmus zpětného šíření chyby. Podle různých zdrojů byly základy algoritmu zpětného šíření chyby v kontextu teorie řízení odvozeny z principů dynamického programování; konkrétně se na tom podíleli Henry J. +more Kelley v roce 1960 a Arthur E. Bryson v roce 1961. Roku 1962 publikoval Stuart Dreyfus jednodušší odvození pomocí řetězového pravidla. Vladimir Vapnik cituje ve své knize o support vector machines článek z roku 1963. V roce 1969 Bryson a Yu-Chi Ho algoritmus popsali jako vícestupňovou optimalizaci dynamických systémů.

V roce 1970 Seppo Linnainmaa publikoval obecnou metodu automatického derivování (AD) diskrétních sítí vnořených diferencovatelných funkcí. Jedná se o moderní variantu metody zpětného šíření chyby, která je efektivní i v řídkých sítích.

V roce 1973 Stuart Dreyfus pomocí zpětného šíření chyby upravoval parametry řídicích systémů úměrně jejich chybovým gradientům. Paul Werbos zmínil možnost uplatnění tohoto principu na umělé neuronové sítě roku 1974 a v roce 1982 tak učinil způsobem, který se používá nyní. +more O čtyři roky později David E. Rumelhart, Geoffrey E. Hinton a Ronald J. Williams experimentálně prokázali, že tato metoda může vést k užitečným interním reprezentacím vstupních dat v hlubších vrstvách neuronových sítí, což je základem hlubokého učení. V roce 1993 byl Eric A. Wan první, kdo vyhrál pomocí backpropagace mezinárodní soutěž v modelování dat.

V současnosti se neuronové sítě převážně užívají v úlohách zpracování přirozeného jazyka v rámci tzv. jazykových modelů jako např. +more Word2Vec či Transformer a v úlohách počítačového vidění v rámci tzv. konvolučních neuronových sítí.

Model umělého neuronu

Je popsána celá řada modelů neuronů. Od těch velmi jednoduchých používajících skokové přenosové funkce (perceptron) až po velmi složité popisující každý detail chování neuronu živého organismu, jako např. +more Hindmarshův-Roseův model neuronu. Model umělého neuronu.

Jedním z nejpoužívanějších je model popsaný McCullochem a Pittsem:

y=f(\sum_{i=1}^N (w_i{}x_i{}) - \vartheta)

kde: * x_i{} jsou vstupy neuronu * w_i{} jsou synaptické váhy * \vartheta je práh * f je aktivační funkce neuronu * y je výstup neuronu Aktivační funkce. +more V levém sloupci sigmoida spolu se svými limitními případy, v pravém sloupci možné transformace dat přiváděných na vstupní resp. výstupní neurony. Velikost vah w_i{} vyjadřuje uložení zkušeností do synapsí neuronu. Čím je vyšší hodnota, tím je daný vstup důležitější. V biologickém neuronu práh \vartheta označuje prahovou hodnotu aktivace neuronu. Tzn. je-li \sum_{i=1}^N (w_i{}x_i{}) menší než práh, je neuron pasivní (inhibovaný) a je-li \sum_{i=1}^N (w_i{}x_i{}) větší než práh, je neuron aktivní (excitovaný).

Aktivační funkce

Aktivační (přenosová) funkce neuronu v umělých neuronových sítích definuje výstup neuronu při zadání sady vstupů neuronu. Příkladem často užívané aktivační funkce je sigmoida (Logistická funkce) o parametrech strmosti (určující šířku pásma citlivosti neuronu na svůj aktivační potenciál) a prahové hodnoty (určující posunutí počátku funkce) spolu s jejími limitními tvary jako je linearita pro strmost blížící se nekonečnu resp. +more ostrá nelinearita (skoková funkce) pro strmost blížící se nule: :f(x)={1\over (1+e^{-p(x-\vartheta)} )}, tj. \lim_{p\rightarrow \infty} f(x)=0 pro x a \lim_{p\rightarrow \infty} f(x)=1 pro x>0 resp. \lim_{p\rightarrow 0} f(x)={1\over 2} Volbou aktivační funkce neuronů vstupní resp. výstupní vrstvy neuronové sítě můžeme určit způsob transformace dat na síť přiváděných:.

* Sigmoida: f(x)=(1+e^{-p(x-\vartheta)})^{-1} - z ad 1) a ad 2) (viz níže) plyne p={\ln 0,95-\ln 0,05 \over 3\sigma}\cong {1 \over \sigma}

ad 1) z 0,95=(1+e^{-3p\sigma})^{-1} plyne e^{-3p\sigma}={0,05\over 0,95}

ad 2) z 0,05=(1+e^{3p\sigma})^{-1} plyne e^{3p\sigma}={0,95\over 0,05}

* Gaussova křivka: g(x)=e^{-p(x-\vartheta)^{2}} - z 0,05=e^{-p6\sigma^{2}} plyne p=-{\ln 0,05 \over 6\sigma^{2}}\cong {1 \over 2\sigma^{2}}

* Mexický klobouk: h(x)=-\sigma^{2}g(x) - uvedené transformaci resp. její nezáporné části odpovídají různá pásma citlivosti.

Parametry uvedených transformací mají následující význam:

ϑ - střední hodnota dat přiváděných na daný neuron z trénovací množiny

σ - směrodatná odchylka dat přiváděných na daný neuron z trénovací množiny

Kromě uvedených aktivačních funkcí se užívají ještě jejich různé modifikace: * Identita - linearita modifikovaná posunutím středu symetrie do počátku * Hyperbolická tangenta - rozšíření oboru hodnot sigmoidy na interval od -1 do +1 * ReLU - složení ostré linearity (vlevo od počátku) s identitou (vpravo od počátku) * Radiální báze - Gaussova křivka resp. Mexický klobouk

Architektury sítě

Příklady architektury neuronových sítí: rekurentní autoasociativní paměť RAM, samorganizující síť SOM, vícevrstvý perceptron MLP. +more Podle způsobů propojení neuronů existuje více různých architektur neuronových sítí, neurony se řadí do jednotlivých vrstev umístěných nad sebou:.

Dopředná neuronová síť: * Lineární heteroasociativní paměť - dvouvrstvá síť * Perceptron - pouze jeden neuron * Vícevrstvý perceptron - libovolný počet skrytých vrstev (minimálně třívrstvá síť) * Samoorganizující síť - dvouvrstvá síť Rekurentní neuronová síť: * Lineární autoasociativní paměť - jednovrstvá síť * Nelineární autoasociativní paměť (Hopfieldova) - jednovrstvá síť * Nelineární heteroasociativní paměť (Bidirektní) - dvouvrstvá síť * Grossbergova či ART dvouvrstvá síť spojitého času

Učení sítě

Cílem učení neuronové sítě je nastavit síť tak, aby dávala co nejpřesnější výsledky. V biologických sítích jsou zkušenosti uloženy v synapsích. +more V umělých neuronových sítích jsou zkušenosti uloženy v jejich matematickém ekvivalentu - váhách. Učení neuronové sítě rozlišujeme na učení s učitelem (supervised learning) a učení bez učitele (unsupervised learning) . Fáze učení neuronové sítě bývá nazývána adaptivní, fáze vybavování po naučení neuronové sítě bývá nazývána aktivní.

Učení s učitelem

Při učení s učitelem trénovací data sestávají ze vstupních objektů (vektorů jejich příznaků) a jejich požadovaných výstupních ohodnocení, tj. závisle proměnných (obecně také ve tvaru vektorů), tj. +more výroků učitele o objektu. Podobně jako v biologických sítích je zde využita zpětná vazba. Neuronové síti je předložen vzor. Na základě aktuálního nastavení sítě je zjištěn aktuální výsledek. Ten porovnáme s vyžadovaným výsledkem a určíme chybu. Poté spočítáme nutnou korekci (dle typu neuronové sítě) a upravíme hodnoty vah či prahů, abychom snížili hodnotu chyby. Toto opakujeme až do dosažení námi stanovené minimální chyby. Poté je síť adaptována. Výstupem naučené funkce (jejíž příklady jsou obsaženy v trénovacích datech) pak mohou být spojité hodnoty (při regresi) anebo binární hodnoty označující příslušnost vstupních objektů do daných tříd (při klasifikaci). Naučená funkce pak dokáže odhadovat výstupní ohodnocení každého vstupního objektu (i neobsaženého v trénovacích datech) poté, co zpracuje trénovací příklady (tj. dvojice vstup a požadovaný výstup). Aby to dokázala, musí umět zobecnit (generalizovat) souvislost mezi vstupy a výstupy danou příklady obsaženými v trénovacích datech "smysluplným" způsobem.

Pozn. : Pokud se vstupní objekty shodují s požadovanými výstupními ohodnoceními, mluvíme o tzv. +more samoučení (self-supervised learning), tj. síť (např. autoenkodér) se pak učí tzv. autoasociativní fuknkci.

Učení bez učitele

Na rozdíl od učení s učitelem trénovací data při učení bez učitele nemají vstupní data provázaná s cílovými proměnnými (ohodnocením, závisle proměnnou. ), tj. +more schází výrok učitele a učení bez učitele tedy vykazuje samoorganizaci, která zachycuje vzory jako hustotu pravděpodobnosti. Učení bez učitele si tedy lze představit jako kompresi vstupních dat, např. například snížení jejich dimense (v analýze hlavních komponent) nebo jejich redukci na diskrétní body (jako je tomu ve shlukové analýze, kde vstupní data reprezentujeme označenými shluky), či jejich vyhlazení (odhad distribučních funkcí). U neuronových sítí se učení bez učitele užívá typicky u kompetičních sítí. Při učení bez učitele nevyhodnocujeme správnost výsledku. Při tomto učení nám vyžadovaný výsledek není znám. Síť dostává na vstup sadu vzorů, které si sama třídí přizpůsobením své topologie. Vzory třídí do skupin a reaguje dle jejich typického zástupce.

Pozn.: Kombinaci učení s učitelem a učení bez učitele označujeme jako semi-supervised learning.

Hebbovské učení

Hebbův princip učení lze popsat jako metodu určování, jak měnit váhy mezi umělými neurony. Váha mezi dvěma neurony se zvyšuje, pokud se oba neurony aktivují současně, a snižuje, pokud se aktivují odděleně. +more Uzly, které mají tendenci být buď oba pozitivní, nebo oba negativní současně, mají silné pozitivní váhy, zatímco ty, které mají tendenci být opačné, mají silné negativní váhy. Hebbovské učení se užívá u asociativních pamětí, jako je Hopfieldova či bidirektní síť.

Přeučení

Přeučení je stav, kdy je systém příliš přizpůsoben množině trénovacích dat, ale nemá schopnost generalizace a selhává na validační množině dat. To se může stát např. +more při malém rozsahu trénovací množiny nebo pokud je systém příliš komplexní, např. příliš mnoho skrytých neuronů v neuronové síti. Řešením je zvětšení trénovací množiny, snížení složitosti systému nebo různé techniky regularizace, jako je zavedení náhodného šumu (což v zásadě odpovídá rozšíření trénovací množiny), zavedení omezení na parametry systému, které v důsledku snižuje složitost popisu naučené funkce, nebo předčasné ukončení učení (průběžné sledování chyby na validační množině a konec učení ve chvíli, kdy se chyba na této množině dostane do svého minima).

Data

Data určená pro učení neuronové sítě se skládají ze vstupních vektorů dat a odpovídajících vstupních vektorů dat (učení s učitelem). Pro správné naučení inteligentního systému je obvykle potřeba dostatečně reprezentativní množství trénovacích dat. +more Inteligentní systémy jsou v podstatě funkce, které ze vstupního vektoru vypočítají výstupní vektor a podle rozdílu od správného výstupního vektoru upraví své vnitřní parametry. Tento proces se opakuje, dokud není systém dostatečně naučen. Při učení se používají trénovací data, validační data či testovací data. Tato data mají být disjunktní. Pomocí trénovacích dat probíhá vlastní učení, podle chování na validačních datech se kontroluje přeučování a na testovacích datech se určuje úspěšnost učení na nových, neznámých datech. Trénovací data se tedy dle způsobu užití dělí do tří skupin:.

Trénovací množina je sada dat, ve které algoritmus nachází určitý vztah mezi vstupy a výstupy, tj. provádí jejich regresní analýzu, čímž se učí.

Validační množina je sada dat, která se používají pro případnou úpravu parametrů učení (hyperparametrů) ve snaze vyhnout se jeho přeučení. Systém je správně naučený tehdy, jestliže se shodnou úspěšností vyhodnocuje trénovací množinu i validační množinu. +more Pokud má vyhodnocení trénovací množiny výrazně vyšší úspěšnost, je systém přeučený.

Testovací množina je sada dat, která se používají pro ověření kvality naučeného systému.

V případě učení bez učitele se trénovací data skládají pouze ze vstupních vektorů dat obsažených v trénovací množině.

Algoritmus zpětného šíření chyby

Gradientní sestup Algoritmus zpětného šíření chyby je typická metoda učení umělých neuronových sítí. +more Používá se u vícevrstvých sítí při učení s učitelem, tedy pokud je na množině příkladů použitých k učení vždy znám požadovaný výsledek. Zpětné šíření chyby je založeno na metodě gradientního sestupu.

Kvalita naučení umělé neuronové sítě je popsána chybovou funkcí, nejčastěji kvadratickou chybou:

: E\;=\;\frac{1}{2} \sum\limits^{N}_{j=1} \sum\limits^{n}_{i=1} (z_{ij}-y_{ij})^{2}\;=\;\sum\limits^{N}_{j=1} E_{j}, pak \Delta w\;=\;-\alpha {\partial E_{j} \over \partial w}

: E chyba : N počet vzorků předložených síti : n počet neuronů výstupní vrstvy : z_{ij} požadovaný výstup daného neuronu a daného vzorku : y_{ij} vypočítaný výstup daného neuronu a daného vzorku : \Delta w vektor přírůstků vah gradientního kroku : \alpha velikost gradientního kroku Zpětné šíření chyby

Jeden sestupný gradientní krok pak může vypadat následovně:

: w_{ij}\left(T\right)=w_{ij}\left(T-1\right)+\alpha \ y_i\left(T\right)\ g_j(x_j(T))+\mu \ \Delta w_{ij}\left(T-1\right) : {\vartheta }_i\left(T\right)={\vartheta }_i\left(T-1\right)+\alpha \ g_i(x_i(T))+\mu \ \Delta {\vartheta }_i\left(T-1\right) : p_i\left(T\right)=p_i\left(T-1\right)+\alpha \ x_i\left(T\right)\ g_i(x_i(T))+\mu \ \Delta p_i\left(T-1\right)

: g_k(x_k)=p_ky_k(1-y_k)(z_k-y_k) \ \ \ \ \ g_i(x_i)=p_iy_i\left(1-y_i\right) \sum_j{g_j(x_j)\ w_{ij}}

: k\in V_M, j\in V_L, i\in V_{L-1}, L\in \left\{2,\dots ,M\right\}, T\in \left\{1,\dots ,N\right\}

{{Sloupce|2| : x_i potenciál i-tého neuronu : y_i skutečný stav i-tého neuronu : z_i požadovaný stav i-tého neuronu : g_i adaptační funkce i-tého neuronu : p_i strmost aktivační funkce i-tého neuronu : \vartheta_i práh i-tého neuronu : w_{ij} váha vazby i-tého neuronu s j-tým neuronem : \alpha velikost gradientního kroku : \mu míra setrvačnosti gradientního sestupu : V_L populace neuronů L-té vrstvy : M počet vrstev sítě : \Delta předcházející přírůstek příslušné proměnné }}

Cílem učení je minimalizovat chybovou funkci závislou na vstupních vahách neuronů, přičemž gradientní sestup obecně najde pouze lokální minimum, proto se do gradientního sestupu zavádí jistá jeho setrvačnost, spočívající v míře respektování směru jeho minulého sestupného kroku, tj. k aktuálnímu gradientu se připočte minulý gradient a aktuální sestupný krok se provede ve směru jejich součtu, tato deformace gradientního sestupu pak umožní vyklouznutí z mělkého lokálního minima. +more Učení neuronové sítě spočívá ve změně vah vstupů neuronů. Algoritmus zpětného šíření chyby v každém kroku postupuje v následujících třech fázích:.

* Aplikují se vzorky a pro každý vzorek se postupně směrem vpřed napočítají výstupy (vstupní signál se sítí šíří směrem dopředu). * Napočítané výstupy se porovnají s požadovanými výstupy, tj. +more spočte se chyba, jak byla popsána výše. * Na základě spočtené chyby se počítají hodnoty adaptačních funkcí ve směru od poslední vrstvy k první vrstvě (pro výpočet hodnoty adaptačních funkcí podřazené vrstvy již musí být vypočteny hodnoty adaptačních funkcí nadřazené vrstvy), tj. spočítá se gradient chybové funkce, na základě kterého se provede sestupný gradientní krok, tj. upraví se vstupní váhy neuronů tak, že klesne hodnota chyby. Výpočet tedy postupuje zpětně od výstupní vrstvy až po vstupní vrstvu (odtud zpětné šíření chyby), váhy se mění podle jejich vlivu na chybu.

Hluboké učení

Míra změn vah po jednotlivých vrstvách, daná tlumením zpětného šíření chyby, tj. +more první tři vrstvy se neučí prakticky vůbec, smysluplně se učí pouze poslední tři. Hluboké učení je disciplína v rámci strojového učení, která se zabývá učením neuronových sítí s velkou hloubkou. Hloubkou modelu se myslí počet vrstev neuronů, které jsou za sebou zapojeny tak, že výstup jedné vrstvy je vstupem vrstvy následující. U modelů hlubokého učení se přitom hloubka nachází často v řádech desítek a více vrstev. Pro odhad parametrů sítě (trénování) se obvykle používá algoritmus zpětného šíření chyby. Trénování probíhá ve dvou fázích, tj. nejprve předučení sítě dopředným směrem např. pomocí autoenkodérů (učení bez učitele) a poté doučení sítě zpětným směrem (učení s učitelem), eliminuje se tak tlumení zpětného šíření chyby. Metodologie hlubokého učení se prosadila kolem roku 2010 jako základní možnost pro řešení složitých problémů strojového učení jako je klasifikace obrazů, mluvené či psané řeči nebo překlady z jednoho přirozeného jazyka do jiného.

Modulární neuronová síť

Biologické studie ukazují, že lidský mozek nepracuje jako jediná masivní síť, ale jako soubor malých sítí. Tento výzkum dal zrod konceptu modulárních neuronových sítí, ve kterých několik malých sítí spolupracuje nebo soutěží, aby vyřešily daný problém.

Komise strojů

Komise strojů (Committee of Machines; CoM) je soubor různých modelů, které „hlasují“ pro zadaný příklad. To obvykle dává lepší výsledky ve srovnaní s dalšími modely neuronových sítí. +more Tyto metoda směřuje ke stabilizaci výsledku. Je podobná obecné metodě bagging, až na to, že nutná rozmanitost strojů se získává trénováním vycházejícím z různých náhodně vybraných startovních vah, oproti trénování na různých náhodně vybraných podmnožinách trénovacích dat.

Asociativní neuronové sítě (ASNN)

Asociativní neuronové sítě jsou rozšíření CoM, které jde za jednoduché průměrování výsledků různých neuronových sítí. ASNN představuje kombinaci souboru dopředných neuronových sítí a techniky k-nejbližšího souseda. +more Tato metoda používá korelaci mezi jednotlivými odezvami sítí souboru jako míru vzdálenosti mezi analyzovanými vzory pro techniku k-nejbližšího souseda. Asociativní neuronová síť má paměť, která obsahuje tréninkovou sadu vzorů. Pokud jsou k dispozici nová data v tréninkové sadě neobsažená, síť poskytuje přiměřenou aproximaci jejich odezvy bez nutnosti přetrénování souboru neuronových sítí, a to korekcí zkreslení nových dat vůči tréninkové sadě. Tato vlastnost ASNN zlepšuje její prediktivní schopnost oproti tradičním neuronovým sítím.

Reference

Externí odkazy

[url=http://www.obitko.com/tutorials/predpovidani-neuronovou-siti/]Předpovídání pomocí neuronové sítě[/url] - včetně Java appletu pro experimenty s předpovídáním funkce

Kategorie:Umělé neuronové sítě

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top