Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaAnikó Fodor Megváltozta több, mint 5 éve
1
Mesterséges neuronhálók (Artificial neural networks, ANNs)
2
A neuron modell A legismertebb neurális modell a “perceptron” modell
Rosenblatt találta fel 1957-ben A biológiai neuronokhoz való hasonlóságuk mellett érvelt Sok input – “dendritek” Egy output – “axon” Ha az ingerek (súlyozott) összege elér egy küszöböt, a neuron tüzel, különben nem – a neuron kimenete bináris (az eredeti modellben), erre szolgál az aktivációs függvény
3
A “perceptron” neurális modell
Az inputok az x1…xn jellemzőknek felelnek meg Az egyes kapcsolatok erősségét a w1,..,wn súlyok modellezik Ezek mellett van egy w0 “bias” paraméter A neuront érő ingerek összessége az aktiváció: Avagy, egy fix x0=1 inputot felvéve: Az a aktivációból az o(a) outputot az aktivációs függvény állítja elő Ez eredeti modellben ez egy egyszerű küszöbölést végez: A modell tanulandó paraméterei a w0,..,wn súlyok
4
A neuron tanítása A perceptron modell lényegében egy lineáris osztályozó A lineáris osztályozók betanítására több megoldást is adtunk korábban Rosenblatt percetron modellje és (tanulási szabálya) helyett később az a módosított megoldás terjedt el, amikor aktivációs függvényként a szigmoid függvényt használjuk Azaz a σ aktivációs függvény és a kimenet: Ezt korábban logisztikus regressziós modellnek hívtuk Megmutattuk azt is, hogy a gradient descent algoritmussal betanítható Akár a cross-entropy, akár az MSE hibafüggvény minimalizálásával
5
A neuron modell reprezentációs ereje
A perceptron modell lényegében egy lineáris osztályozó A gyakorlati életben elég kevés feladat oldható meg lineáris elválasztással… Minsky és Papert 1969-ben rámutatott, hogy a VAGY, ÉS műveletek megtanulhatók egy neuronnal, de a XOR művelet már nem Ez a 80-es évekig visszavetette a neurális modell kutatását Ekkor volt az első “AI winter”
6
Neuronhálók Reprezentációs erő növelése: építsünk hálózatot!
Az egyik réteg kimenetei a következő réteg bemenetei Matematikailag: függvényeket ágyazunk egymásba Klasszikus struktúra: Multilayer feedforward network Minden réteg az alatta lévő rétegtől kapja az inputját A rétegek között „full connection”: minden neuron minden neuronnal Csak előremutató kapcsolatok Viszonylag ritkán szokás, de: Fully connected helyett ritka („sparse”) hálót is lehet csinálni Rétegek “átugrása” szintén viszonylag könnyen megoldható Visszacsatolt (rekurrens) struktúra is lehetséges, azt viszont jóval bonyolultabb tanítani (ld. recurrent neural networks) Ezek főleg időbeli sorozatok modellezésében hasznosak
7
A neuronháló reprezentációs ereje
Konvex térrész körbekerítése: 1 rejtett réteg elég A rejtett réteg egyes neuronjai reprezentálnak 1-1 határoló egyenest A kimeneti neuron ÉS műveletet végez: ott jelez, ahol a rejtett neuronok mindegyike jelez Tetszőleges (akár non-konvex, nem összefüggő) térrész megtanulása: 2 rejtett réteg elég Az első rejtett réteg neuronjai egyeneseket húznak A második réteg neuronjai ÉS művelettel konvex térrészeket jelölnek ki A kimeneti neuron VAGY művelettel ezeket non-konvex, nem összefüggő térrészeké is össze tudja kapcsolni Elvileg 2 rejtett réteggel minden gyakorlati tanulási feladat megoldható A tetszőleges pontossághoz végtelen sok neuron, végtelen sok tanító adat és tökéletes (globális optimumot adó) tanító algoritmus kellene…
8
Kapcsolat a statisztikai alakfelismeréssel
Az előző dián azt szemléltettük, hogy a neuronháló hogyan képes osztályokat elszeparálni (geometriai szemlélet) Bebizonyítható, hogy a háló a döntéselméleti szemléletnek is meg tud felelni, bizonyos feltételek teljesülése esetén Minden ci osztályhoz egy kimeneti neuront rendelünk Azt várjuk tőle, hogy közelítse az adott osztály P(ci|x) diszkriminánsfüggvényét A kimenetek alapján osztályozás a Bayes döntési szabállyal történik: A legnagyobb P(ci|x) kimeneti értéket adó ci osztályt választjuk A Bayes döntési szabállyal való összekapcsolás bizonyos alkalmazási területeken jelentősen megnövelte a neuronhálók iránti bizalmat Az egyes osztályokhoz tartozó P(ci|x) valószínűség ismerete nem csak az osztályozásra (a legvalószínűbb osztály kiválasztására), hanem sok más dologra is haszálható Pl. megbízhatóság (konfidencia) vizsgálata
9
A háló kimenete mint valószínűségi eloszlás
Mi szükséges ahhoz, hogy a háló kimenetei a P(ci|x) valószínűségi értékeket közelítsék? Minden ci osztályhoz egy kimeneti neuron Azt várjuk tőle, hogy közelítse az adott osztály P(ci|x) diszkriminánsfüggvényét A kimeneti neuronokra a softmax aktivációs függvényt alkalmazzuk [0,1] értékkészletű aktivációs függvény, a kimenetek összege 1 (ld. lineáris gép!) Tanító példák címkéje: 1-of-M kódolású vektor M méretű vektor (osztályok száma), benne egyetlen 1-es: Célfüggvényként az MSE vagy a cross-entropy hiba is használható Fontos, hogy gyakorlati esetben mindig csak egy közelítését kapjuk a valódi eloszlásnak! Pontos értékhez végtelen sok neuron, végtelen sok tanítópélda, tökéletes tanító algoritmus kellene…
10
A háló kimenete mint valószínűségi eloszlás
A fenti módon felépített ill. tanított háló kimenetei a P(ci|x) valószínűségi értékeket fogják közelíteni A bizonyítás alapötlete: Tegyük fel, hogy a háló ugyanazt az x inputot nagyon sokszor kapja meg, de eltérő megtanulandó c célértékekkel A háló viszont adott inputra mindig ugyanazt az o kimeneti értéket adja Jelölje occ(c) az egyes célértékek előfordulási darabszámát. Ezzel az átlagos négyzetes hibát így írhatjuk fel: Ha a példák hűen reprezentálják a P(C) eloszlást, akkor a példaszám növelésével (a nagy számok törvénye szerint). Azaz
11
A háló kimenete mint valószínűségi eloszlás
Milyen o érték mellett lesz minimális? Bontsuk fel a zárójelet: Felhasználjuk, hogy , illetve hozzáadjuk és kivonjuk et, hogy teljes négyzetté tudjunk alakítani: Tekintsük úgy, hogy az eltérő c célértékek egy v valószínűségi változó értékei. Ekkor v várható értéke , így Mivel a második tag konstans, a hibát az első tag minimalizálásával tudjuk minimalizálni, ez pedig akkor lesz minimális, ha o a kapott c célértékek várható értékét veszi fel
12
A háló kimenete mint valószínűségi eloszlás
Azt mondtuk, hogy a tanító példák címkéjét 1-of-M kódolású vektorral adjuk meg Azaz a címke csak az 1 és a 0 értékeket veheti fel, és pontosan akkor lesz 1-es, ha a példa a c osztályhoz tartozik; ezért jelöljük ezt az eseményt c-vel Ekkor a várható érték: Tehát az adott x pontban a neuronháló kimenete P(c|x)-et fogja közelíteni De ehhez sok példa kell, hogy a c osztályhoz tartozó példák aránya P(c|x)-et közelítse Valós körülmények között mindig csak egy közelítést kapunk Hasonló bizonyítás létezik a cross-entropy hibafüggvényre is
13
A neuronháló tanítása Egy egyetlen neuronból álló hálózat megfelel a korábban logisztikus regresszió néven emlegetett modellnek Korábban már láttuk, hogy ezt be tudjuk tanítani a gradient descent algoritmussal, akár az MSE, akár a CE hibafüggvényt használva Több osztály esetén osztályonként 1-1 neuront teszünk a kimeneti rétegbe, ebben az esetben használhatjuk a többosztályos logisztikus regressziót (ezt is láttuk korábban) Az igazi újdonságot az jelenti, ha a neuronokból többrétegű hálózatot építünk. Ekkor az alsóbb neuronok kimenetei adják a felette levő réteg bemeneteit, ami matematikailag függvények egymásba ágyazását jelenti A gradient descent algoritmus továbbra is használható, de a hibát „vissza kell terjeszteni” a magasabb rétegekből az alsóbb rétegekbe Ez lesz a backpropagation algoritmus
14
Gradient descent - emlékeztető
A „hegymászó” algoritmus változata folytonos függvények esetére A derivált alapján fogjuk eldönteni, hogy merre lépjünk a hibafelületen („gradiens módszer”) – legmeredekebb csökkentés elve: a gradiensvektorral ellentétes irányba fogunk lépni Véletlenszerű inicializálásból indulunk A lépésközt („learn rate”) heurisztikusan állítjuk be Iteratív (addig lépkedünk, amíg el nem akadunk) Általában csak lokális optimum megtalálását garantálja
15
A backpropagation algoritmus
Szemléltetés egyetlen neuronra, MSE hibafüggvénnyel: Ezeket egymásba ágyazva kapjuk meg, hogyan függ E(w) egy konkrét wj-től Deriválás: ezek deriváltjai láncszabállyal összerakva Súlyok frissítése minden lépésben: Ahol η egy kis pozitív kontans („learn rate”)
16
A backpropagation algoritmus 2
Általános eset: több kimenő neuron, többrétegű hálózat Ugyanúgy a láncszabályt kell alkalmazni, csak több lépésen keresztül (a felső neuronok bemenete nem x, hanem az alatta levő réteg kimenete) (az egyszerűség kedvéért a D-re összegzést kihagyjuk a levezetésből) A deriváltat (röviden: „hibát”) először levezetjük a kimeneti rétegre Majd rétegről rétegre terjesztjük vissza (backpropagation!) az alsóbb rétegekre Értelmezés: adott rejtett neuron hibája az ő kimenetét felhasználó neuronok hibájának súlyozott összegével arányos Ahol a súlyok megegyeznek az adott kapcsolat súlyával
17
A backpropagation algoritmus 4
Összegezve, a backpropagation tanítás fő lépései: Inputtól az output felé haladva kiszámoljuk az egyes neuronok kimeneteit a D tanítópéldákon A hibafüggvényhez kell tudnunk a kimeneteket! Az outputtól az input felé haladva kiszámoljuk az egyes neuronok hibáit Frissítjük a súlyokat: Megjegyzés: a hiba-visszaterjesztés megengedi a ritka (“sparse”) hálózatot, vagy a rétegek közötti ugrást tartalmazó hálózatot is. Az egyetlen lényeges megkötés a hálózati struktúrára, hogy ne legyen visszacsatolás (kör) Ha nincs, akkor topológiai rendezés sorrendjében lehet frissíteni Ha van, akkor visszacsatolt (rekurrens) hálózatot kapunk – ezek tanítása jóval komplikáltabb
18
Sztochasztikus backpropagation
A hibafüggvényeink az hibát az összes tanítópéldára átlagolják: Ennek kiértékeléséhez az összes példát össze kell várnunk. Ez kizárja pl. az online tanulást On-line backpropagation: a hibafüggvényből kihagyjuk a D-re összegzést. Ehelyett minden egyes beérkező példán elvégezzük a kiértékelést, majd rögtön a hibaszámolást és súlyfrissítést is Batch backpropagation: nem egy, de nem is az összes példa alapján frissítünk, hanem egy blokknyi („batch”) adat alapján Tulajdonképpen minden frissítéskor kicsit más hibafüggvényt optimalizálunk! (az adott batch-ből számoltat) Ez nem ront, hanem javít: kis véletlenszerűséget visz a rendszerbe – csökkenti a lokális optimumban való elakadás esélyét Innen a név: „sztochasztikus” gradient descent (SGD)
19
Batch backpropagation
A batch alapú tanítás előnyei: Csökken a lokális optimumban elakadás kockázata Gyorsabb konvergencia Gyorsabb végrehajtás (nem kell az összes adatot feldolgozni egyszerre) Egyszerűbb implementáció (egy batch-nyi adat befér a memóriába) Lehetővé teszi a (szemi) online tanítást Ez a legelterjedtebb tanítási módszer Tipikus batch-méret: példa Mint a teljes adathalmazon tanításnál, itt is általában többször végigmegyünk az összes adaton Egy „tanítási kör” az adatokon angolul: egy “training epoch”
20
Batch backpropagation GPU-n
Miért hatékonyabb a neuronhálókat GPU-n tanítani? Egy neuron aktivációjának kiszámítása: =vektor-vektor szorzás De az adott réteg neuronjainak aktivációját párhuzamosan is kiszámolhatjuk! =mátrix-vektor szorzás De ugyanezt párhuzamosan elvégezhetjük egy batch-nyi input vektorra is! =mátrix-mátrix szorzás A GPU-k a szorzatmátrix egyes celláinak értékét párhuzamosan tudják számolni – szer gyorsabb, mint ha egyetlen CPU-n végeznénk
21
Súlyok inicializálása
A súlyokat kis random értékekkel inicializáljuk Pl. [-0.1, 0.1] közötti véletlenszámokkal Különösen mély (sok rejtett réteget tartalmazó) hálók esetén fontos, hogy hogyan inicializálunk A jó inicializálás segíti a hiba visszaterjesztését a legalsó rétegig Különböző stratégiák léteznek az inicializálásra, ez a használt aktivációs függvénytől is függhet Pl: a súlyok legyenek Gauss-eloszlású véletlenszámok 0 várható értékkel és 1/inputszám szórással
22
Adatok randomizálása Batch-tanításnál sokat segíthet, ha az adatvektorokat véletlenszerű sorrendbe rakjuk Nélkülözhetetlen, ha pl. a példák osztálycímkék szerint nincsenek jól összekeverve (pl. először az 1. osztály példái, aztán a 2. osztály, stb.) Akkor is segít, ha az osztálycímkék ugyan keverednek, de valami más szempont szerint nem véletlenszerű a példák sorrendje (pl. beszédfelismerés: a felvételek beszélők szerint sorban jönnek) Ugyanis mindig az aktuális batch hibafüggvényére optimalizálunk, így az újabb adatok nagyobb hangsúlyt kapnak, mint a régiek – a rendszer rátanul a későbbi adatok speciális tulajdonságára, a korábbit elfelejti Az adatokon többször végig kell menni elvileg érdemes minden epoch előtt újra randomizálni az adatokat Sajnos a randomizálás nem egyszerű: ha a memóriában csináljuk, akkor lassul az adatelérés, ha fájlban, akkor még macerásabb.
23
Adatok normalizálása Tanítás előtt érdemes az egyes jellemzők értéktartományát egységes skálára hozni min=-1, max=1: nem annyira jó ötlet, egyetlen kilógó adat („outlier”) hazavághatja Szokásos megoldás: az egyes jellemzők átlaga 0, szórása 1 legyen Miért segít az egységes skála? A súlyokat egységes tartományban inicializáljuk. Ha a jellemzők más-más skálára esnének, egyes jellemzők elnyomnának másokat ben Láz Ízületi_fájdalom Köhögés Influenzás 38,2 Van Nincs Igen 36,7 Száraz Nem 41,2 Nyákos 38,5 37,2
24
Adatok normalizálása 2 Miért 0 környékére normalizálunk?
Idézzük fel a sigmoid aktivációs fügvényt: Ha túl nagy van túl kicsi, akkor a sigmoid „lapos” részére esik itt a derivált lényegében 0, a rendszer nem fog tanulni („elhaló gradiens” problémája) Erre még visszatérünk az újabb aktivációs függvények, illetve a regularizációs módszerek bemutatásakor
25
A learning rate beállítása
A learning rate értékét általában tapasztalat alapján lőjük be Bár vannak automatikus optimalizálási próbálkozások is Túl nagy learn rate: nincs tanulás, ugrálás a hibafelületen Túl kicsi learn rate: lassú tanulás, könnyebb elakadás lokális optimumban Szokásos általános heurisztika: Indítsunk olyan nagy learn rate-tel, amekkorával csak lehet (van tanulás) Egy idő után (ha már nem csökken a hiba) kezdjük el csökkenteni (pl. felezgetni)
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.