Mesterséges neuronhálók (Artificial neural networks, ANNs)

Slides:



Advertisements
Hasonló előadás
NEURONHÁLÓK.
Advertisements

Lineáris regressziós MODELLEK
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
MI 2003/9 - 1 Alakfelismerés alapproblémája: adott objektumok egy halmaza, továbbá osztályok (kategóriák) egy halmaza. Feladatunk: az objektumokat - valamilyen.
MI 2003/ A következőkben más megközelítés: nem közvetlenül az eloszlásokból indulunk ki, hanem a diszkriminancia függvényeket keressük. Legegyszerűbb:
Kalman-féle rendszer definíció
Készítette: Zaletnyik Piroska
Módszerek sebességi állandók becslésére Kovács Benedek, Budapesti Műszaki és Gazdaségtudományi Egyetem.
Bevezetés a gépi tanulásba február 16.. Mesterséges Intelligencia „A számítógépes tudományok egy ága, amely az intelligens viselkedés automatizálásával.
Lineáris és nemlineáris regressziók, logisztikus regresszió
Gépi tanulási módszerek
Osztályozás -- KNN Példa alapú tanulás: 1 legközelebbi szomszéd, illetve K-legközelebbi szomszéd alapú osztályozó eljárások.
Rangsorolás tanulása ápr. 24..
MI 2003/ Alakfelismerés - még egy megközelítés: még kevesebbet tudunk. Csak a mintánk adott, de címkék nélkül. Csoportosítás (klaszterezés, clustering).
Mesterséges neuronhálózatok
Papp Róbert, Blaskovics Viktor, Hantos Norbert
Előadó: Prof. Dr. Besenyei Lajos
A digitális számítás elmélete
Szűrés és konvolúció Vámossy Zoltán 2004
Differenciál számítás
Regresszióanalízis 10. gyakorlat.
Az Alakfelismerés és gépi tanulás ELEMEI
Közlekedésmodellezés Készítette: Láng Péter Konzulens: Mészáros Tamás.
Textúra elemzés szupport vektor géppel
Gépi tanulás Tanuló ágens, döntési fák, általános logikai leirások tanulása.
Idősor elemzés Idősor : időben ekvidisztáns elemekből álló sorozat
Problémás függvények : lokális optimalizáció nem használható Globális optimalizáció.
Optimalizáció modell kalibrációja Adott az M modell, és p a paraméter vektora. Hogyan állítsuk be p -t hogy a modell kimenete az x bemenő adatokon a legjobban.
$ Információ Következmény Döntés Statisztikai X.  Gyakorlati problémák megoldásának alapja  Elemzéseink célja és eredménye  Központi szerep az egyén.
Többváltozós adatelemzés
Alapsokaság (populáció)
Lineáris regresszió.
Folytonos eloszlások.
Belami beszámoló – Doménadaptációs alkalmazások. Problémafelvetés Felügyelt tanulás elvégzéséhez gyakran kevés jelölt adat áll rendelkezésre  doménadaptáció.
MI 2003/ Mi lenne a b legjobb választása? Statisztikai eljárásoknál az un. Fisher féle lineáris diszkriminancia függvény adja a legjobb szétválasztási.
Valószínűségszámítás II.
Többdimenziós valószínűségi eloszlások
Megerősítéses tanulás 8. előadás
Szabadkai Műszaki Szakfőiskola 1. A neuron modellje a következő 3 elemből áll: 1. A szinapszisok halmaza amelyekkel a neuronok egymáshoz vannak kapcsolva.
1 Megerősítéses tanulás 7. előadás Szita István, Lőrincz András.
MI 2003/8 - 1 Alakfelismerés alapproblémája: adott objektumok egy halmaza, továbbá osztályok (kategóriák) egy halmaza. Feladatunk: az objektumokat - valamilyen.
Kutatási beszámoló 2002/2003 I. félév Iváncsy Renáta.
A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. Számítógép- architektúrák dr. Kovács György DE AVK GAIT.
Struktúra predikció Struktúra lehet Felügyelt tanulási probléma
Gépi tanulási módszerek
Mesterséges Neurális Hálózatok 3. előadás
1 Megerősítéses tanulás 9. előadás Szita István, Lőrincz András.
Kontinuum modellek 1.  Bevezetés a kontinuum modellekbe  Numerikus számolás alapjai.
Genetikus algoritmusok
Mediánok és rendezett minták
Technológiai folyamatok optimalizálása
Készült a HEFOP P /1.0 projekt keretében
I. Előadás bgk. uni-obuda
Mesterséges intelligencia
Regresszió, Mesterséges neuronhálók márc. 2.
A neuronhálók tanítása A backpropagation algoritmus
A gépi tanulás célja Cél: Olyan programok létrehozása, amelyek a működésük során szerzett tapasztalatok segítségével képesek javítani a saját hatékonyságukon.
Konvolúciós neuronhálók
Bevezetés Láttuk, hogyan lehet Gauss-görbét illeszteni adatpontokra
Mély neuronhálók (Deep neural networks)
Emlékeztető Az előző órán az adatok eloszlását Gauss-eloszlással közelítettük Célfüggvénynek a Maximum Likelihood kritériumot használtuk A paramétereket.
Regularizáció.
A mesterséges neuronhálók alapjai
Bevezetés a mély tanulásba
Készletek – Állandó felhasználási mennyiség (folyamatos)
GÉPI TANULÁSI ALAPFOGALMAK
Neuronhálók és tanításuk a backpropagation algoritmussal
KONVOLÚCIÓS NEURONHÁLÓK
Visszacsatolt (rekurrens) neuronhálók
A perceptron neurális modell és tanítása
Előadás másolata:

Mesterséges neuronhálók (Artificial neural networks, ANNs)

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

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

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

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”

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

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…

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

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…

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

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

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

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

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

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”)

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

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

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)

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: 10-100-1000 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”

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 – 30-40-szer gyorsabb, mint ha egyetlen CPU-n végeznénk

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

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.

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

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

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)