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. Tudományterület feltérképezése, cikkek olvasása. 2. Adatok beszerzése, tisztítása, előkészítése. 3. Hálózat és tanítás. 4. Hiperparaméter optimalizálás és tesztelés. 5. 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 Maximum 8 oldal. Legalább 10 db KORREKT irodalmi hivatkozás (nem webes!). scholar.google.com, ArXiv.org 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ó W 1 W 2 W n-1 W n 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. Linux erősen ajánlott! 2. Ha van GPU-d, akkor telepítsd hozzá a szükséges drivereket, továbbá a CUDA, cublas, cudnn könyvtárakat. 3. Telepítsd a szükséges programokat a Keras és a Torch7 keretrendszerekhez. 4. Telepítsd a Jupiter notebook-ot Python és LUA nyelvekhez. 5. 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. 6. 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!) 7. Python vagy LUA nyelven olvass be egy tetszőleges hangfájlt és jelenítsd meg a spektrogramját (Pythonban: Matplotlib/specgram()). 8. 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! toth.b@tmit.bme.hu http://smartlab.tmit.bme.hu