Deep Learning a gyakorlatban Python és LUA alapon

A tantárgy angol neve: Deep Learning in Practice with Python and LUA

Adatlap utolsó módosítása: 2021. augusztus 26.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar
Villamosmérnöki szak
Mérnökinformatikus szak
Gazdaságinformatikus szak
Egészségügyi mérnöki szak
Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VITMAV45   2/2/0/v 4  
3. A tantárgyfelelős személy és tanszék Dr. Gyires-Tóth Bálint Pál,
A tantárgy tanszéki weboldala http://smartlab.tmit.bme.hu/oktatas-deep-learning
4. A tantárgy előadója
Név: Beosztás: Tanszék, Int.:
Dr. Gyires-Tóth BálintEgyetemi docensBME-TMIT
Dr. Csapó Tamás GáborTudományos munkatárs
BME-TMIT
Dr. Zainkó Csaba
Egyetemi adjunktusBME-TMIT
5. A tantárgy az alábbi témakörök ismeretére épít Python programozás
Mátrixalgebra
6. Előtanulmányi rend
Ajánlott:

Neurális hálózatok (VIMIJV07)
Deep learning alkalmazása a vizuális informatikában (VIIIAV20)

7. A tantárgy célkitűzése

Az adatmennyiség robbanásszerű növekedésével, a grafikus processzorok jelentős technológiai fejlődésével és a tudományterület új eredményeinek köszönhetően az elmúlt években a mély tanuló rendszerek, azon belül is a mély neurális hálózatok (Deep Neural Networks, DNN) valós életbeli folyamatok megfigyelések alapján történő modellezésének az egyik leghatékonyabb eszközévé váltak. A neuronháló mély rétegei a modellezni kívánt folyamat különböző, magas és alacsony szintű absztrakcióinak kinyerésére, osztályozására és predikciójára képesek. A mély tanuló rendszerek már a gépi beszéd- és látásfunkciók modellezésén túl alkalmasak például fordításra, zenei stílus automatikus osztályozására, felhasználói preferencia jóslására, felhasználó azonosítására, sőt, akár rajzolni és zenét komponálni is tudnak. Napjainkban már az olyan nagy cégek, mint a Google, Facebook, Amazon, IBM is egyre több technológiájukat helyezik deep learning alapokra. 

A tárgy gyakorlati problémák megoldásán keresztül tanítja meg a rendelkezésre álló, az iparban is széles körben használt két legfontosabb nyílt forráskódú mély tanuló keretrendszer, a Google TensorFlow / Keras (Python) és a Facebook által támogatott PyTorch (Python) programozását és ezek széleskörű használatához szükséges elméleti alapokat. 

8. A tantárgy részletes tematikája

A félév során az előadásokon és gyakorlatokon rövid elméleti áttekintőt követően ismertetjük a megoldandó problémát és annak Python alapú megoldását.

  1. Elmélet: Bevezető a mély tanulás világába. Python alapok.
    Gyakorlat: Mátrixműveletek Python alapon. GPU alapú számítások. A GPU memóriaigényének és terhelésének monitorozása. 

  2. Elmélet: Mély tanulás elméleti alapjai. A mély neurális hálózat. Hibavisszaterjesztés (backpropagation). 
    Gyakorlat: Az XOR probléma és többdimenziós függvények neurális hálózat alapú modellezésének bemutatása Python alapon. Egy és több rejtett rétegű hálózatok implementációja.

  3. Elmélet: A Google szövegfelolvasó működése (pl. Androidon). A statisztikai parametrikus beszédszintézis elméleti háttere. Beszédkorpuszok. Tanítható paraméterfolyamok. One-hot kódolás.
    Gyakorlat: Paraméterfolyamok előkészítése a tanításhoz. Szakadásos paraméterfolyamok interpolációja. Python alapú megvalósítás.

  4. Elmélet: Előrecsatolt mély neurális hálózatok. A beszéd paramétereinek (pl.alapfrekvencia, hangidőtartamok és spektrum) párhuzamos modellezése előrecsatolt mély neurális hálózatok segítségével. 
    Gyakorlat: Előrecsatolt mély neuronháló alapú beszédszintézis Python alapú implementációja. 

  5. Elmélet: Felhasználói viselkedés elemzése mobil szenzoradatok alapján. Aggregált, ensemble modellek. A szenzoradatok rögzítése és standardizálása.
    Gyakorlat: Egyszerű regressziós és osztályozási példa megvalósítása magasszintű deep learning keretrendszerben. Hálózatok vizsgálata és vizualizációja a TensorBoard segítségével.

  6. Elmélet: Konvolúciós mély neurális hálózatok (Convolutional Neural Networks, CNN). A felhasználói viselkedés modellezése egy és kétdimenziós konvolúciós mély neuronhálókkal. 
    Gyakorlat: Mély konvolúciós hálózat alapú felhasználói viselkedés modell implementációja Python alapon. 

  7. Félévközi házi feladat bemutató.

  8. Elmélet: Visszacsatolt neurális hálózat alapjai és előnyei. Long Short-Term Memory (LSTM) és Gated Recurrent Unit (GRU) hálózatok felépítése és implementációja. Szövegszintézis („verset ír a számítógép”) elméleti és gyakorlati alapjai. Tanítóadatbázisok (szövegkorpusz) gyűjtése és előkészítése. 
    Gyakorlat: Többdimenziós szinuszos függvény modellezése visszacsatolt neurális hálózattal Python alapon. LSTM/GRU alapú szövegszintézis Python alapú implementációja. 

  9. Elmélet: Komplex architektúrák. Residual, highway, dense és skip kapcsolatok. A receptív mező növelése. Kauzális és nyújtott (dilated) konvolúciós rétegek. Alkalmazási példák.
    Gyakorlat: Neurális hálózatok gráf szerű felépítése és tanítása. Autoregresszív modellek (pl. WaveNet, WaveGlow). Python alapú példák. 

  10. Elmélet:  Hiperparaméter optimizáció. A hiperparaméterek hatása a tanítás pontosságára. Manuális, véletlenszerű és rács alapú hiperparaméter keresés. Iteratív hiperparaméter keresési eljárások. Tree-structured Parzen Estimators.
    Gyakorlat: Hiperparaméter optimizáció Python modulok segítségével.

  11. Elmélet: End-to-end beszédfelismerés visszacsatolt neurális hálózatokkal. Connectionist Temporal Classification (CTC) célfüggvény.
    Gyakorlat: End-to-end beszédfelismerés LSTM alapon, CNN és fully-connected rétegekkel.

  12. Elmélet: Generatív modellek és alkalmazásai. Mély auto-encoder típusú hálózatok. Variációs auto-encoderek (Variational Autoencoder) és generatív versengő hálózatok (Generative Adversarial Network, GAN). 
    Gyakorlat: Variációs auto-encoder és GAN megvalósítása Python nyelven.

  13. Elmélet: A többszintű trendelemzés elméleti alapjai, tőzsdei vonatkozásai. Devizapiaci (forex) árfolyam adatgyűjtés és előkészítés a tanításhoz.
    Gyakorlat: CNN/LSTM alapú tőzsdei trendelemzés Python alapú implementációja. 

  14. Elmélet: A természetes nyelvfeldolgozás alapjai. Szóbeágyazás alapjai és típusai: BOW, skip-gram, N-gram és CBOW beágyazások. Távolságmetrikák. Word2Vec, GloVe és FastText modellek. Sequence-to-sequence és transformer modellek. Attention (figyelem) mechanizmus.
    Gyakorlat: Természetes nyelvfeldolgozási példa (pl. író klasszifikáció Python alapon).
9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) Előadás és gyakorlat. A gyakorlat során a hallgatók az előadáson hallottak gyakorlati alkalmazását láthatják és gyakorolhatják. Saját laptop használata megengedett.
10. Követelmények

A szorgalmi időszakban:

A hallgatók a szorgalmi időszak során egyedül vagy csapatban tetszőlegesen választott nagy házi feladatot készítenek, amelyen gyakorolhatják a mély tanuló rendszerek tervezését, megvalósítását és az órán tanult eszközök használatát. Az elkészített rendszert dokumentációkkal együtt a félév végén kell bemutatniuk, illetve félév közben egy alkalommal be kell számolni az előrehaladásról. A házi feladatok dokumentációja és a forráskódok karbantartása széles körben elterjedt, általános git rendszeren keresztül történik.

A hallgató a félév elismerését jelentő félév végi aláírást csak akkor kaphat, ha a házi feladata teljesíti a minimális követelményeket.

A vizsgaidőszakban:

A tantárgy anyagából a hallgatók vizsgát tesznek. A félév végi osztályzatot a házi feladat (50%) és a vizsgajegy (50%) alapján kapják. A vizsgán a hallgatóknak el kell érniük a meghatározott minimum szintet (40%).

Elővizsga:

Elővizsga tehető a szorgalmi időszak utolsó hetében.

11. Pótlási lehetőségek A házi feladat leadása a pótlási héten megadott időpontban pótolható.
Elégtelen vizsga a TVSZ szabályai szerint pótolható.
12. Konzultációs lehetőségek Az előadókkal egyeztetett időben.
13. Jegyzet, tankönyv, felhasználható irodalom
14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
Kontakt óra56
Félévközi készülés órákra10
Felkészülés zárthelyire0
Házi feladat elkészítése27
Kijelölt írásos tananyag elsajátítása0
Vizsgafelkészülés27
Összesen120
15. A tantárgy tematikáját kidolgozta

Név:

Beosztás:

Tanszék, Int.:

Dr. Gyires-Tóth Bálint 

Egyetemi docens

BME-TMIT

Dr. Csapó Tamás Gábor

Tudományos segédmunkatárs

BME-TMIT

Dr. Szaszák György

Tudományos munkatárs

BME-TMIT

Dr. Németh Géza

Habilitált egyetemi docens

BME-TMIT

Dr. Zainkó Csaba

Egyetemi adjunktus

BME-TMIT