Umělá neuronová síť

Z Wikipedie, otevřené encyklopedie
Skočit na navigaci Skočit na vyhledávání
Architektura neuronové sítě: rekurentní autoasociativní paměť, samorganizující síť, vícevrstvý perceptron.

Umělá neuronová síť je jeden z výpočetních modelů používaných v umělé inteligenci. Jejím vzorem je chování odpovídajících biologických struktur. 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ž předobrazem je biologický neuron. Neurony jsou vzájemně propojeny synaptickými vazbami a navzájem si předávají signály a transformují je pomocí přenosových funkcí. Neuron má libovolný počet vstupů, ale pouze jeden výstup.

Neuronové sítě se používají mimo jiné pro rozpoznávání obrazů (např. ve formě pixelů) či akustických (např. rozpoznávání řeči) nebo elektrických (např. EKG, EEG) signálů, dále ke klasifikaci, segmentaci či kompresi dat, k předvídání vývoje časových řad (např. burzovních indexů), k rozpoznávání 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[editovat | editovat zdroj]

První umělé neurony byly vytvořeny Warrenem McCullochem a Walterem[1] 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. 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[2] s perceptrony, které doprovází již i učící pravidla. Perceptrony využívá k rozpoznávání vzorů. 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ě[3], který později částečně upadá díky neschopnosti učit sítě o větším počtu vrstev. 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ů[4][5][6] 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. Kelley v roce 1960[7] a Arthur E. Bryson v roce 1961.[8] Roku 1962 publikoval Stuart Dreyfus jednodušší odvození pomocí řetězového pravidla.[9] Vladimir Vapnik cituje ve své knize o support vector machines článek z roku 1963.[10] V roce 1969 Bryson a Yu-Chi Ho algoritmus popsali jako vícestupňovou optimalizaci dynamických systémů.

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

V roce 1973 Stuart Dreyfus pomocí zpětného šíření chyby upravoval parametry řídicích systémů úměrně jejich chybovým gradientům.[15] Paul Werbos zmínil možnost uplatnění tohoto principu na umělé neuronové sítě roku 1974 [16] a v roce 1982 tak učinil způsobem, který se používá nyní.[17] 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í.[18] V roce 1993 byl Eric A. Wan první, kdo vyhrál pomocí backpropagace mezinárodní soutěž v modelování dat.[19]

Model umělého neuronu[editovat | editovat zdroj]

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.[20] Jedním z nejpoužívanějších je model popsaný McCullochem a Pittsem:

kde:

  • jsou vstupy neuronu
  • jsou synaptické váhy
  • je práh
  • je aktivační funkce neuronu
  • je výstup neuronu

Velikost vah vyjadřuje uložení zkušeností do neuronu. Čím je vyšší hodnota, tím je daný vstup důležitější. V biologickém neuronu práh označuje prahovou hodnotu aktivace neuronu. Tzn. je-li menší než práh, je neuron pasivní (inhibovaný) a je-li větší než práh, je neuron aktivní (excitovaný).

Aktivační funkce[editovat | editovat zdroj]

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.

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. Nelineární aktivační funkce umožňují neuronovým sítím řešit netriviální problémy při malém počtu neuronů. Často se užívá sigmoida 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 a ostrá nelinearita pro strmost blížící se nule:

pak a pro resp. pro dostaneme resp.

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: – z ad 1) a ad 2) (viz níže) plyne

ad 1) z plyne

ad 2) z plyne

  • Gaussova křivka: – z plyne
  • Mexický klobouk: – 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í konstanty (vlevo od počátku) s identitou (vpravo od počátku)
  • Radiální báze – Gaussova křivka resp. mexický klobouk

Architektury sítě[editovat | editovat zdroj]

Podle způsobů propojení neuronů existuje více různých architektur neuronových sítí, například:

Učení neuronové sítě[editovat | editovat zdroj]

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. 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 a učení bez učitele. 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[editovat | editovat zdroj]

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. 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.[21]

Učení bez učitele[editovat | editovat zdroj]

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. schází výrok učitele a učení bez učitele tedy vykazuje samoorganizaci, která zachycuje vzory jako hustotu pravděpodobnosti.[22] 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.[23]

Hebbovské učení[editovat | editovat zdroj]

Hebbův [24] 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ě. 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 rekurentní lineární, Hopfieldova či bidirektní síť.

Přeučení[editovat | editovat zdroj]

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ř. 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[editovat | editovat zdroj]

V umělé inteligenci nebo strojovém učení se trénovací data 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. 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, např. 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. 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[editovat | editovat zdroj]

Gradientní sestup

Algoritmus zpětného šíření chyby je typická metoda učení umělých neuronových sítí. 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:[25]

, pak
chyba
počet vzorků předložených síti
počet neuronů výstupní vrstvy
požadovaný výstup daného neuronu a daného vzorku
vypočítaný výstup daného neuronu a daného vzorku
vektor přírůstků vah gradientního kroku
velikost gradientního kroku
Zpětné šíření chyby

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

potenciál i-tého neuronu
skutečný stav i-tého neuronu
požadovaný stav i-tého neuronu
adaptační funkce i-tého neuronu
strmost aktivační funkce i-tého neuronu
práh i-tého neuronu
váha vazby i-tého neuronu s j-tým neuronem
velikost gradientního kroku
míra setrvačnosti gradientního sestupu
populace neuronů L-té vrstvy
počet vrstev sítě
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. 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. 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í[editovat | editovat zdroj]

Míra změn vah po jednotlivých vrstvách, daná tlumením zpětného šíření chyby, tj. první tři vrstvy se neučí prakticky vůbec, smysluplně se učí pouze poslední tři.

Hluboké učení[26] 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íť[editovat | editovat zdroj]

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ů[editovat | editovat zdroj]

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í. 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)[editovat | editovat zdroj]

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. 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[editovat | editovat zdroj]

  1. MCCULLOCH, W. S. T.; PITTS, W. A logical calculus of the ideas immanent in nervous activity. Bulletin of Mathematical Biophysics 5. [s.l.]: [s.n.], 1943. 19 s. (anglicky) 
  2. ROSENBLATT, F. The Perceptron - a perceiving and recognizing automaton, Report 85–460–1, Cornell Aeronautical Laboratory. [s.l.]: [s.n.], 1957. (anglicky) 
  3. HAGAN, Martin T. Neural network design. druhé. vyd. [s.l.]: [s.n.], 2014. 800 s. Dostupné online. (anglicky) 
  4. Stuart Dreyfus: Artificial Neural Networks, Back Propagation and the Kelley-Bryson Gradient Procedure. In: J. Guidance, Control and Dynamics. 1990.
  5. Jürgen Schmidhuber: Deep learning in neural networks: An overview. In: Neural Networks. 61, 2015, S. 85–117. ArXiv
  6. Jürgen Schmidhuber: Deep Learning. In: Scholarpedia. 10(11), 2015, S. 328–332. Section on Backpropagation
  7. Henry J. Kelley: Gradient theory of optimal flight paths. In: Ars Journal. 30(10), 1960, S. 947–954. (online)
  8. Arthur E. Bryson: A gradient method for optimizing multi-stage allocation processes. In: Proceedings of the Harvard Univ. Symposium on digital computers and their applications. April 1961.
  9. Stuart Dreyfus: The numerical solution of variational problems. In: Journal of Mathematical Analysis and Applications. 5(1), 1962, S. 30–45. (online)
  10. A. E. Bryson, W. F. Denham, S. E. Dreyfus: Optimal programming problems with inequality constraints. I: Necessary conditions for extremal solutions. In: AIAA J. 1, 11, 1963, S. 2544–2550.
  11. Seppo Linnainmaa: The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors. Master’s Thesis (in Finnish), Univ. Helsinki, 1970, S. 6–7.
  12. Seppo Linnainmaa: Taylor expansion of the accumulated rounding error.In: BIT Numerical Mathematics. 16(2), 1976, S. 146–160.
  13. Andreas Griewank: Who Invented the Reverse Mode of Differentiation? Optimization Stories. In: Documenta Matematica. Extra Volume ISMP, 2012, S. 389–400.
  14. Andreas Griewank, Andrea Walther: Principles and Techniques of Algorithmic Differentiation. 2. Auflage. SIAM, 2008.
  15. Stuart Dreyfus: The computational solution of optimal control problems with time lag. In: IEEE Transactions on Automatic Control. 18(4), 1973, S. 383–385.
  16. Paul Werbos: Beyond regression: New tools for prediction and analysis in the behavioral sciences. PhD thesis. Harvard University 1974.
  17. Paul Werbos: Applications of advances in nonlinear sensitivity analysis. In: System modeling and optimization. Springer, Berlin/ Heidelberg 1982, S. 762–770. (online)
  18. David E. Rumelhart, Geoffrey E. Hinton, Ronald J. Williams: Learning representations by back-propagating errors. In: Nature. Band 323, 1986, S. 533–536.
  19. Eric A. Wan: Time series prediction by using a connectionist network with internal delay lines. In: Santa Fe Institute Studies in the Sciences of Complexity-Proceedings. Vol. 15, Addison-Wesley Publishing Co., 1993, S. 195–195.
  20. HINDMARSH, J. L.; ROSE, R. M. A model of neuronal bursting using three coupled first order differential equations. Biological Sciences 221 (1222). London: The Royal Society, 1984. 16 s. (anglicky) 
  21. GENTLEMAN, R.; CAREY, V. J. Supervised Machine Learning. Bioconductor Case Studies. New York: Springer, 2008. 16 s. ISBN 978-0-387-77239-4. (anglicky) 
  22. HINTON, Geoffrey; SEJNOWSKI, Terrence. Unsupervised Learning: Foundations of Neural Computation. [s.l.]: MIT Press, 1999. ISBN 978-0262581684. (anglicky) 
  23. GENTLEMAN, R.; CAREY, V. J. Unsupervised Machine Learning. Bioconductor Case Studies. New York: Springer, 2008. 21 s. ISBN 978-0-387-77239-4. (anglicky) 
  24. HEBB, D.O. The Organization of Behavior. New York: Wiley & Sons, 1949. Dostupné online. (anglicky) 
  25. a b KŘIVAN, Miloš. Umělé neuronové sítě. první. vyd. Praha: Oeconomica, 2021. 76 s. Dostupné online. ISBN 978-80-245-2420-7. 
  26. GOODFELLOW, Ian; BENGIO, Yoshua; COURVILLE, Aaron. Deep Learning. [s.l.]: MIT Press, 2016. 767 s. Dostupné online. (anglicky) 

Externí odkazy[editovat | editovat zdroj]