}w!"#$%&'()+,-./012345<ya

Size: px
Start display at page:

Download "}w!"#$%&'()+,-./012345<ya"

Transcription

1 Masarykova univerzita Fakulta informatiky }w!"#$%&'()+,-./012345<ya Hlboké neurónové siete pre spracovanie multimédií Diplomová práca Bc. Michal Lukáč Brno, 2016

2 Prehlásenie Prehlasujem, že táto diplomová práca je mojím pôvodným autorským dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene a literatúru, ktoré som pri vypracovaní používal alebo z nich čerpal, v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj. Bc. Michal Lukáč Vedúci práce: RNDr. David Novák, Ph.D. ii

3 Poďakovanie Chcem sa poďakovať svojmu vedúcemu práce RNDr. Davidovi Novákovi, Ph.D. za vedenie a neoceniteľné rady pri písaní práce. Taktiež chcem poďakovať RNDr. Michalovi Batkovi, Ph.D za pomoc pri správe výpočtového stroja. Na záver ďakujem rodine a najbližším za podporu počas celého štúdia. iii

4 Zhrnutie Táto práca sa zaoberá hlbokými neurónovými sieťami pre spracovanie multimediálných dát so zameraním na obrazové dáta. Sú preskúmané viaceré modely, postupy a frameworky ktoré sa aplikujú v súčasnosti pri tvorbe modelov. Pomocou existujúcich knižníc sú vytvorené modely neurónových sietí pre experimenty nad obrazovými a pohybovými dátami. Táto práca sa venuje hlavne technike transfer learning teda využitiu existujúcich modelov neurónových sietí. Spracovanie multimediálnych dát je ukázané pomocou konvolučných sietí, rekurentných sietí a autoenkóderov. iv

5 Kľúčové slová neurón, neurónová sieť, hlboké siete, spracovanie multimédií, gradientné učenie, pretrénovanie, konvolúcia, transfer learning, deskriptor, autoenkóder v

6 Obsah 1 Úvod Úvod do neurónových sietí História neurónových sietí Model neurónu Neurónová sieť Topológia siete Dynamika siete Učenie siete Architektúra neurónových sietí Konvolučná neurónová sieť Rekurentná neurónová sieť Autoenkóder Siete s veľkým počtom vrstiev Nástroje pre vytváranie modelov Caffe Theano TensorFlow Keras Experimenty a vyhodnotenie Caltech MSRC-12 Kinect gesture MSR-Action3D Motion Záver A Obsah priloženého CD vi

7 1 Úvod Táto diplomová práca sa zaoberá špeciálnymi modelmi zo strojového učenia nazývaných neurónové siete. Dnes už sa pre celú oblasť neurónových sietí používa anglický pojem deep learning (v preklade hlboké učenie, prípadne hlboké siete). Daný pojem v práci ale aj niektoré ostatné pojmy neuvádzam v slovenskom ani v českom preklade, keďže nie sú momentálne zaužívané v našej literatúre. Tréning neurónových sietí bol pred pár rokmi považovaný za obtiažny, keďže vyžaduje netradičné prístupy, vysoký výpočetný výkon a veľké množstvo trénovacích dát [1]. Pokroky vo vývoji modelov uľahčili dobre anotované dáta akým je napríklad dátová sada Imagenet [2], nové typy vrstiev, výpočet na grafický kartách, techniky pre inicializáciu váh a trénovania [3] [4] [5]. Naviac veľkou výhodou neurónových sietí je, že dokážu dáta nielen klasifikovať alebo predikovať ale aj generovať [6]. Cieľom práce je vysvetliť modely hlbokých neurónových sietí a ukázať možnosti spracovania multimediálnych dát. Zameral som sa na obrazové a pohybové dáta. Ďaľším cieľom práce je využiť existujúce modely pre adaptáciu teda dotrénovania na nový problém a demonštrovať tak schopnosť takýchto modelov. Spracovanie multimediálnych dát je traba ukázať na experimentoch pomocou aktuálnych knižníc a frameworkov, ktoré je potreba naštudovať. Kapitola 2 sa zaoberá úvodom do neurónových sietí, je popísaný model neurónu a dopredná neurónová sieť. Sú vysvetlené základne pojmy ako topológia siete, aktivačná funkcia, váhy a trénovanie siete. V kapitole 3 ukazujem rôzne druhy neurónových sietí akým je napríklad model konvolučnej alebo rekurentnej siete a taktiež vysvetľujem techniky dotrénovania existujúcich modelov. Bez kvalitných knižníc a frameworkov pre tieto modely by bol výskum neurónových sietí ťažší. Tieto nástroje sú popísané v kapitole 4. V predposlednej kapitole sú popísané experimenty a výsledky pre rôzne dátové sady a problémy. 1

8 2 Úvod do neurónových sietí V tejto kapitole je popísaný základny koncept neurónovych sietí. Na úvod je ukázaná história neurónových sietí. Následne je popísaný neurón teda základná stavebná jednotka neurónových sietí. V podkapitole 2.3 je vysvetlený model neurónovej siete. Sú vysvetlené pojmy ako topológia siete, aktívna dynamika siete a spôsob učenia siete. 2.1 História neurónových sietí História neurónových sietí siaha až do roku 1943 kedy doktor Warren McCulloch a matematik Walter Pitts skúmali možnosti fungovania mozgu a neurónov. Spoločná práca [7] týchto dvoch vedcov popisovala vôbec prvý matematický model neurónu a vytvorili tak základ pre ďaľší výskum. Koncom 40 rokov minulého storočia vznikla práca psychológa Donalda Hebba v oblasti teórie učenia mozgu a neurónov. V tejto práci Hebb tvrdil, že spoj medzi dvoma neurónmi sa posíli pokiaľ sú oba neuróny súhlasne odpálené. Toto posílenie je väčšie teda prenos je efektívnejší čoraz častejším a pravidelnejším odpalovaním oboch neurónov. Následný pokrok v elektrotechnike a informatike a rozvoji počítačov umožnil lepší výskum umelých neurónových sietí. Prvý umelý neurón vytvoril Minsky a na konci 50 rokov bol vytvorený Perceptron [8] americkým psychológom Frankom Rossenblatom. Bola to prvá neurónová sieť so schopnosťou učenia. Táto neurónová sieť bola vytvorená na sálovom počítači Mark I a jej úlohou bolo rozpoznávať obrazce zo 400 fotobuniek, pričom váhy siete boli zakódované do potenciometrov. Na začiatku 60 rokov sa objavila sieť ADALINE, ktorá sa učila pomocou metódy gradientného zostupu. V ďaľších rokoch bol navzdory úspechu Perceptronu a ADALINE výskum sietí utlmený, keďže neurónové siete si vyžadovali vyšší výpočetný výkon, než ktorý bol vtedy dostupný. Taktiež vývoju nepomohla publikácia Perceptrons od Minského a Paperta, ktorá ukázala neschopnosť vtedajších sietí aproximovať jednoduchú funkciu akou je XOR. Nasledujúcich dvadsať rokov vychádzali nové publikácie a články z tejto oblasti veľmi sporadicky. Na začiatku 80 rokov bola vytvorená sieť Neocognitron inšpirovaná na základe vizuálneho 2

9 2. Úvod do neurónových sietí cortexu. Na základe siete Neocognitron bola vytvorená prvá konvolučná neurónová sieť, ktorá sa nazýva LeNet5 [9]. Od polky osemdesiatich rokov, znovu nastal nástup sietí kedy skupina okolo Geoffrey Hintona vytvorila (respektíve znovuobjavila) algoritmus spätnej propagácie [10] pre efektívne učenie siete. Algoritmus spätnej propagácie bol v podstate znovuobjavený, keďže bol popísaný v dizertačnej práci Paula Werbosa z roku Tento algoritmus je založený na gradientnom učení a vyžaduje prechod veľkého vzorku dát. V osemdesiatych rokoch sa taktiež objavili ďaľšie typy sietí ako samoorganizujúce siete (Kohonenova mapa), Hopfieldova sieť a Neocognitron (rozpoznávanie písaných číslic). V roku 1989 vznikol systém pre riadenia automobilu založený na doprednej neurónovej sieti s názvom ALVINN [11]. Tento systém sa učil riadiť motorové vozidlo. Vstup do neurónovej sieti tvoril obraz o rozlišní 32x30 pixelov, ktorý dodávala kamera. Každý vstupný neurón bol napojený na päť neurónov na skrytú vrstvu. Výstupnú vrstvu reprezentoval smer, ktorým sa auto pohybovalo. Ďaľšou zaujímavou aplikáciou, ktorá sa objavila bola NETTalk. Táto sieť sa učila vyslovovať anglické slová na základe textového vstupu. Ku koncu 80 rokov publikoval George Cybenko dôkaz [12] o tom, že neurónové siete sú univerzálnymi aproximátormi spojitých funkcií. TELO NEURÓNU AXÓN JADRO BUNKY SCHWANNOVA BUNKA BIOLOGICKÝ NEURÓN DENDRITY Obr. 2.1: Model biologického neurónu (obrázok prebratý z [13])., V priebehu 90-rokov sa objavovali aj hardwarové implementácie neurónových sietí, ktoré sa moc nerozšírili pre finančnú nákladnosť takýchto riešení. Náročnosť trénovania siete a nedostatočný výkon počítačov dala do popredia jednoduchšie algoritmy z oblasti strojo3

10 2. Úvod do neurónových sietí vého učenia. Sú to algoritmy ktoré dosahovali často lepšie výsledky ako neurónové siete napríklad SVM, NB, rozhodovací strom. Veľkým problémom sa stali siete s viacerým počtom vrstiev, ktoré trpeli problémom miznúceho gradientu a tak nemožnosťou natrénovania na daný problém. Ďalším problémom bol nedostatočne obsiahlé, kvalitné a dobre anotované datasety na ktorých by sa siete učili. S príchodom nového tisícročia a expandujúcou technikou do všetkých oblastí života boli konečne dostupné výpočtové zdroje a dáta pre ďaľší výskum. Práca od Hintona o efektívnom inicializovaní váh pomocou pretrénovania skrytých vrstiev na sieťach typu RBM(Restricted Boltzman Machines)opäť vzbudila záujem o túto oblasť [14]. Zaviedol sa pojem deep learning pre siete s väčším počtom vrstiev. Trénovanie sietí rapídne urýchlili moderné implementácie neurónových sietí na grafických kartách [15]. Veľký úspech dosiahli konvolučné neurónové siete s ReLU vrstvou v roku 2012 kedy vyhrali súťaž ILSVRC12 na najväčšom verejnom obrázkovom datasete na svete nazývanom Imagenet [2]. Dopad ich úspechu zmenili doterajšie zaužívané postupy v oblasti počítačového videnia. Zaujímavou sa stala práca Tomáša Mikolova v oblasti spracovania prirodzeného jazyka. Jeho architektúra siete word2vec umožnila namapovať slovo na vektor, ktorého položky vyjadrujú naučenú sémantiku. V roku 2015 anglická firma DeepMind vytvorila systém AlphaGo založený na neurónovej sieti [16]. Tento systém vôbec ako prvý dokázal poraziť profesionálneho hráča v hre Go. V priebehu histórie neurónových sietí si môžeme všimnúť tendenciu rastu počtu vrstiev [17], vývoji komplexnejšej architektúry a efektívnejšieho trénovania [18]. V súčasnosti sa využívajú neurónové siete od systémov pre vyhľadávanie, tagovanie, detekciu objektov, sociálnych sieťach až po autonómne automobily. 2.2 Model neurónu Neurón je základná stavebná jednotka nervovej sústavy a zároveň i umelých neurónových sietí. V tejto podkapitole je vysvetlená táto bunka a jej schopnosti z biologického i matematického hľadiska. 4

11 2. Úvod do neurónových sietí Biologický neurón Biologický neuron [13] je špecializovaná bunka, ktorá dokáže prenášať signál k ďaľším neurónom. Najčastejšie tvorí u živočíchov zoskupenie, ktoré nazývame nervová sústava. Biologický neurón rozdeľujeme do niekoľkých častí. Základom bunky je telo (soma) s bunkovým jadrom a výbežkami rozdelených na dendrity a neurity (axon). Výbežky neurónu tvoria synaptické spoje s ďaľšími neurónami. Dendrity signál do tela neurónu príjmajú a neurity zase signál vedú z tela neurónu na dendrity ďaľších neurónov. Akčný potenciál, ktorý sa šíri cez axón spôsobí, že na konci axónu sa začnú uvoľňovať chemické látky nazývané neurotransmitery. Tie prichádzajú na receptory čo spôsobí prenos iónov do ďaľšieho neurónu. Pokiaľ ióny prekročia určitý prah, opäť nastáva akčný potenciál a šírenie do ďaľších neurónových buniek. x1 x2 w1 w2 x0 = 1 w0 g(ξ) yn xn wn MATEMATICKÝ MODEL NEURÓNU Obr. 2.2: Matematický model neurónu. Umelý neurón Umelý neurón, teda tak ako ho poznáme dnes na počítači bol silne inšpirovaný biologickou nervovou bunkou. Umelý neurón je v podstate iba nepresný model biologického neurónu. Na obrázku 2.2 je načrtnutý umelý neurón. Premenné x 1,..., x n reprezentujú vstup teda vstupné hodnoty, ktoré sa šíria do neurónu. Váhy pre vstupy označujeme w 1,..., w 2 a sú značené šípkou od vstupu do tela. Premenná x 0 a váha w 0 označujú špeciálny neurón nazývaný bias, ktorý slúži ako hodnota pre ovplyvnenie aktivačnej funkcie neurónu. Tak ako pri- 5

12 2. Úvod do neurónových sietí chádzajú ióny do biologického neurónu existuje v umelom neuróne vnútorný potenciál neurónu z. n z = w 0 x 0 + w i x i (2.1) i=1 Vnútorný potenciál z je daný ako suma váh a vstupov, pričom sa dodatočne zaráta aj bias. Výstup z neurónu y sa vypočíta na základe vnútorného potenciálu a aktivačnej funkcie g: y = g(z) (2.2) Aktivačná funkcia sa využíva pri výstupe neurónu a slúži pre prahovanie vnútorného potenciálu. Spočiatku sa ako aktivačná funkcia využívala ostrá nelinearita, avšak nahradili ju sigmoidálne funkcie ako σ(x) alebo tanh(x) pre ich jednoduchú diferencovateľnosť. Sigmoidálne funkcie taktiež dokážu lepšie reprezentovať komplexnejšie funkcie [12]. V nasledujúcej tabulke sú ukázané základné aktivačné funkcie využívané v neurónových sieťach: Tabuľka 2.1 Názov Funkcia Obor hodnôt Logistická sigmoida g(x) = 1 (1+e x ) (0,1) Hyperbolický tangens g(x) = ex e x e x +e x (-1,1) ReLu g(x) = max(0, x) <0, ) Ostrá nelinearita g(x) = { 1 x > x 0.5 {0,1} Neurón ako binárny klasifikátor Majme neurónový model, ktorý tvorí jeden neurón. Nech aktivačná funkcia je typu σ(x) alebo ostrá nelinearita. Potom takýto model sa nazýva Perceptron [8]. Perceptron patrí medzi najjednoduchšie neurónové modely. To, čo umožňuje jeden neurón je, že dokáže reprezentovať jednoduchý binárny klasifikátor. Predpokladajme, že na obrázku je zobrazená dátová množina s dvomi kategóriami Y {0, 1}. 6

13 2. Úvod do neurónových sietí Cieľom Perceptronu je naučiť váhy W tohoto neurónu tak, aby dokázal rozdeliť tieto datá do dvoch kategórií. Pokiaľ je aktivačná funkcia g typu σ tak na výstup y = g(z) z takéhoto neurónu sa môžeme pozerať aj ako na pravdepodobnosť, že daný vstup x patrí do jednej z kategórie Y. Ak g(z) > 0.5 pre nejaký jeden vstup x tak označíme výstup z modelu y = 1. Intuitívne pokiaľ g(z) 0.5 tak označíme výstup z modelu kategóriou y = 0. Obr. 2.3: Zobrazenie rozdeľovacej línie pre binárny klasifikátor. 2.3 Neurónová sieť Nevýhodou perceptronu je, že dokáže rozdeliť, teda rozpoznať iba lineárne separovateľné dáta. Problémom sa stáva aj aproximácia jednoduchej funkcie akou je XOR. Perceptron teda jeden neurón nedokáže takúto funkciu aproximovať. Využitie viacerích neurónov a vytvorenie komplexnejšieho prepojenia umožňuje tento problém odstrániť. Previazanie viacerých neurónov do určitého uskupenia nazývame neurónová sieť. V reálnych problémoch nám často ale binárny klasifikátor nestačí. Preto musíme uvažovať aj problém kedy Y {1,..., C}, kde C > 2. Neurónová sieť oproti Perceptronu dokáže klasifikáciu do viacerích kategórií elegantne vyriešiť zavedením výstupnej vrstvy s neurónmi o počte C. Majme neurónovú sieť kde váhy siete označíme ako W. Nech výstup z poslednej skrytej vrstvy označíme ako h. Výstupná vrstva potom robí softmax klasifikáciu, niekedy označovanú aj ako multinomiálnu logistickú regresiu. Pravdepodobnosť, že daný prí- 7

14 2. Úvod do neurónových sietí VSTUPNÁ VRSTVA SKRYTÉ VRSTVY VÝSTUPNÁ VRSTVY x1 y1 x2 y2 Obr. 2.4: Dopredná neurónová sieť klad x patrí do kategórie c je daná predpisom: p(y = c x, W) = eh W,c(x) K j=1 eh W,j(x) (2.3) Softmax klasifikácia alebo softmax vrstva v podstate normalizuje výstupy jednotlivých neurónov tak aby odpovedali pravdepodobnostiam Topológia siete Na obrázku 2.4 je ukázaná ako takáto jednoduchá sieť môže vypadať. Jednotlivé neuróny sú vedľa seba a tvoria vrstvu neurónov. Tieto vrstvy sa často napájajú za sebou. Takúto sieť označujeme ako doprednú, keďže neuróny šíria signál teda vstup jediným smerom na výstup. V skutočnosti sa signál nemusí šíriť iba dopredne ale môžu existovať v sieti aj spätné prepojenia medzi neurónmi prípadne celými vrstvami. Vtedy hovoríme o rekurentných sieťach. V literatúre môžeme nájsť rozdelenie na rekurentné a dopredné siete pod pojmom ako architektúra, topológia alebo organizačná dynamika siete [19]. V oblasti neurónových sieťach nie sú pojmy jednotné a ucelené a naprieč rôznymi zdrojmy, literatúrou a článkami sa môžu líšiť. Niektoré zdroje napríklad vstupné data označujú ako prvú vrstvu teda vstupnú vrstvu neurónov a niektoré označujú za prvú vrstvu až vrstvu za vstupnou. Takáto vrstva je klasicky označovaná ako skrytá vrstva na obrázku 2.4 označená zelenou farbou. Výstup zo siete (žltá farba) je označovaný ako výstupná vrstva neurónovej siete. 8

15 2. Úvod do neurónových sietí Dynamika siete V neurónových sieťach rozdelujeme dynamiku siete na adaptivnú a aktivnú [19]. O adaptivnej dynamike hovoríme vtedy, keď sa snažíme pomocou algoritmu nájsť vhodné parametre a váhy modelu. Adaptívna dynamika označuje učenie siete, tréning. To znamená, že sieť sa v čase adaptuje-mení na základe vstupných dát, definovaného problému a učiaceho algoritmu. To, že sa sieť adaptuje znamená, že mení svoje váhy. Aktívna dynamika definuje ako výpočet siete pre vstup prebieha. Do aktívnej dynamiky zaraďujeme aj definovanie počiatočného stavu siete. Je treba si uvedomiť že aktívna dynamika nemení váhy neurónov Učenie siete V nasledujúcich sekciach je popísaný spôsob učenia neurónových sietí (adaptivná dynamika). Je vysvetlená objektívna teda chybová funkcia a popísané gradientné učenie sietí s algoritmom spätného šírenia chyby. Sú vysvetlené techniky a problémy v efektívnom trénovaní sietí. Chybová funkcia V strojovom učení sa často hovorí o takzvanej chybovej funkcii, ktorá vyjadruje celkovú veľkosť chyby, ktorú sa dopustí predikčný systém. Algoritmy v strojovom učení nachádzajú svoje parametre na základe chybovej funkcií. Takúto chybovú funkciu označíme ako J(W), kde W označuje váhy neurónovej siete. Ideálne chceme aby sa hodnota chybovej funkcie počas trénovaniu znižovala. Nech x (i) a y (i) označuje vstupný príklad z datovej množiny T = 1...m pričom i T. Vstup x označuje vstup pre sieť a y očakávanú hodnotu, ktorú sa má sieť naučit predikovať. Túto predpoveď teda výstup zo siete označíme ako ŷ. Chybovú funkciu zapíšeme matematicky ako: J(W) = m l(x (i), y (i), W) + λr(w) (2.4) i=1 Funkcia l(x (i), y (i), W) vyjadruje čiastkovú chybu teda chybu pre jeden trénovací príklad. Funkcia J(X, Y, W) reprezentuje celkovú chybu 9

16 2. Úvod do neurónových sietí pre všetky dáta. Druhá časť rovnice pridáva dodatočnú penalizáciu do výslednej hodnoty a nazýva sa regularizácia. Vysvetlenie regularizácie a regularizačného parametru je uvedené v nižšich sekciách tejto kapitole. Pokiaľ učíme sieť na klasifikáciu do dvoch kategórií teda C = 2, môžeme využiť chybovú funkciu nazývanú binárna krížová entropia(taktiež označovaná ako logistická chybová funkcia): J(W) = 1 m [ m i=1 y (i) log(ŷ (i) ) + (1 y (i) )log(1 ŷ (i) )] (2.5) Ako vidíme hodnotu sumy čiastkovej chyby môžeme vydeliť počtom príkladov trénovacej množiny. Pre klasifikáciu do viacerých kategórií sa využíva kategorická krížová entropia, niekedy označovaná aj ako multinomiálna logistická chybová funkcia: J(W) = 1 m [ m i=1 K y (i) k k=1 log(ŷ (i) ) + (1 y (i) k )log(1 ŷ(i) )] (2.6) V regresii môžeme napríklad použiť euklidovskú vzdialenosť: J(W) = 1 m 2m y (i) ŷ (i) 2 2 (2.7) i=1 Kde ŷ (i) a y (i) je vektor reálnych čísel. V klasifikácií je vektor ŷ (i) často reprezentovaný pomocou techniky One-Hot-Encoding. Pre rôzne problémy a dáta je možné využívať a vytvárať ďaľšie chybové funkcie pre hodnotenie a hľadanie parametrov algoritmu. Algoritmus spätného šírenia chyby Učenie siete je v podstate hľadanie váh s ktorými bude hodnota chybovej funkcie čo najmenšia. V strojovom učení obecne existujú viaceré metódy optimalizácie parametrov ako simulované žíhanie, genetické algoritmy a ďaľšie. Využívajú sa taktiež gradientné metódy ako algoritmus Gradient Descent a jeho ďaľšie modifikácie. Gradient je vektorové pole funkcie G a udáva smer rastu funkcie: G = ( G x 1,..., G x n ) (2.8) 10

17 2. Úvod do neurónových sietí Pokiaľ funkcia obsahuje iba jednu premennú hovoríme o derivácií. Algoritmus gradient descent využíva vlastnosti tohoto smeru. Výpočet hľadania váh je definovaný nasledujúcim predpisom: W j+1 = W j α 1 J(W) (2.9) M Kde W j+1 je výpočet nového porametru W j, M je počet trénovacích príkladov s ktorými sa výpočet prevádza a α je učiaci krok algoritmu. Nech m je počet všetkých trénovacích príkladov, potom algoritmus gradient descent môžeme rozdeliť na: Batch Gradient Descent Pokiaľ M = m hovoríme o klasickom gradient descent. Aktualizácia váh prebieha pri výpočte s celou trénovacou množinou. Stochastic Gradient Descent Pokiaľ M = 1 hovoríme o online učení. Váhy sa aktualizujú pri výpočte s jedným trénovacím príkladom. Mini-Batch Gradient Descent Pokiaľ 1 < M < m hovoríme o Mini-Batch Gradient Descent. V takomto prípade sa váhy aktualizujú pri výpočte s určitou podmnožinou. Častokrát nie je možnosť načítať všetky dáta do pamäti a spočítať tak gradient s ktorým by sme upravili váhy. Klasický Gradient Descent môže byť výpočetne neefektívny. Preto sa využívajú modifikácie mini-batch a online učenia. V neurónových sieťach je najznámejšou učiacou technikou algoritmus spätného šírenia chyby (anglicky Backpropagation). Táta technika je založená na gradientnom učení a je teda podobná algoritmu Gradient Descent. Uvažujme online učenie. Najskôr sa dopredným prechodom spočíta výstup siete ŷ pre trénovací príklad x (i). Dopredný prechod je daný aktívnou dynamikou siete, klasicky pri dopredných 11

18 2. Úvod do neurónových sietí sieťach spočítame výstupy z vrstiev. Pre sieť s jednou skrytou vrstvou vypočítame výstup z vrstiev následne: a 1 = x (i) z 2 = W 1 a 1 a 2 = g(z 2 ) z 3 = W 2 a 2 a 3 = g(z 3 ) (2.10) Pre poslednú vrstvu l spočítame chybu, ktorej sa sieť dopustila: δ l = a l y (i) (2.11) Pričom a l je výstup z poslednej vrstvy, teda a l = ŷ (i). Pre ďaľšie skryté vrstvy dopočítam chybu: δ l 1 = (W l 1 ) T δ l. σ(z l 1 ) δ l 2 = (W l 2 ) T δ l 1. σ(z l 2 )... (2.12) Derivácia aktivačnej funkcie σ sa spočíta ako: dσ = σ(x)(1 σ(x)) (2.13) dx Na základe δ teda chýb ktorej sa sieť dopustila vypočítame gradienty pre vrstvy: W (l) = δ (l+1) (a (l) ) T (2.14) Po dopočítaní gradientov pre vrstvy upravíme samotné váhy: W (l) = W (l) α W (l) (2.15) Algoritmus pre spätné šírenie chyby môžeme modifikovať pre online i mini-batch spôsob. Algoritmus pre jednu epochu-jeden prechod cez trénovaciu množinu vypadá následovne (pri reálnom trénovaní siete, je treba viackrát prejsť cez trénovaciu množinu a sledovať hodnotu objektívnej funkcie): 12

19 2. Úvod do neurónových sietí Listing 2.1: Algoritmus spätného šírenia chyby. W = InicializujVahy() X, Y = NacitajData() # vypocet jednej epochy/prechodu cez datovu mnozinu for i in range(len(m)): # spocitaj dopredn prechod pre x i a 1 = x (i), z 2 = W 1 a 1, a 2 = σ(z 2 ),... # vyhodnot chybu δ l = a l y i,... # spocitaj gradienty pre vrstvy l total = l total + δl+1 (a (l) ) T,... # uprav vhy W l = W l α l total m,... Ako vidíme, tak tréning neurónových sietí sa začína počiatočnou inicializáciou všetkých váh siete. Všetky váhy by počas trénovania zostali rovnaké kebyže sú nastavené iniciálne na takú istú hodnotu. Preto sa váhy nastavujú náhodne na hodnotu z intervalu ( ɛ, ɛ), kde ɛ je malé číslo z intervalu (0, 1). Inteligentná inicializácia váh je uvedená v ďaľších sekciách nižšie. Trénovací dataset sa môže prechádzať postupne po jednom príkladu x i, pričom sa spočíta dopredný prechod. Po získaní výstupu zo siete sa vyhodnotí chyba δ, ktorá sa spočíta pre ďaľšie skryté vrstvy spätne. Na základe chýb δ a výstupov z vrstiev a sa spočítaju gradienty pre každú vrstvu. Gradient môžeme akumulovať postupne a po prechode cez dataset upraviť váhy, prípadne môžeme upravovať váhy ihneď, teda využiť spôsobu online učenia. Prevencia proti preučeniu Čím má sieť viac vrstiev a neurónov tým teoreticky lepšie dokáže aproximovať nejakú funkciu. Zvýšením počtu vrstiev a neurónov však často nastáva problém preučenia (anglicky overfitting). To znamená, že model má veľmi dobrú úspešnosť a nízku hodnotu chybovej funkcie pre trénovacie data. Ale pre testovacia dáta a v reálnom použití takýto model zlyháva. Problém preučenia spôsobuje teda slabú generalizáciu modelu. V nasledujúcich odstavcoch sú popísané tri základne techniky neurónových sietí proti preučeniu. 13

20 2. Úvod do neurónových sietí Regularizácia sa snaží ovplyvniť váhy tak aby sa predišlo preučeniu modelu zavedením dodatočnej penalizácie do chybovej/objektívnej funkcie. Regularizácia sa snaží držať váhy dostatočne nízke tak aby model bol čo najjednoduchší a mal vlastnosť dobrej generalizácie. Výhodou regularizácie je jednoduchá diferencovateľnosť a tak možnosť použiť ju v gradientnom učení: R(W) = λ L 1 2m l=1 s l i=1 s l+1 j=1 (W l ji )2 (2.16) Kde λ značí regularizačný parameter, m je počet trénovacích príkladov, l určuje skrytú vrstvu a i, j určujú spoj, teda váhu medzi neurónmi. Dropout [4] je technika trénovania proti preučeniu siete. Táto technika funguje tak, že počas učenia siete sa určitá časť aktivácií teda výstupov z niektorých skrytých vrstiev zahodí (nastaví na nulu). Pri spätnom šírení chyby sa nemusí taktiež s týmito neurónmi dočasne počítať. Preto sa upravujú iba určité váhy. Toto nastavenie sa robí pre každý trénovací príklad. Pri tejto technike sa definuje koľko percent výstupov bude takto vynulovaných. Voľba, zahodených neurónov je pre každý príklad vždy náhodná. Dropout sa v moderných frameworkoch implementuje ako špeciálny typ vrstvy s tým, že sa táto vrstva deaktivuje pri testovaní. Krížova validácia pomáha určiť parametre pre učenie neurónovej siete ako je napríklad učiaci krok alebo regularizačný parameter. Taktiež na základe krížovej validácie môžeme zvoliť architektúru modelu. Základom je rozdeliť trénovaciu množinu na k podmnožín. Pri trénovaní sa použije k 1 podmnožín a na poslednej množine sa vyhodnotí výsledok. Toto sa zopakuje k krát pre všetky kombinácie trénovacej a validačnej množiny. Výsledky sa spriemerujú a vyberú sa parametre s najlepším výsledkom. Opäť sa natrénuje model, tentoraz sa však trénovacia množina nerozdeluje a testuje sa až na finálnej testovacej sade. Ako poslednú možnosť proti preučeniu uvádzam pridanie náhodného šumu do trénovacích dát. Týmto spôsobom zväčšíme trénovaciu množinu a šum spôsobí, že sieť bude obecne lepšie generalizovať. 14

21 2. Úvod do neurónových sietí Problém miznúceho gradientu Moderné hlboké neurónové siete majú v súčasnosti desiatky vrstiev [17]. Trénovanie hlbokých neurónových sietí pomocou algoritmu spätného šírenia chyby je náročné pre problém miznúceho prípadne explodujúceho gradientu [1]. Tento problém popísal ako prvý Sepp Hochreiter v roku To znamená, že gradient má pri prechode cez vrstvy príliš malú alebo príliš veľkú hodnotu na to aby mohlo byť trénovanie možné alebo efektívne. Táto hodnota ešte viac mizne alebo exploduje s každou ďaľšou vrstvou. Ako sme si ukázali tak algoritmus trénovania neurónových sietí šíri korekciu pre váhy od poslednej vrstvy. Spravidla sa vrstvy od výstupu učia omnoho rýchlejšie než vrstvy bližšie k vstupu. Najčastejšie sa práve vyskytuje problém miznúceho gradientu. Intuitívne môžeme tento problém vysvetliť tak, že výsledok siete je tvorený prechodom cez mnoho nelineárnych aktivačných funkcií ako tangens alebo sigmoida. Derivácie týchto sigmoidálnych funkcií pri spätnej propagácií nadobúdajú hodnoty ktoré sú zhora ohraničené jednotkou. Taktiež váhy siete sú často inicializované náhodne pomocou určitého rozloženia a nepresahujú hodnotu 1. Pri spätnom prechode je gradient čoraz menší a prvé vrstvy (od vstupu) nie sú tak schopné efektívnemu učeniu. V skutočnosti toto zmenšovanie môže byť až exponenciálne čo do počtu vrstiev. Preto sa preferovanou aktivačnou funkciou v hlbokých sieťach stala ReLU, keďže ReLU nieje ohraničená jednotkou. Experimentálne bolo zistené, že posledná skrytá vrstva so sigmoidou spomalý učenie tým, že rýchlo nastaví výstup blízky k nule [20]. Podobne ako nastáva problém miznúceho gradientu tak môže nastať problém explodujúceho gradientu. Stačí aby váhy vo vrstvách boli príliš veľké a derivácie aktivačných funkcií pre výstup dávali hodnoty k ich maximu. Inteligentnou inicializáciou váh môžeme problém miznucého gradientu čiastočne prípadne úplne eliminovať. V súčasnosti sa využíva inicializácia s rovnovmerným rozložením v intervalu [20]: 6 6 (, ) (2.17) fi + f i+1 fi + f i+1 Pričom f i označuje počet neurónov vrstvy i a f i+1 počet neurónov v nasledujúcej vrstve. Existujú ďalšie možnosti inicializácie váh pričom táto oblasť je momentálne v aktívnom výskumu. Problém trénovania 15

22 2. Úvod do neurónových sietí hlbokých sietí čiastočne riešia vhodnejšie aktivačné funkcie, metódy pretrénovania siete a taktiež niektoré modely neurónových sietí ako LSTM alebo ResNet popísané v kapitolách 3. 16

23 3 Architektúra neurónových sietí V tejto kapitole sú popísané modely neurónových sietí, ktoré sa v posledných rokoch stali bežnými pre problémy strojového učenia prípadne rapídne posunuli vývoj neurónových sietí. Je vysvetlená ich základná architektúra a použitie. V podkapitole 3.1 sa zaoberám konvolučnou neurónovou sieťou všeobecne používanú v počítačovom videní. V podkapitole 3.2 je vysvetlený model rekurentnej siete, ktorá dokáže spracovať sekvenčné dáta. V podkapitole 3.3 je vysvetlená dopredná sieť typu autoenkóder. Problémom ako natrénovať siete s veľkým počtom vrstviev sa zaoberá kapitola Konvolučná neurónová sieť Konvolučná neurónová sieť je typ siete, ktorá svoje uplatnenie našla hlavne v oblasti počítačového videnia, ale objavujú sa úspešné systémy aj v spracovaní reči a prirodzeného jazyka. Konvolučné siete sú biologicky inšpirovaná vizuálnym cortexom u cicavcov [21]. Obr. 3.1: Jedna z prvých konvolučných neurónových sietí LeNET5 pre rozpoznávanie číslic (obrázok prebratý z [22]). Konvolučné neurónové siete využívajú niekoľko vlastností. Základnou vlastnosťou prebratou z vizuálnej časti mozgu je lokálne prepojenie, ktoré umožňuje neurónu v skrytej vrstve napojenie na oblasť neurónov v predchádzajúcej vrstvy (anglicky receptive field). Druhou vlastnosťou konvolučných sietí je n-dimenzionálny rozmer vrstiev. Pre obrazové data majú vrstvy tri dimenzie teda výšku, šírku a hĺbku, takže vstupná vrstva môže mať hĺbku reprezentovanú tromi kanálmi 17

24 3. Architektúra neurónových sietí RGB. Treťou kritickou vlastnosťou je, že určité váhy sú zdielané teda napríklad všetky neuróny v konvolučnej vrstve v danej hĺbke majú zdieľané váhy. Uvedené vlastnosti tvoria výhodu oproti klasickým dopredným sieťam, v ktorých by vstupnú vrstvu pre obrázok tvorilo mnoho neurónov a obrovský počet prepojení-váh na ďaľšiu vrstvu. Konvolučné siete sa väčšinu skladajú zo vstupej vrstvy, za ňou sú kombinované vrstvy konvolúcie, poolingu a ReLU. Pred výstupnou vrstvou ešte existuje jedna plneprepojená vrstva do ktorej vstupujú dáta zhustené do jednej dimenzie. Výstup z takejto vrstvy sa môže využívať ako deskriptor pre iné algoritmy strojového učenia. Popis konvolučnej a pooling vrstvy sa nachádza v ďaľších sekciách. Konvolučné siete sa snažia naučiť čoraz komplexnejšie príznaky. V počiatočných vrstvách konvolučná sieť kóduje nízkoúrovňové príznaky ako napríklady detektory hrán a jednoduché prechody farieb. V ďaľších vrstvách to už môžu byť napríklad príznaky pre tvary ako polkruh prípadne viacfarebné prechody. V posledných vrstvách už nachádzame príznaky pre jednotlivé objekty alebo veľmi komplexné tvary. Konvulučná vrstva Základným stavebným kameňom konvolučných sietí je konvolučná vrstva. Architektúru a vlastnosti tejto vrstvy vysvetlíme na probléme rozpoznávania obrázkov. V tomto prípade majú vrstvy tri dimenzie teda výšku, šírku a hĺbku. Konvolučná vrstva sa napája buď na vstupné dáta (vstupnú vrstvu) alebo na vrstvu Poolingu, ReLU prípadne opäť konvolúciu. Každý neurón v konvolučnej vrstve je napojený na podoblasť v predchádzajúcej vrstve. Táto podoblasť je lokálna v dimenziách širky a výšky ale úplná do hĺbky. Toto prepojenie si môžeme predstaviť na nasledujúcom príklade. Predpokladajme že výstup z predchádzajúcej vrstvy má rozmer 30x30x5, kde prvé dve čísla udávajú výšku a šírku a posledné číslo udáva hĺbku. Nech podoblasť, ktorú vníma neurón v konvolučnej vrstve má rozmery štvorca o veľkosti 4. Potom daný neuron tvorí 4x4x5 spojení/váh do predchádzajúcej vrstvy. Je treba si uvedomiť úplnosť prepojenia tohoto neurónu do hĺbky, preto okrem oblastí štvorca tvorí spojenie aj pre neuróny v hĺbke v predchádzajúcej vrstve. 18

25 3. Architektúra neurónových sietí A. MAPA 30 W13 W FILTER W13 VSTUPNÁ VRSTVA 30x30x3 5x5x x26x6 KONVOLUČNÁ VRSTVA MAX POOLING VRSTVA (2,2,2) 26x26x x13x6 ReLU VRSTVA x13x6 Obr. 3.2: Zobrazenie časti konvolučnej siete s vrstvami konvolúcie, poolingu a ReLU. Konvolučná vrstva sa v tomto prípade naučí šesť filtrov o rozmeroch 5x5. Výstup pre jeden filter W13 je zobrazený v modrom orámovaní ako aktivačná mapa o rozmere 26x26. Výstup konvolučnej vrstvy tvorí 6 aktivačných máp. Pooling vrstva s filtrom/oblasťou o rozmere 2x2 a krokom 2 podvzorkuje výstupy konvolučnej vrstvy na polovicu (13x13). Nastavenia konvolučnej vrstvy je krok S=1, veľkosť filtru F=5 a P=0. Nech n(x, y, z) určuje neurón v konvolučnej vrstve kde x je poloha v rozmeru šírky, y je poloha vo výške vrstvy a z v hĺbke. Potom každý neuron v rôznej hĺbke pre dané x,y sa napája na rovnakú oblasť predchádzajúcej vrstvy. Váhy pre tieto neuróny sú v každej hĺbke odlišné. Naopak váhy neurónov nachádzajúcich sa v rovnakej hĺbke sú zdielané, pričom každý neurón je napojený na inú podoblasť. Váhy pre daný neurón skrytej vrstvy tvoria v podstate naučené filtre detekujúce určité príznaky. Zdieľaním váh v danej hĺbke je zabezpečené, že filtre detekujú príznaky nezávisle na lokácií v predchádzajúcej vrstve. Prechod filtru cez predchádzajúcu vrstvu (napr. vstup) je v podstate konvolúcia s určitým krokom (anglicky stride) S. Krok S udáva ako vzdialené sú od seba jednotlivé oblasti záujmu konvolučných neurónov. Nižší krok spôsobuje prekrytie daných oblastí. Výstupom jedného prechodu filtru je jedna aktivačná mapa teda v podstave obrázok. Filter je teda jadro konvolúcie so štvorcovím tvarom, ktorý prechádza cez vstup a produkuje výstup. Operácia konvolúcie 19

26 pre 2D signál f s jadrom g je daná ako: f [x, y] g[x, y] = n 1 = n 2 = 3. Architektúra neurónových sietí f [n 1, n 2 ]g[x n 1, y n 2 ] (3.1) Počet filtrov K určuje hĺbku konvolučnej vrstvy. Výstupom konvolučnej vrstvy je K aktivačných máp. Parameter P určuje počet dotatočných nulových pixelov okolo vstupu. Špecifikácia parametrov ako krok filtru S, rozmery filtru (podoblasť pre neurón) F a počet filtrov K je nastaviteľná. Musíme však pamätať aj na niektoré obmedzenia ako napríklad to, že rozmery filtru nesmú byť väčšie ako vstup. Nech W 1 xh 1 xd 1 určujú rozmery vstupu pre konvolučnú vrstvu. Potom výstup z konvolučnej vrstvy W 2 H 2 D 2 sa vypočíta na základe (rovnice boli prebraté z kurzu CS321n na Stanforde 1 ): W 2 = (W 1 F + 2P)/S + 1 H 2 = (H 1 F + 2P)/S + 1 D 2 = K (3.2) Na obrázku 3.2 je znázornený vstup a výstup z konvolúčnej vrstvy. Vstup do vrstvy je o rozmere 30x30x3. Konvolučná vrstva obsahuje šesť filtrov pričom veľkosť filrtu je F=5, krok filtru S=1 a pridanie nulových pixelov okolo vstupu je P=0. Výstup z konvolučnej vrstvy tvorí šesť aktivačných máp teda 26x26x6. V rámci konvolučnej vrstvy je možné využiť techniku, kedy veľkosť jadra konvolúcie je 1x1 a počet filtrov K. Takáto konvolúcia je v podstate klasická dopredná vrstva s K neurónmi, ktorá prechádaza cez celý vstup po jednom pixeli [23]. Počet prepojení medzi takouto konvolúciou a predchádzajúcou vrstvou je FxK. Výstup z operácie má zachovanú priestorovú dimenziu šírky a výšky, ale zmenenú dimenziu hĺbky. Sila neurónových sietí spočíva v kombinácií rôznych stavebných kameňov teda vrstiev, ktoré môžeme inteligentne využiť. Pokiaľ nevieme zvoliť veľkosť konvolučnej vrstvy, môžeme sa pohrať s myšlienkou nakombinovať viacero konvolučných vrstiev do jedného Inception bloku [24]. Výstup jednotlivých vrstiev sa v tomto bloku spája ako vstup pre ďaľšiu vrstvu

27 3. Architektúra neurónových sietí Pooling vrstva Pooling vrstva je dôležitou vrstvou v konvolučných sieťach. Táto vrstva slúži pre priestorové zmenšenie vstupov teda podvzorkovanie vstupu z predchádzajúcich vrstiev. Toto zmenšenie zapríčiní zníženie počtu parametrov v ďaľších vrstvách. Menší počet parametrov vo vrstvách urýchľuje celkovo tréning takejto siete. Taktiež menšie vrstvy, čo do počtu parametrov, zlepšujú generalizáciu modelu. Pri tejto vrstve sa špecifikujú dva parametry krok a veľkosť okna/filtru teda podobne ako v konvolučnej vrstve. Bežne sa používa veľkosť filtru 2 s krokom o rovnakej veľkosti tak aby sa oblasti neprekrývali. Pooling vrstva môže byť reprezentovaná podľa typu filtrov. Pokiaľ filter vyberá maximálnu hodnotu z oblasti hovoríme o MaxPooling vrstve. U niektorých modelov môžeme nájsť filter, ktorý priemeruje hodnoty v danej oblasti (AvgPooling). Táto vrstva neuchováva žiadne váhy, slúži iba na transformáciu vstupu na výstup podobne ako je to pri aktivačnej vrstve. Na obrázku 3.3 je ukázané ako takáto operácia poolingu prebieha MAX POOLING AVG POOLING Obr. 3.3: Operácia MaxPooling a AvgPooling pre data. MaxPooling je ukázaný s veľkosťou 2 a krokom 2 a AvgPooling s veľkosťou 2. ReLU vrstva ReLU vrstva (anglicky Rectified Linear Unit) reprezentuje aktivačnú vrstvu. V kontextu konvolučných sietí sa aktivácie zapisujú oddelene ako vlastná vrstva, keďže sa môže napájať na klasické plneprepojené vrstvy, konvolučné vrstvy alebo pooling vrstvy. ReLU vrstva sa v konvolučných sieťach využíva pre svoju rýchlosť, keďže narozdiel od sigmoidálnych funkcií nemusí počítať zložité exponenty. Taktiež sa dokáže dostatočne dobre vysporiadať s miznúcim gradientom. Najčastejšie sa ReLU vrstva napája hneď za konvolučnú vrstvu alebo plne 21

28 3. Architektúra neurónových sietí prepojenú vrstvu. Na obrázku 3.2 je ukázané skôr ojedinelé napojenie za pooling vrstvu. Učenie siete Učenie konvolučných sietí je až na pár výnimiek rovnaké ako v klasických dopredných sieťach. Využíva sa algoritmus spätného šírenia chyby. Konvolučné siete vyžadujú tak ako aj iné modely z neurónových sietí mnoho dát pre trénovanie. Častokrát sa využíva technika, kedy sa vezme už natrénovaná sieť a iba sa dotrénuje pre iný problém (anglicky finetuning). Trénovanie konvolučných sietí môže byť výpočetne veľmi náročné. Počiatočné konvolučné vrstvy zaberajú najviac pamäťového miesta pre veľký vstup a často väčší počet filtrov. Výstupy z týchto filtrov musia byť dočasne uložené v pamäti, keďže sa využijú pri spätnom prechode. Počiatočné konvolučné vrstvy však neobsahujú až toľko parametrov, keďže využívajú zdieľanie váh. Najviac parametrov obsahujú posledné plneprepojené vrstvy v sieti. Transfer learning Transfer learning v doslovnom preklade prevodné alebo transformované učenie (ďalej v kapitole neprekladané pre nedostatočne zavedený pojem v českej ani slovenskej odbornej literatúre) je technika, kedy sa využíva už natrénovaná neurónová sieť na nový problém. Aby bola neurónová sieť čo najúspesnejšia a jednotlivé vrstvy dokázali reprezentovať kvalitné príznaky, vyžaduje konvolučná neurónová sieť trénovanie na veľkom vzorku dát. Pod veľkým vzorkom dát si môžeme predstaviť niekoľko stoviek gigabytov prípadne až terabytov dát. Trénovanie na takej obsiahlej dátovej sade môže trvať dlho (niekoľko týždňov) aj na výpočetnej farme s grafickými kartami. Naviac prístup k takýmto dátam a zároveň veľkej výpočtovej sile má v podstate zopár firiem na svete ako Google, Microsoft, Apple, Facebook, Baidu a fotobanky ako Flickr alebo Picasa. Práve tieto firmy spolupracujú s výskumnými skupinami keďže disponujú aj dostatočným výpočtovým výkonom. Existujú dva základne prístupy, ktoré sa najmä využívajú pri konvolučných sieťach a to Fine-tuning (dolaďovanie) a využitie siete ako extraktor príznakov. 22

29 3. Architektúra neurónových sietí Fine-tuning Fine-tuning je technika, kedy vezmeme už natrénovanú sieť alebo váhy vrstiev siete a použijeme túto sieť na nový problém. Takouto sieťou môže byť napríklad konvolučná neurónová sieť natrénovaná na dátovej množine z Imagenetu. Táto stará sieť už má zakódované v prvých vrstvách dostatočne dobré príznaky (detektory hrán, tvarov), ktoré sa budú pravdepodobne hodiť i pre nový problém. Následne stačí zmeniť vrstvy, ktoré potrebujeme, najčastejšie je to posledná alebo posledné dve vrstvy siete. Váhy vrstiev, ktoré nechceme upravovať, môžeme úplne zamraziť. Natrénovanie siete na novej dátovej sade prebehne omnoho rýchlejšie ako na sieti s náhodnými váhami na začiatku. Sieť ako extraktor príznakov Druhým častým spôsobom je využiť vytvorenú sieť a použiť výstup z niektorej vrstvy ako vektor príznakov pre iný model z oblasti strojového učenia. Pri klasifikácí obrázkov sa často využíva výstup z niektorej predposledných vrstiev konvolučnej siete a následným použitím v algoritme k najbližších susedov. V kapitole 3.3 je popísaná neurónová sieť typu autoenkóder. Autoenkóder môže byť taktiež použitý pre extrakciu príznakov. V kontextu obrázkov sa môže naučiť napríklad detekovať hrany. Pri tomto type modelu odstráníme zo siete dekódujúcu časť a nové príznaky získavame pri prechode dátami cez kódujúcu časť. 3.2 Rekurentná neurónová sieť Rekurentná neurónová sieť je typ modelu, ktorý dokáže príjimať dáta s časovým kontextom. Jedná sa teda o sekvenčné dáta typu vývoja cien akcií na burze alebo video. Výhodou je, že dĺžka sekvencie sa v rámci trénovacej i testovacej množine môže líšiť a nie je tu tak obmedzenie fixného vstupu, aký poznáme z klasickej doprednej neurónovej siete. Schopnosť variabilnej dĺžky vstupnej sekvencie je pri rekurentnej sieti kľúčová. Táto schopnosť vyplýva z vlastnosti siete, že váhy v sieti sú zdielané pre všetky časti sekvencie. Krok sekvencie x v čase t označíme ako x t. Táto sieť má schopnosť čiastočne si pamätať, 23

30 3. Architektúra neurónových sietí čo bolo na vstupe v predchádzajúcom časovom kontexte. Dôvodom je skrytý stav a rekurentné spojenie určitých neurónov alebo vrstiev. To znamená, že napríklad neuróny v skrytej vrstvy majú dva typy spojení. Okrem toho, že sú napojené na ďaľšiu vrstvu tak obsahujú aj rekurzívne spojenia na seba. Dôležitým je aj stav v skrytej vrstve h t v ktorom sú postupne zakódované všetky predchádzajúve kroky, ktoré prešli cez model. Uvažujme sieť s jednou skrytou rekurentnou vrstvou. Dopredný prechod sekvencie cez takúto sieť má tri základné výpočty, ktoré sa opakujú pre každý krok x t sekvencie: zo vstupu do skrytého neuronu/vrstvy, zo skrytej vrstvy/neuronu na výstup, zo skrytej vrstvy/neuronu do ďaľšej skrytej vrstvy. Spojenia teda váhy zo vstupu do skrytej vrstvy označíme ako W hx, zo skrytej vrstvy na výstup ako W hy a zo skrytej vrstvy rekurentne ako W hh. Stav v skrytej vrstvy h t v čase t vypočítame následne: h t = σ((w hh h t 1 ) + W xh x t + b h ) (3.3) Výstup siete y v čase t sa vypočíta pomocou nasledujúceho vzorca: y t = σ(w hy h t ) (3.4) Uvažujme krok sekvencie x t kde t nadobúda hodnoty 0... T, pričom T > 1. Pred prechodom sekvencie cez sieť je skrytý stav inicializovaný na nulu. Pre prvý krok sekvencie x 0 sa vypočíta výstup zo vstupnej vrstvy cez skrytú vrstvu a zo skrytej vrstvy na výstup. Výstup sa spočíta na základe výstupu zo skrytej vrstvy a skrytého stavu. V ďaľších krokoch výpočtu x t kde t > 0 sa opäť vypočíta výstup, avšak tentokrát je v skrytom stave zakódovaná aj predchádzajúca sekvencia. Učenie rekurentných sietí Pre tréning rekurentných sietí sa opäť využíva algoritmus spätného šírenia upravený o časový kontext. Pri tréningu musíme opäť zadefinovať chybovú teda objektívnu funkciu problému. Najčastejšie sa 24

31 3. Architektúra neurónových sietí RNN Why Whh Wxh SEKVENCIA DATASET Obr. 3.4: Prechod jednej sekvencie rekurentnou sieťou. v rekurentných sieťach využíva krížova entropia. Chyba pre jednu sekvenciu, kde ŷ t je predpoveď siete pre daný krok a y t reprezentuje očakávanú hodnotu je daná ako: J(y, ŷ) = T t=1 y t log ŷ t (3.5) Celková chyba pre jednu sekvenciu je teda definovaná ako suma chýb pre všetky kroky danej sekvencie. Inak povedané, pri prechode sekvencie cez sieť dostávame na základe krížovej entropie pre každý krok chybovú hodnotu, ktorú akumulujeme. Gradient pre jednu sekvenciu je definovaný ako: T J W = J t W t=1 (3.6) Trénovanie rekurentných sietí je náročné [25], keďže sa ich priamo dotýka problém miznúceho (a explodujúceho) gradientu (popísané v kapitole 2.3). To znamená, že propagácia chyby cez mnoho vrstiev zanecháva gradienty buď príliš malé alebo príliš veľké. V tomto prípade sa jedná o propagáciu chyby celej sekvencie v čase. Takže, čím dlhšia sekvencia tým náročnejšie trénovanie je. Rekurentná sieť veľmi dobre funguje na krátke sekvencie. Pri dlhších sekvenciach však môžeme vyžadovať pri predikcii ďaľšej časti sekvencie informáciu, ktorá sa nachádzala takmer na úplnom začiatku. Táto informácia sa v normálnych rekurentných sieťach rýchlo stráca. 25

32 3. Architektúra neurónových sietí LSTM Rekurentná sieť založená na bloku LSTM [26] rieši problém zapamätania si kontextu a zároveň rieši problém efektívneho trénovania dlhých sekvencií. Na blok LSTM sa môžeme dívať ako na špeciálny typ neurónu, ktorý závadza dodatočné regulujúce vstupy označovaných ako Gate. V LSTM bloku okrem klasického vstupu existujú teda tri tieto vstupy/gates, ktoré ovplyvňujú chovanie vstupu, stavu a výstupu a to: Input Gate i t : ovplyvňuje šírenie klasického vstupu do bloku, Forget Gate f t : ovplyvňuje zapamätaný skrytý stav i vstup, Output Gate o t : ovplyvňuje skrytý stav neurónu a teda výstup. Skrytý stav h(t) sa spočíta pomocou nasledujúcich rovníc: i t = σ(w xi x t + W hi h t 1 + W ci c t 1 + b i ) f t = σ(w x f x t + W h f h t 1 + W c f c t 1 + b f ) o t = σ(w xo x t + W ho h t 1 + W co c t + b o ) c t= f t c t 1 + i t tanh(w xc x t + W hc h t 1 + b c ) h t= o t tanh(c t ) (3.7) Na blok teda neurón LSTM sa môžeme dívať ako na komplexnejší neurón z klasickej rekurentnej siete. Výpočet skrytého stavu je o niečo komplikovanejší, keďže ho ovplyvňujú i t, f t, o t a c t. Medzi prepojeniami Gate existujú ďaľšie váhy. Vektory teda tenzory týchto váh majú rovnakú veľkosť ako skrytý stav. Keď je výstup z Input Gate i t blízky k hodnote nula, tak sa zabráňuje šíreniu vstupu x t do siete. Podobne funguje aj Forget Gate, ktorý slúži pre zabudnutie skrytého stavu. Output Gate zas určuje kedy sa zapamätá daná informácia do skrytého stavu. Na obrázku 3.5 je znázornený LSTM blok. 3.3 Autoenkóder Autoenkóder je typ doprednej neurónovej siete. Táto sieť sa väčšinou používa pre naučenie príznakov a redukciu dimenzionality [28]. Charateristikou autoenkóderu je, že pracuje s neoznačenými dátami. Zatiaľ,čo predchádzajúce modely boli označované ako učenie s učiteľom 26

33 3. Architektúra neurónových sietí Obr. 3.5: LSTM blok (obrázok prebratý z [27]). (anglicky supervised), autoenkóder je modelom typu učenie bez učiteľa (anglicky unsupervised). Autoenkóder tvoria dve časti. Prvou je kodér alebo kódovacia časť a druhou je dekodér teda dekódovacia časť. To, čo sa snaží autoenkóder naučiť, je aproximovať vstup na výstup teda: W VSTUPNÁ VRSTVA VÝSTUPNÁ VRSTVA Obr. 3.6: Vizualizácia autoenkodéru a aktivácií pre každý neurón v skrytej vrstve. [29] H(x) x (3.8) Naučenie presnej identity nie je moc užitočné. Pokiaľ však pre 27

34 3. Architektúra neurónových sietí sieť zavedieme obmedzenie napríklad na veľkosť skrytej vrstvy, autoenkóder začne prioritizovať určité vstupy dát. Vlastnosť ktorá vyplýva z aproximácie je, že výstupná vrstva autoenkóderu má rovnaký počet neurónov ako tá vstupná. Často sa využíva to, že skrytú vrstvu tvorí menší počet neurónov než tu vstupnú. Pri väčších skrytých vrstvách než vstupných, dokáže autoenkóder taktiež nájsť zaujímavé vzory [30]. Avšak je treba využiť ďaľšie techniky, aby sa neuróny nenaučili operáciu identity. Autoenkóder sa natrénuje klasickým algoritmom zpätného šírenia chyby. V skrytej vrstve si autoenkóder zakóduje dôležité a zaujímavé príznaky zo vstupných dát, keďže sú následne použité pre rekonštrukciu. Pri autoenkóderoch môžeme využiť aj techniku zdieľaných váh vrstiev (anglicky tied weights). V takomto prípade sú váhy vrstvy v kódovacej časti zdieľané s váhami v dekódovacej časti ale transponované. To má za následok regularizačný efekt a menší počet parametrov v modeli. Môžeme povedať, že autoenkóder robí kompresiu vstupu pomocou skrytej vrstvy a následne dekompresiu. Pokiaľ máme autoenkóder s jednou skrytou vrstvou tak výstup y zo skrytej vrstvy (kodér) je definovaný ako (pre jednoduchosť neuvažujeme bias): y = g(wx) (3.9) g reprezentuje aktivačnú funkciu ako napríklad tangens alebo ReLU. Výstup poslednej vrstvy teda dekodér môžeme zapísať ako: z = g(w y) (3.10) Pre zabránenie naučenia identity pre skryté vrstvy, ktoré sú väčšie než vstupné vrstvy sa využívajú dva postupy. Prvým postupom je čiastočne zmeniť vstupné dáta. Najčastejšie je táto zmena implementovaná pomocou pridania šumu alebo nastavenia časti vstupov na nulu. Na výstupe sa pri tréningu siete porovnáva s nepozmenenými datami. Takýto autoenkóder sa nazýva aj DAG (z anglického denoising). Druhým postupom je upraviť chybovú funkciu a penalizáciu tak aby sa vstupné váhy nenaučili operáciu identity. Ideálne by sme chceli nastaviť váhy tak aby väčšina neurónov bola pri prechode skrytou vrstvou neaktívna. Za aktívny neurón považujeme taký, ktorý je blízko k hodnote 1. Za neaktívny neurón označíme neurón blízky 28

35 3. Architektúra neurónových sietí hodnote 0 alebo -1 podľa toho akú aktivačnú funkciu použijeme. Objektívna funkcia J s je definovaná ako: J s (W) = J(W) + β s 2 KL(p ˆp j ) (3.11) j=1 Funkcia KL reprezentuje Kullback-Leiber (KL) divergenciu medzi p a ˆp j, kde p je parameter riedkosti nastavený na hodnotu blízku k nule a ˆp j je priemerná aktivačná hodnota neurónu v sieti. KL určuje ako sa dve pravdepodobnostné rozloženia líšia. Pomocou Kullback- Leiber sa snažíme zaistiť aby sa priemerná aktivačná hodnota neurónu ˆp j ideálne rovnala p. Teda k penalizačnej loss funkcií J(W) pridávame dodatočnú penalizáciu, ktorá je veľká pokiaľ je mnoho aktívnych neurónov v skrytej vrstve. Autoenkóder s takouto loss funkciou nazývame aj riedky (z angliického sparse) a používa sa najmä pre naučenie nových príznakov [28]. Predtrénovanie po vrstvách Jedna z možností na čo použiť Autoenkódery je pre inicializáciu váh hlbokých neurónových sietí. Predtrénovanie po vrstvách pomocou autoenkóderov bola jedna z prvých techník, ktoré umožnili trénovať hlbšie neurónové siete [30]. W1 W2 W1 W2 y AUTOENKÓDER PRE 1. SKRYTÚ VRSTVU AUTOENKÓDER PRE 2. SKRYTÚ VRSTVU PREDTRĚNOVANÁ N. SIEŤ Obr. 3.7: Sieť s predtrénovanými vrstvami od autoenkóderu. Na obrázku 3.7 je ukážka ako takáto inicializácia váh pomocou autoenkóderov prebieha. Nech N je neurónova sieť s T skrytými vrstvami. Pre každú skrytú vrstvu siete N vytvoríme autoenkodér A i so skrytou vrstvou o rovnakom počte neurónov. Vstupná a výstupná vrstva 29

36 3. Architektúra neurónových sietí prvého autoenkodéru odpovedá veľkosti vstupnej vrstvy našej siete. Vezmeme skrytú vrstvu autenkóderu a použijeme ju pre nahradenie skrytej vrstvy siete N. Obdobne postupujeme s inicializáciou váh aj pre ďaľšiu vrstvu. Veľkosť vstupnej vrstvy druhého autoenkóderu A 2 sa rovná počtu neurónov prvej skrytej vrstvy siete N. Autoenkóder A 2 natrénujeme tak, že aplikujeme kodér z A 1 a získame nové vstupy pre tréning siete A 2. Potom už postupujeme podobne ako pre prvú vrstvu. Takúto inicializáciu váh, môžeme spraviť pre každú skrytú vrstvu siete N. Sumou v rovnici chceme povedať, že tieto penalizácie sa sumujú cez všetky neuróny v skrytej vrstve. Ďaľšou variantou tohoto modelu je Variational autoenkóder [31], ktorý umožňuje nové dáta generovať. Variational autoenkóder využíva bayesovskú štatistiku, tak že na základe apriornej pravdepodobnosti generujeme latentné stavy, z ktorých dokážeme vygenerovať nový príklad. Tréning takéhoto autonekóderu prebieha podobne ako pri klasickom, avšak v tomto prípade sa mení objektívna funkcia. Podobné využitie ukazuje práca Hintona [14] o inicializácii váh pre hlboký autoenkodér pomocou RBM. RBM je model vychádzajúci z modelu siete nazývanej Boltzmanov stroj. Opäť sa natrénujú modely RMB o veľkosti skrytých vrstiev autoenkóderu. Následne sa váhy týchto sietí použijú pre váhy vrstiev hlbokého autoenkóderu. Takýto autoenkóder dokáže kódovať vektory, ktoré môžu fungovať lepšie než vektory z PCA [32] pre redukciu dimenzií. 3.4 Siete s veľkým počtom vrstiev Súťaže, ktoré poriada Imagenet alebo Microsoft Research v oblasti klasifikácie obrázkov a detekcie predmetov vyhrávajú siete, ktorých architektúra čo do počtu vrstiev je čoraz väčšia než v predchádzajúcich behoch. Za zmienku stoja modely, ktoré sú uvedené v tabulke 3.1. Tabuľka 3.1 Model/Tým Súťaž Poradie Chybovosť Počet vrstiev AlexNet [33] ILSVRC % 8 GoogleNet [24] ILSVRC % 22 VGG [34] ILSVRC % 19 ResNet [17] ILSVRC %

37 3. Architektúra neurónových sietí Modely a počty vrstiev s úspešnosťou. Zvyšením počtu vrstiev by sme mali navýšiť úspešnosť daného modelu. Toto nie je tak jednoduché ako sme ukázali v predchádzajúcej kapitole. Od určitého počtu vrstiev špecifického problému, nám navýšenie počtu vrstiev často nepomôže. Tréning siete sa skomplikuke a začne stúpať chybovosť ako pri trénovacích tak pri testovacích dátach. Natrénovať tak 100 vrstvú sieť sa stáva takmer nemožnou úlohou pre problém gradientu. Paralelne vznikli dve jednoduché úpravy sietí, tak že tréning i veľmi veľkého počtu vrstiev je možný. Obe úpravy sietí sú si veľmi podobné. Nasledujúci postup, ktorý sa ukázal efektivný pre trénovanie veľmi hlbokých sietí, využíva princípu identity. Residual Network Residual Network [17] je sieť s veľkým počtom vrstiev využívajúca reziduálne teda zbytkové učenie. Konvolučná sieť ResNet založená na reziduálnom učení so 152 vrstvami vyhrala súťaž ILSVRC15. Výstup z vrstvy tejto siete sa spočíta následnou rovnicou: y = F(x, W h ) + x (3.12) Výstup vrstvy je daný funkciou F, vstupom do vrstvy x a váhami vrstvy W. Výpočet funkcie F je definovaný ako klasický dopredný priechod cez vrstvu. Funkcia F reprezentuje reziduálne mapovanie, ktoré sa má sieť naučiť (aproximovať): F(x) = H(x) x (3.13) Hypotéza je, že je ľahšie optimalizovať reziduálne funkciu. To, čo robí reziduálne učenie je, že vrstva je zodpovedná za upravenie výstupu z predchádzajúcej vrstvy pridaním malého zostatku, ktorý je reprezentovaný funkciou F. To sa líši od predchádzajúcich sietí, kedy vrstva generovala úplne zmenený výstup. V sieti je výraz F(x, W h ) + x realizovaný pomocou prepojenia zo vstupu na výstup. Takéto prepojenie môžeme modifikovať tak, že vstup nenapojíme okamžite na výstup vrstvy, ale napojíme ho až na niektorú ďaľšiu. Autori siete Res- Net postavili stavebný blok, ktorý reprezentuje reziduálne mapova- 31

38 3. Architektúra neurónových sietí nie pomocou dvoch konvolučných vrstiev a ReLU vrstvou nachádzajúcou sa medzi. Uvedomme si, že vstup do prvej vrstvy je napojený na výstup druhej vrstvy. Tento blok sa však počtom vrstiev môže líšiť a je na autoroch modeloch ako dané bloky navrhnú. V tomto prípade je dobré poznamenať, že autori nezaznamenali zlepšenie pokiaľ funkcia F bola reprezentovaná iba jednou vrstvou. Výhody prišli až s dvomi a tromi vrstvami v bloku. Existujú ďaľšie podobné prístupy ako reziduálne učenie akým je napríklad sieť typu Highway [35]. X X F(X) + X W1 ReLU W2 ReLU Obr. 3.8: Reziduálny blok použitý v súťaži ILSVRC15 [17]. 32

39 4 Nástroje pre vytváranie modelov V tejto kapitole sú popísané nástroje pre trénovanie neurónových sietí. Výhodou popísaných nástrojov je ich otvorená licencia, možnosť využitia grafickej karty a jednoduchosť použitia. V podkapitole 4.1 je popísaný nástroj Caffe, ktorý využíva špeciálny popis pre návrh siete. V kapitole je popísaná knižnica pre programovací jazyk Python a nástroje založené na tejto knižnici. V podkapitole 4.3 je popísaná knižná TensorFlow pre návrh neurónových modelov od spoločnosti Google. 4.1 Caffe Caffe [15] je deep learning framework vytvorený na univerzite Berkeley. Bol vydaný pod BSD2 licenciou, takže je voľne dostupný. Má veľkú podporu od firiem ako NVidia a Microsoft a cestu si k nemu našli aj výskumníci. Komunita okolo Caffe je veľmi aktívna a ku koncu roku 2015 má Caffe na systému Github 1 cez 3450 aktualizácií, cez 160 prispievateľov. Hlavným zameraním frameworku sa stalo počítačové videnie a konvolučné neurónové siete. Existujú systémy ako je napríklad Fast- RCNN [36] pre detekciu objektov. V priebehu posledných dvoch rokov bol caffe rozšírený aj na problémy zo spracovania prirodzeného jazyka, reči, prípadne posilovaného učenia. Výhodou Caffe je jeho rýchlosť, keďže celá architektúra frameworku bola napísaná v C++. DATA X BLOB SS BLOB VSTUPNÁ VRSTVA TOP BOTTOM SKALÁRNÝ SÚČIN TOP BOTTOM LOSS VRSTVA DATA Y BLOB Obr. 4.1: Ilustratívny návrh modelu v Caffe. Každý Blob môže plniť funkciu ako vstupných dat (BOTTOM) alebo výstupných dát (TOP) z vrstvy

40 4. Nástroje pre vytváranie modelov Dnes už sú dostupné rozhrania pre Python a MATLAB a tak môžu programátori využívať aj tieto jazyky spolu s ich knižnicami. Ďaľšou výhodou Caffe sú referenčné a komunitné modely ktoré sú dostupné na stiahnutie na stránke Caffe Model ZOO 2. Vývojár nových modelov môže takto získať už predtrénované modely, prípadne iba ich definície. Definícia modelu sa zapisuje do súboru vo formáte Protocol Buffer 3. Pomocou tohoto formátu je sieť v Caffe popísaná ako množina vrstev a ich prepojení pričom sieť môže mať štruktúru orientovaného acyklického grafu. Pre manipuláciu s dátami Caffe definuje Blob čo je v podstate N-rozmerné pole. Blob uchováva dva typy pamätí pomenované data a diff. Na dáta sa môžeme pozerať v klasickom znení avšak diff reprezentuje spočítaný gradient. Dimenzie Blobu sa môžu líšiť, pre spracovanie obrázkov sú to najčastejšie 4 rozmery. N K H W (4.1) Kde N reprezentuje počet obrázkov-vzorkov, K počet kanálov (farieb), H je výška obrázku a W je šírka obrázku. Vrstvy v Caffe sú prepojené pomocou Blobov, každá vrstva môže definovať blob spodný (bottom) a vrchný (top) tak ako je to na obrázku 4.1. Pokiaľ sa pozrieme priamo do zdrojových súborov Caffe na kód pre vrstvy, zistíme, že každá vrstva vyžaduje aby mala definované tri operácie/metódy a to: Setup : definuje inicializáciu danej vrstvy parametrami a inicializácie váh, Forward : spočíta špecifický výstup pre danú vrstvu, Backward : na základe gradientu z TOP blobu spočíta gradient pre vstup danej vrstvy. Keďže Caffe dokáže využívat grafickú kartu pri výpočtoch, tak sú tieto operácie implementované dvakrát a to pre CPU a GPU. Pokiaľ by sme potrebovali špeciálnu vrstvu stačí nám v podstate vytvoriť novú triedu s operáciamia Setup, Forward a Backward. Každá sieť by mala

41 4. Nástroje pre vytváranie modelov mať okrem vstupnej vrstvy a skrytých vrstiev definovanú taktiež loss funkciu. Loss funkcia špecifikuje cieľ trénovania. Pre natrénovania modelu v Caffe potrebujeme vytvoriť dva súbory. Prvým súborom je definícia modelu v už spomínanom formáte Protocol Buffer. Druhým súborom je definícia trénovania siete najčastejšie nazývaný ako solver.prototxt. V tomto súbore špecifikujeme cestu k súboru popisujúci definíciu siete a parametre trénovania ako je rýchlosť učenia, počet iterácií cez dátovú množinu, testovací interval, regularizačný parameter, názov súboru pre natrénovaný model a ďaľšie. Dôležitým parametrom je solver_mode v ktorom môžeme nastaviť CPU alebo GPU výpočet a solver_type, ktorý špecifikuje metódu trénovania siete. Momentálne podporované sú SGD, AdaGrad, RMS- Prop, AdaDelta, Adam, Nesterov. Implicitne je použitý klasický SGD algoritmus. Pre natrénovanie modelu stačí spustit nástroj caffe s parametrom train a špecifikovať kde sa nachádza súbor solver.prototxt. name: "LogReg" layer { name: "Cifar" type: "Data" top: "data" top: "label" image_data_param { source: "path/to/folder" batch_size: 64 } } layer { name: "ip" type: "InnerProduct" bottom: "data" top: "ip"... }... Listing 4.1: Zápis modelu v Caffe. V ukážke 4.1 vidíme časť modelu vo formáte Protocol Buffer. Prvou vrstvou býva väčšinou Data. Tá definuje kde nájdeme cestu k sú- 35

42 4. Nástroje pre vytváranie modelov borom, názov vrstvy, názov top blobu alebo blobov, veľkosť vzorku. Pokiaľ sú dáta reprezentované obrázkami, môže sa definovať aj transform_param,v ktorom definujeme parametre pre transformáciu obrázku ako normalizáciu farieb alebo orezanie. Za touto vrstvou nasledujú vrstvy či už konvolučného charakteru alebo husté vrstvy (InnerProduct). Ako posledná sa definuje chybová teda Loss vrstva. # import kniznic import caffe Listing 4.2: Volanie Caffe z Python. # nastavenie pre graficku kartu caffe.set_mode_gpu() caffe.set_device(gpu_id); # vytvorenie modelu a trening net = caffe.net("net.prototxt", train ) net.forward() net.backward() # vyuzitie solver.prototxt solver = caffe.sgdsolver("solver.prototxt") solver.solve() Následne stačí v skripte pre Python naimportovať knižnicu Caffe. Pomocou objektu caffe.net s argumentami pre definičný súbor modelu zadefinujeme sieť. Metóda forward slúži pre inferenciu a metóda backward pre spočítanie gradientu. Pre trénovanie môžeme využiť triedu caffe.solver a jej potomkov. Tejto triede sa predáva súbor s parametrami trénovania, ktorý v sebe obsahuje cestu k definícii modelu. Trieda caffe.net umožňuje načítať váhy už natrénovaného modelu pomocu ďaľšieho parametru, ktorý udáva cestu k uloženej sieti. Zmenou názvu vrstvy v definičnom súbore zaistíme, že tieto váhy sa inicializujú nanovo. Nastavením parametru lr_mult na nulu vo vrstve spôsobíme, že sa tieto váhy už nebudú upravovať. Zadefinovanie konvolučnej vrstvy s lr_mult vypadá následovne. Listing 4.3: Konvolučná vrstva v Caffe. 36

43 4. Nástroje pre vytváranie modelov layer { name: "conv1" type: "Convolution" bottom: "data" top: "conv1" param { lr_mult: 1 } param { lr_mult: 2 } convolution_param { num_output: 20 kernel_size: 5 stride: 1 weight_filler { type: "xavier" } bias_filler { type: "constant" } } } Parameter num_output udáva počet konvolučných filtrov, kernel_size je veľkosť filtru a stride udáva krok konvolúcie, teda posunutie filtru. Vrstvy môžu obsahovať dvakrát parameter lr_mult. Caffe týmto dokáže ovliňovať učiaci krok špeciálne pre váhy a bias keďže tieto hodnoty násobí s učiacim krokom. Prvý nastaví pre krok váh a druhý pre bias. 4.2 Theano Theano [37] je knižnica pre programovací jazyk Python, s ktorou je možné definovať a vyhodnocovať matematické výrazy. Bola vydaná skupinou LISA z Univerzity Montreal s otvorenou licencious BSD. Cieľom theano je zjednodušenie a urýchlenie veľmi náročných výpočtov z oblasti strojového učenia. Theano na pozadí pracuje s knižnicou 37

44 4. Nástroje pre vytváranie modelov NumPy z ktorej využíva hlavne objekt pre tenzor/n-dimenzionálne pole. NumPy sa stala základom vo vedeckých výpočtoch pre jazyk Python a dovoľuje efektívne pracovať s tenzormi. Theano taktiež funguje ako optimalizačný prekladač s tým, že niektoré matematické výrazy pregeneruje do jazyka C/C++ pre väčšiu rýchlosť. Toto pregenerovanie matematických výrazov môže byť určené pre procesor alebo grafickú kartu. Theano sa správa v podstate ako vlastný programovací jazyk, keďže musíme deklarovať premenné a výrazy pre tieto premenné. Generovanie kódu nastáva pri volaní funkcie theano.function. Toto generovanie ma päť fáz pre zjednodušenie a nahrádzanie výrazov, prevádzanie výpočtov pre grafickú kartu a samotné generovanie kódu. Na knižnici Theano vznikli niekoľko deep learning frameworkov, za zmienku stoja tieto: Keras : Viac popísaný v podkapitole 4.4, Blocks : vyvýjaný ľuďmi z LISA, ktorý stáli za Theano, Lasagne : jednoduchý framework pre tvorbu sietí, možnosť priamo rozširovať kód pomocou Theano. Listing 4.4: Ukážka vytvorenie výrazu pomocou Theano # import kniznic import theano from theano import tensor # deklaracia premennych i = tensor.dscalar() j = tensor.dscalar() k = tensor.dscalar() # vytvorenie vyrazu l = i - j - k # kompilcia s vyhodnotenm vrazu f = theano.function([i,j,k], l) 38

45 4. Nástroje pre vytváranie modelov 4.3 TensorFlow TensorFlow [38] je knižnica pre numerické výpočty žaložená na gráfovej štruktúre. TensorFlow bol vyvinutý spoločnosťou Google kde ho používajú vedci pre experimenty a inžinieri pre systémy využívané miliónmi ľudí. Každý model je teda popísaný grafom, jednotlivé uzly v grafe reprezentujú operácie. Tieto operácie nemusia byť len matematické, ale môžu slúžiť aj pre načítanie, zápis prípadne vykreslenie dát. Hrany grafu reprezentujú tenzor a popisujú vzťahy medzi uzlami. TensorFlow podobne ako Theano sa dá využiť nie len pre neurónové siete, ale aj pre iné výpočty. Nič nám napríklad nebráni aby sme pomocou TensorFlow navrhli model rozhodovacieho stromu alebo vyriešili diferenciálnu rovnicu. Veľkou výhodou TensorFlow podobne ako Caffe a Theano je možnosť výpočtu na grafickej karte. TensorFlow dovoľuje vytvárať modely v C++, ale obsahuje taktiež rozhranie pre programovací jazyk Python. Základná trieda Graph obsahuje dátové štruktúry Operation a Tensor. Objekt Operation príjma na vstupe objekty Tensor a posiela na výstup teda na vstup iných uzlov typu Operation opäť Tensor. Najväčšou výhodou TensorFlow je schopnosť optimalizátora automaticky dopočítať gradienty na základe chybovej funkcie. Listing 4.5: Ukážka vytvorenia modelu pomocou TensorFlow # import kniznic import tensorflow # definovanie vstupu x = tf.placeholder(tf.float32, [None, 400]) y_in = tf.placeholder(tf.float32, [None, 5]) # linearny model pre klasifikciu dat do piatich kategorii W = tf.variable(tf.zeros([400, 5])) b = tf.variable(tf.zeros([5])) y = tf.nn.softmax(tf.matmul(x, W) + b) # definovanie objektivnej funkcie, inicializacia loss = -tf.reduce_sum(y_in*tf.log(y)) train = tf.train.adamoptimizer(0.1).minimize(loss) init = tf.initialize_all_variables() 39

46 4. Nástroje pre vytváranie modelov # trening sess = tf.session() sess.run(init) sess.run(train, feed_dict={x: datax, y_in: datay}) 4.4 Keras Poslednú knižnicu, ktorú uvádzam v tejto kapitole je Keras. Keras je knižnica pre neurónové siete napísaná v Pythone. Jej modulárny návrh dovoľuje veľmi ľahké rozšírenie o nové prvky, operácie a vrstvy. Na začiatku vývoja bol Keras postavený nad Theano avšak v decembri 2015 bola táto knižnica rozšírená o možnosť prevádzania výpočtov aj nad TensorFlow. Operácie ako násobenie matíc, nie sú špecificky naviazané na jednu knižnicu. Pokiaľ by v budúcnosti vyšla lepšia knižnica ako Theano alebo TensorFlow je možné Keras rozšíriť. Nechýba opäť podpora výpočtov na grafickej karte a tak masívne urýchlenie trénovania modelov a inferencie. Keras dovoluje oproti Caffe, veľmi jednoduché definovanie modelov a je tak možné rýchlo prototypovať modely pre najrôznejšie experimenty s neurónovými sieťami. Pre vytvorenie modelov sa využívajú dve triedy a to Sequential a Graph. Jednotlivé vrstvy sa pridajú do týchto objektov zavolaním metódy add. KERAS Graph Sequential Theano TensorFlow Obr. 4.2: Operácie keras sa môžu vykonávať pod knižnicou Theano alebo TensorFlow. 40

47 4. Nástroje pre vytváranie modelov Listing 4.6: Ukážka vytvorenie modelu pomocou Keras # import kniznic from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation from keras.optimizers import SGD # definovanie doprednej neuronovej siete model = Sequential() model.add(dense(64, input_dim=20, init= uniform )) model.add(activation( softmax )) # skompilovanie modelu sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=true) model.compile(loss= mean_squared_error, optimizer=sgd) # trenovanie a vyhodnotenie model.fit(x_train, Y_train, nb_epoch=25, batch_size=10) score = model.evaluate(x_test, Y_test, batch_size=10) Aktuálna implementácia Keras dovoluje vytvárať dopredné neurónové siete, konvolučné siete a rekurentné neurónové siete. Model sa definuje postupným pridávaním vrstiev. Keras obsahuje rôzne typy vrstiev od základných, konvolučných, rekurentných, aktivačné po vrstvy upravujúce rozmery dát. Listing 4.7: Vytvorenie rekurentnej siete pomocou Keras # import kniznic from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation from keras.layers.recurrent import LSTM # definovanie rekurentnej siete model = Sequential() model.add(embedding(max_features, 256, input_length=maxlen)) model.add(lstm(output_dim=200, return_sequences=true)) model.add(activation( sigmoid )) model.add(lstm(output_dim=100, activation= sigmoid )) model.add(dropout(0.1)) model.add(dense(1, activation= sigmoid )) 41

48 4. Nástroje pre vytváranie modelov # skompilovanie modelu model.compile(loss= binary_crossentropy, optimizer= rmsprop ) # trenovanie a vyhodnotenie model.fit(x_train, Y_train, nb_epoch=10, batch_size=10) score = model.evaluate(x_test, Y_test, batch_size=10) Vytvorenie rekurentnej siete je ukázané v ukážke 4.7. Vidíme, že základom siete sú dve rekurentné vrstvy typu LSTM napojené za sebou. Na LSTM vrstvu je napojená výstupná vrstva Dense o veľkosti jedného neurónu so sigmoidálnou aktivačnou vrstvou. Dôležitým parametrom pri rekurentných vrstvách je return_sequences. Tento parameter sa použije pokiaľ chceme aby rekurentná vrstva posielala do ďaľšej vrstvy celú sekvenciu dát a nielen výstup pre poslednú sekvenciu. Keďže táto neurónová sieť je trénovaná na klasifikáciu do dvoch tried tak chybová funkcia loss je nastavená na binary_crossentropy. Môžeme si všímnúť, že okrem vstupnej vrstvy žiadna ďaľšia vrstvá nemá explicitne zadaných počet vstupných neurónov. Toto si Keras zistí pri kompilácií modelu na základe veľkosti výstupov output_dim z predchádzajúcich vrstiev. Pokiaľ by sme nemali datá uložené ako pole sekvencií môžeme takéto dáta previesť pomocou vrstvy Embedding. Aktiváčnú funkciu môžeme zahrnúť priamo do vrstvy s parametrom activation alebo pridaním novej vrstvy Activation. Vrstva Dropout [4] s pravdepodobnosťou 0.1 bola pridaná na prevenciu proti preučeniu. Listing 4.8: Vytvorenie rekurentnej siete pomocou Keras # import kniznic from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation, Flatten from keras.layers.convolutional import Convolution2D, MaxPooling2D from keras.optimizers import SGD # definovanie konvolucnej siete model = Sequential() model.add(convolution2d(32, 3, 3, border_mode= full, input_shape=(3, 100, 100))) 42

49 model.add(activation( relu )) model.add(convolution2d(32, 3, 3)) model.add(activation( relu )) model.add(maxpooling2d(pool_size=(2, 2))) model.add(dropout(0.25)) model.add(dense(1, activation= sigmoid )) 4. Nástroje pre vytváranie modelov # skompilovanie modelu model.compile(loss= binary_crossentropy, optimizer= rmsprop ) # trenovanie a vyhodnotenie model.fit(x_train, Y_train, nb_epoch=10, batch_size=10) score = model.evaluate(x_test, Y_test, batch_size=10) V ukážke 4.8 je vytvorená jednoduchá sieť s konvolučnou vrstvou napojenú na vrstvu s operáciou max poolingu. Okrem 2D konvolúcie, ktorá sa využíva pre obrázky alebo iné dvojdimenzionálne dáta Keras obsahuje aj 1D konvolúciu s max pooling. Vrstva s konvolúciou má parametry na rozmer a počet konvolučných filtrov. Keras umožňuje pridávanie regularizačných parametrov, rôzne typy inicializácií váh, ukladanie a načítanie modelov a vizualizáciu modelov. Poskytuje základné metódy pre narábanie so sekvenciami a prirodzeným jazykom. Pre monitorovanie a logovanie štatistík počas trénovania sú dostupné nastavovateľné funkcie-callbacky. Napríklad callback EarlyStopping môžeme pre modelu nastaviť tak aby trénovanie trvalo pokiaľ sa bude chybová funkcia zmenšovať. Callbacky sa nastavujú v metóde fit objektu Sequential alebo Graph pomocou parametru callbacks. 43

50 5 Experimenty a vyhodnotenie V tejto kapitole sú predstavené výsledky testovania a experimentov pre rozpoznávanie multimediálnych dát pomocou hlbokých neurónových sietí. V niektorých prípadoch boli dáta vyhodnotené aj pomocou klasických algoritmov strojového učenia. Experimenty s neurónovými sieťami boli vyhodnotené na dátových sadách Caltech256, MSRC-12 Kinect Gesture, MSR-Action3D, Motion65. Každý uvedený dataset je popísaný. Pre jednotlivé algoritmy bola ukázaná úspešnosť, matica zámen, počet prechodov cez dataset(epoch), chybová funkcia počas učenia algoritmom spätného šírenia chyby a architektúra jednotlivých modelov. Všetky zdrojové kódy sú prístupné v prílohe práce. 5.1 Caltech256 Caltech256 [39] je dátová sada obsahujúca obrázkov zaradených do 256 kategórií. Táto dátová sada obsahuje obrázky jednoduchých objektov a je následníkom dátovej sady Caltech101. Caltech256 je obsiahlejší dataset než jeho predchodca, pričom každá kategória obsahuje minimálne 80 obrázkov. Klasicky sa tento dataset natrénuje pre 10, 20, 30 až X trénovacích príkladov pre každú kategóriu a vyhodnotí na zbytku. Ako prvý model som využil predtrénovanú sieť AlexNet [33], ktorá bola natrénovaná na dátovej sade ImageNet. AlexNet je konvolučná sieť, ktorá zvíťazila na súťaži ImageNet ILSVRC12 [40]. Skladá sa z niekoľko konvolučných, relu, pooling a plneprepojených vrstiev. Pred poslednou softmax vrstvou sa nachádzajú dve plneprepojené vrstvy, každá s výstupom 4096 dimenzionálneho vektoru. Takýto model som pomocou frameworku Caffe dotrénoval pre Caltech256 s tým, že som nahradil poslednú výstupnú vrstvu za novú, určenú pre rozpoznávanie nových tried. Naučené príznaky a váhy sieťe výrazne urýchlia dotrénovanie na nový problém, keďže sa sieť znovu nemusí učiť nové nízkoúrovňové príznaky. Práve zmeny v nižších vrstvách sú omnoho menšie než v tých posledných, ktoré sa menia viac. Tabuľka 5.1 zachytáva výsledky pre rôzny počet trénovacích príkladov N. Model VGG [34], čo je sieť s 19 vrstvami dosahuje ešte lepšie výsledky než mnou dotrénovaný model. V porovnaní s klasickými technikami z 44

51 5. Experimenty a vyhodnotenie počítačového videnia ako je SPM sú neurónové siete pre obrazové dáta výrazne lepšie. N AlexNet-FT VGG [34] SPM [41] [39] Tabuľka 5.1: Tabuľka zobrazuje úspešnosť dotrénovaného modelu AlexNet na datasetu Caltech256. Dotrénovanie modelu funguje už na malom množstve trénovacích vstupov. Zvýšením počtu trénovacích vstupov pre kategóriu nemá takmer žiadny vply na zvýšenie úspešnosti modelu. Tento model natrénovaný na dátovej sade ImageNet má dostatočne robustné príznaky. V ďaľsom experimente ma zaujímalo využitie deskriptoru z predposledných vrstiev siete AlexNet pre klasifikáciu inými modelmi. V tomto prípade som sieť nepretrénoval. Výstup teda vektor z predposlednej vrstvy má 4096 položiek. Rozhodol som sa odtestovať tri modely a to SVM, KNN a RF. N KNN SVM RF Tabuľka 5.2: Tabulka zobrazuje úspešnosť modelov KNN, SVM, RF (RandomForrest) pre deskriptory zo siete AlexNet. Ako vidíme z tabulky 5.1 tak deskriptory z predposlednej vrstvy AlexNet vyhovujú najviac algoritmu SVM. Úprava príznakov pomocou autoenkóderu V ďaľšom experimente pre túto dátovu sadu, ma zaujíma schopnosť využiť tieto príznaky z posledných vrstiev pre autoenkóder. Mnoho hodnôt v tomto deskriptore má hodnotu 0 (po aktivačnej funkcií typu 45

52 5. Experimenty a vyhodnotenie ReLU) a tak nemusí vyjadrovať nejakú vlastnosť. Takýto autoenkóder môže dimenzionalitu takýchto príznakov znížiť. Tieto príznaky by boli vhodné pre podobnostné vyhľadávanie v databázach, keďže by mohli zmenšiť pamäťovú a aj výpočetnú náročnosť. N A KNN SVM RF Tabuľka 5.3: Tabulka zobrazuje úspešnosť algoritmov KNN, SVM a RF pre deskriptory z Alexnet zakódované jednoduchým autoenkóderom do rozmeru 300. Deskriptory z AlexNetu prekonvertované pomocou kódovacej časti jednoduchého autoenkóderu, zvýšili úspešnosť modelu KNN. Výsledky sú ukázané v tabulke 5.1. Stĺpec 60A označuje deskriptory zo siete AlexNet dotrénovaných na datasete Caltech256. Dotrénovanie siete pre deskriptory z poslednej vrstvy pomôže, keďže najväčšie zmeny pri tréningu sú práve v posledných vrstvách. 300 FC7 100 FC7 50 FC [J] [%] FC PCA 50 FC7 100 FC7 300 FC [EPOCHY] [KNN] Obr. 5.1: V ľavej časti obrázku sa nachádza graf s hodnotou objektívenj funkcie autoenkóderu (Variational). V pravej časti je graf úspešnosti KNN algoritmu pre príznaky zakódovaných pomocou autoenkóderu a algoritmu PCA. V poslednom experimente uvádzam výsledky pre deskriptory zo siete VGG-16 [34]. Táto sieť obsahuje podobne ako AlexNet niekoľko 46

53 5. Experimenty a vyhodnotenie konvolučných a pooling vrstiev. Sieť VGG-16 obsahuje dve plne prepojené vrstvy nazvané fc6 a fc7, ktoré sa nachádzajú pred výstupnou softmax vrstvou. Vrstva fc6 predchádza vrstve fc7. Obidve tieto vrstvy majú aktivačnú vrstvu typu ReLU, takže sú záporné hodnoty nahradené nulou. Tensorflow umožňuje získavať výstupy pred i po aktivácií ReLU. VGG-16 bola natrénovaná na tej istej dátovej sade ako model AlexNet (podmnožina z Imagenet čo je približne 3.6 milióna obrázkov a 1000 kategórií). Príznaky respektíve deskriptory z oboch modelov zakódovávajú podobnú sémantiku. 80 [%] PCA SVM 70 VA SVM [POČET PRÍZNAKOV] Obr. 5.2: Úspešnosť algoritmu SVM s príznakmy z VGG siete zakódovaných pomocou PCA a Autoenkóderu. V tabulke 5.1 sú uvedené výsledky na algoritme KNN s 4 najbližšími susedmi. Riadok s fc6 a fc7 reprezentuje, z ktorej vrstvy boli deskriptory získané. Stĺpce reprezentujú či bola na deskriptory aplikovaná aktivačná funkcia ReLU, teda či boli negatívne hodnoty nahradené nulou. Z uvedenej tabulky vidíme, že lepšie výsledky dosahujú deskriptory z neskoršej vrstvy fc7. Taktiež si môžeme všimnúť, že v prípade KNN je lepšie získať výstupy bez aktivačnej funkcie. Deskriptory z VGG siete zlepšili úspešnosť približne o 4 percentá ako deskriptory z AlexNet. Vrstva ReLU - fc fc

54 5. Experimenty a vyhodnotenie Tabuľka 5.4: Tabulka zobrazuje úspešnosť algoritmu KNN pre 60 trénovacích príkladov s deskriptormi z modelu VGG-16. Na grafe 5.2 vidíme úspešnosť modelu SVM pre deskriptory z fc7 modelu VGG-16 zakódovaných do vektorov s menšou dimenziou. Vektory z vrstvy fc7 majú klasicky rozmer o 4096 prvkov. Pre zakódovanie som využil dva postupy. V prvom prípade som využil autoenkóder typu Variational a získal príznaky o rozmeroch 300, 100, 50. V druhom prípade som využil klasický algoritmus PCA [32] pre redukciu dimenzií. Príznaky z autoenkóderu dosahujú úspešnosť okolo 70 % a sú tak podobné príznakom z PCA. Takéto deskriptory by bolo možné využiť v systémoch pre rychlé vyhľadávanie podobných obrázkov [42]. Na obrázku 5.1 vľavo je zachytená chybová funkcia autoenkóderu pre data z Caltech256. Pre natrénovanie a zároveň získanie dát som data nerozdeľoval na trénovaciu a testovaciu množinu. V pravej časti obrázku je na grafe zachytená úspešnosť KNN pre rôzny počet najbližších susedov. Pre autoenkóder som využil existujúcu implementáciu z TensorFlow 1. V tabulke 5.1 sú ukázané výsledky (úspešnosť) pre hlboký autoenkóder pretrénovaný pomocou modelu RBM, bez pretrénovania a algoritmus PCA. Model/Počet príznakov Autoenkóder (RBM) Autoenóder (bez pretrénovania) PCA Tabuľka 5.5: Tabulka zobrazuje úspešnosť algoritmu SVM pre 60 trénovacích príkladov s deskriptormi z modelu VGG-16 zakódovaných do menšej dimenzie. Architektúra kódovacej časti autoenkóderu, ktorý kódue do piatich dimenzí je 4096 (vstupná vrstva) Jednotlivé vrstvy autoenkóderu boli pretrénované pomocou RBM. Takýto autoenkóder dosahuje omnoho lepšiu úspešnosť ako bez pretrénovania alebo ako algoritmus PCA. Váhy autoenkóderu bez pretrénovania boli inicializované pomocou techniky ukázanej v podkapitole

55 5. Experimenty a vyhodnotenie Pri menšej redukcií dimenzií (100) sa však rozdiel medzi PCA a autoenkóderu pretrénovaného pomocou RBM stráca, prípadne som nedokázal odhadnúť architektúru autoenkóderu, ktorá by dokázala nájsť lepšie príznaky. Ďaľším možným vysvetlením je nedostatok trénovacích dát. Pretrénovanie pomocou RBM a samotné trénovanie autoenkóderu s takýmito plneprepojenými vrstvami je výpočetne veľmi náročné a na počítači bez grafickej karty môže tréning menšieho modelu zabrať niekoľko dní. Pre implementáciu autoenkóderov a RBM som využil frameworky Keras a TensorFlow a pre PCA som využil knižnicu scikit-learn. Obr. 5.3: Vľavo príznaky VGG zakódované pomocou hlbokého autoenkóderu do dvoch dimenzií. V strede (a vpravo) sú príznaky modelu AlexNet (a VGG) zakódované pomocou PCA. Na obrázku 5.3 sú ukázané dáta caltech256 zakódované do dvoch dimenzií poomocou PCA a hlbokého autoenkóderu pretrénovaného pomocou RBM. Ako vidíme na obrázku 5.4 tak hodnota chybovej funkcie hlbokého autoenkóderu s architektúrou je menšia pokiaľ sa autoenkóder pretrénuje pomocou modelov RBM. Úspešnosť zakódovaných príznakov pre SVM pomocou takéhoto autoenkóderu je približne o 2% väčšia než bez pretrénovania. Autoenkóder sa mi bez pretrénovania pomocou RBM nepodaril naučiť. Vľavo je na obrázku ukázaná úspešnosť SVM pre rôzny počet komponent PCA (2-50). Od 20 komponent začne narastanie úspešnosti výrazne spomaľovať. VGG deskriptory sú v tomto prípade nepatrne lepšie než deskriptory z AlexNet. 49

56 5. Experimenty a vyhodnotenie 0.8 [Acc] [J] VGG DA(RBM INIT) 0.05 AlexNet PCA 0.04 VGG PCA VGG DA 2(RBM INIT) VGG DA 100 VGG DA 100(RBM INIT) [EPOCH] [KOMPONENT PCA] Obr. 5.4: Vľavo je zobrazená úspešnosť pre algoritmus SVM, ktorý využil príznaky z VGG a AlexNetu zakódovaných pomocou PCA. Vpravo je priemerná hodnota chybovej funkcie (1 príklad) pre rôzne typy autoenkóderov. 5.2 MSRC-12 Kinect gesture MSRC-12 [43] je jedna z prvých dátových sád vytvorená pomocou prístroja Kinect. Bola vydaná skupinou Microsoft Research. Dataset obsahuje 594 pohybových sekvencií vykonaných pomocou 30 osôb. V každej sekvencii je daný pohyb teda acia vykonaný viackrát. Celkovo obsahuje dataset okolo 6240 akcií. Tieto akcie boli zaznamenané na viac ako snímkoch, čo sa rovná približne šiestim hodinám a štyridsiatim minútam čistého nahrávania. Základom pre dáta je pohyb, respektíve súradnice 20 kĺbov človeka v čase a priestore. Obr. 5.5: Názorné prevádzanie pohybu človeka pre túto dátovú sadu (obrázok prebratý z [43]). Subjekty, ktoré boli nahrávané dostali 5 rôznych popisov vykonania pohybu a to video, sekvencia obrázkov, popis pomocou textu, 50

57 5. Experimenty a vyhodnotenie kombinácia video-text a kombinácia obrázky a text. Počet kategórií, do ktorých boli pohyby zaradené je 12, pričom pohyby sa rozdelovali na dve kategórie. Prvou kategóriou boli ikonické gestá, teda tie ktoré odkazujú priamo na daný pohyb ako je napríklad strelba zo zbrane alebo kopnutie do nepriateľa. Druhou kategóriou boli metaforické gestá teda tie, ktoré reprezentujú nejakú abstraktnú činnosť, ako je napríklad zastavenie prehrávania pesníčky. Tabuľka 5.6 Model 2:1 split LSTM DLSTM V prvom teste porovnávam úspešnosť rozpoznania daného pohybu do kategórie pre neupravené dáta. Dataset som rozdelil na trénovaciu a testovaciu podmnožinu. Skript get_kinect_data.py som použil na získanie sekvencií pre jednotlivé príklady. Veľkosť sekvencie je nastaviteľná. Vytvoril som rekurentnú sieť s vrstvou typu LSTM (skript lstm.py) a vyhodnotil na testovacích datách. Data boli rozdelené v pomeru 2:1 (tréning:test). Veľkosť jednej sekvencie je 45 príkladov. Tabulka 5.6 ukazuje úspešnosť modelu LSTM o veľkosti 700 neurónov a DLSTM o veľkosti vrstiev 900, 700 neurónov. Pri použití ďaľšej LSTM vrstvy sa úspešnosť modelu výrazne zvýšila. Tabuľka 5.7 Model/Rozdelenie 10k-validácia 2:1 split CNN THCD3D [44] V druhom teste som pohybové dáta kostry človeka previedol do formy obrázku. Každý kĺb obsahoval tri súradnice, ktoré som previedol do RGB hodnôt. Na obrázku 5.6 sú ukázané niektoré príklady ako prevedené dáta do obrázku vyzerajú. Vytvoril som jednoduchú konvolučnú sieť pomocou knižnice keras (táto sieť sa nachádza v súbore nn_conv.py). Dáta som rozdelil náhodne v pomere 2:1 a 9:1 pre trénovaciu a testovaciu množinu, natrénoval model a vyhodnotil úspešnosť. Model bol natrénovaný 10 krát a úspešnosť bola spriemerovaná. 51

58 5. Experimenty a vyhodnotenie Ako vidíme v tabulke 5.7 tak úspešnosť konvolučnej siete sa pohybuje okolo 95 až 99%. Obr. 5.6: Zobrazenie kĺbov v čase ako obrázok. 5.3 MSR-Action3D MSR-Action3D [45] je dátová sada sekvencií vyvinutá skupinou Microsoft Research. Obsahuje 20 typov akcií prevedených pomocou 10 osôb. Každá osoba jednotlivú akciu previedla 2 alebo 3 krát. Jednotlivé sekvencie sú vlastne hĺbkové mapy v čase o rozlíšení 320x240. Sekvencia čiernobielych hĺbkových máp je zobrazená na obrázku 5.7. Keďže bola dátova sada nahraná pomocou zariadenia podobnému ako je Microsoft Kinect, sú okrem hlbkových máp dostupné aj poloha dát jednotlivých klbóv teda dáta kostry. Jednotlivé typy akcií sú nasledujúce: high arm wave, horizontal arm wave, hammer, hand catch, forward punch, high throw, draw x, draw tick, draw circle, hand clap, two hand wave, side-boxing,bend, forward kick, side kick, jogging, tennis swing, tennis serve, golf swing, pickup throw. Pri vyhodnotení boli data rozdelené na 5 a 5 subjektov [46] [47]. Subjekty 1, 3, 5, 7, 9 boli použitý pre fázu trénovania a subjekty 2, 4, 6, 8, 10 na fázu testovania. 52

59 5. Experimenty a vyhodnotenie Model úspešnosť Recurrent Neural Network [48] Dynamic Temporal Warping [49] 0.54 Hidden Markov Model [50] 0.63 Bag of 3D Points [47] Actionlet ensemble model [46] Tabuľka 5.8: Tabulka zobrazuje modely a ich úspešnosti pre existujúce riešenia. Obr. 5.7: Čiernobiele hĺbkové zobrazenie v čase z datasetu MSR- Action3D V tabuľke si môžeme všimnúť, že základná rekurentná sieť dosahuje úspešnosti 42.5%, Bag of 3D Points prípadne skryté markovové modely nad 60%. V prvom riešení využívam rôzne rekurentné siete s vrstvami LSTM, ktoré som použil na dáta súradníc kĺbov. Počet kĺbov je 20 a pre každý kĺb boli zaznamenané 3 súradnice. Veľkosť jednej sekvencie je (X, 60), pričom X označuje dĺžku sekvencie. Rekurentná vrstva je napojená na výstupné neuróny. V nasledujúcej tabulke sú vyhodnotené modely, ktoré boli natrénované pomocou dát pozíc kĺbov v priestore. Tabuľka 5.9 Model úspešnosť LSTM DLSTM 0.68 Tabulka zobrazuje modely a ich úspešnosti pre datá kĺbov. 53

60 5. Experimenty a vyhodnotenie Zaujímavejším typom siete je rekurentná sieť s vrstvou LSTM, ktorá dosiahla úspešnosti Pod označením DLSTM je neurónová sieť s dvoma vrstvami typu LSTM. Všetky tieto siete boli natrénované na 50 priechodov (epoch) trénovacej množiny. Taktiež som vytvoril model ktorý využíva konvolučnú neurónovú sieť a rekurentnú neurónovú sieť. Konvolučná neurónová sieť bola natrénovaná pomocou frameworku Caffe na dátovej sade Imagenet (AlexNet). Takto natrénovaná neurónová sieť sa dá použiť pre získanie príznakov-deskriptorov pre každú snímku z danej sekvencie hĺbkových máp. Takéto príznaky som následne využil pre trénovanie rekurentných neurónových sietí. Pre možnosť extrakcie príznakov som použil poslednú a predposlednú skrytú vrstvu označenú ako FC7 a FC6 danej neurónovej siete. Obidve majú výstupnú veľkosť 4096 neurónov. Príznaky získané týmito vrstvami sú si podobné avšak medzi vrstvou FC6 a FC7 sa nachádza jedna ReLU vrstva a jedna Dropout vrstva. Architektúra DLSTM modelu je následujúca. Prvá vrstva LSTM obsahuje 900 neurónov, drúha vrstva LSTM 700 neurónov. Druhá vrstva LSTM sa napája na plneprepojenú vrstvu o veľkosti 20 neurónov (počtu typov akcií). Model Vrstva FC7 Vrstva FC6 LSTM DLSTM Tabuľka 5.10: Tabulka zobrazuje úspešnosti pre rekurentné modely využívajúce príznaky (z hĺbkových máp) z konvolučnej neurónovej siete natrénovanej na dátovej sade Imagenetu. Prvým modelom bola sieť s rekurentnou vrstvou typu LSTM o veľkosti 900 neurónov. Druhým modelom označený v tabulke 5.3 ako DLSTM bola sieť s dvomi LSTM vrstvami o veľkosti 900 a 500 neurónov. Všetky rekurentné siete boli napojené na výstupnú vrstvu typu softmax o veľkosti počtu klasifikačných kategórií, v tomto prípade 20. V poslednom riešení som previedol čiernobiele hĺbkové mapy do farebného (červená,zelená) zobrazenia respektíve mapy pomocou interpolácie. Na obrázku 5.8 je ukázaný výsledok tohoto prevedenia. Každý pixel sa prevedie do troch farieb (RGB) pomocou nasledujú- 54

61 5. Experimenty a vyhodnotenie Obr. 5.8: Farebné hĺbkové zobrazenie v čase z datasetu MSR-Action3D cich vzorcov: R = C 1.R value + C 2.R(1 value) G = C 1.G value + C 2.G(1 value) B = C 1.B value + C 2.B(1 value) (5.1) Opäť som odtestoval siete LSTM a DLSTM tentoraz s farebnými príznakmi zo siete AlexNet. Výsledky sú v tabulke 5.3. Úspešnosť modelov s takýmito príznakmi sa zvýšila, keďže sieť akou je Alex- Net bola natrénovaná na farebných obrázkov. Každopádne vidíme z predchádzajúceho experimentu, že sieť dokáže zistiť dôležité informácie aj z čiernobielych máp, avšak jednoduchou úpravou teda prevedením do farebného spektra sme úspešnosť modelu zlepšili. Model Vrstva FC7 Vrstva FC6 LSTM DLSTM Tabuľka 5.11: Tabulka zobrazuje úspešnosti pre rekurentné modely využívajúce príznaky (z hĺbkových máp) z konvolučnej neurónovej siete natrénovanej na dátovej sade Imagenet. 5.4 Motion65 Tento dataset bol vytvorený za pomocou Laboratória dátovo orientovaných systémov a aplikácií (DISA) na Fakulte informatiky Masarykovej univerzity. Obsahuje približne 2500 sekvencií rozdelených do 55

62 5. Experimenty a vyhodnotenie Obr. 5.9: Matice zámien pre LSTM model využívajúci data priamo, LSTM model využívajúci príznaky z MNIST siete a LSTM model využívajúci príznaky z Imagenet siete. 65 kategórií. Data reprezentujú pohyb kĺbov človeka v priestore. Tieto sekvencie boli uložené ako obrázky s tým, že každý pixel je reprezentovaný práve ako umiestnenie kĺbu v 3D priestore. Úlohou bolo zaradiť pohybovú sekvenciu do jednej zo 65 kategórií. Dáta som rozdelil v pomere 9:1 (tréning:test). Využil som krížovej validácie (10k) a výsledky úspešnosti som spriemeroval CNN CNN FT IMAGENET Obr. 5.10: Chybová funkcia konvolučnej siete po každej 200 iterácií. V prvom experimente som využil framework Caffe a existujúceho natrénovaného modelu AlexNet. Poslednú vrstvu som nahradil Soft- Max vrstvou so 65 neurónmi. Takáto sieť dosiahla úspešnosti viac 56

Neurónové siete v C# Neural networks in C# Michal Pavlech

Neurónové siete v C# Neural networks in C# Michal Pavlech Neurónové siete v C# Neural networks in C# Michal Pavlech Diplomová práce 2009 ABSTRAKT Hlavným cieľom tejto práce je vytvoriť knižnicu na vytváranie a prácu s umelými neurónovými sieťami v jazyku C#.

More information

FUZZY-NEURO ALGORITMY MODELOVANIA NELINEÁRNYCH PROCESOV V DOPRAVE

FUZZY-NEURO ALGORITMY MODELOVANIA NELINEÁRNYCH PROCESOV V DOPRAVE Slovenská technická univerzita v Bratislave FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ FIIT-5212-35461 Jozef Macho FUZZY-NEURO ALGORITMY MODELOVANIA NELINEÁRNYCH PROCESOV V DOPRAVE Bakalárska práca

More information

MODELOVANIE A RIADENIE SYSTÉMOV POMOCOU NEURÓNOVÝCH SIETÍ S ORTOGONÁLNYMI FUNKCIAMI V PROSTREDÍ MATLAB

MODELOVANIE A RIADENIE SYSTÉMOV POMOCOU NEURÓNOVÝCH SIETÍ S ORTOGONÁLNYMI FUNKCIAMI V PROSTREDÍ MATLAB MODELOVANIE A RIADENIE SYSTÉMOV POMOCOU NEURÓNOVÝCH SIETÍ S ORTOGONÁLNYMI FUNKCIAMI V PROSTREDÍ MATLAB Slavomír Kajan Ústav riadenia a priemyselnej informatiky, Fakulta elektrotechniky a informatiky, Slovenská

More information

Teória grafov. RNDr. Milan Stacho, PhD.

Teória grafov. RNDr. Milan Stacho, PhD. Teória grafov RNDr. Milan Stacho, PhD. Literatúra Plesník: Grafové algoritmy, Veda Bratislava 1983 Sedláček: Úvod do teórie grafů, Academia Praha 1981 Bosák: Grafy a ich aplikácie, Alfa Bratislava 1980

More information

Ing. Tomasz Kanik. doc. RNDr. Štefan Peško, CSc.

Ing. Tomasz Kanik. doc. RNDr. Štefan Peško, CSc. Ing. Tomasz Kanik Školiteľ: doc. RNDr. Štefan Peško, CSc. Pracovisko: Študijný program: KMMOA, FRI, ŽU 9.2.9 Aplikovaná informatika 1 identifikácia problémovej skupiny pacientov, zlepšenie kvality rozhodovacích

More information

Neviem ci vam Jirko spominal, ale tesne po novom roku som mu poslal uz jeden hotovy clanok ktory este nebol publikovany. Prikladam ho v prilohe.

Neviem ci vam Jirko spominal, ale tesne po novom roku som mu poslal uz jeden hotovy clanok ktory este nebol publikovany. Prikladam ho v prilohe. Dobry den pan profesor. Neviem ci vam Jirko spominal, ale tesne po novom roku som mu poslal uz jeden hotovy clanok ktory este nebol publikovany. Prikladam ho v prilohe. Ma nazov: Pouzitie optimalizovanej

More information

Metódy vol nej optimalizácie

Metódy vol nej optimalizácie Matematické programovanie Metódy vol nej optimalizácie p. 1/35 Informácie o predmete Informácie o predmete p. 2/35 Informácie o predmete METÓDY VOL NEJ OPTIMALIZÁCIE Prednášajúca: M. Trnovská (M 267) Cvičiaci:

More information

2. prednáška Logické neuróny a neurónové siete

2. prednáška Logické neuróny a neurónové siete 2. prednáška Logické neuróny a neurónové siete priesvitka: Mozog a neurónové siete Metafora ľudského mozgu hrá dôležitú úlohu v modernej informatike. Pomocou tejto metafory boli navrhnuté nové paralelné

More information

Kľúčové slová: SAR, šum spekl noise, evolučná PDR, lineárna difúzia, Perona-Malikova rovnica, štatistickéfiltre, Leeho filter

Kľúčové slová: SAR, šum spekl noise, evolučná PDR, lineárna difúzia, Perona-Malikova rovnica, štatistickéfiltre, Leeho filter Kľúčové slová: SAR, šum spekl noise, evolučná PDR, lineárna difúzia, Perona-Malikova rovnica, štatistickéfiltre, Leeho filter Tvorba šumu spekl radarový senzor vysiela elektromagneticlý pulz a meria odraz

More information

ADM a logika. 4. prednáška. Výroková logika II, logický a sémantický dôsledok, teória a model, korektnosť a úplnosť

ADM a logika. 4. prednáška. Výroková logika II, logický a sémantický dôsledok, teória a model, korektnosť a úplnosť ADM a logika 4. prednáška Výroková logika II, logický a sémantický dôsledok, teória a model, korektnosť a úplnosť 1 Odvodzovanie formúl výrokovej logiky, logický dôsledok, syntaktický prístup Logický dôsledok

More information

MODELOVANIE TECHNOLOGICKEJ ČASTI POCÍNOVACEJ LINKY NA BÁZE UMELÝCH NEURÓNOVÝCH SIETÍ

MODELOVANIE TECHNOLOGICKEJ ČASTI POCÍNOVACEJ LINKY NA BÁZE UMELÝCH NEURÓNOVÝCH SIETÍ Acta Metallurgica Slovaca, 2, 2006, 3 (282-290) 282 MODELOVANIE TECHNOLOGICKEJ ČASTI POCÍNOVACEJ LINKY NA BÁZE UMELÝCH NEURÓNOVÝCH SIETÍ Žilková J., Timko J. Katedra elektrotechniky, mechatroniky a priemyslového

More information

Apprentissage, réseaux de neurones et modèles graphiques (RCP209) Neural Networks and Deep Learning

Apprentissage, réseaux de neurones et modèles graphiques (RCP209) Neural Networks and Deep Learning Apprentissage, réseaux de neurones et modèles graphiques (RCP209) Neural Networks and Deep Learning Nicolas Thome Prenom.Nom@cnam.fr http://cedric.cnam.fr/vertigo/cours/ml2/ Département Informatique Conservatoire

More information

Odhady veľkosti pokrytí náhodne indukovaných podgrafov n-rozmernej hyperkocky

Odhady veľkosti pokrytí náhodne indukovaných podgrafov n-rozmernej hyperkocky KATEDRA INFORMATIKY FAKULTA MATEMATIKY FYZIKY A INFORMATIKY UNIVERZITA KOMENSKÉHO Odhady veľkosti pokrytí náhodne indukovaných podgrafov nrozmernej hyperkocky Diplomová práca Bc. Ján Kliman študijný odbor:

More information

Algoritmizácia Elmanovej rekuretnej neurónovej siete

Algoritmizácia Elmanovej rekuretnej neurónovej siete Algoritmizácia Elmanovej rekuretnej neurónovej siete Vladimír Kvasnička ÚAI FIIT STU 1. Diagramatická reprezentácia Elanovej rekurentnej neurónovej siete Diagramatická rereprezentácia Elamovej neurónovej

More information

Klasifikácia. Obchodný dom = oddelenia (typ/druh tovaru) alternatívne kritériá výberu príznakov vedú k rôznemu výsledku klasifikácie

Klasifikácia. Obchodný dom = oddelenia (typ/druh tovaru) alternatívne kritériá výberu príznakov vedú k rôznemu výsledku klasifikácie Klasifikácia Obchodný dom = oddelenia (typ/druh tovaru) alternatívne kritériá výberu príznakov vedú k rôznemu výsledku klasifikácie určenie triedy objektu na základe príznakov získaných z objektu Rozhodovacie

More information

Introduction to Convolutional Neural Networks (CNNs)

Introduction to Convolutional Neural Networks (CNNs) Introduction to Convolutional Neural Networks (CNNs) nojunk@snu.ac.kr http://mipal.snu.ac.kr Department of Transdisciplinary Studies Seoul National University, Korea Jan. 2016 Many slides are from Fei-Fei

More information

DEA modely a meranie eko-efektívnosti

DEA modely a meranie eko-efektívnosti Fakulta matematiky, fyziky a informatiky Univerzita Komenského v Bratislave DEA modely a meranie eko-efektívnosti 2008 Veronika Lennerová DEA modely a meranie eko-efektívnosti DIPLOMOVÁ PRÁCA Diplomant:

More information

Kapitola S5. Skrutkovica na rotačnej ploche

Kapitola S5. Skrutkovica na rotačnej ploche Kapitola S5 Skrutkovica na rotačnej ploche Nech je rotačná plocha určená osou rotácie o a meridiánom m. Skrutkový pohyb je pohyb zložený z rovnomerného rotačného pohybu okolo osi o a z rovnomerného translačného

More information

ROZPOZNÁVANIE FONÉM ČÍSIEL SLOVENSKÉHO JAZYKA NEURÓNOVOU SIEŤOU VOJTECH SLOVIK

ROZPOZNÁVANIE FONÉM ČÍSIEL SLOVENSKÉHO JAZYKA NEURÓNOVOU SIEŤOU VOJTECH SLOVIK ROZPOZNÁVANIE FONÉM ČÍSIEL SLOVENSKÉHO JAZYKA NEURÓNOVOU SIEŤOU VOJTECH SLOVIK 2007 UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY KATEDRA APLIKOVANEJ INFORMATIKY ROZPOZNÁVANIE

More information

Maticové algoritmy I maticová algebra operácie nad maticami súčin matíc

Maticové algoritmy I maticová algebra operácie nad maticami súčin matíc Maticové algoritmy I maticová algebra operácie nad maticami súčin matíc priesvitka Maurits Cornelis Escher (898-97) Ascending and Descending, 960, Lithograph priesvitka Matice V mnohých prípadoch dáta

More information

Convolutional Neural Networks II. Slides from Dr. Vlad Morariu

Convolutional Neural Networks II. Slides from Dr. Vlad Morariu Convolutional Neural Networks II Slides from Dr. Vlad Morariu 1 Optimization Example of optimization progress while training a neural network. (Loss over mini-batches goes down over time.) 2 Learning rate

More information

Sborník vědeckých prací Vysoké školy báňské - Technické univerzity Ostrava číslo 2, rok 2007, ročník LIII, řada strojní článek č.

Sborník vědeckých prací Vysoké školy báňské - Technické univerzity Ostrava číslo 2, rok 2007, ročník LIII, řada strojní článek č. Sborník vědeckých prací Vysoké školy báňské - echnické univerzity Ostrava číslo 2 rok 2007 ročník LIII řada strojní článek č 1570 Jolana ŠKUOVÁ * AN ORHOGONAL NEURAL NEWORK FOR NONLINEAR FUNCION ODELLING

More information

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ FACULTY OF INFORMATION TECHNOLOGY ÚSTAV POČÍTAČOVÝCH SYSTÉMŮ DEPARTMENT OF COMPUTER SYSTEMS AUTOMATIZACE VERIFIKACE

More information

Neural Networks and Deep Learning

Neural Networks and Deep Learning Neural Networks and Deep Learning Professor Ameet Talwalkar November 12, 2015 Professor Ameet Talwalkar Neural Networks and Deep Learning November 12, 2015 1 / 16 Outline 1 Review of last lecture AdaBoost

More information

ProFIIT 2018 Vysvetlenia riešení problémov

ProFIIT 2018 Vysvetlenia riešení problémov ProFIIT 2018 Vysvetlenia riešení problémov Peter Trebatický et al. 7.4.2018 Peter Trebatický et al. ProFIIT 2018 7.4.2018 1 / 41 1 Poradie Peter Trebatický 2 Heslá Michal Maňak 3 3 3 Peter Kmec 4 Logy

More information

METRICKÉ ÚLOHY V PRIESTORE

METRICKÉ ÚLOHY V PRIESTORE 1. ÚVOD METRICKÉ ÚLOHY V PRIESTORE Monika ĎURIKOVIČOVÁ 1 Katedra Matematiky, Strojnícka fakulta STU, Abstrakt: Popisujeme možnosti použitia programového systému Mathematica pri riešení špeciálnych metrických

More information

Obsah. 2 Určenie objemu valčeka Teoretický úvod Postup merania a spracovanie výsledkov... 10

Obsah. 2 Určenie objemu valčeka Teoretický úvod Postup merania a spracovanie výsledkov... 10 Obsah 1 Chyby merania 1 1.1 áhodné a systematické chyby.................... 1 1.2 Aritmetický priemer a stredná kvadratická chyba......... 1 1.3 Rozdelenie nameraných dát..................... 3 1.4 Limitné

More information

ENTROPIA. Claude Elwood Shannon ( ), USA A Mathematical Theory of Communication, 1948 LOGARITMUS

ENTROPIA. Claude Elwood Shannon ( ), USA A Mathematical Theory of Communication, 1948 LOGARITMUS LOGARITMUS ENTROPIA Claude Elwood Shao (96-00), USA A Mathematcal Theory of Commucato, 948 7. storoče Naer, Brggs, orovae číselých ostuostí: artmetcká ostuosť 3 0 3 4 5 6 geometrcká ostuosť /8 /4 / 4 8

More information

Detekcia tváre, identifikácia tváre, Haarove príznaky, AdaBoost, extrakca príznakov, klasifikátor, trénovacia tvár, testovacia tvár, databáza

Detekcia tváre, identifikácia tváre, Haarove príznaky, AdaBoost, extrakca príznakov, klasifikátor, trénovacia tvár, testovacia tvár, databáza Abstrakt Táto diplomová práca sa zaoberá identifikáciu tvárií v reálnych podmienkach. Obsahuje preh ad sú asných metód detekcie tvárií pomocou klasifikátorov. Taktiež obsahuje rôzne metódy na detekciu

More information

Need for Deep Networks Perceptron. Can only model linear functions. Kernel Machines. Non-linearity provided by kernels

Need for Deep Networks Perceptron. Can only model linear functions. Kernel Machines. Non-linearity provided by kernels Need for Deep Networks Perceptron Can only model linear functions Kernel Machines Non-linearity provided by kernels Need to design appropriate kernels (possibly selecting from a set, i.e. kernel learning)

More information

Matematika 17. a 18. storočia

Matematika 17. a 18. storočia Matematika 17. a 18. storočia René Descartes Narodený : 31 Marec 1596 v La Haye (teraz Descartes),Touraine, France Zomrel : 11 Feb 1650 v Stockholm, Sweden Riešenie kvadratických rovníc podľa Descarta

More information

Appendix. Title. Petr Lachout MFF UK, ÚTIA AV ČR

Appendix. Title. Petr Lachout MFF UK, ÚTIA AV ČR Title ROBUST - Kráĺıky - únor, 2010 Definice Budeme se zabývat optimalizačními úlohami. Uvažujme metrický prostor X a funkci f : X R = [, + ]. Zajímá nás minimální hodnota funkce f na X ϕ (f ) = inf {f

More information

Index. Santanu Pattanayak 2017 S. Pattanayak, Pro Deep Learning with TensorFlow,

Index. Santanu Pattanayak 2017 S. Pattanayak, Pro Deep Learning with TensorFlow, Index A Activation functions, neuron/perceptron binary threshold activation function, 102 103 linear activation function, 102 rectified linear unit, 106 sigmoid activation function, 103 104 SoftMax activation

More information

Prednáška 3. Optimalizačné metódy pre funkcie n-premenných. Študujme reálnu funkciu n-premenných. f: R R

Prednáška 3. Optimalizačné metódy pre funkcie n-premenných. Študujme reálnu funkciu n-premenných. f: R R Prednáška 3 Optimalizačné metódy pre funkcie n-premenných Študujme reálnu funkciu n-premenných n f: R R Našou úlohou bude nájsť také x opt R n, pre ktoré má funkcia f minimum x opt = arg min ( f x) Túto

More information

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY DETEKOVANIE KOMUNÍT V SOCIÁLNYCH SIEŤACH Patricia SVITKOVÁ

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY DETEKOVANIE KOMUNÍT V SOCIÁLNYCH SIEŤACH Patricia SVITKOVÁ UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY DETEKOVANIE KOMUNÍT V SOCIÁLNYCH SIEŤACH BAKALÁRSKA PRÁCA 2017 Patricia SVITKOVÁ UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY,

More information

The Golden Ratio and Signal Quantization

The Golden Ratio and Signal Quantization The Golden Ratio and Signal Quantization Tom Hejda, tohecz@gmail.com based on the work of Ingrid Daubechies et al. Doppler Institute & Department of Mathematics, FNSPE, Czech Technical University in Prague

More information

Fakulta Matematiky, Fyziky a Informatiky Univerzita Komenského, Bratislava THEILOVA REGRESIA

Fakulta Matematiky, Fyziky a Informatiky Univerzita Komenského, Bratislava THEILOVA REGRESIA Fakulta Matematiky, Fyziky a Informatiky Univerzita Komenského, Bratislava THEILOVA REGRESIA Róbert Tóth Bratislava 2013 Fakulta Matematiky, Fyziky a Informatiky Univerzita Komenského, Bratislava THEILOVA

More information

Od zmiešavacieho kalorimetra k ultra citlivej modulovanej kalorimetrii. Jozef Kačmarčík

Od zmiešavacieho kalorimetra k ultra citlivej modulovanej kalorimetrii. Jozef Kačmarčík Od zmiešavacieho kalorimetra k ultra citlivej modulovanej kalorimetrii CENTRUM FYZIKY VEĽMI NÍZKYCH TEPLÔT Ústavu experimentálnej fyziky SAV a Univerzity P.J.Šafárika Centrum excelentnosti SAV Jozef Kačmarčík

More information

Softwarové inžinierstvo. martin timothy timko

Softwarové inžinierstvo. martin timothy timko S Q L S E R V E R : A D O. N E T Softwarové inžinierstvo martin timothy timko 14.9. 2017 1 úvod 2 1 úvod ADO.NET je objektovo-orientovaná množina knižníc, ktorá poskytuje manipuláciu s dátovými zdrojmi.

More information

Need for Deep Networks Perceptron. Can only model linear functions. Kernel Machines. Non-linearity provided by kernels

Need for Deep Networks Perceptron. Can only model linear functions. Kernel Machines. Non-linearity provided by kernels Need for Deep Networks Perceptron Can only model linear functions Kernel Machines Non-linearity provided by kernels Need to design appropriate kernels (possibly selecting from a set, i.e. kernel learning)

More information

Platforma průmyslové spolupráce

Platforma průmyslové spolupráce Platforma průmyslové spolupráce CZ.1.07/2.4.00/17.0041 Název Operátory pro zpracování proudů dat Popis a využití práce s operátory v jazyce Esper pro Java Benchmarking výuka: pokročilá Java Jazyk textu

More information

arxiv: v3 [cs.lg] 14 Jan 2018

arxiv: v3 [cs.lg] 14 Jan 2018 A Gentle Tutorial of Recurrent Neural Network with Error Backpropagation Gang Chen Department of Computer Science and Engineering, SUNY at Buffalo arxiv:1610.02583v3 [cs.lg] 14 Jan 2018 1 abstract We describe

More information

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA CHEMICKEJ A POTRAVINÁRSKEJ TECHNOLÓGIE ÚSTAV INFORMATIZÁCIE, AUTOMATIZÁCIE A MATEMATIKY

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA CHEMICKEJ A POTRAVINÁRSKEJ TECHNOLÓGIE ÚSTAV INFORMATIZÁCIE, AUTOMATIZÁCIE A MATEMATIKY SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA CHEMICKEJ A POTRAVINÁRSKEJ TECHNOLÓGIE ÚSTAV INFORMATIZÁCIE, AUTOMATIZÁCIE A MATEMATIKY OPTIMÁLNE RIADENIE PROCESOV BAKALARÁSKA PRÁCA FCHPT-5415-17457

More information

Statistical Machine Learning (BE4M33SSU) Lecture 5: Artificial Neural Networks

Statistical Machine Learning (BE4M33SSU) Lecture 5: Artificial Neural Networks Statistical Machine Learning (BE4M33SSU) Lecture 5: Artificial Neural Networks Jan Drchal Czech Technical University in Prague Faculty of Electrical Engineering Department of Computer Science Topics covered

More information

Segmentace textury. Jan Kybic

Segmentace textury. Jan Kybic Segmentace textury Případová studie Jan Kybic Zadání Mikroskopický obrázek segmentujte do tříd: Příčná vlákna Podélná vlákna Matrice Trhliny Zvolená metoda Deskriptorový popis Učení s učitelem ML klasifikátor

More information

Analýza multispektrálnych dát z konfokálnej mikroskopie. DIPLOMOVÁ PRÁCA

Analýza multispektrálnych dát z konfokálnej mikroskopie. DIPLOMOVÁ PRÁCA Analýza multispektrálnych dát z konfokálnej mikroskopie. DIPLOMOVÁ PRÁCA Kamil Paulíny UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY FYZIKY A INFORMATIKY KATEDRA APLIKOVANEJ INFORMATIKY Študijný

More information

PSEUDOINVERZNÁ MATICA

PSEUDOINVERZNÁ MATICA PSEUDOINVERZNÁ MATICA Jozef Fecenko, Michal Páleš Abstrakt Cieľom príspevku je podať základnú informácie o pseudoinverznej matici k danej matici. Ukázať, že bázický rozklad matice na súčin matíc je skeletným

More information

MULTIPARAMETRICKÁ SEGMENTACE MR OBRAZŮ

MULTIPARAMETRICKÁ SEGMENTACE MR OBRAZŮ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV TELEKOMUNIKACÍ FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF TELECOMMUNICATIONS

More information

Matematická analýza II.

Matematická analýza II. V. Diferenciálny počet (prezentácia k prednáške MANb/10) doc. RNDr., PhD. 1 1 ondrej.hutnik@upjs.sk umv.science.upjs.sk/analyza Prednáška 8 6. marca 2018 It has apparently not yet been observed, that...

More information

Jakub Hajic Artificial Intelligence Seminar I

Jakub Hajic Artificial Intelligence Seminar I Jakub Hajic Artificial Intelligence Seminar I. 11. 11. 2014 Outline Key concepts Deep Belief Networks Convolutional Neural Networks A couple of questions Convolution Perceptron Feedforward Neural Network

More information

Univerzita Karlova v Praze. Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE. Matúš Kepič

Univerzita Karlova v Praze. Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE. Matúš Kepič Univerzita Karlova v Praze Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE Matúš Kepič Webová aplikace pro výuku goniometrických funkcí, rovnic a nerovnic Katedra didaktiky matematiky Vedoucí diplomové práce:

More information

A l g o r i t m i c k y n e r i e š i t e ľ n é p r o b l é m y

A l g o r i t m i c k y n e r i e š i t e ľ n é p r o b l é m y A l g o r i t m i c k y n e r i e š i t e ľ n é p r o b l é m y Lev Bukovský Ústav matematických vied, Prírodovedecká fakulta UPJŠ Košice, 20. apríla 2004 Obsah 1 Úvod 2 2 Čiastočne rekurzívne funkcie

More information

FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY UNIVERZITY KOMENSKÉHO V BRATISLAVE

FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY UNIVERZITY KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY UNIVERZITY KOMENSKÉHO V BRATISLAVE PÍSOMNÁ PRÁCA K DIZERTAČNEJ SKÚŠKE 2005 Zuzana Holeščáková FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY UNIVERZITY KOMENSKÉHO V BRATISLAVE

More information

Topics in AI (CPSC 532L): Multimodal Learning with Vision, Language and Sound. Lecture 3: Introduction to Deep Learning (continued)

Topics in AI (CPSC 532L): Multimodal Learning with Vision, Language and Sound. Lecture 3: Introduction to Deep Learning (continued) Topics in AI (CPSC 532L): Multimodal Learning with Vision, Language and Sound Lecture 3: Introduction to Deep Learning (continued) Course Logistics - Update on course registrations - 6 seats left now -

More information

RIEŠENIE PROBLÉMOV METÓDOU MONTE CARLO V TABUĽKOVOM KALKULÁTORE MS EXCEL ÚVOD

RIEŠENIE PROBLÉMOV METÓDOU MONTE CARLO V TABUĽKOVOM KALKULÁTORE MS EXCEL ÚVOD South Bohemia Mathematical Letters Volume 23, (2015), No. 1, 18-27. RIEŠENIE PROBLÉMOV METÓDOU MONTE CARLO V TABUĽKOVOM KALKULÁTORE MS EXCEL ŠTEFAN GUBO ABSTRAKT. Metóda Monte Carlo patrí medzi metódy

More information

Jádrové odhady gradientu regresní funkce

Jádrové odhady gradientu regresní funkce Monika Kroupová Ivana Horová Jan Koláček Ústav matematiky a statistiky, Masarykova univerzita, Brno ROBUST 2018 Osnova Regresní model a odhad gradientu Metody pro odhad vyhlazovací matice Simulace Závěr

More information

Neurónové siete a AlphaGo

Neurónové siete a AlphaGo Neurónové siete a AlphaGo Dominika Kubániová Abstrakt Medzi najnov¹ie prelomové udalosti v oblasti umelej inteligencie patrí výhra poèítaèa AlphaGo v strategickej hre Go nad profesionálnym hráèom Lee Se-Dolom.

More information

Deep Learning: a gentle introduction

Deep Learning: a gentle introduction Deep Learning: a gentle introduction Jamal Atif jamal.atif@dauphine.fr PSL, Université Paris-Dauphine, LAMSADE February 8, 206 Jamal Atif (Université Paris-Dauphine) Deep Learning February 8, 206 / Why

More information

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY MODELOVANIE VEKU ÁUT V PREVÁDZKE

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY MODELOVANIE VEKU ÁUT V PREVÁDZKE UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY MODELOVANIE VEKU ÁUT V PREVÁDZKE Bakalárska práca 2011 Andrej Horský UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY

More information

Neural Networks. Yan Shao Department of Linguistics and Philology, Uppsala University 7 December 2016

Neural Networks. Yan Shao Department of Linguistics and Philology, Uppsala University 7 December 2016 Neural Networks Yan Shao Department of Linguistics and Philology, Uppsala University 7 December 2016 Outline Part 1 Introduction Feedforward Neural Networks Stochastic Gradient Descent Computational Graph

More information

História nekonečne malej veličiny PROJEKTOVÁ PRÁCA. Martin Čulen. Alex Fleško. Konzultant: Vladimír Repáš

História nekonečne malej veličiny PROJEKTOVÁ PRÁCA. Martin Čulen. Alex Fleško. Konzultant: Vladimír Repáš História nekonečne malej veličiny PROJEKTOVÁ PRÁCA Martin Čulen Alex Fleško Konzultant: Vladimír Repáš Škola pre mimoriadne nadané deti a Gymnázium, Skalická 1, Bratislava BRATISLAVA 2013 1. Obsah 1. Obsah

More information

1 Matice a ich vlastnosti

1 Matice a ich vlastnosti Pojem sústavy a jej riešenie 1 Matice a ich vlastnosti 11 Sústavy lineárnych rovníc a matice Príklad 11 V množine reálnych čísel riešte sústavu rovníc x - 2y + 4z + t = -6 2x + 3y - z + 2t = 13 2x + 5y

More information

GENEROVANIE STABILNÝCH MODELOV VYUŽÍVANÍM CUDA TECHNOLÓGIE

GENEROVANIE STABILNÝCH MODELOV VYUŽÍVANÍM CUDA TECHNOLÓGIE UNIVERZITA KOMENSKÉHO FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY KATEDRA INFORMATIKY GENEROVANIE STABILNÝCH MODELOV VYUŽÍVANÍM CUDA TECHNOLÓGIE BAKALÁRSKA PRÁCA PETER CIEKER Štúdijný odbor : Vedúci : 9.2.1

More information

Jádrové odhady regresní funkce pro korelovaná data

Jádrové odhady regresní funkce pro korelovaná data Jádrové odhady regresní funkce pro korelovaná data Ústav matematiky a statistiky MÚ Brno Finanční matematika v praxi III., Podlesí 3.9.-4.9. 2013 Obsah Motivace Motivace Motivace Co se snažíme získat?

More information

Kompresia dát a jej použitie

Kompresia dát a jej použitie Kompresia dát a jej použitie alebo Veľa muziky na malom diskovom priestore Záverečná práca Peter Vook Univerzita Karlova v Praze Matematicko-fyzikální fakulta 0 1 Reálna situácia alebo Zo života Anička

More information

Vizuálna podpora dokazovania čiastočnej správnosti programov pomocou Hoareovej metódy

Vizuálna podpora dokazovania čiastočnej správnosti programov pomocou Hoareovej metódy Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky Vizuálna podpora dokazovania čiastočnej správnosti programov pomocou Hoareovej metódy bakalárska práca 2015 Jakub Pavčo Univerzita

More information

Súťaž PALMA junior a programovanie v jazyku Python

Súťaž PALMA junior a programovanie v jazyku Python Súťaž PALMA junior a programovanie v jazyku Python Ján Guniš Ľubomír Šnajder Prírodovedecká fakulta Univerzity P. J. Šafárika v Košiciach DidInfo + DidactIG 2017, Banská Bystrica Obsah Súťaž PALMA junior

More information

ENVIRONMENTÁLNE FAKTORY V HODNOTENÍ EFEKTÍVNOSTI V POĽNOHOSPODÁRSTVE ENVIRONMENTAL FACTORS IN EFFICIENCY ASSESMENT IN AGRICULTURE.

ENVIRONMENTÁLNE FAKTORY V HODNOTENÍ EFEKTÍVNOSTI V POĽNOHOSPODÁRSTVE ENVIRONMENTAL FACTORS IN EFFICIENCY ASSESMENT IN AGRICULTURE. ENVIRONMENTÁLNE FAKTORY V HODNOTENÍ EFEKTÍVNOSTI V POĽNOHOSPODÁRSTVE ENVIRONMENTAL FACTORS IN EFFICIENCY ASSESMENT IN AGRICULTURE Peter FANDEL The paper focuses on the analysis of environmental factors

More information

Deep Feedforward Networks

Deep Feedforward Networks Deep Feedforward Networks Liu Yang March 30, 2017 Liu Yang Short title March 30, 2017 1 / 24 Overview 1 Background A general introduction Example 2 Gradient based learning Cost functions Output Units 3

More information

PREDPOVEĎ PRIETOKOV POUŽITÍM MATEMATICKÝCH A ŠTATISTICKÝCH METÓD

PREDPOVEĎ PRIETOKOV POUŽITÍM MATEMATICKÝCH A ŠTATISTICKÝCH METÓD PREDPOVEĎ PRIETOKOV POUŽITÍM MATEMATICKÝCH A ŠTATISTICKÝCH METÓD 1 Úvod Martin Suchár, Milan Čistý, Peter Valent Katedra vodného hospodárstva krajiny, Slovenská technická univerzita v Bratislave Abstract

More information

2-UMA-115 Teória množín. Martin Sleziak

2-UMA-115 Teória množín. Martin Sleziak 2-UMA-115 Teória množín Martin Sleziak 23. septembra 2010 Obsah 1 Úvod 4 1.1 Predhovor...................................... 4 1.2 Sylaby a literatúra................................. 5 1.2.1 Literatúra..................................

More information

Predspracovanie obrazu

Predspracovanie obrazu Predspracovanie obrazu Sonka, Hlavac, Boyle: Image Processing, Analysis and Machine vision, kapitola: Image pre-processing Szeliski: Computer Vision: Algorithms and Applications kapitola: Image processing

More information

DeepLearning on FPGAs

DeepLearning on FPGAs DeepLearning on FPGAs Introduction to Deep Learning Sebastian Buschäger Technische Universität Dortmund - Fakultät Informatik - Lehrstuhl 8 October 21, 2017 1 Recap Computer Science Approach Technical

More information

MASTER THESIS. Martin Horváth Dimensional Analysis for Hardware Description Languages

MASTER THESIS. Martin Horváth Dimensional Analysis for Hardware Description Languages Charles University in Prague Faculty of Mathematics and Physics MASTER THESIS Martin Horváth Dimensional Analysis for Hardware Description Languages Department of Software Engineering Supervisor: RNDr.

More information

DIPLOMOVÁ PRÁCE. Peter Baník Metody optimalizace ve financích

DIPLOMOVÁ PRÁCE. Peter Baník Metody optimalizace ve financích Univerzita Karlova v Praze Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE Peter Baník Metody optimalizace ve financích Katedra pravděpodobnosti a matematické statistiky Vedoucí diplomové práce: Doc. RNDr.

More information

Introduction to Deep Neural Networks

Introduction to Deep Neural Networks Introduction to Deep Neural Networks Presenter: Chunyuan Li Pattern Classification and Recognition (ECE 681.01) Duke University April, 2016 Outline 1 Background and Preliminaries Why DNNs? Model: Logistic

More information

NONLINEAR CLASSIFICATION AND REGRESSION. J. Elder CSE 4404/5327 Introduction to Machine Learning and Pattern Recognition

NONLINEAR CLASSIFICATION AND REGRESSION. J. Elder CSE 4404/5327 Introduction to Machine Learning and Pattern Recognition NONLINEAR CLASSIFICATION AND REGRESSION Nonlinear Classification and Regression: Outline 2 Multi-Layer Perceptrons The Back-Propagation Learning Algorithm Generalized Linear Models Radial Basis Function

More information

Feedforward Neural Nets and Backpropagation

Feedforward Neural Nets and Backpropagation Feedforward Neural Nets and Backpropagation Julie Nutini University of British Columbia MLRG September 28 th, 2016 1 / 23 Supervised Learning Roadmap Supervised Learning: Assume that we are given the features

More information

Neural Networks in Structured Prediction. November 17, 2015

Neural Networks in Structured Prediction. November 17, 2015 Neural Networks in Structured Prediction November 17, 2015 HWs and Paper Last homework is going to be posted soon Neural net NER tagging model This is a new structured model Paper - Thursday after Thanksgiving

More information

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY. Robustné metódy vo faktorovej analýze

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY. Robustné metódy vo faktorovej analýze UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY Robustné metódy vo faktorovej analýze DIPLOMOVÁ PRÁCA Bratislava 2013 Bc. Zuzana Kuižová UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA

More information

SGD and Deep Learning

SGD and Deep Learning SGD and Deep Learning Subgradients Lets make the gradient cheating more formal. Recall that the gradient is the slope of the tangent. f(w 1 )+rf(w 1 ) (w w 1 ) Non differentiable case? w 1 Subgradients

More information

Neural Networks (Part 1) Goals for the lecture

Neural Networks (Part 1) Goals for the lecture Neural Networks (Part ) Mark Craven and David Page Computer Sciences 760 Spring 208 www.biostat.wisc.edu/~craven/cs760/ Some of the slides in these lectures have been adapted/borrowed from materials developed

More information

Predikcia úmrtnosti na Slovensku

Predikcia úmrtnosti na Slovensku 1 Ak nie je uvedené inak, zdrojom grafov v tomto príspevku sú štatistické tabuľky úmrtnosti v SR a výpočty autora. 2 Viac o SVD nájdeme napríklad na http://www.ling.ohiostate.edu/~kbaker/pubs/singular_value_decomposition_tutorial.pdf

More information

CS224N: Natural Language Processing with Deep Learning Winter 2018 Midterm Exam

CS224N: Natural Language Processing with Deep Learning Winter 2018 Midterm Exam CS224N: Natural Language Processing with Deep Learning Winter 2018 Midterm Exam This examination consists of 17 printed sides, 5 questions, and 100 points. The exam accounts for 20% of your total grade.

More information

Radka Sabolová Znaménkový test

Radka Sabolová Znaménkový test Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE Radka Sabolová Znaménkový test Katedra pravděpodobnosti a matematické statistiky Vedoucí bakalářské práce: Mgr. Martin Schindler

More information

Introduction to Neural Networks

Introduction to Neural Networks Introduction to Neural Networks Philipp Koehn 3 October 207 Linear Models We used before weighted linear combination of feature values h j and weights λ j score(λ, d i ) = j λ j h j (d i ) Such models

More information

Introduction to Neural Networks

Introduction to Neural Networks CUONG TUAN NGUYEN SEIJI HOTTA MASAKI NAKAGAWA Tokyo University of Agriculture and Technology Copyright by Nguyen, Hotta and Nakagawa 1 Pattern classification Which category of an input? Example: Character

More information

ECE G: Special Topics in Signal Processing: Sparsity, Structure, and Inference

ECE G: Special Topics in Signal Processing: Sparsity, Structure, and Inference ECE 18-898G: Special Topics in Signal Processing: Sparsity, Structure, and Inference Neural Networks: A brief touch Yuejie Chi Department of Electrical and Computer Engineering Spring 2018 1/41 Outline

More information

Classification goals: Make 1 guess about the label (Top-1 error) Make 5 guesses about the label (Top-5 error) No Bounding Box

Classification goals: Make 1 guess about the label (Top-1 error) Make 5 guesses about the label (Top-5 error) No Bounding Box ImageNet Classification with Deep Convolutional Neural Networks Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton Motivation Classification goals: Make 1 guess about the label (Top-1 error) Make 5 guesses

More information

MASTER THESIS. Vlastnosti k-intervalových booleovských funkcí Properties of k-interval Boolean functions

MASTER THESIS. Vlastnosti k-intervalových booleovských funkcí Properties of k-interval Boolean functions Charles University in Prague Faculty of Mathematics and Physics MASTER THESIS Pavol Gál Vlastnosti k-intervalových booleovských funkcí Properties of k-interval Boolean functions Department of Theoretical

More information

TTIC 31230, Fundamentals of Deep Learning, Winter David McAllester. The Fundamental Equations of Deep Learning

TTIC 31230, Fundamentals of Deep Learning, Winter David McAllester. The Fundamental Equations of Deep Learning TTIC 31230, Fundamentals of Deep Learning, Winter 2019 David McAllester The Fundamental Equations of Deep Learning 1 Early History 1943: McCullock and Pitts introduced the linear threshold neuron. 1962:

More information

Dokonalé a spriatelené čísla

Dokonalé a spriatelené čísla Dokonalé a spriatelené čísla 1. kapitola. Niektoré poznatky z teorie čísel In: Tibor Šalát (author): Dokonalé a spriatelené čísla. (Slovak). Praha: Mladá fronta, 1969. pp. 5 17. Persistent URL: http://dml.cz/dmlcz/403668

More information

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY REKURENTNÉ POSTUPNOSTI

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY REKURENTNÉ POSTUPNOSTI UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY Evidenčné číslo: 74b93af3-8dd5-43d9-b3f2-05523e0ba177 REKURENTNÉ POSTUPNOSTI 2011 András Varga UNIVERZITA KOMENSKÉHO V BRATISLAVE

More information

Univerzita Karlova v Prahe, Filozofická fakulta Katedra logiky. Anna Horská. FRIEDBERG-MUCHNIKOVA VETA Ročníková práca

Univerzita Karlova v Prahe, Filozofická fakulta Katedra logiky. Anna Horská. FRIEDBERG-MUCHNIKOVA VETA Ročníková práca Univerzita Karlova v Prahe, Filozofická fakulta Katedra logiky Anna Horská FRIEDBERG-MUCHNIKOVA VETA Ročníková práca Vedúci práce: Vítězslav Švejdar 2007 Prehlasujem, že som ročníkovú prácu vypracovala

More information

Lecture 17: Neural Networks and Deep Learning

Lecture 17: Neural Networks and Deep Learning UVA CS 6316 / CS 4501-004 Machine Learning Fall 2016 Lecture 17: Neural Networks and Deep Learning Jack Lanchantin Dr. Yanjun Qi 1 Neurons 1-Layer Neural Network Multi-layer Neural Network Loss Functions

More information

Objavovanie znalostí v databázach. Ján Paralič

Objavovanie znalostí v databázach. Ján Paralič Objavovanie znalostí v databázach Ján Paralič Košice 2003 Ing. Ján Paralič, PhD. Katedra kybernetiky a umelej inteligencie Fakulta elektrotechniky a informatiky Technická univerzita v Košiciach Jan.Paralic@tuke.sk

More information

Machine Learning

Machine Learning Machine Learning 10-315 Maria Florina Balcan Machine Learning Department Carnegie Mellon University 03/29/2019 Today: Artificial neural networks Backpropagation Reading: Mitchell: Chapter 4 Bishop: Chapter

More information

Neural Networks and Introduction to Deep Learning

Neural Networks and Introduction to Deep Learning 1 Neural Networks and Introduction to Deep Learning Neural Networks and Introduction to Deep Learning 1 Introduction Deep learning is a set of learning methods attempting to model data with complex architectures

More information

TECHNICKÁ UNIVERZITA V KOŠICIACH. Predikcia počasia prostredníctvom neurónových sietí BAKALÁRSKA PRÁCA FAKULTA ELEKTROTECHNIKY A INFORMATIKY

TECHNICKÁ UNIVERZITA V KOŠICIACH. Predikcia počasia prostredníctvom neurónových sietí BAKALÁRSKA PRÁCA FAKULTA ELEKTROTECHNIKY A INFORMATIKY TECHNICKÁ UNIVERZITA V KOŠICIACH FAKULTA ELEKTROTECHNIKY A INFORMATIKY Predkca počasa prostredníctvom neurónových setí Ján ADAMČÁK BAKALÁRSKA PRÁCA 2010 TECHNICKÁ UNIVERZITA V KOŠICIACH FAKULTA ELEKTROTECHNIKY

More information

EXTREME SEVERAL-DAY PRECIPITATION TOTALS AT HURBANOVO DURING THE TWENTIETH CENTURY

EXTREME SEVERAL-DAY PRECIPITATION TOTALS AT HURBANOVO DURING THE TWENTIETH CENTURY Rožnovský, J., Litschmann, T. (ed.): XIV. Česko-slovenská bioklimatologická konference, Lednice na Moravě 2.-4. září 2, ISBN -85813-99-8, s. 9-19 EXTREME SEVERAL-DAY PRECIPITATION TOTALS AT HURBANOVO DURING

More information