Implementace KSOM Marek Bártů marek.bartu@gmail.com LANNA Katedra teorie obvodů FEL ČVUT
SSC Implementace KSOM 2 algoritmus KSOM úprava pro snadnější implementaci kvantizace reprezentace čísel podobnost map implementace v FPGA Outline
SSC Implementace KSOM 3 KSOM - algoritmus uvažujeme sekvenční trénování (nikoliv batch) trénování probíhá v cyklu: 1. nalezení vítěze 2. výpočet vzdáleností od vítěze 3. určení okolí 4. úprava vah neuronů v okolí implementace: opakovat tyto základní kroky pro všechny trénovací vektory, pro každý neuron
SSC Implementace KSOM 4 Operace které je třeba implementovat 1. nalezení vítěze 2. výpočet vzdáleností od vítěze 3. určení okolí m=min x m i d i = m m i m i neig t iff d i r t 4. úprava všech neuronů v okolí m i t 1 =m i t t h ci t d i
SSC Implementace KSOM 5 Zjednodušení algoritmu výpočet vzdálenosti Eukleidovská d= a b Bloková d= a b = i a i b i 2 d= a b = a b
SSC Implementace KSOM 6 Funkce okolí Zjednodušení algoritmu mexický klobouk pravoúhlé 1 1 případně lze využít trojuhelníkové funkce
SSC Implementace KSOM 7 Zjednodušení algoritmu adaptační zisk původně obecná funkce η(t) lze sloučit do funkce okolí (její měřítko) nahrazeno posuvným registrem MSB LSB všechna zjednodušení umožňují jednodušší implementaci, event. rychlejší výpočet výpočty pomocí SIMD jednotek (SSE,..) úprava algoritmu pro GPU
SSC Implementace KSOM 8 Zastavení u CPU MCU = Micro Controller Unit jednodušší algoritmy řízení procesu ARM, MIPS MPU = Micro Processor Unit general computing x86, PowerPC DSP = Digital Signal Processor výpočty (pevná a plovoucí čárka) nekonečná smyčka Master Slave
SSC Implementace KSOM 9 Zastavení u paralelních architektur SIMD = Single Instruction Multiple Data několik uzlů řízených jedinou instrukcí vektorový procesor multimediální instrukce MIMD = Multiple Instruction Multiple Data from [9] nezávislé výpočetní uzly každý zpracovává svou část normální procesor ~ SISD from [9]
SSC Implementace KSOM 10 1. nalezení vítěze Shrnutí - úpravy m=min x m i =min j=1 x j m ij 2. výpočet vzdáleností od vítěze 3. určení okolí d i = m m i = j =1 m i neig t iff d i r t N N m j m ij 4. úprava všech neuronů v okolí m i t 1 =m i t shift d i
SSC Implementace KSOM 11 Úloha A - zadání Porovnejte výsledky originálního algoritmu a algoritmu upraveného. projít a vyzkoušet upravený algoritmus KSOM skript v Matlabu implementující trénování je k dispozici jako originál lze použít SOMtoolbox nebo Matlab NN Toolbox drsňáci si mohou upravit upravený algoritmus (pomohou jim komentářích) jak využít SOMtoolbox je naznačeno v komentáři (musí ještě vhodně nastavit parametr alpha)
SSC Implementace KSOM 12 Problémy při implementaci problémy se stabilitou sítě se znásobí nepřímo úměrné počtu bitů problém je hlavně v kvantizaci vah a funkce okolí minimální počet bitů závisí na distribuční fukci vstupních vektorů nelze získat obecný vzorec testovat na reprezentativní množině
SSC Implementace KSOM 13 Úloha A možný výsledek
SSC Implementace KSOM 14 Kvantizace omezený počet bitů pro celý dynamický rozsah dat limitní cykly (kvantování v IIR filtrech) rozlišujeme Fixed Point = pevná řádová čárka 128 64 32 16 8 4 2 1 Floating point = plovoucí řádová čárka IEEE 754 31 30 23 22 0 S EXPONENT FRACTION value=mantisa 2 exponent
SSC Implementace KSOM 15 Zastavení u záporných čísel sign-magnitude známenková extra znaménkový bit špatně sčítání/odčítání 7 0 S AMPLITUDE 2 n 1 1 x 2 n 1 1 1's complement jedničkový doplněk dvě nuly IP checksum 2 n 1 1 x 2 n 1 1 c 0 c 0 d=c d= c 2's complement dvojkový doplněk jednoduché sčítání 2 n 1 x 2 n 1 1 c 0 d =c c 0 d= c 1
SSC Implementace KSOM 16 Integer a Fractional dva základní druhy reprezentace s pevnou čárkou Integer celočíselná Fractional zlomková -2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0-2^0 2^-1 2^-2 2^-3 2^-4 2^-5 2^-6 2^-7 násobení -2^3 2^2 2^1 2^0-2^3 2^2 2^1 2^0-2^0 2^-1 2^-2 2^-3-2^0 2^-1 2^-2 2^-3-2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0-2^1 2^0 2^-1 2^-2 2^-3 2^-4 2^-5 2^-6 7 7=49 7 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0.875 0.875=0.765625 7b 0.75 4b
SSC Implementace KSOM 17 zaokrouhlení a ořezání Kvantizace zaokrouhlení může vnést st. složku ( bias ) konvergentní zaokrouhlení kvantizační chyba saturace mezivýsledek může dočasně přetéct =2 b a3 a2 a1 a0 b3 b2 b1 b0 ga7 ga6 ga5 ga4 a3 a2 a1 a0 gb7 gb6 gb5 gb4 b3 b2 b1 b0 gc7 gc6 gc5 gc4 c3 c2 c1 c0 d3 d2 d1 d0
SSC Implementace KSOM 18 Úloha B - úprava algoritmu Upravte proceduru trénování tak, aby respektovala kvantizaci dat a mezivýsledků výpočtu. Výsledky porovnejte s původním algoritmem a s upraveným algoritmem bez kvantizace. ošetřit vstupní data a operace je nutné ošetřit všechny? nejprve si vytvořit funkce pro převod a zaokrouhlení
SSC Implementace KSOM 19 Užitečné funkce v Matlabu zaokrouhlení Y = round(x) oříznutí B = fix(a) převod dec bin bin = dec2bin(dec) bin = dec2bin(dec,n) převod bin dec dec = bin2dec(bin) zaokrouhlení nahoru B = ceil(a) zaokrouhlení dolu B = floor(a) bitový posun C = bitshift(a, k) C = bitshift(a, k, n)
SSC Implementace KSOM 20 Jak porovnat dvě mapy nutné předpoklady: stejná vstupní data (a inicializace) stejné (alelspoň velmi podobné) podmínky střední chyba kvantizace vzhledem k množině dat střední chyba obrazu O vzhledem ke vzoru V není vzájemně jednoznačné přiřazení (surjektivní) my_som_mqe.m střední chyba bijekce my_som_pe.m N mqe= o=1 N pe= o=1 [min v obraz o vzor v ] 2 obraz o vzor o 2
SSC Implementace KSOM 21 Porovnání map
SSC Implementace KSOM 22 Porovnání dvou map - QE
SSC Implementace KSOM 23 Implementace akcelerátoru v FPGA FPGA = Field Programmable Gate Array kvantizace problémy se stabilitou sítě kvantizace vah (hlavně) implementace funkce okolí (vedlejší) minimální počet bitů závisí na distribuční fukci vstupních vektorů testovat na reprezentativní množině generické proměnné ve VHDL vuužívá zjednodušení algoritmu
SSC Implementace KSOM 24 Prostředí akcelerátoru data parametry simulace parametry implementace Matlab simulátor VHDL výsledky porovnání Hardwarová implementace
SSC Implementace KSOM 25 Hlavní bloky akcelerátoru externí paměť PCI
SSC Implementace KSOM 26 Matice neuronů Scatter Matrix of Neurons Gather buffer comparator neuron
SSC Implementace KSOM 27 Vnitřní struktura neuronu accumulator ; status register weights memory SAC unit memory addressing unit pointer comparator input 1 input 2 output 1 output 2
SSC Implementace KSOM 28 Pracovní sekvence initialization (INI) initialization (INI) distance (DC) weights update (TRN) distance (DC) winner search (CMP) distance from winner(dst) winner search (CMP) Training Clasification
SSC Implementace KSOM 29 Parametry implementace Implementace v Xilinx Virtex-IIPro (XCV2P-50) plně distribuovaný výpočet žádně vnitřní sběrnice paměť bloková + distribuovaná možnost až 144 neuronů maximální taktovací frekvence 133 MHz akcelerátor napsán ve VHDL simulační prostředí umožňující propojení s Matlabem
SSC Implementace KSOM 30 Literatura [1] Kohonen, T.: Self-Organizing Maps, Springer-Verlag, 3rd ed., 2001, ISBN 3-540-67921-9 [2] Thiran P., Peiris V., Heim P., Hochet B.: Quantization Effects in Digitally Behaving Circuit Implementations of Kohonen Networks, IEEE Transactionson Neural Networks No. 3, Vol. 5., 1994 [3] Ienne, P.: Architectures for Neuro-Computers: Review and Performance Evaluation, Technical Report of the EPFL-DI no. 93/21, Lausanne, Swiss (1993) [4] Porrman, M., Witkowski, U., Kalte, H., Ruckert, U.: Implementation of Artifical Neural Networks on a Reconfigurable Hardware Accelerator, In Proceedings of the 10th Euromicro Workshop on Parallel, Distributed and Networkbased Processing, Grand Canaria Island, Spain, 2002, pp. 243 250 [5] Alhoniemi E., Himberg J., Parhankangas J., Vesanto J.:SOM Toolbox for Matlab, available at www.cis.hut.fi/projects/somtoolbox/ [6] Matlab R13 help, MathWorks Inc., http://www.mathworks.com/products/matlab/ [7] Liu D.: Design of Embedded DSP Processors, Linkoping University 2003 [8] Sweetman D.: See MIPS Run Linux, Morgan Kaufmann, 2nd ed., 2007, ISBN 978-0-12-088421-6 [9] wikipedia http://wikipedia.org