Paralelní výpočet SVD s aplikacemi pro vyhledávání informací Petr Kotas, Vít Vondrák, Pavel Praks Fakulta elektrotechniky a Informatiky VŠB - TUO Dobrý den, mé jméno je Petr Kotas. Rád bych vás přivítal a pověděl něco na téma : Paralelní výpočet SVD a jeho aplikace pro vyhledávání informací, konkrétně na vyhledávání podobných obrazů.
Motivace Proč se problémem SVD a vlastních čísel zabývat Řešení homogeních lineárních rovnic Využití při analýze DNA Registrace obrazu Komprimace dat Statistika Vyhledávače Nejdřív bych rád zmínil proč je SVD zajímavý problém. Aplikace na DNA -> z DNA se vytvoří datová matice, řádky jednotlivé chromozomy, sloupce vzorky. A Dále se s ní pracuje jako při LSI
Obsah Úvod do SVD Výpočet SVD Aplikace na multimediální data Výpočet a problémy při něm vznikající Návrh řešení → paralelizace Výpočet SVD Bidiagonalizace Výpočet singulárních čísel Výpočet singulárních vektorů Sestavení rozkladu Aplikace na multimediální data V této práci se postupně dozvíte : outline
Úvod do SVD Výpočet je velmi náročný na HW Pro plné matice je SVD vysoce paměťově náročné Značná náročnost na floating point operace (kvůli přesnosti) Iterační charakter → větší náročnost než jiné rozklady Praktická implementace → rozdělení problému Bidiagonalizace Výpočet singulárních čísel z bidiagonální matice Výpočet singulárních vektorů Výpočet SVD je vysoce náročný na pamět. To je dáno ortogonálními maticemi U a V, které jsou plné i když matice A je řídká. V případě obrovských problémů je úloha neřešitelná, protože se jednoduše nevleze do paměti typické pro stolní počítač. Úloha je díky iterčnímu charakteru velmi náročna na počet FPO, převážně v bidiagonalizační fázi. Při praktické implementaci je proto úloha řešena rozdělena na samostané subproblémy, které jsou již algoritmicky zvládnutelné. Tyto kroky jsou bodiagonailazace, kdy z původní matice A pomoci levé a pravé transformace vyrobíme matici pouze s diagonálou a naddiagonálou. Samotný výpočet singulárních čísel, občas nazývaný jako diagonalizace, kdy z bidiagonální matice získáme matici diagonální se singulárními čísly na diagonále. A v posledním kroku vypočítáme levé a pravé singulární vektory, což jsou vlastně levé a pravé matice tranformací z plané matice na bidiagonální respektive z bidiagonální na diagonální. Formálně je poslední krok, vynásobení dvou tranformací do jedné. Tímto získáme úplný singulární rozklad matice A.
Výpočet SVD - Bidiagonalizace Ortogonální tranformace, redukující dimenzi problému. Praktická implementace Využití Householderových zrcadlení Urychlení výpočtu Numerická stabilita Householderova matice
Výpočet SVD - Bidiagonalizace
Výpočet SVD - Bidiagonalizace
Výpočet SVD - Bidiagonalizace
Výpočet SVD - Bidiagonalizace
Výpočet SVD - Bidiagonalizace
Výpočet SVD - Bidiagonalizace
Výpočet SVD - Bidiagonalizace
Výpočet SVD - Bidiagonalizace
Výpočet SVD – Bidiagonalizace : Distribuce
Výpočet SVD – Paralelní bidiagonalizace Distribuovaný výpočet V každém kroku se spočítá Householderův vektor Houselderoův vektor se rozdistribuuje na každý uzel Každý uzel dále elimuje prvky jemu přiřazené
Výpočet SVD – Bidiagonalizace : Škálovatelnost Největší problém Dimenze 12800 x 12800 (1.2GB) Doba běhu 1(h)
Výpočet SVD – Výpočet singulárních čísel Diagonalizace matice Pomocí Givensonových rotací Iterační proces Řád konvergence je O(N2)
Výpočet SVD – Výpočet singulárních čísel Vynulování prvního prvku bidiagonály
Výpočet SVD – Výpočet singulárních čísel Vynulování prvního prvku bidiagonály Vynulování nově vzniklého prvku
Výpočet SVD – Výpočet singulárních čísel Vynulování prvního prvku bidiagonály Vynulování nově vzniklého prvku Opravení prvního řádku
Výpočet SVD – Výpočet singulárních čísel Vynulování prvního prvku bidiagonály Vynulování nově vzniklého prvku Opravení prvního řádku Na třetím řádku se objeví prvek navíc
Výpočet SVD – Výpočet singulárních čísel Vynulování prvního prvku bidiagonály Vynulování nově vzniklého prvku Opravení prvního řádku Na třetím řádku se objeví prvek navíc Opravení druhého řádku
Výpočet SVD – Výpočet singulárních čísel Vynulování prvního prvku bidiagonály Vynulování nově vzniklého prvku Opravení prvního řádku Na třetím řádku se objeví prvek navíc Opravení druhého řádku Vynulování posledního prvku navíc
Výpočet SVD – Výpočet singulárních čísel Diagonalizace Ukončovací podmínka Největší problém Dimence 12800 x 12800 Doba běhu 791.79 (s) Počet iterací 325161 Důkaz lze najít v G.W.Stewart – Matrix algorithms vol 2
Výpočet SVD – Singulární vektory Sestavení matic U a V (ortogonálních tranformací) Matice a jsou sestaveny postupnou akumulací z Householderových vektorů Potřebuje Sestavení matic a je proces řešení třídiagonálních soustav Výsledné matice U a V vzniknou pronásobením přechozích
Porovnání s Matlabem – sekvenční kód
Závěr Existující implementace Proč se zabývat novou implementací ScaLapack, Lapack, MatLab, ProPack ... Proč se zabývat novou implementací Výpočet úplného singulárního rozkladu pro plné velké matice Licence paralelního MatLabu je drahá Většina stávajících implentací je pro řídké matice Stávající řešení se povětšinou zaměřují na největší vlastní čísla Budoucnost Akcelerace výpočtu pomocí „kompaktní reprezentace“ Householderovy tranformace Další zvětšení dimenze řešitelných problémů Možnost volby části spektra pro výpočet
Aplikace na multimediální data Hledání podobnosti dvou digitálních obrazů Problém velikost Aproximace matic pomocí SVD (LSI) Umožní redukci dimenze původní datové matice řádově na desetinu Matematický popis (pro úplnost , zde se jím nezabýváme) MPEG-7 Rozdělění histogramu Frekvenční odezva na waveletové filtry
Aplikace na multimediální data : Ukázka
Aplikace na multimediální data : Ukázka
Děkuji za pozornost. Dotazy?