Deep Learning
Deep Learning: Mélyhálós Tanulás ˝ Mesterséges Neuronhálók 2015 osz
Milacski Zoltán Ádám
[email protected] http://milacski.web.elte.hu
ELTE Informatika Doktori Iskola
2015-09-21
Deep Learning
Deep Learning anyagok Szoftverek: NVIDIA Digits (web, NVIDIA): http://developer.nvidia.com/digits Caffe (command line/Python/MATLAB, UC Berkeley): http://caffe.berkeleyvision.org/ torch (Lua/Python/MATLAB, NYU): http://torch.ch/ theano (Python, Université de Montréal): http://deeplearning.net/software/theano/ Ingyenes online kurzusok: NVIDIA Deep Learning Course (Jon Barker, NVIDIA): http://developer.nvidia.com/deep-learning-courses Neural Networks for Machine Learning (Geoffrey Hinton, University of Toronto): http://www.coursera.org/course/neuralnets Convolutional Neural Networks for Visual Recognition (Andrej Karpathy, Stanford): http://cs231n.github.io/ Machine Learning (Andrew Ng, Stanford): http://www.coursera.org/learn/machine-learning Tudományos cikkek: Yann LeCun, Joshua Bengio, Geoffrey Hinton, Ilya Sutskever, Christian Szegedy, Alex Krizhevsky, Andrew Ng, Quoc Le, Vincent Vanhoucke, Diederik Kingma és még sokan mások. . . http://scholar.google.com
Deep Learning
Deep Learning 1. Legnépszerubb ˝ MI megközelítés napjainkban: aktív kutatási terület, legnagyobb cégek használják adatelemzésre (Google, Facebook, Microsoft, Netflix, Baidu, IBM). Sok sikeres alkalmazás: rekordokat döntöget (ImageNet: 25% → 5% hiba)
de még spam-szurés, ˝ arcfelismerés, Xbox Kinect, Q-learning. . . ˝ Zavarba ejtoen párhuzamosítható feladat: mátrix-vektor muveletek, ˝ GPU gyorsítás (olcsó és takarékos szuperszámítógép). Egyszeri lassú betanítás, utána gyors predikció (betanított modell hatékonyan telepítheto˝ beágyazott rendszerekre, mobiltelefonokra). ˝ Az elmúlt években alapjaiban doltek meg Machine Learning tézisek: Klasszikus Machine Learning: feature extrakció és kernel kézzel, tanuljunk súlyozást (pl. SVM, HMM, klaszterezés, LDA). Konvex optimalizáció: rengeteg tétel, pl. garantált globális megoldás. Deep Learning: vegyünk sok mintát és sok paramétert, tanuljuk meg a feature-öket is az ˝ adatokból! Erosen nem konvex feladat: nagyon kevés elméleti garancia, sok mintával és kello˝ hardverrel mégis jobban általánosít. . .
Deep Learning
Deep Learning 2. ˝ formája és képzelgés, valamire tanítva, máson tesztelve Inceptionism: felhok (becsaphatóság kiaknázása)
=⇒ Festés stílus másolás: B=Turner, C=van Gogh, D=Munch, E=Picasso, F=Kandinsky
Deep Learning
Deep Learning 3. input→output nemlineáris leképezést tanulunk sok (input,output) párból: ˝ áll: x i ∈ Rn , i = 1, . . . , N, minden input vektor feature-ökbol ˝ áll: y i ∈ Rm , i = 1, . . . , N, minden output vektor címkékbol ˝ áll: fθ : Rn → Rm , θ ∈ Rp , a leképezés paraméterekbol a leképezés vektoros adatokból címkét próbál jósolni: fθ (x) ≈ y. ˝ adott paraméteres leképezés-családból kiválasztani a legjobbat, ami megold Cél: elore valamilyen feladatot (úgy beállítani a θ értékeket, hogy minimalizáljunk egy l : Rm × Rm → R+ hibát a jósolt és a tényleges címkék között). Osztályozás: y ∈ Zm , Regresszió: y ∈ Rm , Rekonstrukció: y = x, fθ 6= id.
PN 1 Matematikailag: (x i , y i )N i=1 =⇒ minθ N i=1 l(fθ (x i ), y i ). ˝ még nem látott (x, y) párokra is kicsi legyen az l(fθ (x), y) hiba. Túltanulás kikerülendo: Aktivációs függvény: g(z) = max(0, z) ReLU függvény. P Neuron: fw ,b (x) = g(w T x + b) = g( ni=1 wi xi + b), Neuronréteg: fW ,b (x) = g(W x + b), Neuronháló: fW ,...,W ,b ,...,b (x) = gk (W k · · · g2 (W 2 g1 (W 1 x + b 1 ) + b 2 ) · · · + b k ). 1
k
1
k
Deep Learning
Deep Learning 4. Neuronháló: fW 1 ,...,W k ,b1 ,...,bk (x) = gk (W k · · · g2 (W 2 g1 (W 1 x + b 1 ) + b 2 ) · · · + b k ). ˝ A feature-ök hierarchiába rendezodnek: a mélyebb rétegek egyre magasabb szintu˝ ˝ o˝ réteg feature-eit kombinálják össze. feature-öket tartalmaznak, és mindig az eloz
˝ Elonyök: ˝ Nem kell elozetesen manuálisan feature-öket létrehozni. Általános architektúra: sokféle feladatra és adattípusra jó. Sok mintával (N ≈ 100000), GPU-val (NVIDIA CUDA/cuBLAS), új módszerekkel (pl. ReLU, Adam, pretraining, dropout) jól muködik. ˝ Transfer Learning: más által nagy adatbázison betanított háló letöltheto˝ és adaptálható saját kicsi adatbázishoz. Geoffrey Hinton: "nagyjából így muködik ˝ az emberi agy, tökéletlen modell is lehet hasznos és tanulságos".
Deep Learning
Optimalizáció Hogyan találhatunk jó θ = {W 1 , . . . , W k , b 1 , . . . , b k } paramétereket? Gradiens-módszerrel (iteratívan)! Hiba: l(fθ (x), y) kettes norma közelítés: 21 ky − fθ (x)k22 , egyes norma közelítés: ky − fθ (x)k1 .
Összhiba: " L(θ) =
# N 1 X l(fθ (x i ), y i ) . N i=1
Gradiens-módszer: a negatív gradiens (− mutat, lépjünk egy kicsit ebbe az irányba! θt+1 = θt − αt
∂L(θ) ) ∂θ
mindig a lokális minimum felé
∂L(θ) . ∂θ θ=θt
2 kérdés: x i inputok skálázása? ∂L(θ) ∂θ gradiens kiszámítása? (véges differenciával való numerikus közelítés pontatlan) αt lépésköz beállítása? (ne lépjünk se nem túl kicsit, se nem túl nagyot)
Deep Learning
Gradiens-módszer 1.
Gradiens-módszer: θt+1 = θt − αt
∂L(θ) ∂θ θ=θ
, θ = {W 1 , . . . , W k , b 1 , . . . , b k }. t
x i inputok skálázása: ha a feature-ök különbözo˝ skálákon mozognak, de azonos ˝ súllyal szeretnénk figyelembe venni oket (szinte mindig igaz), feature-önként standard normalizáljuk az inputokat: v u N N u 1 X 1 X µ= xi , σ = t (x i − µ)2 , N N −1 i=1
i=1
xi − µ xi ↔ . σ
Deep Learning
Gradiens-módszer 2. Gradiens-módszer: θt+1 = θt − αt ∂L(θ) ∂θ
∂L(θ) ∂θ θ=θ
, θ = {W 1 , . . . , W k , b 1 , . . . , b k }. t
gradiens kiszámítása: láncszabállyal, dinamikus programozással. ∂g(h) 0 ∂l(z,y ) , l (z, y ) = ∂z . ∂h P ROP(X , Y , W 1 , . . . , W k , b 1 , . . . , b k , g1 , . . . , gk , g10 , . . . , gk0 , l, l 0 )
Legyen X = [x 1 , . . . , x N ], Y = [y 1 , . . . , y N ], gj0 (h) =
function // ForwardPropagation Z0 = X for j = 1, . . . , k do H j = W j Z j−1 + [b j , . . . , b j ] Z j = gj (H j ) end forP N L = N1 i=1 l(Z k ,·,i , Y ·,i ) // BackPropagation ∂Z k = N1 [l 0 (Z k ,·,1 , Y ·,1 ), . . . , l 0 (Z k ,·,N , Y ·,N )] for j = k , . . . , 1 do ∂H j = gj0 (H j ) ◦ ∂Z j // itt ◦ az elemenkénti szorzás ∂Z j−1 = W Tj ∂H j P ∂b j = N i=1 ∂H j,·,i ∂W j = ∂H j Z Tj−1 end for return Z k , L, ∂W 1 , . . . , ∂W k , ∂b 1 , . . . , ∂b k end function
Deep Learning
Gradiens-módszer 3. Gradiens-módszer: θt+1 = θt − αt
∂L(θ) ∂θ θ=θ
, θ = {W 1 , . . . , W k , b 1 , . . . , b k }. t
αt lépésköz beállítása: Adam algoritmus. function A DAM(α, β1 , β2 , ε, X , Y , θ0 , g1 , . . . , gk , g10 , . . . , gk0 , l, l 0 ) M 0 = 0, V 0 = 0 for t = 0, 1, . . . , T − 1 do [Z k , L, ∂θ]=P ROP(X , Y , θt , g1 , . . . , gk , g10 , . . . , gk0 , l, l 0 ) M t+1 = β1 M t + (1 − β1 )∂θ // Gradiens mozgóátlaga V t+1 = β2 V t + (1 − β2 )∂θ 2 // Gradiens négyzet mozgóátlaga θt+1 = θt − α
M t+1 1−β t+1 1 s V t+1 +ε 1−β t+1 2
// Paraméterek frissítése
end for return θT end function Tipikus beállítás: α = 0.001, β1 = 0.9, β2 = 0.999, ε = 10−8 . ˝ θ0 kezdopont: ReLU függvény esetén W j ∼ N (0, 0.0012 ), b j = 0.01. ˝ ˝ Leállási feltétel: k∂θk2 < 10−4 (közelítoleg lokális szélsoérték). Minibatch: minden lépésben a minták egy részhalmazával számolunk (csökkentett memóriaigény, több kicsi iteráció, gyorsabb konvergencia, mintákban párhuzamosítható GPU-val). Ekkor célszeru˝ a negatív gradiens iránya helyett a negatív gradiensek mozgóátlagának irányába lépni (momentum).
Deep Learning
Regularizáció Regularizáció: R(θ), plusz költség tag túltanulás ellen (nem engedi, hogy θ elemei nagyok legyenek, egyszerusíti ˝ a modellt, jobban általánosít). Összhiba regularizációval (λ > 0: két költség trade-off-ja): " # N 1 X L(θ) = l(fθ (x i ), y i ) + λR(θ) N i=1
Kettes norma regularizáció: R(θ) = 21 kθk22 , Egyes norma regularizáció: R(θ) = kθk1 .
Dropout: exponenciálisan sok háló összekombinálása, tanításkor p = 0.5 valószínuséggel ˝ aktív minden neuron (input rétegre p = 0.8), teszteléskor p-vel szorzandó minden aktivitás. Jó implementáció: inverted dropout.
Deep Learning
Greedy Layer-wise Pretraining
˝ Elotanítás: címkék nélküli (felügyeletlen) rekonstrukció, mohó módon, rétegenként. Utána szokásos felügyelt (finom)hangolás címkékkel.
˝ Lassú, de gyakran jobb θ0 kezdopontot ad. Kis adatbázisoknál segít a legtöbbet! Esetleg ha sok címke nélküli tanítópéldánk van. . . ˝ ˝ Manapság csökken a jelentosége, de a jövoben még nagyobb hálók esetén újra szükség lehet rá. . .
Deep Learning
Hiperparaméterek
Egy mély hálónak sok hiperparamétere van: rétegek száma k , rétegek méretei, regularizáció λ, Adam α, β1 , β2 , ε, dropout p, de akár még aktivációs és költségfüggvények is. . . Hogyan állítsuk be ezeket? Kereszt-validáció: bontsuk az adatbázist 80% tanító + 10% validáció + 10% teszt részekre. Tanítón sok kombinációt próbáljunk ki, validáción mérjük ki a legjobbat. A legjobb kombinációval tanítsunk újra tanító+validáción és teszten használjuk ezt! Majd válasszuk újra a halmazokat, és átlagoljuk az eredményt. ˝ Bayesian optimization: Megerosítéses Tanulás (RL) szeru˝ iteratív eljárás, próba-szerencse alapon oldja fel az exploráció-exploitációs dilemmát. Gauss-folyamatokat használ. Megtanulja a helyes skálázást a változókban. Sokkal jobb, mint a manuális próbálgatás (pontosan emlészik és értékel ki sok kombinációt). Spearmint (Python/MATLAB): http://github.com/HIPS/Spearmint Hyperopt (Python): http://github.com/hyperopt/hyperopt BayesOpt (C/C++/Python/MATLAB): http://rmcantin.bitbucket.org/html/
Deep Learning
Speciális neuronhálók
˝ o˝ diák, speciális hálók azonban mind Az alapveto˝ neuronhálós tudást lefedik az eloz igényelnek további trükköket. ˝ o˝ diákon. Feedforward háló (FNN): ezt láttuk részletesen az eloz Konvolúciós háló (CNN): mátrixszorzások helyett konvolúciók (kevesebb változó, kisebb feladatméret). ˝ Rekurrens háló (RNN): idosorok (dinamika). ˝ Autoencoder: rekonstrukció, feature tanulás, elotanítás, klaszterezés. Hopfield háló: tartalom-címzett memória, robusztus, bináris aktivitások, irányítatlan élek a gráfban. Ma már nem használják, történelmi okokból fontos. Boltzmann háló (RBM): ma már nem használják, történelmi okokból fontos.
Deep Learning
˝ A terület jövoje 2016: NVIDIA Pascal architektúra Újabb nagy ugrást jelenthet. . . Most még nem késo˝ belekezdeni. 32 GB RAM: nagyobb minibatch-ek, kevesebb másolási muvelet. ˝ NVLink interfész: PCI Express-hez képest sokkal nagyobb sávszélesség. Vegyes-pontosságú számítások: számolás double-ben, tárolás float-ban.
˝ CUDA Toolkit: folyamatos szoftveres fejlodés (7.5: ritka mátrixok)
˝ de: Nehéz megmondani, hogy mi lesz a neuronhálók jövoje, a meglévo˝ módszereket tovább fogják tökéletesíteni, adat és hardverkapacitás is csak egyre több lesz, egyre több helyen fognak megjelenni a hétköznapokban, sok szép meglepo˝ eredményt fognak produkálni az elkövetkezendo˝ években. . .
Deep Learning
Köszönöm a figyelmet!
Köszönöm a figyelmet! Ez a diasor Jon Barker, Geoffrey Hinton, Andrej Karpathy anyagai; Diederik Kingma, Leon Gatys, Nitish Srivastava cikkei, Ilya Sutskever disszertációja és Yifei Teng, Alexander Mordvintsev (Google Research) blogjai alapján készült. Az algoritmusok és ˝ szellemi tulajdonát képezik. az ábrák a fenti cégek és szerzok