Adaptabilné aktivačné funkcie pomocou splajnovej interpolácie
Autor práce: Tara Stefányi
Vedúci práce: RNDr. Viliam Kačala
- ahoj, som rozkosna potvorka a dnes vam chcem predstavit pracu v ktorej sa zaoberame problemom trenovania neuronovych sieti v ktorych vyuzivame dynamicke aktivacne funkcie
- Konkretne sa snazime vylepsit neuronove siete tak ze vyuzijeme splajny typu c2, ktore zarucuju vyssiu hladkost oproti splajnom typu c1, pricom vychadzame z vyskumu Scardapana
Ciele práce
implementácia interpolačných a aproximačných splajnov typu C$^1$ aj C$^2$
návrh a implementácia neurónových sietí so splajnovou aktivačnou funkciou
porovnanie splajnov ako aproximátorov aktivačnej funkcie
- Pracu by sme mohli zhrnut do troch cielov a to: (CLICK)
- implementaciu splajnu typu c2 (CLICK)
- navrh a implementacia neuronovych sieti, ktore budu vyuzivat standardnu AF, splajnovu AF typu c1 a typu c2 (CLICK)
- nasledne porovnanme efektivitu, rychlost ucenia implementovanych sieti a zistime ci vyuzitie c2 splajnov je vylepsenim
Čo je splajn
spojitá hladká polynomická funkcia
definovaná po častiach
interpolačné a aproximačné
- splajnova funkcia, ktoru vyuzivame je po častiach definovaná polynomická funkcia
- jednotlive casti nazyvame segmenty a hranicne body tychto segmentov volame uzly alebo kontrolne body
- poznáme interpolačné a aproximačné splajny, pričom ich najvacsi rozidel je, ze interpolacny splajn prechadza cez vsetky uzly segmentov, pricom aproximacny nemusi
(DOWN)
- pri splajnoch uvazujeme o triedach spojitosti, ktore poukazuju nakolko je splajn hladky
- v pripade splajnu typu c0 ide iba o lomenu ciaru
(DOWN)
- splajn typu c1 uz nema take ostre hrany, kedze susedne segmenty zdielaju dotycnice v spolocnom uzle
- tato spolocna dotycnica je zobrazena zltou
(DOWN)
- este hladsi je splajn typu c2, ktoreho susedne segmenty maju rovnake derivacie druheho radu a zakrivenia sa daju opisat elipsou ci parabolou
- ako sa k takemu splajnu dostaneme?
- v prvom rade si x-ovu os rozdelime kontrolnymi bodmi (na obrazku) na rovnomerne intervaly
- vypocitame hodnotu v kontrolnych bodoch podla funkcie ktoru interpolujeme (tu to je konkretne hyperbolicky tangens)
- jednotlive intervaly teraz potrebujeme definovat polynomickou funkciou
- ziskame ich splajnovou interpolaciou kde vsetky kontrolne body budu prechadzat vyslednou krivkou
- vratme sa este k tej hlavnej vlastnosti splajnov ktoru chceme vyuzit, a to ich LOKALNU upravu
- ak zmenime hodnotu splajnu v bode i, ovplyvnime tym hodnoty v oboch susednych segmentoch a aj derivaciu v bode i
- ukazeme si to nazorne
- toto je povodny splajn so 4 segmentami
- ak zmenim hodnotu v uzle, napr. v bode -1 **(CLICK)**
- zmenia sa hodnoty v prilahlych segmentoch
Neurónová sieť
- každá neurónova sieť sa skladá z vrstiev neurónov, ktoré obsahujú vstupný vektor a vektor váh
- aby sa neurón dostal k svojej hodnote, vynásobí tieto dva vektory
- tieto informácie sa po vložení do AF posúvajú cez siet doprednou propagáciou a tým získame odpoveď siete na vstup
- aktivačna funkcia siete, môže byť spoločná pre celú sieť, pre vrstvy, alebo môže mať aj každý neurón vlastnu AF
- pri inicializácii siete sa jej váhy určujú náhodne, čo sposobuje že sieť nič nevie, a potrebujeme ju naučiť ako vyriešť náš problém
- preto ju trénujeme, napriklad spätnou propagáciou
- Pri trenovani takejto siete sa na zaklade vstupneho vektora, vystupu siete a zelaneho vystupu postupne pocitaju gradienty chyby a tym upravuju vahy
- k tomuto procesu potrebujeme sadu správnych vstupov a výstupov
- Teoreticky ucenie v podobe zmeny vah staci na riesenie vsetkych vypocitatelnych problemov, no v praxi narazame na limity znamych algoritmov ucenia.
Rozšírené učenie
zlepšenie presnosti
úprava aktivačnej funkcie
nepraktická globálna úprava
- Preto by sme chceli zlepsit neuronovu siet co by sme mohli urobit napriklad pouzitim nejakej dynamickej, teda adaptabilnej funkcie.
- V takejto sieti budeme teda pri uceni okrem vah upravovat aj aktivacnu funkciu
- tato modifikacia by nam mala umoznit lepsie naucenie siete a taktiez eliminovat problem pouzitia vhodnej aktivacnej funkcie
- Najjednoduchsim prikladom adaptabilnej funkcie moze byt hocijaka matematicka funkcia, ktoru vieme “adaptovat” napriklad tym ze ju * /
- Toto je vsak globalna adaptacia, co pri vyuziti v NN nemusi byt najvhodnejsie
- na toto su vhodne uz spominane interpolacne a aproximacne splajny, ktore je mozne upravovat lokalne, teda na nejakom dostatocne malom intervale
- Na obrazku mozete vidiet splajnovu aktivacnu funkciu pred a po nauceni neuronovej siete
- je pekne vidiet ako sa funkcia lokalne upravila iba na niektorych intervaloch podla potrieb nasho problemu
Výber splajnu
B-splajn
Catmull-Rom splajn
Hermitov splajn + de Boor
- aproximacny BSplajn je hladky, no neprechadza kontrolnymi bodmi a teda je teda nepresny, co sa tazko napravuje, takze nieje velmi vhodny
- Catmul rom splajn, standardne triedy c1 prechadza kontrolnymi bodmi, no je menej hladky
- rozhodli ho vyuzit v sieti s c1 splajnom pretoze nepotrebujeme vediet jeho derivacie a tym je jeho vypocet jednoduchsi
- Hermitov splajn je tiez standardne triedy C1, no na jeho vypocet potrebujeme vediet derivacie v kontrolnych bodoch, co ho cini narocnejsim na vypocet
- splajn tohto typu vsak vieme celkom jednoducho povysit na triedu C2 pomocou de Boorovho algoritmu, ktory nam vypocita derivacie , pricom zaruci, ze aj druhe derivacie susednych segmentov budu rovnake
- takto teda dostaneme splajn, ktory je hladky podobne ako Bsplajn, no je interpolacnym
- tento splajn vyuzijeme v sieti s c2 splajnom
- cielom prace je teda zistit, ci je vhodny, pricom v praci pracujeme iba so splajnami s rovnomernymi intervalmi
Testovanie siete
iteratívny prístup
rovnaké inicializačné váhy
prevencia proti náhodným správnym výsledkom
- Testovali sme najma na zaklade poctu vzoriek/epoch potrebnych na naucenie
- okrem toho sme sa pozerali aj na priemerne chyby sieti
- proces testu bol nasledovny: vyskusali naucit siete na x vzorkach/epochach
- testujeme zaroven standardnu, c1 aj c2 siet pricom vahy vygenerujeme v jednej sieti a ostanym nastavime rovnake vahy
- po 5tich vzorkach/epochach sme zistili ci je siet naucena - teda musela dat spravny vysledok na vstup, s chybou y percent
- aby sme zamedzili nahodnemu spravnemu vysledku, sme takejto sieti este dali dalsich x testovacich vstupov a nasledne znova skontrolovali spravnost vystupu
- po tom dvoch spravnych odpovediach po sebe sme povazovali siet za naucenu
- zatial sme ako testovaciu sadu pouzivali dvojvstupovy xor a funkciu tanh
Výsledky
STD
C$^1$
C$^2$
ÚSPEŠNOSŤ
100%
91,7%
92%
CHYBA ✓
3.94
1.29
1.61
×10$^{-3}$
CHYBA ×
0
0.24
0.21
VZORKY
50
43
30
- tu je mozne vidiet porovnanie sietí na datasete XOR a AF tanh
- vidime ze napriek tomu, ze c2 splajny nezlepsuju priemernu chybu,
- postacuje menej vzoriek na uspesne naucenie siete
- problemom pri c2 splajnoch moze byt to, ze pri prepocitani sa upravi viac derivacii aby sa zachovala hladkost, a tym sa krivka upravi na vacsom intervale ako potrebujeme
Výsledky
STD
C$^1$
C$^2$
ÚSPEŠNOSŤ
100%
100%
100%
CHYBA ✓
2.60
1.38
1.50
×10$^{-2}$
CHYBA ×
0
0
0
EPOCHY
1685
740
850
- tu je mozne vidiet porovnanie sietí na datasete XOR a AF tanh
- vidime ze v tomto pripade splajny typu c2 mali vacsiu chybovost ako splajny typu c1
- aj ked je potrebny vacsi pocet epoch, neznamena to ze potrebujeme viac vzoriek
Použitie splajnových aktivačných funkcií zníži potrebný počet iterácií učenia zhruba na polovicu. Splajny sú však náročnejšie na výpočet ako štandardné aktivačné funkcie. Aký to má vplyv na výsledný čas učenia?
STD
C$^1$
C$^2$
EPOCHY
1661
718
828
ČAS TRÉNOVANIA
803.3
4106.3
4730.2
ms
ČAS NA EPOCHU
0.48
5.72
5.71
ms
V práci uvažujete interpolačné splajny typu C$^1$ aj C$^2$ . Vedeli by ste sa vyjadriť aj k aproximačným splajnom typu C$^2$ , napr. B – splajnom?
Hermitov splajn = spojenie výhod interpolačných a aproximačných splajnov
Autori práce z ktorej sme vychádzali implementovali aj aproximacne Bspliny (C2). Vo všeobecnosti vsak nevieme povedať, ci by boli výhodnejšie. Náš pokus s interpolacnymi C2 mal spojiť výhody oboch svetov. Na našom testovacom príklade sa nami navrhnutý splajn dokázal znížiť počet vzoriek potrebnych na naucenie. Na konečný ortieľ o c2 vs c1 splajnoch v NN však stále nemáme dostatok informácii.