RegressziĂł, neuronhĂĄlĂłk

Download Report

Transcript RegressziĂł, neuronhĂĄlĂłk

Regresszió,
Mesterséges neuronhálók
2014. márc. 27.
Regresszió
Regresszió
– Felügyelt (induktív) tanulás:
tanító halmaz alapján olyan modell
tanulása ami korábban nem látott
példákon is helyesen működik.
– Regresszió: folytonos érték
előrejelzése.
(statisztika „regresszió analízise” hasonló technikákat
használ, de más a cél)
Regresszió
Tanító adatbázis: {xi, ri} riϵR
Célfüggvény:
„Legkisebb négyzetes hiba”
Lineáris regresszió
Lineáris regresszió
g(x) = w1x + w0
gradiense 0 ha
Regressziós modellek
+MLE →
– Bayes
– A k legközelebbi szomszéd
• átlaga vagy
• inverz távolsággal súlyozott átlaga
– Döntési fa
• vagy lineáris modellek a leveleken
Regressziós SVM
Neuronhálók
Bevezetés
• Mesterséges neuronhálók (artificial
neural networks)
• Az információfeldolgozás a biológiai
idegrendszer (pl. az emberi agy)
működését próbálja utánozni
• Struktúra: nagyszámú, erősen
összefüggő, együttműködő processzáló
elem (idegsejtek(neuronok))
• Az emberekhez hasonlóan, tanulnak a
tapasztalatokból (példák segítségével)
Egy kis neurobiológia
• A neuron (idegsejt): sok
bemenet / egy kimenet
• A kimenet gerjesztett
(excited) vagy nem
• A más neuronokból
bejövő jelek határozzák
meg, mikor tüzel (fire) a
neuron (gerjesztett
állapotba kerül)
• A kimenet függ a
szinapszisokban
történő csillapításoktól
Matematikai megfogalmazás
Feltevésünk: a neuron a bemenetek súlyozott
átlagát számítja ki, és az eredményt
összehasonlítja egy küszöbértékkel. Ha nagyobb,
akkor a kimenet 1 (tüzel, gerjesztett állapotba kerül)
különben -1.
Néhány adat
• Neuronok száma az agyban: ~ 1011
• Egy neuron átlagosan 104 másikkal
van kapcsolatban
• Leggyorsabb kapcsolási idő: 10-3
másodperc
• Arcfelismerési idő: 10-1 másodperc
Motiváció
(gépi tanulási szemmel)
• Cél: osztályozás elvégzése nem-lineáris
összefüggések tanulásával
– Sok olyan probléma van, ahol a lineáris
diszkriminancia nem megfelelő eredményt
ad
– A fő nehézség a megfelelő nemlineáris
függvény megtalálása
– A “nyers erő” megközelítésnél valamilyen
függvénycsaládot választunk(például
polinomokat)
Perceptron
Többrétegű neuronhálók
A rejtett rétegben az
input adatok
másfajta
reprezentációja
Többrétegű neuronhálók
Előrecsatolt (feedforward) háló
• Kapcsolat csak a rákövetkező réteg
irányában van
• a rétegek között módosítható súlyokkal
ellátott kapcsolatok vannak
• tüzelés pl: előjel függvény
• Egy háromrétegű neuronháló egy input
rétegből, egy rejtett rétegből és egy
kimenet rétegből áll
Eltolás
• Van egy konstans egységünk is, amelyik
minden rejtett egységhez (neuronhoz) hozzá
van kötve. Ennek bemeneti értéke mindig 1.
• Egy neuron (hálózatának) aktivációja:
d
net
j


i 1
d
x i w ji  w j 0 

x i w ji  w j x ,
t
i0
ahol i az input egységeket indexeli, j a rejtett egységeket;
wji jelöli az i inputból jövő kapcsolat súlyát a j rejtett neuronnál.
Aktivációs-függvény
Minden rejtett egység kibocsátja az
aktiválásának valamely nemlineáris
függvényét (aktivációs-függvény),
azaz yj = f(netj)
(A több rétegű lineáris függvény még lineáris)
Előjel függvény:
 1 if net  0
f ( net )  sgn( net )  
  1 if net  0
oi
1
0
Tj
netj
Differenciálható aktivációs
függvény
• Differenciálható, nem-lineáris kimeneti függvény kell
a hatékony tanuláshoz (gradiens alapú módszerek)
• A leggyakoribb megoldás a szigmoid “logikai”
függvény használata:
f ( net j ) 
1
1 e
 ( net j  T j )
1
0
Tj
netj
Használják még a tanh vagy a Gauss függvényt is
Kimenet
Kimeneti egységeknél (hasonlóan) az
aktiváció:
net   y w  w   y w  w y
nH
k
nH
j
j 1
kj
k0
j
kj
t
k
j0
ahol a k az output réteg egységeit, az nH pedig a rejtett
egységek számát jelöli
• Bináris osztályozás: előjel függvény
• Többosztályos osztályozás: minden
osztályra egy kimenet, legnagyobb
aktivációs értékűt választjuk (diszkriminancia fgv.)
• Regresszió: aktivációs érték a predikció
– Az y1 rejtett egység számolja a következő felületet:
 0  y1 = +1
x1 + x2 + 0.5
< 0  y1 = -1
x1 OR x2
- Az y2 pedig a következőt:
 0  y2 = +1
x1 + x2 -1.5
< 0  y2 = -1
x1 AND x2
– A végső kimeneti egység jelei: z1 = 0.7y1-0.4y2 - 1,
sgn(z1) pontosan akkor lesz 1, ha y1 =1, y2 = -1, ami
éppen a kívánt függvényünk
(x1 OR x2 ) AND NOT(x1 AND x2)
Általános (3 rétegű) előrecsatolt
háló (c kimeneti egység)
•
 nH

 d


g k ( x )  z k  f k  w kj f j   w ji x i  w j 0   w k 0 


j

1
i

1




(k  1,..., c)
– A rejtett egységek segítségével bonyolultabb nemlineáris
függvényeket is kifejezhetünk, bővítve az osztályozási
lehetőségeket
– Megengedhetjük, hogy a kimeneten és a rejtett rétegeken levő
aktivációs függvények különbözőek legyenek, sőt minden
egységhez is különböző tartozhat
Kolmogorov tétele: minden korlátos folytonos
függvény előállítható három rétegű hálózattal.
• A 2d+1 darab rejtett egység mindegyike
inputként d nem-lineáris függvény összegét
kapja, minden xi tulajdonságból egyet
• Minden rejtett egység bemenetének nemlineáris függvényét adja outputként
• Az output egység a rejtett egységek
hozzájárulásainak összegét adja
Sajnos, de: Kolmogorov tétele nagyon
keveset mond arról, hogyan találjuk meg a
bemeneti adatokból a megfelelő nemlineáris
függvényeket
Többrétegű neuronháló tanítása
Visszaterjesztés
(backpropagation)
Tanulás neuronhálóknál
• A hálózat topológiáját előre
adottnak tekintjük
• Minden neuronnál ugyanaz, előre
rögzített aktivációs fgv.
• Tapasztalat: példák (tanító adatok)
• Tanulás = súlyok kalibrálása
• on-line tanulás (több epoch)
Tanulás neuronhálóknál
– Predikció (előrecsatolás)
Ilyenkor adunk egy mintát az inputon, és
ezt átszámoljuk a hálózaton – a végén a
kimeneten értéke(ke)t kapunk
– Tanulás (visszaterjesztés)
Ilyenkor az adott mintát arra használjuk,
hogy módosítsuk a súlyokat úgy, hogy a
számított és elvárt kimenetek különbsége
csökkenjen
Tanulás neuronhálóknál
• 3rétegű hálózatokat vizsgálunk
(könnyen megérthető, Kolmogorov tétele)
• A visszaterjesztés lényege:
minden rejtett egységhez ki tudjuk
számolni annak hibáját
(érzékenységét), és ezzel egy
tanulási eljárást ad a rétegek közti
súlyokra
• Legyen tk a kívánt k-ik kimenet, továbbá
zk a k-ik számított kimenet (k = 1, …, c)
tovább w jelölje a hálózat súlyait
•
Hiba:
J(w )
1
c
(t

2
 zk ) 
2
k
k 1
1
tz
2
– A visszaterjesztés szabály a gradiens
módszeren alapul
• A súlyok kezdőértékei véletlen számok, és a
hiba csökkentésének irányában változnak:
 w  
J
w
2
Hiba visszaterjesztés
A rejtett és kimenet rétegek közötti súlyok hibái:
J
 w kj

J
 net k
.
 net k
 w kj
  k
 net k
 w kj
ahol a k. kimeneti neuron érzékenységének
definíciója:
k  
J
 net
k
és megadja, hogyan változik a teljes hiba az
egység hálózatának aktivációjával
Mivel netk = wkty, kapjuk:
 net
k
 w kj
 yj
másrészt:
z k  f ( net k )
k  
J
 net k

J
.
z k
 z k  net k
 ( t k  z k ) f ' ( net k )
Következmény: a súlyok változtatásának
szabálya (a rejtett-kimenet rétegre):
wkj = kyj = (tk – zk) f’ (netk)yj
A bemenet és rejtett rétegek közötti súlyok
hibái:
d
y j  f ( net j ),
net
j

w
ji
 net
j
xi
i0
J
 w ji
J
 1


y j
y j  2
c
y j
.
 y j  net
.
j
 w ji
c
z k

 (t k  z k )     (t k  z k )  y
k 1
k 1

j
   (t k  z k )
k 1

J
c
2
z k
 net k
.
 net k
y j
c
   ( t k  z k ) f ' ( net k ) w kj
k 1
k
Az előzőhöz hasonlóan definiáljuk a rejtett
réteg érzékenységét:
c
 j  f ' ( net j ) w kj  k
k 1
Következmény: az input-rejtett rétegek közötti
súlyokra vonatkozó tanulási szabály:
w
ji
  x i
j


   w kj  k f ' ( net j ) x i

  


j
Hiba visszaterjesztés
Először számítsuk ki a kimenetek
érzékenységét, és ezzel változtassuk a
súlyok felső rétegét
 k  ( t k  z k ) f ' ( net k )
output
a k–ba vezetők aktualizálása:
 w ki   k z i
hidden
input
Hiba visszaterjesztés
Ezután számítsuk ki a rejtett egységek
érzékenységét, a hozzájuk kötött kimeneti
egységek érzékenységének segítségével
output
c
 j  f ' ( net j ) w kj  k
rejtett
k 1
input
Hiba visszaterjesztés
Végül aktualizáljuk az alsó réteg
súlyait, a rejtett egységek
érzékenységének segítségével
output
rejtett
Aktualizáljuk a j-be vezetőket
 w ji   j x i
input
Véletlenszerűen választott súlyokkal kezdve, a
sztochasztikus visszaterjesztés algoritmus:
Begin inicializálni:nH; w, kritérium ,
, m  0
do m  m + 1
xm  véletlenül választott minta
wji  wji + jxi; wkj  wkj + kyj
until ||J(w)|| < 
return w
End
Megállási feltétel
• Az algoritmus leáll, ha a J(w) kritériumfüggvény
változása kisebb az előre adott  küszöbértéknél
• Más, ennél jobb megállási kritériumot is
használnak, pl. eddig egy mintára néztük a hibát,
de jobb lenne a teljes tanító halmazra
meghatározni:
n
J 
J
p 1
p
Megállás validációs halmaz alapján
– Kezdetben a teljes tanítóhalmazhoz tartozó hiba nagy,
a tanítás során csökken
– Az egy mintára eső hiba a tanítási halmaz méretétől
és a hálózat kifejező erejétől függ
– Egy független tesztelő halmazon az átlagos hiba
általában nagyobb, mint a tanító-halmazon kapott –
növekedhet és csökkenhet is
– Egy validációs halmazt szokás annak eldöntésére
használni, hogy mikor állítsuk meg a tanítást –
általában nem akarjuk túltanítani (overfit) a hálózatot,
és ezzel csökkenteni az általánosító képességét
– a tanítást a validációs halmazon elért minimális
hibánál állítjuk meg
Megjegyzések
• Nem biztos, hogy zérus hibához konvergál –
lokális optimumhoz is tarthat, vagy
oszcillálhat
• A gyakorlatban nagyon sok nagy problémánál
kicsi hibához tartozó megoldást ad
• Sokezerszer lefuttatandó ciklus lehet, nagyon
hosszú tanítási idővel
• A lokális minimál-megoldások elkerüléséhez
többszöri futtatás, véletlen kezdősúlyokkal
– A legkisebb hibához tartozó megoldást vegyük
– Vagy valamilyen többségi szavazással válasszuk ki
a megoldást
Teljesítőképesség
• Boole függvények: Bármely Boole
függvény reprezentálható három rétegű
hálóval, elegendően sok rejtett egységgel.
• Folytonos függvények: bármely korlátos
folytonos függvény tetszőlegesen kicsi
hibával közelíthető három rétegű hálózattal
– Sigmoid függvények használhatók
bonyolultabb függvények előállításához
• Tetszőleges függvények: négy rétegű
hálózattal tetszőleges függvény
tetszőleges pontossággal közelíthető
Megjegyzések
• Hány rejtett neuron kell?
– ha kevés rossz reprezentáció
– ha sok túltanulás
– validációs halmaz...
• Mi az optimális toplológia?
– priori tudás
• Tanulási arány!?
Kitekintés
Neuronhálók
• Perceptron: az első algoritmus az
ötvenes évekből (egyrétegű háló)
• Visszaterjesztés algoritmus:
többrétegű hálózatok, a hetvenesnyolcvanas években fejlesztették ki
őket
• Mély gépi tanulás (deep learning):
utóbbi 5-6 évben új virágkor
Mély tanulás
(auto-encoder pretraining)
Visszacsatolásos neuronhálók
(recurrent neural networks)
rövid távú memória
http://www.youtube.com/watch?v=vmDByFN6eig