A neuronhálók tanítása A backpropagation algoritmus

Slides:



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

Lineáris regressziós MODELLEK
Elemi függvények deriváltja
Programozási tételek, és „négyzetes” rendezések
Rangszám statisztikák
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:
IRE 8 /38/ 1 Óbudai Egyetem, NIK Dr. Kutor László2011. TÁMOP – I ntelligens R endszerek E lmélete 8.
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.
Kommunikációs hálózatok idősorainak analízise neuronhálózatokkal Máté György Diplomamunka Témavezető: Csabai István.
A második nyelv elsajátítás elméletei 2.
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.
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
Előadó: Prof. Dr. Besenyei Lajos
Szűrés és konvolúció Vámossy Zoltán 2004
Szabó Attila, Cross-entrópia alkalmazása a megerősítéses tanulásban.
Az Alakfelismerés és gépi tanulás ELEMEI
Nominális adat Módusz vagy sűrűsödési középpont Jele: Mo
SZÁMÍTÓGÉP ARCHITEKTÚRÁK - 15 Németh Gábor. 2001Németh Gábor: Számítógép architektúrák 2 NEURÁLIS HÁLÓZATOK Három fő hajtóerő: 1.Az információ-technológia.
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ó.
Lokális optimalizáció Feladat: f(x) lokális minimumának meghatározása 0.Adott egy kezdeti pont: x 0 1.Jelöljünk ki egy új x i pontot, ahol (lehetőleg)
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.
Többváltozós adatelemzés
Többváltozós adatelemzés
Lineáris regresszió.
Többtényezős ANOVA.
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.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Funkciós blokkok A funkciós blokkok áttekintése Az alkalmazás előnyei.
Valószínűségszámítás II.
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.
WP-Dyna: tervezés és megerősítéses tanulás jól tervezhető környezetekben Szita István és Takács Bálint ELTE TTK témavezető: dr. Lőrincz András Információs.
1 Megerősítéses tanulás 7. előadás Szita István, Lőrincz András.
Struktúra predikció Struktúra lehet Felügyelt tanulási probléma
SZÁMÍTÓGÉP-ARCHITEKTÚRÁK – 15 NEURÁLIS HÁLÓZATOK Németh Gábor.
Megerősítéses tanulás 5. előadás
1 Megerősítéses tanulás 9. előadás Szita István, Lőrincz András.
1.Kanonikus felügyelt tanulási feladat definíciója (5p) 1.Input, output (1p) 2.Paraméterek (1p) 3.Hipotézisfüggvény (1p) 4.Hibafüggvény/költségfüggvény.
Genetikus algoritmusok
IV. konzultáció Analízis Differenciálszámítás II.
Mesterséges intelligencia
Nem módosítható keresések
Regresszió, Mesterséges neuronhálók márc. 2.
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
Mesterséges neuronhálók (Artificial neural networks, ANNs)
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
Bevezetés a mély tanulásba
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
Gépi tanulási alapfogalmak
Előadás másolata:

A neuronhálók tanítása A backpropagation algoritmus

A neuronháló hibájának formalizálása Megbeszéltük, hogy a háló hogyan működik A kérdés, hogy hogyan lehet tanítópéldákkal betanítani A tanulás a wi súlyok automatikus beállítását jelenti Ehhez először is formalizálnunk kell a háló hibáját Így fogunk tudni két különböző hálót (W vektort) összehasonlítani D: tanítópéldák halmaza, t: a háló elvárt kimenete, o: kapott kimenet A leggyakoribb hibafüggvények (“loss function”): Átlagos négyzetes hiba (mean squared error, MSE): Több kimeneti neuron esetén: Folytonos t értékek (regressziós feladat) esetén is használható Kereszt-entrópia: Osztályozási feladat esetén ezt használják leggyakrabban (softmax kimenettel) 1-of-N kódolás esetén

Az aktivációs függvény módosítása Rejtett rétegek: a küszöbölős aktivációs függvény helyett annak egy közelítését fogjuk használni: szigmoid függvény Előny: deriválható Kimeneti neuronok: azt várjuk, hogy a P(ci|x) értékeket közelítsék Ezek együtt egy diszkrét valószínűségi eloszlást adnak meg Az egyes kimenetek értékkészlete [0,1], a kimenetek összege 1 kell legyen Megoldás: szoftmax aktivációs függvény

A neuronháló tanítása A hibafüggvények által definiáltuk, hogy hogyan mérjük a háló hibáját egy adott mintahalmazon A neuronháló úgy tekinthető, mint egy nagy függvény, amelynek változói a súlyok A tanítás során a súlyokat akarjuk úgy beállítani, hogy a tanító példahalmazon a háló minél kisebb hibát adjon Ez egy sokváltozós optimalizálási feladat Sokféle optimalizáló algoritmust lehetne használni a tanuláshoz A legegyszerűbb megoldás az ún. backpropagation algoritmus Egyben ez a leggyakrabban használt is

A backpropagation algoritmus 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 heurisztikusan állítjuk be („learn rate”) –ld. később Iteratív (addig lépkedünk, amíg el nem akadunk) Csak lokális optimum megtalálását garantálja

A backpropagation algoritmus 2 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 3 Á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”

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

A learning rate beállítása 2 A learning rate frissítése validációs példahalmaz segítségével A tanítás előtt tegyük féle az adatok egy részét  validációs halmaz Valamennyi tanítási lépés (pl. 1 epoch) után értékeljük ki a hibát a validációs halmazon Ha az előző kiértékeléshez a hibacsökkenés kisebb, mint egy küszöb  learning rate felezése Teljes leállás: ha a learning rate lement egy küszöb alá