Deep Learning a gyakorlatban Python és LUA alapon Felhasználói viselkedés modellezés

Hasonló dokumentumok
Deep Learning a gyakorlatban Python és LUA alapon Tanítás: alap tippek és trükkök

Konvolúciós neurális hálózatok (CNN)

Gépi tanulás a gyakorlatban. Kiértékelés és Klaszterezés

Újdonságok a Google műhelyéből. Péter Ekler

ANDROID ALKALMAZÁSFEJLESZTÉS

Algoritmusok és adatszerkezetek II.

Szenzorok megismerése Érzékelők használata

Deep Learning a gyakorlatban Python és LUA alapon Hogyan tovább?

Concurrency in Swing

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

Adattárolás Szenzorok

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Java Programozás 11. Ea: MVC modell

Algoritmusok és adatszerkezetek II.

Bevezetés a mesterséges intelligencia mély tanulás eszközrendszerébe

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

OOP: Java 8.Gy: Abstract osztályok, interfészek

Mobiltelefon szenzorainak méréstechnikai alkalmazása

NEURONHÁLÓK ÉS TANÍTÁSUK A BACKPROPAGATION ALGORITMUSSAL. A tananyag az EFOP pályázat támogatásával készült.

Google Summer of Code Project

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

libgdx alapok, első alkalmazás

Android Pie újdonságai

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

100% BIO Natur/Bio kozmetikumok és testápolás

Szomszédság alapú ajánló rendszerek

C# osztályok. Krizsán Zoltán

I. 288.: Utcai WiFi térkép

Adatbázis-kezelés ODBC driverrel

KONVOLÚCIÓS NEURONHÁLÓK. A tananyag az EFOP pályázat támogatásával készült.

Programozási nyelvek Java

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Programozási nyelvek Java

Mit látnak a robotok? Bányai Mihály Matemorfózis, 2017.

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

Programozási technológia

Összetett JIRA adatbázis lekérdezések

Java programozási nyelv 4. rész Osztályok II.

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Visszacsatolt (mély) neurális hálózatok

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Programozás I. Első ZH segédlet

JAVA PROGRAMOZÁS 3.ELŐADÁS

OOP: Java 4.Gy: Java osztályok

BME MOGI Gépészeti informatika 7.

Származtatási mechanizmus a C++ nyelvben

OOP: Java 8.Gy: Gyakorlás

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

JavaServer Pages (JSP) (folytatás)

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs rendszerek Tanszék. Neurális hálók 2. Pataki Béla

Programozás C++ -ban 2007/4

A kibontakozó új hajtóerő a mesterséges intelligencia

Programozási nyelvek és módszerek Java Thread-ek

Adatbányászati, data science tevékenység projektmenedzsmentje

Adatbányászati, data science tevékenység

Példák jellemzőkre: - minden pixelérték egy jellemző pl. neurális hálózat esetében csak kis képekre, nem invariáns sem a megvilágításra, sem a geom.

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

BME MOGI Gépészeti informatika 8.

Java VII. Polimorfizmus a Java nyelvben

Neurális hálózatok elméleti alapjai TULICS MIKLÓS GÁBRIEL

Algoritmusok és adatszerkezetek II.

Stateless Session Bean

Programozás II gyakorlat. 4. Öröklődés

Deep Learning a gyakorlatban Python és LUA alapon Bevezetés

Grafikus felhasználói felületek. Abstract Window Toolkit, a java.awt és java.awt.event csomagok

Objektumorientált programozás C# nyelven III.

FELÜGYELT ÉS MEGERŐSÍTÉSES TANULÓ RENDSZEREK FEJLESZTÉSE

INFORMATIKA tétel 2018

Országzászlók (2015. május 27., Sz14)

BME MOGI Gépészeti informatika 6.

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Szeleteljük fel úgy a tulajdonságteret, hogy az egyes szeletekbe lehetőleg egyfajta objektumok kerüljenek, de túl sok szelet se legyen.

Alap számológép alkalmazás

Collections. Összetett adatstruktúrák

Adattípusok. Max. 2GByte

Szoftvertechnológia alapjai Java előadások

Programozási nyelvek Java

Adattípusok. Max. 2GByte

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Mély konvolúciós neurális hálózatok. Hadházi Dániel BME IE 338

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Adatbázisok webalkalmazásokban

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

ANDROID ALKALMAZÁSFEJLESZTÉS

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Hibadetektáló rendszer légtechnikai berendezések számára

Felhasználói Kézikönyv

Correlation & Linear Regression in SPSS

Generikus osztályok, gyűjtemények és algoritmusok

Broadcast Service Widget

Objektumorientált programozás C# nyelven

ZH mintapélda. Feladat. Felület

Átírás:

Gyires-Tóth Bálint Deep Learning a gyakorlatban Python és LUA alapon Felhasználói viselkedés modellezés http://smartlab.tmit.bme.hu

Modellezés célja A telefon szenzoradatai alapján egy általános viselkedési modell kialakítása. Szenzorok és interakciók: Gyorsulás és orientációs Fényérzékelő GPS, cellainformációk WiFi, Bluetooth, NFC Beszélgetések, kivel, mikor, mennyit Telefonnal való interakciók Most: tevékenység azonosítás gyorsulás és orientációs szenzor alapján. Gyires-Tóth Bálint: Deep Learning a gyakorlatban 2/99

Tevékenység azonosítás Feltevésünk: A felhasználók zsebében/táskájában a telefon hasonló tevékenységek esetén hasonló mozgást végeznek. Például gyorsulásérzékelő egyik iránya: SÉTA KOCSI LÉPCSŐZÉS Gyires-Tóth Bálint: Deep Learning a gyakorlatban 3/99

Szenzoradatok rögzítése 1. Mivel nem állnak rendelkezésre, ezért nekünk kell rögzíteni adatokat Android/iPhone segítségével + címkét előre megadni. // szenzorok inicializálása public class SensorService extends Service implements SensorEventListener { private SensorManager msensormanager; private Sensor maccelerometer; // listener elindítás msensormanager = (SensorManager) getsystemservice(this.sensor_service); maccelerometer = msensormanager.getdefaultsensor(sensor.type_accelerometer); // adatok fogadása @Override public void onsensorchanged(sensorevent event) { if (event.sensor.equals(maccelerometer)) {... Gyires-Tóth Bálint: Deep Learning a gyakorlatban 4/99

Szenzoradatok rögzítése 2. // gravitáció eltávolítása (aluláteresztő szűrő) private float[] removegravityfromacceleration(float[] values) { final float alpha = 0.8f; gravity[0] = alpha * gravity[0] + (1 - alpha) * values[0]; gravity[1] = alpha * gravity[1] + (1 - alpha) * values[1]; gravity[2] = alpha * gravity[2] + (1 - alpha) * values[2]; linear_acceleration[0] = values[0] - gravity[0]; linear_acceleration[1] = values[1] - gravity[1]; linear_acceleration[2] = values[2] - gravity[2]; return linear_acceleration; } // az adatok orientációjának kinyerése a "0"-ba való forgatáshoz private void calculateorientation(sensorevent event) { System.arraycopy(event.values, 0, mvaluesaccel, 0, 3); } SensorManager.getRotationMatrix(mRotationMatrix, null, mvaluesaccel, mvaluesmagnet); SensorManager.getOrientation(mRotationMatrix, mvaluesorientation); Gyires-Tóth Bálint: Deep Learning a gyakorlatban 5/99

Szenzoradatok rögzítése 3. // CSV-be írás csvwriter.addtoline(csvwriter.acceleration_x, String.format("%.8f", linear_acceleration[0])); csvwriter.addtoline(csvwriter.acceleration_y,... csvwriter.addtoline(csvwriter.acceleration_z,... csvwriter.addtoline(csvwriter.orientation_x, String.format("%.8f", mvaluesorientation[0] * 180/PI)); csvwriter.addtoline(csvwriter.orientation_y,... csvwriter.addtoline(csvwriter.orientation_z,... Gyires-Tóth Bálint: Deep Learning a gyakorlatban 6/99

Szenzoradatok vizsgálata Gyires-Tóth Bálint: Deep Learning a gyakorlatban 7/99

Szenzoradatok vizsgálata Gyires-Tóth Bálint: Deep Learning a gyakorlatban 8/99

Szenzoradatok előkészítése 1) Elmentett CSV-ket beolvassuk és javítjuk: Címkézési hibák manuális keresése Kezdeti és vég részek törlése 2) Osztályok kiegyenlítése 3) Véletlen keverés 4) Standardizálás, normalizálás Bemenet: standardizálás (0 mean, 1 variance) from sklearn.preprocessing import StandardScaler Tanító adatokon fit_transform, teszt adataokon transform Kimenet: OneHot kódolt kategóriák (pl. séta, bicikli, lépcsőzés) 5) Újraformázzuk (batch x FrameSize x nframe) 6) HDF5-be mentjük Gyires-Tóth Bálint: Deep Learning a gyakorlatban 9/99

1D konvolúciós háló-architektúra 1. model = Sequential() model.add(convolution1d(input_shape=(x.shape[-2],x.shape[-1]), nb_filter=32, filter_length=3, subsample_length=1, border_mode='same', init='glorot_uniform', activation='relu')) model.add(convolution1d(nb_filter=96, filter_length=5, border_mode='same', init='glorot_uniform', subsample_length=2, activation='relu')) model.add(maxpooling1d(pool_length=2, stride=2)) model.add(convolution1d(nb_filter=128, filter_length=7, border_mode='same', init='glorot_uniform', subsample_length=3, activation='relu')) model.add(convolution1d(nb_filter=128, filter_length=1, border_mode='same', init='glorot_uniform', activation='relu')) model.add(maxpooling1d(pool_length=2, stride=2)) Gyires-Tóth Bálint: Deep Learning a gyakorlatban 10/99

1D konvolúciós háló-architektúra 2. # 2 fully connected réteg a háló végén model.add(flatten()) model.add(dense(512, activation='relu')) model.add(dropout(0.5)) model.add(dense(512, activation='relu')) model.add(dropout(0.5)) model.add(dense(classes, activation='softmax') Gyires-Tóth Bálint: Deep Learning a gyakorlatban 11/99

Tanítás szenzoradatokkal Early stoping, patience = 32 SoftMax, Categorical Cross Entropy ADAM / RMSprop Batch size = 256 Adat mennyiség: 190555 tanító, 47639 validációs Osztályok: {'CAR': 103353, 'WALKING': 72682, 'BIKE': 54684, 'STANDING': 7475} Tanítási idő: ~1 óra 20 perc Gyires-Tóth Bálint: Deep Learning a gyakorlatban 12/99

Kiértékelés tévesztési mátrix Predicted BIKE CAR STANDING WALKING All True BIKE 10719 37 8 69 10833 CAR 61 20515 20 70 20666 STANDING 1 13 1510 7 1531 WALKING 47 17 11 14534 14609 All 10828 20582 1549 14680 47639 Gyires-Tóth Bálint: Deep Learning a gyakorlatban 13/99

Kiértékelés metrikák precision recall f1-score support BIKE 0.99 0.99 0.99 10833 CAR 1.00 0.99 0.99 20666 STANDING 0.97 0.99 0.98 1531 WALKING 0.99 0.99 0.99 14609 avg / total 0.99 0.99 0.99 47639 Gyires-Tóth Bálint: Deep Learning a gyakorlatban 14/99

Ensemble modellek 1. Gyires-Tóth Bálint: Deep Learning a gyakorlatban 15/99

Ensemble modellek 2. Ensemble modellek építése: 1) a tanítóadatok különböző részeivel random módra elméleti szempontból csoportosított 2) Közel optimális hiperparaméterek mellett különböző súlyokkal / módszerekkel inicializálva 3) Közel optimális és n-1 darab szuboptimális hiperparaméterrel tanított háló 4) Különböző epoch számnál elmentett hálók 5) Különböző architektúrájú hálók (FC, CNN, LSTM, stb.) 6) FC ensemble esetén a részt vevő hálók eltérő rétegeit kötjük be. Gyires-Tóth Bálint: Deep Learning a gyakorlatban 16/99

Ensemble modellek 3. Gyires-Tóth Bálint: Deep Learning a gyakorlatban 17/99

Köszönöm a figyelmet! toth.b@tmit.bme.hu http://smartlab.tmit.bme.hu