Tóth Bálint Pál
Deep Learning a gyakorlatban Python és LUA alapon Bevezetés
http://smartlab.tmit.bme.hu
Jogi nyilatkozat Jelen előadás diái a „Deep Learning a gyakorlatban Python és LUA alapon” című tantárgyhoz készültek és letölthetők a http://smartlab.tmit.bme.hu honlapról. A diák nem helyettesítik az előadáson való részvételt, csupán emlékeztetőül szolgálnak. Az előadás diái a szerzői jog védelme alatt állnak. Az előadás diáinak vagy bármilyen részének újra felhasználása, terjesztése, megjelenítése csak a szerző írásbeli beleegyezése esetén megengedett. Ez alól kivétel, mely diákon külső forrás külön fel van tüntetve. Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
2/47
Előadók
Bálint
Gyuri
Tamás
http://smartlab.tmit.bme.hu Laborvezető: Dr. Németh Géza Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
3/47
Tárgy célkitűzése • Gépi tanulás új paradigmája. Óriási potenciál! • Gyakorlati tudás vállalkozáshoz vagy munkavállaláshoz. • A tárgy elvégzése 5-ös érdemjeggyel presztízs értékű! Vonzó a cégek számára! • „Junior” deep learning mérnök: • 1 komplex feladat, • 20-80 tanítás.
• „Senior” deep learning szakember: • legalább 8-10 komplex feladat, • 2000-3000 tanítás. Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
4/47
Tárgyról infók Előadás: kedd 12-14h, QBF10 Gyakorlat: csütörtök 12-14h, QBF10 Fogadó órák előzetes egyeztetés esetén: Bálint - szerda 13:00-14:00 Gyuri - hétfő 13:00-14:00 Tamás - péntek 11:00-12:00
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
5/47
Ajánlott tárgyak • Neurális hálózatok (VIMIJV07) Dr. Horváth Gábor, tavaszi félév • 'Big Data' elemzési eszközök nyílt forráskódú platformokon (VITMAV15) Prekopcsák Zoltán, Gáspár Csaba • Média- és szövegbányászat (VITMM275), Dr. Szűcs Gábor, Dr. Tikk Domonkos • Adatbányászati technikák (VISZM185), Dr. Katona Gyula, Dr. Pintér Márta Barbara, Dr. Sali Attila • A lineáris algebra numerikus módszerei (VIMAD041) Dr. Pach Péter Pál, tavaszi félév • Mátrixanalízis (doktori képzés, VIMAD569) Dr. Pach Péter Pál, őszi félév Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
6/47
Tárgy követelményei • Előadáson, gyakorlaton való részvétel • Gyakorlatok 70%-án való részvétel • Kis házi feladatok (+1 jegy) • Nagy házi feladat (aláírás, megajánlott jegy) • Kahoot! (+1 jegy) • Vizsga: írásbeli + szóbeli
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
7/47
Kis házi feladat Nem kötelező, de erősen ajánlott Egy félévben várhatóan 5 db kis házi feladat. Mindegyik 20 pontot ér. Eredmények: Github.com-ra elsődlegesen Jupiter notebook formátumban. • Az eredmények és az oda vezető út legyen jól látható! • Határidő: 2 hét. Csúszás esetén minden nappal 2 pont kerül levonásra. • Az öt házi feladatból (max 100 pont) ha elérsz 70 pontot, akkor az +1 jegyet ér vizsgán/megajánlott jegy esetén. • • • •
• A kiértékelésig maradjon secret gist/privát repo, utána publikus! • Beküldés: Emailben az a gist/repo linkjét az előadónak! Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
8/47
Nagy házi feladat I. • Aláírás feltétele. • Komplexebb házi feladat esetén lehetőség van 4-es vagy 5-ös megajánlott jegyre. Rosszabbra nem! Benyújtandó anyagok: 1. Jól kommentezett forráskód github.com-ra feltöltve. (Bármelyik deep learning keretrendszerben készülhet.) 2. Github.com-on readme.md a tanítás és tesztelés módjáról (a reprodukáláshoz mit futtassunk, milyen paraméterekkel, milyen szoftver környezetben). 3. Beszámoló dokumentum (max 8 oldal). 4. Vizualizáció Jupiter notebookban, ha indokolt. Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
9/47
Nagy házi feladat II. • 4-5 fős csapatok, 3-3 fős „vetésforgó” az alábbi szerepkörökkel: 1. 2. 3. 4. 5.
Tudományterület feltérképezése, cikkek olvasása. Adatok beszerzése, tisztítása, előkészítése. Hálózat és tanítás. Hiperparaméter optimalizálás és tesztelés. Interfész csatolás, opcionális (pl. Android).
• Tehát a csapat minden tagja legalább 3 ponttal foglalkozik. • Mindenkinek kötelező a (3)-as vagy (4)-es pontok valamelyikével foglalkoznia. • 7. héten beszámoló az előrehaladásról, 14. héten végső beszámoló: • 10 perc előadás + 10 perc vita Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
10/47
Nagy házi feladat III. - beszámoló • Magyar és angol nyelvű cím • Magyar és angol nyelvű kivonat (abstract): 100-200 szó. • Tartalom (angol vagy magyar): • • • •
Bevezető Tématerület ismertetése, korábbi megoldások Rendszerterv: milyen hálózatot használtok Megvalósítás •
Adatok beszerzése, előkészítése
•
Tanítás
•
Kiértékelés (tanítási, validációs és teszt hiba), hiperparaméter optimalizálás, stb.
•
Tesztelés
•
Jövőbeli tervek, összefoglalás
•
Hivatkozások •
Legalább 10 db KORREKT irodalmi hivatkozás (nem webes!).
•
scholar.google.com, ArXiv.org
• Maximum 8 oldal. • Formázási irányelvek: •
NIPS formátum (LaTex): https://nips.cc/Conferences/2016/PaperInformation/StyleFiles
•
IEEE Transactions (Word, LaTex): https://www.ieee.org/publications_standards/publications/authors/author_templates.html
• PDF + forrás (Word vagy LaTex) feltöltése a GitHub-ra. Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
11/47
Nagy házi feladat IV. - GPU • Ha van saját, akkor azon dolgozzatok. • Ha nincs, vagy nagyobb erőforrásra van szükség, akkor biztosítunk SSH eléréssel Nvidia Titan X, 12 GBos GPU futásidőt. • Ehhez előre le kell foglalni az erőforrást, az igényt a tárgyhoz tartozó Google Groups-ban jelezzétek. („GPU erőforrás igény nagy házi feladathoz” téma) • Törekedjetek a max. 1-2 napos tanításra. Ne lőjetek ágyúval verébre! • AWS használata
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
12/47
Nagy házi feladat V. • A házi feladatok, forráskódja, dokumentáció és prezentáció publikus lesz és felkerül a tárgy honlapjára, illetve GitHub.com-ra GNU GPLv3 licensz alatt. • A projectek és a vonatkozó linkek megjelennek a tárgy honlapján. • A kiemelkedő projektek gazdái oklevelet kapnak és kiemelve megjelennek a tantárgy honlapján.
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
13/47
Nagy házi feladat témák Témák listája a SmartLab honlapon: http://smartlab.tmit.bme.hu Saját téma is lehet. Legkésőbb 3. hét végéig álljanak össze a csapatok és válasszatok témát. A csapatok toborzásában segítünk, kapcsolódó Google Spreadsheet (honlapon is kint van a link): https://goo.gl/nFlcxq • A választott témához hozzatok létre Google Groups-on egy új beszélgetést, ahol a címet és a résztvevőket (név, neptun kód) megírjátok. • • • •
• Példa aláírásért: számfelismerő (kézi és gépi) készítése sárgacsekk automatikus digitalizálására. • Példa megajánlott jegyért: automatikus árfolyammozgás becslés a részvényhez köthető hírek alapján.
• Bármelyik deep learning keretrendszerben készülhet. • TDK, BSc & MSc diploma, publikációs és akár PhD lehetőség. • És ez miért is jó?!
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
14/47
Github.com • Kis házi feladat: mindenkinek legyen egy saját „Secret Gist” -je a GitHub-on. Ha ez nem elég, GitHub repo. Kiértékelésig ne adjátok meg az URL-t senkinek! • Nagy házi feladat: a csapatoknak készítünk saját GitHub repo-t. Félév során privát, majd publikusak lesznek GNU GPLv3 licensz alatt. • Az eredeti copyright-al a BME rendelkezik! • GNU GPLv3 licensz szöveg fel lesz tűntetve a repoban: http://choosealicense.com/licenses/gpl-3.0/
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
15/47
Security Egymásról való másolás gyanúja esetén az időben későbbi feltöltés tulajdonosa minden plusz lehetőségből ki lesz zárva (megajánlott jegy, +1 jegy) és kötelező számára a szóbeli vizsga. Bizonyosság esetén -1 jegy.
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
16/47
Kahoot! • Kahoot.it • Mindig a NEPTUN kódodat add meg! (egyébként később nem tudjuk összerendelni Veled) • TOP 5 (legtöbb jó válasz a félév végén): +1 jegy • Toplista felkerül a honlapra is, első öt helyezett nevesítve. • Minden előadáson (keddenként). • Lehetséges témák: • előző előadás második fele, • a csütörtöki gyakorlat, • az aktuális előadás első fele. Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
17/47
Névnek a NEPTUN kódodat add meg! https://kahoot.it/
Hogyan kezdjünk neki? Általános megközelítés: 1) Adat ( információ tudás) előfeldolgozás 2) ML algoritmus 3) Tanítás tanító adatokkal – visszamérés validációs adatokon 4) Kiértékelés teszt adatokon 5) Hiperparaméter optimalizálás (hyperopt) 6) Tesztelés valós környezetben 7) Goto (1) ☺ Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
19/47
Tanító-validációs-teszt adatok I.
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
20/47
Tanító-validációs-teszt adatok II. • Túltanítás • Neumann János: Négy paraméterrel még egy elefántot is le lehet írni, egy ötödikkel pedig el lehet érni, hogy az ormányát is csóválja.
Forráskód: http://www.johndcook.com/blog/2011/06/21/how-to-fit-an-elephant/ Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
21/47
Tanító-validációs-teszt adatok III. • 50-30-20, 70-20-10, 80-15-5 • Keresztvalidáció K-fold
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
22/47
Hogyan kezdjünk neki? Általános megközelítés: 1) Adat ( információ tudás) előfeldolgozás 2) ML algoritmus 3) Tanítás tanító adatokkal – visszamérés validációs adatokon 4) Kiértékelés teszt adatokon 5) Hiperparaméter optimalizálás (hyperopt) 6) Tesztelés valós környezetben 7) Goto (1) ☺ Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
23/47
Deep Learning hírek a nagyvilágból 2014 –Deep Mind, ~500.000.000$ (https://deepmind.com) • Space Invaders • Breakout • Go, 5-0 és 4-1
2015 december – OpenAI, ~1.000.000.000$ (https://openai.com) • Elon Musk (PayPal, SpaceX, Tesla Motors) • Open source AI megoldások az emberiség szolgálatában
2016 augusztus– Nervana – Intel fúzió IBM Watson, Google Brain, Baidu, Facebook, Flickr, NetFlix, DARPA, stb. Számos startup (kép- és beszédfelismerés, orvosi alkalmazások, szöveg értelmezés, cyber biztonság, ajánló rendszerek, stb.) Hazánkban: BOSCH, AdasWorks, Gravity, Ustream, Ultinous, stb. Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
24/47
Deep Learning „sztárok” Geoffrey Hinton University of Toronto Google (felvásárolta a DNNresearch Inc. cégét)
Yann LeCun New York University Facebook AI Research (FAIR)
Yosua Bengio Université de Montréal OpenAI
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
25/47
Na jó, de mi is az a deep learning? Gépi tanuló algoritmusok struktúrált összessége, ahol több rétegen keresztül próbáljuk az adatok különböző szintű absztrakcióit kinyerni és modellezni. Gyakorlatban a deep learning kifejezést elsősorban a mély neuronhálókkal kapcsolatban használják. Korábbiaknál jobb modellek és nagyobb pontosság. Új algoritmusok + nagymennyiségű adat + GPU Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
26/47
Deep learning architektúra
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
27/47
Előrecsatolt mély neuronháló W2
Wn-1
W1
Wn
f(∑): nemlináris függvény pl. f(∑)=max(0, ∑)
backpropagation TANULÁS: súlyok „hangolása”
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
28/47
Réteg típusok • Előrecsatolt rétegek (Fully Connected, FC) • Osztályozási és regressziós feladatokra
• Konvolúciós rétegek (Convolutional Neural Net, CNN) • Jellemző tanulás: feature extraction vs feature learning • 1D, 2D és 3D konvolúció
• Rekurrens rétegek (Long Short-Term Memory, LSTM) • Időbeliség modellezésére • Természetes nyelvfeldolgozás (Natural Language Processing, NLP): szövegértés, szövegszintézis, kivonatolás, chatbot, fordítás, stb. Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
29/47
Hálózat topológiák • FC • CNN + FC • LSTM • LSTM + FC • LSTM + CNN + FC
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
30/47
Kép – férfi vagy nő? backpropagation
Nő Férfi Nő
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
31/47
Kép – ImageNet verseny • ~1.200.000 kép, ~1000 kategória • Cél: minél pontosabb osztályozás • AlexNet [A. Krizhevsky et al., 2012]
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
32/47
Kép – ImageNet verseny • ~1.200.000 kép, ~1000 kategória • Cél: minél pontosabb osztályozás
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
33/47
Kép: felismerési pontosság 2010-15
https://devblogs.nvidia.com/parallelforall/mocha-jl-deep-learning-julia/
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
34/47
Hardware GPU: NVIDIA GTX, TITAN, TITAN X • 2016-os Titan X: 12 teraFLOP (single precision) • ~50.000-500.000.- Ft
Amazon Cloud • ~ 1500 magos GPU + host gép: 0.65 $ / óra
GPU memória jelentősége (1-12 GB) CUDA és a hozzá tartozó osztálykönyvtárak Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
35/47
http://blogs.nvidia.com/blog/2015/03/17/digitsdevbox/
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
36/47
Software I
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
37/47
Software II Torch7 (Facebook, Twitter, NVidia, IBM, IDIAP, stb.) • • • • •
LUA, binárisra fordítható, leggyorsabb, Több szintű megvalósítás (C, LUA alacsony és magas szinten), Jól olvasható kód, Mobil implementáció, Tudományos életben standard.
Theano (University of Montreal) • • • • • •
Python Yosuah Bengio, folyamatos fejlesztés, Szimbolikus nyelv, fordítást igényel, Debuggolni nehézkes, Nehezebben olvasható kód, Tudományos életben standard.
TensorFlow (Google) • • • • •
„Theano 2.0” azonos tulajdonságokkal (negatívumokkal), Elosztott tanításokhoz, Fejlett vizualizáció (+menő logo ☺), Mobil implementáció, Erős marketing és Google támogatás.
Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
38/47
Software III Keras (Fchollet @Google) • • • • •
Python, Theano és TensorFlow backend, Nagyon népszerű, Könnyen olvasható kód, gyors fejlesztés, Kaggle.com-on legtöbbet használt.
Caffe (University of California, Berkeley) • C++, képfelismerés
Kaldi • C++, beszédfelismerés
Nervana (Intel), Lasagne, Microsoft CNTK, Matlab Deep Learning Toolbox, stb. Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
39/47
Kis házi feladat 1. 2. 3. 4. 5. 6. 7. 8.
Linux erősen ajánlott! Ha van GPU-d, akkor telepítsd hozzá a szükséges drivereket, továbbá a CUDA, cuBLAS, cuDNN könyvtárakat. Telepítsd a szükséges programokat a Keras és a Torch7 keretrendszerekhez. Telepítsd a Jupiter notebook-ot Python és LUA nyelvekhez. Python vagy LUA nyelven olvass be öt darab tetszőleges 32x32 pixeles színes képet, jelenítsd meg és írd ki az RGB csatornáit tartalmazó tömbök (mátrixok, tensorok) tartalmát. Csatornánként számold ki az egyes pixelek átlagát és szórását az öt képre, majd alakítsd át ezeket 0 várható értékű, 1 szórású adathalmazzá. (Pythonban: sklearn.preprocessing.StandardScaler, „kézi” megoldás még jobb!) Python vagy LUA nyelven olvass be egy tetszőleges hangfájlt és jelenítsd meg a spektrogramját (Pythonban: Matplotlib/specgram()). Python vagy LUA nyelven olvass be egy tetszőleges angol nyelvű szöveges (txt) filet és hisztogramon jelenítsd meg a betűk előfordulásának gyakoriságát.
Határidő: 2016. szeptember 20. éjfél Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
40/47
Kapcsolódó linkek • Tárgy honlapja (legfontosabb infók) http://smartlab.tmit.bme.hu/oktatas-deep-learning • Tárgy Twitter csatorna (hírek) https://twitter.com/VITMAV45 • Tárgy Google Groups (vita, kérdések) https://groups.google.com/forum/#!forum/vitmav45 • Csapatok toborzása (3 hét végéig témaválasztás!) https://goo.gl/nFlcxq • Tárgy Google Form (anonim javaslatok, kritika) http://goo.gl/forms/sGHU5mVeQdnDN8gM2 Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
41/47
Érdekes példa: kerti macskariasztó • • • • • • • • •
Jetson TX1 beágyazott rendszer (mini computer) Macska mindig a fűre ************ Korábban már csinált lézeres hangya riasztót Foscam FI9800P IP camera-t használt Software: FCN (fully-convolutional neural network for semantic segmentation), kész kód. NVIDIA GeForce GTX TITAN-on tanított (asztali gép). Ha detektálja a macskát a füvön: bekapcsolja az öntöző rendszert. Pár napos fejlesztés. További részletek: http://myplace.frontier.com/~r.bond/cats/cats.htm Tóth Bálint Pál: Deep Learning a gyakorlatban Python és LUA alapon
9/6/2016
42/47
Köszönöm a figyelmet!
[email protected]
http://smartlab.tmit.bme.hu