37
Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného na grafickom procesore Peter Trebatický

Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného na grafickom procesore

Peter Trebatický

Page 2: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Úvod

� Grafické procesorové jednotky na bežných grafických kartách sa vyvinuli v extrémne flexibilné a výkonné procesory

� Pôvodne pre urýchlenie matematických výpočtov pre zobrazovanie grafiky

� Kvôli rastúcej zložitosti ponúkaných algoritmov „natvrdo“ bola pridaná možnosť programovania

� GPGPU – General Purpose Computing on GPU

� NVidia Tesla nemá grafický výstup

� Grafická karta sa stáva koprocesorom

Page 3: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Porovnanie výpočtovej sily

Page 4: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Prečo sú GPU stále rýchlejšie?

� Je to vysoko paralelný výpočtový prostriedok

� Sú špecializované, je jednoduchšie pridať

ďalšie tranzistory určené na výpočet a nie na

cacheovanie dát a riadenie

� Trh s počítačovými hrami tlačí na vyšší výkon za nižšiu cenu

� Konkurencia podnecuje inováciu

Page 5: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Donedávna zložité

� Grafické karty boli vytvorené pre videohry

� Neobvyklý programovací model

� Jednotlivé pojmy späté s počítačovou grafikou

� Veľmi obmedzené programovacie prostredie

� Problém nesúvisiaci s grafikou bolo treba pretransformovať na prácu s „grafikou“

� Dáta => textúry

� Algoritmy => skladanie obrazu (renderovacie prechody)

� Dá sa zapisovať len na predom zvolené miesto (pixel)

Page 6: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Jazyky

� API

� Direct3D, OpenGL

� Využitie shaderov

� HLSL, GLSL, Cg

� GPGPU jazyky

� Skrývajú detaily D3D/OpenGL

� CTM, CUDA, Brook, RapidMind

Page 7: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

CUDA

� Hardvér aj softvér navrhnutý s ohľadom na možnosťvšeobecných výpočtov na GPU

� Hardvér – plne dátovoparalelná architektúra� Spúšťanie vlákien (lightweight)

� Globálne čítanie aj zápis

� Cache paralelných dát� Skalárna architektúra

� Celé čísla, bitové operácie (doteraz len 32b float)

� Softvér – programuje sa v C� Jazyk C s užitočnými rozšíreniami

� __global__ void KernelFunc(...);

� __device__ int GlobalVar;

� __shared__ int SharedVar;

� KernelFunc<<< 500, 128 >>>(...);

Page 8: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Zrýchlenie výpočtov oproti CPU

Page 9: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Prúdové spracovanie

� Prúdy

� Skupina údajov vyžadujúcich podobné spracovanie

� Prvky na mriežke, voxely, atď.

� Poskytujú dátový paralelizmus

� Kernely

� Funkcie aplikované na každý prvok v prúde

� Transformácie, rovnice, ...

� Malá závislosť medzi elementami

� Programujeme pre stovky procesorov

� Bežia na nich kernely (spolupracujúce vlákna) spracúvajúce prúdy

Page 10: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Možné operácie

� Mapovanie� map(A,f) aplikuje f na všetky prvky z prúdu A� Výsledok je v novom buffery

� Gather (čítanie)� p = a[i]

� Scatter� a[i] = p� zápis nielen na predom zvolené miesto, konflikty sa

neriešia

� Redukcia (paralelná)� reduce(+,[3, 0, 4, 7])=14� +, *, min, max

Page 11: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Kalmanova filtrácia

� Alternatíva ku gradientovým metódam trénovania neurónových sietí

� Jednoduchý princíp

� Stáva sa populárnym

� Známy niekoľko desaťročí

� Používaný v rôznych oblastiach

Page 12: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Kalmanov filter

-2 0 2 4 6 8 10 12 14

Page 13: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Kalmanov filter

-2 0 2 4 6 8 10 12 14

predikcia

Predikcia

Page 14: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Kalmanov filter

-2 0 2 4 6 8 10 12 14

predikcia

pozorovanie

Predikcia

Page 15: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Kalmanov filter

-2 0 2 4 6 8 10 12 14

predikcia

pozorovanie

korekcia

Predikcia Korekcia

Page 16: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Kalmanov filter

-2 0 2 4 6 8 10 12 14

predikcia

pozorovanie

korekcia

Predikcia Korekcia

Page 17: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Kalmanov filter

-2 0 2 4 6 8 10 12 14

predikcia

pozorovanie

korekcia

Predikcia Korekcia

Ini iali áciac z

Page 18: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Kalmanov filter

� Sada matematických rovníc

� Pre lineárne dynamické systémy

� Prediktor-korektor

� Optimálny

xk+1 = Fk+1,kxk + qk stavová rovnica

yk = Hkxk + rk rovnica pozorovania

qk~N(0, Qk); rk~N(0, Rk)

Page 19: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Kalmanov filter

� Predikcia

� Korekcia

, 1 11ˆ ˆk k k kk−

− −−=x F x

, 1 1 , 1 1T

k k k k k k k−

− − − −= +P F P F Q

( )1

T Tk k k k k k k

−− −= +K P H H P H R

( )k k k k k k− −= + −x x K y H x

( )k k k k−= −P I K H P

Page 20: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Neurónová sieť ako dynamický systém

� Váhy siete predstavujú „stav“ systému

� yk je požadovaný výstup

� Odhad parametrov

� Nelineárny systém

xk+1 = xk + qk

yk = hk(xk, uk, vk-1) + rk

Page 21: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Rozšírený Kalmanov filter (EKF)

� Taylorov rozvoj okolo aktuálne odhadovaného stavu

� Prvý člen rozvoja

� Linearizácia

� Môžeme použiť Kalmanov filter

Page 22: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Rozšírený Kalmanov filter (EKF)

� Rovnice:

� Rozmery matíc

� Násobenie matíc

� Invertovanie symetrickej matice

( )

1

1 1

1

ˆ ˆ ˆ , ,

T Tk k k k k k k

k k k k k k k

k k k k k k

h

+ −

+

= +

= + −

= − +

K P H H P H R

x x K y x u v

P P K H P Q

, , , ,x o x x x x o o o xn n n n n n n n n n× × × × ×K P Q R H

Page 23: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Unscented Kalman Filter (UKF)

Page 24: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Unscented Kalman Filter (UKF)

� Sigma body� Malý počet

� Deterministicky volené

� Zachytávajú skutočné štatistiky

� Prejdú nelineárnou transformáciou

� Nie sú potrebné derivácie

� Vyhodnotenia funkcií

� Nutnosť prešíriť vstupy sieťous novými váhami (sigma bodmi)

Page 25: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Unscented Kalman Filter (UKF)

� Časová aktualizácia

� Aktualizácia pozorovaním

[ 1]

[ ]

ˆ

ˆ

x

x x

n

n n

×

×

=

= +

x x

P P Q

( ) ( )

( ) ( )

[ 2 1]

[ 2 1]

2 ( )[ 1]

0

2 ( )[ ]

0

2 ( )[ ]

0

[ ]

(sigma body)

g( , )

x x

o x

x

x

x

o o

x

x o

x o

n n

n n

n mn i i

i

n Tcyy n n i i i

i

n Tcxy n n i i i

i

Tn n xy yy

W

W

W

γ γ× +

× +

×=

×=

×=

×

= + −

ϒ =

= ϒ

= ϒ − ϒ − +

= − ϒ −

=

χ x x P x P

χ u

y

P y y R

P χ x y

K P P

( )ˆ

ˆ

d

Tyy

= + −

= −

x x K y y

P P KP K

Page 26: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Úzke miesta

� Násobenie matíc

� Invertovanie symetrickej matice

� Choleského dekompozícia

� Použijeme pri výpočte inverznej matice1

1

1

T

T

=

=

=

=

AA I

BB A I

B A Z

BZ I

, , je dolná trojuholníková maticaT= =B A A BB B

2. Dopredný prechod

1. Substitúcia, 3. Spätný prechod

Page 27: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Násobenie matíc na GPU

� So staršou architektúrou problematické

� Architektúra nebola vhodná

� Veľa údajov sa znovupoužíva

� Kombinácia CPU+GPU

� CUDA pre NVidia

� poskytuje operácie BLAS 1 až 3

� BLAS3 = násobenie matíc

� Brook+ bude pre ATI

� Plánuje sa ACML začiatkom 2008

Page 28: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Choleského dekompozícia

Page 29: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Choleského dekompozícia

Page 30: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Choleského dekompozícia

Page 31: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Choleského dekompozícia

Page 32: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Obmedzenia

� Násobenie matíc len pre NVidiu

� Zatiaľ len 32 bitové floaty

� Koncom 2007 – začiatok 2008 double

� Problém s priepustnosťou

� Choleského dekompozícia je numericky stabilná

Page 33: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Ďakujem za pozornosť

Peter Trebatický

[email protected]

Page 34: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Architektúra

Page 35: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného
Page 36: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného
Page 37: Adaptácia neurónovych sietí pomocou Kalmanovho filtra ...kvasnicka/Seminar_of_AI/Vyuzitie GPU pre vypoc… · Adaptácia neurónovych sietí pomocou Kalmanovho filtra implementovaného

Obsah

� Moorov zákon CPU vs. GPU

� Architektúra

� Spôsob výpočtu

� Vysvetlenie Kalmana, EKF, UKF

� Čo potrebujeme pre výpočet

� Násobenie matíc

� Invertovanie matice

� Choleského dekompozícia