eské vysoké u£ení technické v Praze Fakulta elektrotechnická
Diplomová práce
Zobrazení topologie hybridních induktivních model· Jaroslav Matou²ek
Vedoucí práce:
Ing. Pavel Kordík, Ph.D.
Studijní program: Elektrotechnika a informatika magisterský
Obor: Informatika a výpo£etní technika
kv¥ten 2008
iv
Pod¥kování D¥kuji vedoucímu práce Ing. Pavlu Kordíkovi, Ph.D. za odborné rady, trp¥livost a vºdy pozitivní a p°átelský p°ístup k v¥ci. Dále bych rád pod¥koval mé rodin¥ za podporu b¥hem celého studia. V neposlední °ad¥ si pod¥kování zaslouºí také v²ichni, kte°í svoji radou pomohli k vytvo°ení této práce. v
vi
Prohlá²ení Prohla²uji, ºe jsem svou diplomovou práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené v p°iloºeném seznamu. Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu 60 Zákona £. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých zákon· (autorský zákon).
V Nymburce dne 22.5. 2008
.............................................................
vii
viii
Abstract GAME engine generates models capable to analyse even very complex data automatically. By studying the topology of created models it is possible to get new knowledge about the data character. To examine the quality of models it is useful to visualize their responses in a wellarranged way. The outcome of this thesis is a visualization module for FAKE GAME application enabling 3D display of inductive models. To check the quality of the model the visualization of response to input data vectors was implemented. The response can be viewed either for each unit separately or for all units at once in a topology order. Extension of the 2D visualization by adding SVG export is also part of the thesis.
Abstrakt Metoda GAME automaticky generuje modely schopné analyzovat i velmi komplexní data. Studiem topologie vytvo°ených model· lze získat nové poznatky o charakteru dat. K posouzení kvality model· je vhodné p°ehledným zp·sobem vizualizovat jejich odezvy. Výsledkem této práce je vizualiza£ní modul do aplikace FAKE GAME, který umoº¬uje trojrozm¥rné zobrazení induktivních model·. K ov¥°ení kvality modelu byla implementována vizualizace odezvy na vstupní datové vektory. Odezvu lze sledovat pro kaºdou vybranou jednotku zvlá²´ nebo pro v²echny najednou, v zobrazení respektujícím jejich uspo°ádání. Sou£ástí práce je i roz²í°ení 2D vizualizace topologie o export do vektorového formátu SVG.
ix
x
Obsah Seznam obrázk·
xiv
Seznam tabulek
xv
1 Úvod a motivace 1.1
1
Struktura práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Teoretická £ást 2.1
1
3
Induktivní modelování a GMDH sít¥ . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.1.1
Group Method of Data Handling - GMDH . . . . . . . . . . . . . . . . . .
3
2.1.2
Group of Adaptive Models Evolution - GAME
. . . . . . . . . . . . . . .
4
2.2
Vizualizace topologie neuronových sítí a sítí obecn¥ . . . . . . . . . . . . . . . . .
5
2.3
Teorie graf· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.3.1
Pravidla zobrazení grafu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.3.2
Konvence kreslení grafu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.3.3
Algoritmy pro vykreslení grafu . . . . . . . . . . . . . . . . . . . . . . . .
7
2.3.3.1
Konvexní vykreslování grafu . . . . . . . . . . . . . . . . . . . .
7
2.3.3.2
Hierarchické vykreslování . . . . . . . . . . . . . . . . . . . . . .
8
2.3.3.3
Vykreslování pomocí fyzikálních model· . . . . . . . . . . . . . .
8
Vizualizace topologie neuronových sítí v praxi . . . . . . . . . . . . . . . . . . . .
8
2.4.1
Vizualizace v JavaNNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.4.2
Vizualizace °ízená daty . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.4.3
Vizualizace s odezvami sít¥ . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4
2.5
SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.5.1
2.6
2.7
2.8
P°íklad SVG v praxi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Batik: Java SVG Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.6.1
T°ída SVGGraphics2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.6.2
P°íklad pouºití pro export do SVG . . . . . . . . . . . . . . . . . . . . . . 15
Java 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.7.1
Struktura scény . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.7.2
P°íklad pouºití Javy 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Knihovna pro 3D vizualizaci neuronových sítí . . . . . . . . . . . . . . . . . . . . 19 2.8.1
Jednoduchý p°íklad pouºití . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.8.2
Popis knihovny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3 Srovnání open source nástroj· pro vizualizaci sít¥ 3.1
23
Graphviz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.1.1
DOT jazyk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 xi
3.1.1.1 3.2
Základy syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Tulip Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.1
tplrender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.2
Tulip Software Graph Format (TLP) . . . . . . . . . . . . . . . . . . . . . 28
3.3
Graph Gear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4
A Graph Library Extension of SVG . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5
GINY: Graph INterface librarY . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.6
JGraph a JGraphT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.6.1
JGraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.6.2
JGraphT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.7
JUNG (Java Universal Network/Graph Framework)
3.8
Záv¥re£né srovnání . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4 Návrh a realizace °e²ení
. . . . . . . . . . . . . . . . 34
39
4.1
Za£len¥ní do struktury FAKE GAME . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2
Export vizualizace do formátu SVG . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3
Modul pro zobrazení induktivních model· . . . . . . . . . . . . . . . . . . . . . . 41
4.4
4.3.1
Pouºité datové struktury pro uloºení topologie . . . . . . . . . . . . . . . 41
4.3.2
Vytvá°ení reprezentace modelu pro vizualizaci . . . . . . . . . . . . . . . . 42
4.3.3
P°idané vizualiza£ní moºnosti . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3.4
Nové vlastnosti vizualiza£ního okna . . . . . . . . . . . . . . . . . . . . . . 43
Vizualizace odezvy model· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.4.1
Klasika£ní úloha model· . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4.2
Vizualizace reálných dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4.3
Implementace vizualizace . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.4.4
Nastavování vlastností vizualizace . . . . . . . . . . . . . . . . . . . . . . . 47
4.4.5
Zm¥na výstupní jednotky model· . . . . . . . . . . . . . . . . . . . . . . . 47
4.4.6
Propojení vizualizace topologie a odezvy model· . . . . . . . . . . . . . . 48
4.4.7
Roz²í°ení vizualiza£ní knihovny . . . . . . . . . . . . . . . . . . . . . . . . 49
5 Testování
51
6 Záv¥r
55
7 Literatura
57
A Seznam pouºitých zkratek
59
B Uºivatelská / instala£ní p°íru£ka
61
B.1 Popis hlavního okna vizualizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
C Obsah p°iloºeného CD
63 xii
Seznam obrázk· 2.1
Porovnání sít¥ MIA GMDH a GAME . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2
Prost°edí FAKE GAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.3
Ilustrace algoritmu vykreslení planárního grafu . . . . . . . . . . . . . . . . . . .
7
2.4
Vizualizace topologie neuronové sít¥ v aplikace JavaNNS . . . . . . . . . . . . . .
9
2.5
P°i°azení barvy vstupních uzl· podle pr·m¥ru a st. odchylky . . . . . . . . . . .
9
2.6
Neuronová sí´ pro klasikaci obrázk· z magnetické rezonance . . . . . . . . . . . 10
2.7
Neuronová sí´ pro klasikaci spamu . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.8
Vizualizace sít¥ se zobrazený odezvami neuron· . . . . . . . . . . . . . . . . . . . 12
2.9
Jednoduchý p°íklad SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.10 Architektura pouºití t°ídy SVGGraphics2D . . . . . . . . . . . . . . . . . . . . . 15 2.11 Stromová struktura 3D scény . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.12 P°íklad zobrazení barevné krychle v Java 3D
. . . . . . . . . . . . . . . . . . . . 18
2.13 Vizualizace dop°edné sít¥ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.14 ást zjednodu²eného diagramu t°íd vizualiza£ní knihovny . . . . . . . . . . . . . 21 3.1
Graphviz: vizualizace sít¥ pro výpo£et XOR . . . . . . . . . . . . . . . . . . . . . 23
3.2
DOT jazyk: p°íklad £. 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3
DOT jazyk: p°íklad £. 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.4
DOT jazyk: p°íklad 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.5
Tulip Software: vizualizace sít¥ pro výpo£et XOR . . . . . . . . . . . . . . . . . . 26
3.6
Tulip Software: vizualizace sít¥ importované z formátu DOT, layout Hierarchical Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.7
GraphGear: vizualizace sít¥ pro výpo£et XOR . . . . . . . . . . . . . . . . . . . . 29
3.8
SVG Graph Library: vizualizace sít¥ pro výpo£et XOR . . . . . . . . . . . . . . . 31
3.9
Ukázka vizualizace vytvo°eného pomocí GINY . . . . . . . . . . . . . . . . . . . . 32
3.10 P°ehled rozhraní GINY
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.11 Ukázka layoutu JGraph Layout Pro, vizualizace pomocí JGraph . . . . . . . . . . 34 3.12 JGraphT: vizualizace sit¥ pro výpo£et XOR . . . . . . . . . . . . . . . . . . . . . 35 3.13 Ukázka vizualizace vytvo°ené pomocí JUNG . . . . . . . . . . . . . . . . . . . . . 36 4.1
Graf závislostí JAR archiv· v Batiku . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2
Porovnání p·vodního exportu do EPS (vlevo) a nového do SVG (vpravo) . . . . . 41
4.3
Obarvení vstupních jednotek ve vizualizaci a chybné zobrazení p°i p·vodním nastavení pr·hlednosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.4
Okno vizualiza£ního modulu s ozna£enými jednotkami . . . . . . . . . . . . . . . 44
4.5
Informa£ní panel pro výpis parametr· modelu . . . . . . . . . . . . . . . . . . . . 44
4.6
2D vizualizace klasika£ního modelu Iris a u£ících dat . . . . . . . . . . . . . . . 46
4.7
3D vizualizace klasika£ního modelu Iris a u£ících dat . . . . . . . . . . . . . . . 47
4.8
Vizualizace topologie modelu se zobrazenými odezvami jednotlivých jednotek . . 48 xiii
4.9
Vizualizace klasika£ní úlohy se zobrazenými osami . . . . . . . . . . . . . . . . . 49
4.10 Porovnání vykreslení objektu s nastavenou polovi£ní pr·hledností a nepr·hledného objektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.1
Vizualizace klasikace problému vno°ených spirál . . . . . . . . . . . . . . . . . . 51
5.2
Vývoj odezvy v modelu °e²ícím problém vno°ených spirál . . . . . . . . . . . . . 52
5.3
Závislost ceny domu v modelu regresního datového souboru bosthouse u jednotlivých jednotek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
B.1 Hlavní okno vizualiza£ního modulu . . . . . . . . . . . . . . . . . . . . . . . . . . 61
xiv
Seznam tabulek 2.1
Vylep²ení GAME oproti p·vodní MIA GMDH . . . . . . . . . . . . . . . . . . . .
3.1
Porovnání vybraných vizualiza£ních nástroj· . . . . . . . . . . . . . . . . . . . . 37
4.1
P°ehled GAME jednotek, jejich zkratek ve vizualizaci a ozna£ení . . . . . . . . . 43
xv
4
xvi
KAPITOLA 1.
ÚVOD A MOTIVACE
1
1 Úvod a motivace V pr·b¥hu poslední desítky let pronikl data mining (vyt¥ºování dat) významn¥ také do privátní podnikové sféry. Firmy jsou si v¥domy cenosti informací, které se skrývají v jejich datech. K analýze dat pouºívají metody pro vyt¥ºování dat algoritmy, známé ze strojového u£ení. Z°ejm¥ nejpopulárn¥j²í metodou pro vyt¥ºování dat jsou neuronové sít¥. Jejich oblíbenost je zp·sobena tím, ºe je lze pouºívat jako black bo x (£ernou sk°ínku). To znamená, ºe uºivatelé jsou schopni pouºívat systém aniº by v¥d¥li, jak funguje uvnit°. Podobný p°ístup ov²em p°iná²í i své úskalí. Znalosti o datech jsou ukryté ve struktu°e sít¥ a jejich vnit°ních parametrech. Pro vytvo°ení model·, které by co nejlépe popisovaly daný systém, je t°eba studovat spojení a váhy uvnit° neuronové sít¥. U komplexních systém· je pro dolování znalostí vhodné pouºít vizualiza£ní techniky, zobrazující chování modelu. Z tohoto d·vodu vznikla tato práce, která by m¥la usnad¬ovat sledování topologie vytvá°ených model· a jejich chování. Výsledkem práce m¥l být vizualiza£ní modul do aplikace FAKE GAME, který umoºní zobrazení topologie induktivních model·. Vizualizace má uºivateli poskytnout interaktivní ovládání a p°ehledným zp·sobem mu p°edat dostupné informace o funk£ních jednotkách vytvo°eného modelu. Jako kritérium pro zhodnocení kvality modelu neuronové sít¥ se pouºívá schopnost modelu správn¥ reagovat na vstupní parametry. K vizuální kontrole kvality model· proto byla implementována vizualizace odezvy. Cílem bylo spojení moºností vizualizace mnohadimenzionálních dat s vizualizací chování systém·. Vizualizace má zvýraz¬ovat rozhodovací hranici pro klasikaci dat do t°íd. D·leºitou vlastností vizualizace je umoºnit uºivateli specikovat výstupní jednotku modelu a sledovat její odezvu na vstup. Tu je moºné zobrazit jak pro kaºdou jednotku zvlá²´, tak pro v²echny jednotky najednou. K tomu ú£elu se grafy odezev vykreslují v uspo°ádání respektujícím topologii modelu. Sou£ástí práce je i roz²í°ení jiº implementované 2D vizualizace topologie model· o export do vektorového formátu SVG. 1.1
Struktura práce
Práce je £len¥ná do následujících kapitol.
Kapitolu 1
práv¥ £tete. Uvádí motivaci, pro£ práce vznikla, vymezuje cíle práce a up°es¬uje poºadavky na implementovaný modul.
Kapitola 2
popisuje teoretický základ pot°ebný k realizaci. Obsahuje informace o induktivním modelování a GAME modelech, technikách vizualizace topologie neuronových sítí a sítí obecn¥. P°idáno je seznámení s pouºitými knihovnami.
Kapitola 3
srovnává open source nástroje, které je moºné pouºít pro zobrazení topologie dop°edné sít¥.
Kapitola 4
obsahuje návrh modulu a popisuje jeho realizaci. Je analyzována sou£asná implementace aplikace a knihoven. Popsány jsou pouºité datové struktury.
2
KAPITOLA 1.
ÚVOD A MOTIVACE
Kapitola 5
se zabývá testováním modulu s ohledem na denované poºadavky. Na vizualizaci rozli£ných datových soubor· jsou ukázány funkce modulu a je porovnána funkcionalita s jiº implementovaným °e²ením.
Kapitola 6
záv¥rem shrnuje výsledky celé práce. Zhodnoceny jsou nové moºnosti, které vizualizace p°iná²í. Uvedeny jsou nápady na budoucí pokra£ování a vylep²ení.
Dodatek B
obsahuje uºivatelskou p°íru£ku s návodem pro pouºívání modulu. Popsány jsou v²echny £ásti uºivatelského rozhraní modulu a jejich funkce.
KAPITOLA 2.
TEORETICKÁ ÁST
3
2 Teoretická £ást 2.1
Induktivní modelování a GMDH sít¥
Induktivní modelování vyuºívá technik strojového u£ení k odvození model· z dat [19]. Oproti tomu deduktivní modelování pouºívá k odvození matematických model· systému doménovou expertizu. S omezenými lidskými zdroji se v²ak m·ºe aplikovat pouze induktivní p°ístup. Indukcí lze rozum¥t shromaº¤ování men²ích £ástí informací, jejich vzájemné kombinování a pouºití jiº získaných informací k získání komplexního pohledu studovaného modelu nebo objektu. Vyuºití metody indukce v metodách induktivního modelování umoºní konstrukci model· studovaných systém·. Jelikoº konstruk£ní proces postupn¥ roste spolu s komplexností systému, je indukce velmi efektivní. Díky moºnosti rozloºit úlohy do men²ích £ástí, kdy se nejd°íve analyzují informace z nejd·leºit¥j²ích vstup·, mohou induktivní metody usp¥t i v rozm¥rných systémech, kde standardní metody selhávají.
2.1.1 Group Method of Data Handling - GMDH GMDH sít¥ jsou vícevrstvé sít¥, odli²ující se od ostatních neuronových sítí zp·sobem vytvá°ení své struktury a moºností její zm¥ny b¥hem procesu u£ení [21]. M·ºe se tak m¥nit po£et neuron· ve skrytých vrstvách a dokonce i po£et skrytých vrstev samotných. Jako model vytvá°eného systému slouºí polynom, zaji²´ující aproximaci mezi závislostí vstupního a výstupního vektoru dat. Funkce sít¥ je zaloºena na dop°edném ²í°ení signálu - ze vstupní distribu£ní vrstvy p°es skryté vrstvy aº k výstupnímu neuronu. Ve skrytých vrtstvách se nacházejí aktivní neurony, výkonné prvky sít¥. P°enos signálu zaji²´ují pomocí r·zných p°enosových funkcí, na kterých závisí po£et vstup· t¥chto neuron·. Výstup aktivního prvku se m·ºe rozv¥tvit a aº b¥hem u£ící fáze (s u£itelem) se rozhodne, kam bude p°ipojen.
Obrázek 2.1: Porovnání sít¥ MIA GMDH a GAME Obecn¥ lze GMDH sít¥ rozd¥lit na parametrické, které ur£ují koecienty svých neuron· b¥hem u£ení, a neparametrické. Princip parametrické sít¥ byl popsán v p°edchozím odstavci.
4
KAPITOLA 2.
Heterogenní jednotky Optimalizace jednotek Heterogenní u£ící metody Inovace struktury Regularizace Genetický algoritmus Metoda niching Vyvíjející se jednotky Vygenerování ensemble model·
TEORETICKÁ ÁST
n¥kolik typ· jednotek vzájemn¥ soupe°í o p°eºití v GAME modelech pouºití heterogenních u£ících jednotek v závislosti na datech n¥kolik optimaliza£ních metod se snaºí vytvo°it nejúsp¥²n¥j²í jednotku jednotky rostou z minimální formy a mohou být p°ipojeny na jednotku z libovolné p°edchozí vrstvy nebo libovolný vstup pouºití regulariza£ních kritérií pro redukci komplexnosti p°enosových funkcí heuristický zp·sob tvorby model·, vstupy jednotek se postupn¥ vyvíjejí diversita podporuje udrºet mén¥ vhodné, ale více uºite£né jednotky jednotky (nap°. CombiNeuron) mohou vyvíjet své p°enosové funkce ensemble (skupina) model· vylep²uje p°esnost, lze odhadnout spolehlivost jednotlivých model·
Tabulka 2.1: Vylep²ení GAME oproti p·vodní MIA GMDH Parametrické sít¥ lze dále rozd¥lit na sít¥ MIA, zaloºené na £áste£né indukci, jejichº neurony mají ve v²ech vrstvách stejný polynom, a sít¥ COMBI, zaloºené na úplné indukci s r·znými polynomy ve vrstvách. U neparameterických sítí uº nelze mluvit o síti jako takové, ale spí²e o algoritmech, vyuºívajících princip selekce nejlep²ího modelu.
2.1.2 Group of Adaptive Models Evolution - GAME Z GMDH sít¥ typu MIA vychází implementace Group of Adaptive Models Evolution [19], zkrácen¥ GAME. GAME je data mining 1 metoda schopná vytvá°et modely pro klasikaci, predikci, identikaci i regresi. Je schopná pracovat se spojitými i diskrétními prom¥nnými. Topologie sít¥ GAME se p°ízp·sobí povaze dodaných dat. GAME je odolný v·£i neplatným a redundantním poloºkám, vhodný pro krátké a za²um¥né vzorky dat. Modely GAME mají více stup¬· volnosti (jednotky s více vstupy, mezivrstvé propojení, p°enosové funkce, ...) neº modely MIA. Vylep²ení oproti MIA GMDH je zobrazeno na obrázku 2.1 a jsou také shrnuty do tabulky 2.1. Na jád°e GAME je postaveno rozhraní Fully Automated Knowledge Extraction (FAKE). Jeho úkolem je usnadnit uºivatel·m celý proces dolování dat a p°edat mu získané informace ve srozumitelné form¥. Umoº¬uje jednak automatické p°edzpracování dat (rozhraní mezi surovými daty a jádrem GAME) a také získávání znalostí a vizualizaci informací (rozhraní mezi jádrem GAME a uºivatelem). Celé prost°edí FAKE GAME je zobrazeno na obrázku 2.2. 1 vyt¥ºování dat, analytická metodologie získávání netriviálních skrytých a potenciáln¥ uºite£ných informací z dat
KAPITOLA 2.
TEORETICKÁ ÁST
5
Obrázek 2.2: Prost°edí FAKE GAME
2.2
Vizualizace topologie neuronových sítí a sítí obecn¥
Vizualizace topologie neuronových sítí by se dala obecn¥ popsat jako vizualizace orientovaných graf·, ve kterých jsou jednotlivé neurony zobrazeny jako vrcholy a spojení mezi neurony je reprezentováno hranami. Pro zlep²ení vizualizace a sou£asn¥ i p°ehledu o celé síti je vhodné zahrnout do zobrazení i jednotlivé parametry neuronové sít¥. Konkrétn¥ se m·ºe jednat o synaptické váhy £i typy pouºitých neuron·. P°i vlastní vizualizaci je vhodné se °ídit n¥kolika základními doporu£eními, které slouºí k p°ehledn¥j²ímu zobrazení sít¥. Je vhodné minimalizovat po£et k°íºení spojení mezi neurony. Kaºdé takové k°íºení znesnad¬uje orientaci uºivatele. V²echny entity, které mají podobnou funk£nost, by m¥ly být zobrazeny u sebe. Také cesta informa£ního toku skrz sí´ by nem¥la být matoucí. Vytvo°it kvalitní vizualizaci neuronové sít¥ tak m·ºe být náro£ný optimaliza£ní problém, zvlá²t¥ pak u rozsáhlej²ích sítí. Jak je z°ejmé, vizualizace topologie neuronových sítí souvisí s teorií graf·. Je vhodné si tedy z této teorie uvést pot°ebné základní denice a n¥kolik algoritm·, které je moºné pouºít pro vykreslení grafu. 2.3
Teorie graf·
Obecn¥ je graf struktura, kterou tvo°í mnoºina vrchol· U a mnoºina hran H. Mnoºina hran je mnoºina neuspo°ádaných dvojic [u, v], u, v ∈ U . Uzly u a v se nazývají krajními uzly hrany, o které °íkáme, ºe inciduje s uzly u a v. V grafu se hovo°í o sledu mezi uzly u1 a uk , pokud existuje posloupnost uzl· a hran
S = hu1 , h1 , u2 , h2 , . . . , uk−1 , hk , uk i, kde hi ∈ H a ui ∈ U . Uzel u1 se nazývá po£áte£ní a uk jako koncový uzel sledu.
Uzav°ený sled má alespo¬ jednu hranu a shodný po£áte£ní a koncový uzel. Tahem grafu je
takový sled, v n¥mº jsou v²echny hrany r·zné.
Cestou grafu se nazývá takový tah, v n¥mº kaºdý uzel inciduje maximáln¥ se dv¥ma hranami tohoto tahu. Kruºnice je uzav°ená cesta.
6
KAPITOLA 2.
TEORETICKÁ ÁST
Grafy lze rozd¥lit podle t¥chto základních hledisek:
• podle po£tu hran mezi dv¥ma uzly na multigrafy (existuje dvojice hran se shodnou mnoºinou krajních uzl·) a prosté grafy (dvojici rovnob¥ºných hran nemají) • podle orientace hran na neorientované a orientované, kde jsou dvojice uzl· uspo°ádány (tzn. ºe hrany [u, v] a [v, u] jsou odli²né); orientace se zpravidla ozna£uje ²ipkou • podle k°íºení hran na planární (rovinný), který lze zobrazit do roviny bez k°íºení hran, a neplanární (nerovinný), který takto zobrazit nelze.
Úplným grafem je nazýván graf mající z kaºdého uzlu hranu do v²ech ostatních uzl·. Stromem se nazývá takový graf, který neobsahuje kruºnice. U orientovaného grafu se hovo°í o acyklickém grafu, jedná-li se o strom nebo neorientované kruºnice. Grafy lze reprezentovat nap°íklad pomocí maticového vyjád°ení jako je matice sousednosti.
To je jist¥ výhodné pro po£íta£ové zpracování grafu, ale pro £lov¥ka studujícího strukturu grafu nep°ehledné. Pro tyto p°íleºitosti se více hodí diagram grafu, který zobrazuje uzly, hrany a vztahy mezi nimi. Více podrobn¥j²ích informací o teorii graf· lze nalézt nap°íklad v [17].
2.3.1 Pravidla zobrazení grafu Pro zobrazení grafu lze shrnout n¥kolik pravidel [18], jejichº spln¥ní by m¥lo vést k lep²í £itelnosti grafu. Jelikoº pro grafy existuje mnoºství oblastí pouºití, nemusí ani toto vést k p°ehlednosti grafu a názornosti zobrazovaných informací. Pravidla je moºné rozd¥lit do 4 základních druh·:
•
základní - uzel by nem¥l p°ekrývat jiný uzel (stejnak tak by se nem¥ly p°ekrývat hrany)
a hrany grafu by nem¥ly protínat jeho uzly
•
sémantická - umíst¥ní souvisejících uzl· na stejnou p°ímku nebo k°ivku, jejich shlukování
nebo umíst¥ní do stejné vzdálenosti na hrani£ní objekt, významné uzly rozli²ovat jejich velikostí
•
konstruk£ní - pouºití vhodného rozvrºení (hiearchické, symetrické), minimalizovat k°íºení hran, zachovávat rovnom¥rný pom¥r ²í°ky a délky celého grafu, umís´ování uzl· do pravidelných struktur, minimalizovat délky hran
•
gracká - uzel vykreslený jako kruºnice nebo £tverec, hrana jako úse£ka nebo k°ivka.
Tato pravidla ov²em není moºné ve v²ech p°ípadech dodrºet. Ne vºdy je totiº graf planární a p°i poºadavku n¥kterých dal²ích specických pravidel se nemusí poda°it ani planární graf vykreslit bez k°íºení hran.
2.3.2 Konvence kreslení grafu Pro r·zné okruhy aplikace graf· se pouºívají rozdílné konvence jejich kreslení. Mezi základní pat°í:
•
planární - hrany jsou reprezentovány jednoduchými £árami tak, ºe se nek°íºí (nelze u kaºdého grafu)
KAPITOLA 2.
7
TEORETICKÁ ÁST
•
z lomených £ar - hrany reprezentovány sledem po sob¥ jdoucích úse£ek
•
z p°ímých £ar - kaºdá hrana reprezentována p°ímou úse£kou
•
ortogonální - hrany vºdy pouze vodorovné nebo svislé
•
vzestupné - v²echny hrany musí být sm¥rovány jedním sm¥rem (vyuºíváno pro kreslení orientovaných graf·).
2.3.3 Algoritmy pro vykreslení grafu Pro vykreslování graf· bylo vytvo°eno velké mnoºství rozli£ných algoritm·. Zde budou ov²em krátce p°edstaveny pouze t°i vybrané typy algoritm·, které by se mohly aplikovat i na p°íklad vizualizace topologie neuronových sítí.
2.3.3.1 Konvexní vykreslování grafu Algoritmus slouºí k vykreslení planárního spojitého grafu. Jeho st¥ºejním bodem je fakt, ºe po p°idání kruºnice do grafu vzniknou dv¥ nové st¥ny [24]. St¥na grafu je oblast grafu vymezená uzly, které na dané kruºnici leºí.
S1 = {a, b, c} S2 = {a, b, c} a S2
a S1
c
b
b c d
Obrázek 2.3: Ilustrace algoritmu vykreslení planárního grafu V dal²ím popisu bude jako H ozna£en podgraf p°edstavující vykreslenou £ást grafu a G tu nevykreslenou. Nejprve se z grafu G zvolí libovolná kruºnice, která se vykreslí. Z kruºnice se vytvo°í seznam st¥n a jejich hrani£ních uzl·. Kruºnice se poté vyjme z grafu G a umístí do grafu H. Dokud je k dispozici cesta spl¬ující podmínky, ºe její koncové uzly náleºí do grafu H a ºádný dal²í uzel do H nenáleºí, p°idá se do libovolné st¥ny grafu H. Pro st¥nu musí platit, ºe koncové uzly cesty jsou podmnoºinou uzl· dané plochy. Pokud se nenajde ºádná plocha, do které by bylo moºné cestu vloºit, nejedná se o planární graf a algoritmus tak kon£í. Algoritmus lze demonstrovat na p°íkladu, znázorn¥ném na obrázku 2.3. Po volb¥ kruºnice nazna£ené nalevo její uzly vymezují dv¥ st¥ny S1 a S2. Cesta je tedy zvolena c -d -b, koncovými uzly jsou c a b. Jelikoº ob¥ vytvo°ené st¥ny obsahují oba koncové uzly, je moºné si vybrat do které ze st¥n se má dal²í uzel vykreslit.
8
KAPITOLA 2.
TEORETICKÁ ÁST
2.3.3.2 Hierarchické vykreslování Tento algoritmus je ur£en pro prosté orientované grafy. P°i pouºití na neorientované grafy je nutné nejprve v²echny hrany orientovat. Dal²í nutnou podmínkou je acykli£nost grafu. Celý pr·b¥h probíhá v t¥chto £ty°ech krocích: 1. vytvo°ení orientovaného acyklického grafu 2. umíst¥ní uzl· grafu do vrstev 3. ur£ení po°adí uzl· ve vrstvách 4. ur£ení sou°adnic uzl· ve vrstvách Podrobn¥j²í popis algoritmu lze nalézt v [18].
2.3.3.3 Vykreslování pomocí fyzikálních model· K vykreslení grafu je moºné pouºít i fyzikálních jev·. Vykreslovací algoritmy, které je pouºívají, poté fungují na principu, kdy uzly si lze p°edstavit jako závaºí a spojující hrany jako pruºiny. Dal²ím p°íklad je pouºití elektromagnetického modelu, kdy st°elky kompas· reprezentují hrany a kovové prstence uzly, umíst¥né v elektromagnetickém poli. Konkrétním p°íkladem tohoto p°ístupu m·ºe být silou °ízené umís´ování [23]. 2.4
Vizualizace topologie neuronových sítí v praxi
D·sledek mnoºství aplikací neuronových sítí a tedy i poºadavk· ur£itým zp·sobem zobrazovat jejich vnit°ní topologii, byly vytvo°eny r·zné techniky vizualizace od t¥ch základních aº po komplexn¥j²í. V této £ásti je tak ukázán jeden tradi£ní p°ístup vizualizace a poté i dva specické.
2.4.1 Vizualizace v JavaNNS Typickým p°íkladem zp·sobu vizualizace topologie neuronové sít¥, který je v obdobné variant¥ pouºit v mnoºství jiných simulátor· neuronových sítí a podobných aplikací, je zobrazovací komponenta aplikace JavaNNS [8]. Ta zobrazuje vizuální reprezentaci vytvo°ené sít¥, skládající se z jednotek a spojení mezi nimi. Jednotky jsou vykresleny jako barevné £tvere£ky, spojení poté jako barevné £áry. Jak u jednotek, tak i pro spojení jejich barva p°edstavuje hodnotu. Konkrétn¥ aktivitu u jednotek a váhu pro spojení. Barevný pruh na levé stran¥ okna slouºí k rychlému zji²t¥ní korespondujících hodnot a barev. Kaºdá jednotka je poziciována na neviditelnou m°íºku tak, aby byly vytvo°eny rovnom¥rné rozestupy mezi jednotkami. U jednotek je umoºn¥no zobrazit dva volitelné údaje, jeden nad a druhý pod jednotku. Uºivatel tak m·ºe vid¥t u jednotek jejich názvy, aktivity £i hodnotu biasu. Dal²í volbou je zobrazení hodnot vah jednotlivých spojení a znázorn¥ní orientace spojení. Pro lep²í £itelnost struktury lze zobrazení spojení zcela vypnout nebo nastavit, aby se skryla pouze slabá spojení. Tedy ta, která nemají na výstup velký vliv.
KAPITOLA 2.
TEORETICKÁ ÁST
9
Obrázek 2.4: Vizualizace topologie neuronové sít¥ v aplikace JavaNNS
2.4.2 Vizualizace °ízená daty Odkrýt víko £erné sk°í¬ky, která ukrývá strukturu neuronové sit¥, a poskytnout tak moºnost uºivateli zjistit r·zné závislosti vstupních dat, to je cílem studie Opening the Black Box [16]. Informace uloºená v neuronové síti je totiº pouze sada numerických vah a spojení, které tak nenechávají ºádné pojítko s tím, jak je vypo£ítávána zadaná úloha, £i jaký je p°esný vztah mezi vstupy sít¥ a jejími výstupy. Jedním z hlavních nedostatk· je zdlouhavé nastavování parametr· sít¥. I p°esto, ºe se m·ºe jednat o podobné úlohy, správný výb¥r sí´ových parametr· se m·ºe velmi li²it. Tyto parametry jako vnit°ní struktura sít¥, u£ící krok nebo velikost vnit°ní skryté vrstvy jsou £asto ur£ovány metodou pokus-omyl. Práv¥ daty °ízená vizualizace by mohla pomoci uºivatel·m problémy p°inejmen²ím zmírnit. Metoda byla vyzkou²ena na vy°e²ení dvou specických problém·, klasikaci dat z magnetické rezonance a klasikaci spamu.
Obrázek 2.5: P°i°azení barvy vstupních uzl· podle pr·m¥ru a st. odchylky V prvním p°ípad¥ se tedy sí´ pouºívala pro klasikaci obrázk· magnetické rezonance hlavy. Vstupní vektor trénovacích dat obsahoval skalární hodnotu voxelu2 , velikost gradientu, skalární 2
nejmen²í element v 3D bitmapovém prostoru, který je denován t°emi sou°adnicemi jednoho ze svých roh·
10
KAPITOLA 2.
TEORETICKÁ ÁST
hodnoty ²esti soused· a pozici. Je tak moºné nap°íklad nau£it klasikovat celý objem pouze pomocí trénovacích dat z vybraných region·. Barva jednotlivých vstup· je ur£ena z pr·m¥rné hodnoty v²ech dat a hodnoty standardní odchylky. Zelený uzel indikuje, ºe vstup má nízký pr·m¥r a vysokou hodnotu standardní odchylky, £ervený uzel reprezentuje vysoký pr·m¥r a nízkou standardní odchylku distribuce. P°esn¥ji je tato závislost znázorn¥na na obrázku 2.5.
Obrázek 2.6: Neuronová sí´ pro klasikaci obrázk· z magnetické rezonance
Na obrázku 2.6 vlevo je vid¥t neuronová sí´ vytvo°ená ke klasikaci celého °ezu hlavy z magnetické rezonance. Jako vstup je pouºito 5 atribut· vstupního vektoru. Siln¥j²í spojení ze vstupní vrstvy znázor¬uje, ºe korespondující vstupní uzel má na nální výsledek v¥t²í vliv. Málo významná spojení nejsou vykreslena v·bec. Velikost vstup· nazna£uje jejich významnost. Z obrázku je z°ejmé, ºe skalární hodnota je nejd·leºit¥j²í vlastnost pro klasikaci dat, zatímco gradient a pozice mají pouze malý vliv na výsledek. Tento výsledek reektuje fakt, ºe obrázek hlavy m·ºe být jednodu²e separován pomocích tradi£ních 1D transférních funkcí, které p°ímo mapují hodnotu dat na hodnotu nepr·hlednosti vrstvy. Na pravé £ásti obrázku 2.6 je vid¥t výsledek klasikace ohrani£ujících hranic, tedy oblastí s vysokým gradientem. V tomto p°ípad¥ hraje gradient a sousední uzly nejvýznamn¥j²í roli v klasikaci, na rozdíl od skalárních hodnot a pozice. Tyto veli£iny se na výsledku p°íli² nepodílejí. Druhý p°íklad na obrázku 2.7 naho°e znázor¬uje vizualizaci sít¥ pro klasikaci spamu. Sí´ byla nau£ena na trénovací mnoºin¥ se 400 emaily, z toho 117 bylo spam. Testovací sada obsahovala 200 email· se 61 spamy. Vytvo°ená klasika£ní sí´ má 82 vstupních uzl· a 100 skrytých. Vstupní, skrytá a výstupní vrstva jsou znázorn¥ny odspoda nahor·.
KAPITOLA 2.
TEORETICKÁ ÁST
11
Obrázek 2.7: Neuronová sí´ pro klasikaci spamu
Z vizualizace vstupních uzl· lze rozpoznat d·leºitá klí£ová slova pro klasikaci. Jelikoº uzly pro slovo "free " a "need " jsou vykresleny pom¥rn¥ velké, je z°ejmé ºe jsou významná pro rozhodnutí zda se jedná o spam £i nikoliv. Slovo "http " gurovalo tém¥° ve v²ech emailech, a to je indikováno £ervenou barvou uzlu (viz 2.5). Toho je dosaºeno pokud jednotlivé elementy v datech mají podobn¥ vysoké hodnoty (vysoká hodnota je p°i°azena kdyº je slovo ve spamu). P°esto slovo "http " je pouºito i v normálních emailech, a proto velikost jeho uzlu není taková jako u slov "free " nebo "need ". P°i pouºití v¥t²ího mnoºství skrytých uzl· a spojení se vizualizace stává nep°ehlednou. Proto je lep²í vizualizovat vstupní uzly samostatn¥, tak jako na obrázku 2.7 dole. Zde jsou uzly se°azeny dle statistických parametr·, barvy a velikosti uzl· odpovídají p°edchozí vizualizaci. Zleva doprava jsou vykresleny uzly se zvy²ující se frekvencí výskytu ve spamu. Tento p°ístup zjednodu²uje celou vizualizaci a poskytuje více organizovaný pohled na vstupní uzly.
2.4.3 Vizualizace s odezvami sít¥ Dal²í zajímavá moºnost vizualizace topologie je uvedena v [20]. Jedná se o vizualizaci, která v sob¥ navíc ukrývá také zobrazování funkce odezvy. Je tak moºné sledovat odezvu jednotlivých neuron· na daný rozsah vstup· sít¥. Neuronová sí´ je postupn¥ napl¬ována v²emi moºnými vstupními kombinacemi z daného rozsahu (nap°íklad x1 ∈ h0, 1i, x2 ∈ h0, 1i), zatímco jsou sbírány a zobrazovány aktivity v²ech skrytých a výstupních neuron·.
12
KAPITOLA 2.
TEORETICKÁ ÁST
Obrázek 2.8: Vizualizace sít¥ se zobrazený odezvami neuron·
Sí´ se dv¥ma vstupy a s p°esností 100 vzork· na kaºdý vstup tak vykoná 10000 kombinací. Odezvy na t¥chto 10000 vstupních vzor· jsou pro kaºdý neuron zobrazeny jako obrázek o velikosti 100 x 100 pixel·. Barva kaºdého pixelu reprezentuje aktuální odezvu na p°íslu²nou jednu kombinaci vstup·. Vizualizace touto metodou je zobrazena na obrázku 2.8. Nejvíce je vhodná pro sít¥ se dv¥ma vstupy, jelikoº ty vedou k dvojrozm¥rným diagram·m. V dokumentu je dále nastín¥na technika shlukování odezev neuron· pro zjednodu²ení vizualizace. P°i neuronové síti o 100 neuronech a rozli²ení 100 x 100 pixel· je totiº t°eba rozli²ení 100 x 100 x 100 = 1 milión pixel·. To odpovídá plnému rozli²ení 1280 x 1024. Sít¥ s v¥t²ím mnoºstvím neuron· tak díky omezené velikosti zobrazované plochy nelze bez shlukování pln¥ vizualizovat. Pro více informací lze doporu£it prostudovat [20]. 2.5
SVG
SVG, nebo-li Scalable Vector Graphics (²kálovatelná vektorová graka) je zna£kovací jazyk a formát souboru, který vychází z XML a popisuje dvourozm¥rnou vektorovou graku. Jedná se o otev°ený standard vytvo°ený konsorciem W3C. Jeho hlavním ú£elem je zobrazování vektorové graky na Internetu. To v²ak pro velkou £ást uºivatel· m·ºe být problém, protoºe u prohlíºe£e Microsoft Internet Explorer je t°eba mít instalovaný zásuvný modul pro zobrazení. N¥které prohlíºe£e poté SVG podporují pouze £áste£n¥. V SVG jsou denovány t°i základní typy grackých objekt·:
• vektorové tvary (vector graphics) • rastrové obrazy (raster graphics) • textové objekty V²echny tyto objekty lze seskupovat, transformovat, polohovat a formátovat pomocí atribut· nebo styl· CSS. SVG dále podporuje o°ezávání objekt·, maskování pr·hlednosti, interaktivitu, ltrování obrazu a animaci. Jelikoº SVG obrázky jsou XML dokumenty, obsahují mnoºství opakujících se fragment· textu a jsou tak vhodné pro kompresi. P°i kompresi pomocí gzip3 3 Gzip je aplika£ní software uºívaný pro kompresi dat. Gzip je zkratka pro GNU zip; program je free software náhradou za kompresní program pouºívaný jiº v raném Unixovém systému, ur£ený pro projekt GNU.
KAPITOLA 2.
TEORETICKÁ ÁST
13
(obrázky jsou poté ozna£ovány jako SVGZ) m·ºe komprimovaný obrázek dosáhnout velikosti aº 20% p·vodního.
2.5.1 P°íklad SVG v praxi Na následujícím jednoduchém p°íkladu je ukázána základní syntaxe SVG. Výsledek zobrazení je na obrázku 2.9. Dal²í p°íklady a detailn¥j²í popis SVG naleznete na [12].
<svg width="450px" height="400px" version="1.1" viewBox="0 0 450 400" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg">
Obrázek 2.9: Jednoduchý p°íklad SVG Na za£átku dokumentu se vºdy uvede verze XML a kódování v elementu XML. Dále je vhodné uvést DOCTYPE deklaraci. Následuje element svg popisující zp·sob zobrazování celého dokumentu, tedy vý²ku a ²í°ku kreslicího plátna a pomocí viewBox se m·ºe zm¥nit sou°adnicový systém uvnit° SVG fragmentu. To se hodí p°i automatickém p°izp·sobování velikosti plátna na r·zných zobrazovacích za°ízeních. Poté se jiº p°idávají elementy pro jednotlivé gracké primitivy. Vºdy se ur£í pozice, rozm¥ry a styl zobrazení, tedy nap°íklad barva a styl obrysu, barva výpln¥ nebo stupe¬ pr·hlednosti. 2.6
Batik: Java SVG Toolkit
Batik je soubor nástroj· pro aplikace nebo applety, které cht¥jí pouºít obrázky ve formátu SVG. Informace o projektu naleznete na [1]. Je vytvo°en v programovacím jazyku JAVA a
14
KAPITOLA 2.
TEORETICKÁ ÁST
prost°ednictvím n¥kolika základních modul· umoº¬uje vývojá°·m zobrazovat, generovat nebo manipulovat s formátem SVG. Batik je vyvíjen jako open-source projekt v rámci Apache, a tedy i pod jeho licencí. P°estoºe hlavním cílem tohoto projektu je poskytnutí skupiny modul· pro vývojá°e, jedním výsledným produktem je i pln¥ funk£ní SVG prohlíºe£ vyuºívající práv¥ tyto moduly. Batik usnad¬uje JAVA aplikacím nebo applet·m práci se SVG obsahem. Nap°íklad pouºitím modulu SVG generator je aplikace nebo applet schopen jednodu²e exportovat ve²kerou graku do SVG formátu. P°i vyuºití SVG zobrazovací komponenty (Swing SVG component) je aplikaci nebo appletu jednodu²e pomocí speciálního Canvasu umoºn¥no zobrazení a interakce SVG obsahu. Dal²í moºností pro pouºití Batiku je p°evod SVG do jiných formát·, jako rastrových obrázk· (JPEG, PNG nebo TIFF) nebo jiných vektorových formát· (EPS nebo PDF). Toolkit Batik obsahuje tyto komponenty:
Moduly • Implementace SVG DOM • Sada parser· pro SVG mikrosyntaxi • Skriptovací modul • Generátor pro tvorbu SVG dokument· z volání metod Java2D • Swing komponenta pro práci se SCG • Transkódovací modul
Nástroje a aplikace • Squiggle (SVG prohlíºe£) • SVG rasterizer (p°evod SVG do rastrových formát·) • SVG font converter (p°evod TrueType font· do SVG) • SVG Pretty Printer (formátování zdrojového kdu SVG dokumentu) D·kazem kvality Batiku je i °ada projekt·, které jej pro r·zné ú£ely vyuºívají. Z t¥ch známých lze jmenovat JFreeChart projekt pouºívající Batik pro export graf· do SVG nebo vektorový gracký editor Sketsa.
2.6.1 T°ída SVGGraphics2D Vzhledem k zadání této práce je z°ejmé, ºe se z modul· Batiku bude pouºívat SVG generátor. K tomuto ú£elu je st¥ºejní t°ída SVGGraphics2D z balíku Batik. U aplikací vytvo°ených v Jav¥ je pro ve²keré renderování grackého obsahu pouºita abstraktní t°ída Graphics2D. Ta pro vykreslení objekt· nabízí metody jako nap°. drawRect, fillRect nebo drawString. Pro kaºdý druh výstupu (obrazovka, tiskárna atd.) jsou pro tuto t°ídy vytvo°ené speciální implementace. SVGGraphics2D je nová implementace tohoto rozhraní, která generuje SVG namísto kreslení na n¥který z výstup·. T°ída SVGGraphics2D tedy umoº¬uje aplikacím exportovat jejich graku do SVG formátu. Výhodou je, ºe pro export není pot°eba ºádná úprava grackého kódu a dále, ºe nabízí moºnost pouºití DOM API pro manipulaci s vytvo°eným dokumentem. Na obrázku 2.10 je nazna£eno jak
KAPITOLA 2.
TEORETICKÁ ÁST
15
Obrázek 2.10: Architektura pouºití t°ídy SVGGraphics2D
generátor pracuje s DOM API. Konsorcium W3C (World Wide Web Consortium) denovalo API pro reprezentování XML obsahu pomocí Java objekt·. S tímto API je vývojá° schopen dynamicky vytvá°et, modikovat nebo manipulovat se strukturou XML dokumentu. DOM API obsahuje rozhraní jako nap°íklad Document, Element a Attr, které tak programovací jazyk Java p°ipodobní ekvivaletním XML dokument·m, element·m a atribut·m. Generátor sestavuje strom DOM objekt·, reprezentující vlastní SVG obsah, podle korespondujících volání renderovacích metod jednotlivých instancí t°ídy SVGGraphics2D. Jinými slovy pokaºdé, kdyº program zavolá renderovací metodu n¥které z instancí SVGGraphics2D (jako fillRect a dal²í), je do DOM stromu p°idán nový DOM objekt, reprezentující odpovídající SVG ekvivalent. Konkrétn¥ po zavolání metody fillRect bude do stromu p°idán element rect, p°edstavující vykreslený obdélník.
2.6.2 P°íklad pouºití pro export do SVG Jak je patrné z obrázku 2.10, aby instance t°ídy SVGGraphics2D byla schopná sestavit DOM strom a vytvo°it tím SVG obsah, pot°ebuje k tomu instanci t°ídy Document. Nejprve je v²ak nutné vytvo°it DOM implementaci (DOMImplementation), která zapouzd°uje celé rozhraní. V balíku batik k tomu slouºí t°ída GenericDOMImplementation.
// získání DOM implementace DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation(); // vytvo°ení instance org.w3c.dom.Document String svgNS = "http://www.w3.org/2000/svg"; Document document = domImpl.createDocument(svgNS, "svg", null); Dále se vytvo°í instance t°ídy SVGGraphics2D pro konverzi volání renderovacích metod na prvky DOM:
SVGGraphics2D svgGenerator = new SVGGraphics2D(document); Dal²ím krokem je zavolání metody paint s parametrem Graphics2D namísto klasického volání s parametrem Graphics. P°ímo ze t°ídy, která je potomkem JComponent, to je moºné tímto zp·sobem:
this.paint(svgGenerator);
16
KAPITOLA 2.
TEORETICKÁ ÁST
Chceme-li pouºít ke generování jinou instanci t°ídy, která obsahuje vlastní paint metodu, je poté pouºití generátoru následující:
TestSVGGen test = new TestSVGGen(); test.paint(svgGenerator); A náln¥ se vytvo°í stream SVG obsahu, který je moºný vypsat na standardní výstup nebo uloºit do souboru. Jako kódování je moºné pouºít UTF-8.
boolean useCSS = true; // pouºít atributy CSS stylu ve výsledném SVG // vypsání na standartní výstup Writer out = new OutputStreamWriter(System.out, "UTF-8"); svgGenerator.stream(out, useCSS); // uloºení do souboru File file = new File("export.svg"); String filename = file.getAbsolutePath(); svgGenerator.stream(filename, useCSS); 2.7
Java 3D
Java 3D [6] je objektov¥ orientované API, slouºící k zobrazování trojrozm¥rné graky. Java 3D není p°ímo sou£ástí Java API, ale jedná se o voliteln¥ instalovatelné rozhraní. Od verze 1.2 je vyvíjen v rámci Java Community Process4 . Knihovna t°íd Java 3D poskytuje rozhraní jednodu²²í neº rozhraní mnoha jiných grackých knihoven. Pro vykreslování je pouºíváno OpenGL nebo Direct3D. Pro p°ístup k funkcím Javy 3D je pouºíváno £ist¥ objektov¥ orientované rozhraní. Scéna je konstruována pomocí grafu scény, reprezentující v²echny objekty, které se mají vykreslit. Graf scény (vesmíru) je strukturován jako strom, obsahující n¥kolik element· pot°ebných k zobrazení objekt·.
2.7.1 Struktura scény Graf scény obsahuje jednotlivé uzly [7], které mohou být bu¤ listy nemající potomky, a nebo skupiny (Group), které potomky mít mohou. Základem kaºdé scény je objekt VirtualUniverse. Na n¥j jsou poté napojeny ostatní objekty. ast¥ji se ov²em pouºívá jednodu²²í a mén¥ modikovatelný SimpleUniverse, podt°ída VirtualUniverse. Ve stromové struktu°e reprezentující acyklický graf scény (SceneGraph) je tedy vrcholem VirtualUniverse. Ten obsahuje mnoºinu objekt· typu Locale, p°edstavující v²echny objekty vytvo°eného vesmíru. Na objekty Locale se poté váºí objekty typu BranchGroup. Objekty BranchGroup jsou uzly, které drºí v²echny útvary, sv¥tla £i transformace scény. Z obrázku 2.11 je patrné, ºe objekty BranchGroup d¥lí graf scény na jednotlivé v¥tve. Jedná se o v¥tve obsahové (na obrázku vlevo), popisující jednotlivá t¥lesa, a v¥tve pohledové (na obrázku vpravo), které ur£ují zp·sob zobrazení scény. Zatímco v¥tví s obsahem bývá ve scén¥ mnoho, pro stanovení pohledu sta£í v¥tev jediná pro celý vesmír. Java 3D API obsahuje n¥kolik objekt·, slouºících k vykreslení jednotlivých grackých primitiv (geometrických tvar·). Konkrétn¥ se jedná o: 4 Java Comunnity Process (JCP) je proces vytvo°ený rmou Sun Microsystems a pouºívaný k vývoji r·zných sou£ástí platformy Java. Umoº¬uje dal²ím rmám podílet se na vývoji platformy Java.
KAPITOLA 2.
17
TEORETICKÁ ÁST
VirtualUniverse
Locale
BG
BG
BranchGroup
TG
TG
TransformGroup
Shape3D
View
S
Canvas3D
Screen3D
View Platform
Appearance
Geometry Physical Body
LineAttributes
Material
Physical Environment
Coloring Attributes
Obrázek 2.11: Stromová struktura 3D scény
•
Box - kvádr
•
Cone - kuºel
•
Cylinder - válec
•
Sphere - koule
Pro zm¥nu polohy jsou p°ipraveny objekty TransformGroup a Transform3D, obsahující transforma£ní matici pro rotaci, posunutí a zm¥nu m¥°ítka. Pro pot°eby informací o optických vlastnostech grackého objektu a metod jeho renderování, tedy nap°íklad nastavení barvy £i textur, slouºí objekt Appearance. Tomu je p°edán objekt Material, denující reakci povrchu t¥lesa na r·zné typy odraz· sv¥telných zdroj·. Pokud nemá gracký objekt p°i°azeny materiálové vlastnosti, lze pomocí objektu ColoringAttributes denovat jeho barvu.
2.7.2 P°íklad pouºití Javy 3D Nejlépe lze základní pouºití pochopit na jednoduchém p°íkladu. Proto je zde ukázáno jak postupovat pro vykreslení barevné krychle se základním pooto£ením. Jak vypadá výsledné zobrazení je vid¥t na obrázku 2.12. Krychle bude reprezentována objektem t°ídy ColorCube. T°ída ColorCube je svým zp·sobem velmi kuriózní, jelikoº denuje krychli, jejíº kaºdá strana má jinou barvu a jediné, co u ní je moºné zm¥nit, je její velikost. Proto je £asto vyuºívána v podobných programech typu HelloWorld. Nejprve je nutné získat objekt GraphicsConfiguration, který je pot°eba p°i vytvá°ení nové instance t°ídy Canvas3D. Poté se vytvo°í Canvas3D, na který se celá scéna vykresluje a nový
18
KAPITOLA 2.
TEORETICKÁ ÁST
Obrázek 2.12: P°íklad zobrazení barevné krychle v Java 3D
SimpleUniverse pro reprezentaci grafu scény. A kone£n¥ se také vytvo°í objekt BranchGroup, slouºící jako ko°en pro zobrazovanou krychli. GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas = new Canvas3D(config, false); SimpleUniverse universe = new SimpleUniverse(canvas); BranchGroup rootKrychle = new BranchGroup(); Aby byla krychle pooto£ená, je pot°eba vytvo°it objekt TransformGroup. Jemu musíme nastavit transforma£ní matici, která vznikne vynásobením dvou transforma£ních matic. Kaºdé z nich nastavíme úhel oto£ení. TransformGroup se p°idá jako následník do objektu BranchGroup rootKrychle. A kone£n¥ barevná krychle se p°idá jako následník do objektu transformGroup.
Transform3D rotace = new Transform3D(); Transform3D tempRotace = new Transform3D(); rotace.rotX(Math.PI/4.0d); tempRotace.rotY(Math.PI/5.0d); rotace.mul(tempRotace); TransformGroup transformGroup = new TransformGroup(rotace); rootKrychle.addChild(transformGroup); transformGroup.addChild(new ColorCube(0.4)); Nyní uº zbývá pouze metodou compile optimalizovat celý graf scény. Ta slu£uje p°ípadné p°ímo navazující transformace do jedné. Posledními kroky je nastavení vzdálenosti pozorovatele od obrazovky, aby byla vid¥t celá krychle a následn¥ se p°idá £ást grafu s krychlí do stromu.
rootKrychle.compile(); universe.getViewingPlatform().setNominalViewingTransform(); universe.addBranchGraph(rootKrychle);
KAPITOLA 2.
2.8
TEORETICKÁ ÁST
19
Knihovna pro 3D vizualizaci neuronových sítí
V rámci své diplomové práce [15] vytvo°il Jan Drchal knihovnu pro 3D vizualizaci rekurentních neuronových sítí. Pomocí této knihovny lze rovn¥º vizualizovat dop°edné neuronové sít¥. Ukázku takové vizualizace najdete na obrázku 2.13. Takováto 3D vizualizace má velikou výhodu v tom, ºe uºivatel m·ºe jednodu²²eji a z°eteln¥ji pozorovat jednotlivá spojení mezi neurony. U standardních 2D vizualizací se totiº £asto jednotlivá propojení p°ekrývají.
Obrázek 2.13: Vizualizace dop°edné sít¥ V knihovn¥ je rovn¥º implementována moºnost rotace, posunu a p°ibliºování grackých objekt·, tedy celých vykreslených sítí. Dal²í uºite£nou vlastností je snímání polohy kurzoru. P°i jeho umíst¥ní nad n¥který z neuron· je vypsána informace o n¥m (jeho jedine£né ID a hodnota prahové úrovn¥), a také se zvýrazní spojení, která z n¥j vedou. Jednotlivé typy neuron· jsou barevn¥ odli²eny - ºlut¥ jsou ozna£eny vstupy, £erven¥ výstupy a zelen¥ skryté neurony. Tlou²´ka jednotlivých spojení mezi neurony koresponduje s jejich hodnotou váhy. Jednotlivé neurony jsou umís´ovány do vrstev podle nejmen²ího po£tu simula£ních krok·, které pot°ebuje ²í°ící se signál na dosaºení neuronu ze vstupu sít¥. Dop°edná spojení jsou vykreslována nad úrove¬ neuron·, zp¥tná pod ní. Barevn¥ jsou rozli²eny taky jednotlivé typy spojení. Spojení mezi neurony uvnit° jedné vrstvy (laterální) jsou zobrazeny mod°e, linky spojující neuron sám se sebou jsou ºluté. 3D vizualiza£ní knihovna byla navrºena jako sou£ást aplikace NeuroEvolution, slouºící k simulaci implementace NEAT (NeuroEvolution Of Augmenting Topologies). Byla ov²em vytvo°ena tak, aby mohla být jednodu²e odd¥lena a pouºita v rámci jiné apliakce. Nutností je pouze p°idání knihoven Java 3D, které vyuºívá.
20
KAPITOLA 2.
TEORETICKÁ ÁST
2.8.1 Jednoduchý p°íklad pouºití Vzhledem k tomu, ºe vizualiza£ní knihovna jiº obsahuje v²echna pot°ebná nastavení 3D scény, osv¥tlovacího modelu a pohledu, je vytvo°ení vizualizace sít¥ pom¥rn¥ jednoduché. Prakticky sta£í vloºení podobného kódu:
//inicializace VNet3D vn = new VNet3DJ3D(); //zm¥na parametr· sít¥, pokud je pot°eba vn3d.LINK_MAX_RADIUS = 0.01; //p°idání neuronu vn.addNode(1, VNet3D.IN); //p°idání spojení vn.addLink(1, 1, 2, 0.5); //vykreslení vizualizace do okna 800x800 pixel· vn.draw(800, 800);
2.8.2 Popis knihovny Pro zobrazovaní struktury induktivních model· je ov²em zapot°ebí dopln¥ní a mírné úpravy knihovny, proto zde bude uveden i mírn¥ podrobn¥j²í popis knihovny. Pro lep²í p°edstavu je na obrázku 2.14 uvedena £ást zjednodu²eného diagramu t°íd. Vstupním místem pro vytvo°ení vizualizace je t°ída VNetJ3D. Ta je potomkem abstraktní t°ídy VNet3D, v níº je uloºena vlastní reprezentace sít¥. Ta je tvo°ena n¥kolika datovými strukturami, do nichº se ukládají jednotlivé uzly (objekty NodeJ3D, d¥dící vlastnosti od Node) a spojení (objekty LinkJ3D, d¥dící od Link). Vloºení nových objekt· do struktur pro popis sít¥ probíhá p°i volání metod addNode a addLink. T°ída VNetJ3D obsahuje metodu draw, slouºící k vytvo°ení vizualiza£ního okna a vykreslení 3D scény. V ní se pomocí metod createLayers, setNodePositionsInLayer a setNodePositions rodi£ovské t°ídy VNet3D postupn¥ vytvo°í jednotlivé vrstvy neuron·, ur£í se jejich po°adí ve vrstv¥ a stanoví jejich sou°adnice v prostoru pro 3D zobrazení. Dále se nastaví vý²ka v²ech spojení (setLinkPositionsInLayer), aby pokud moºno nedocházelo k jejich p°ek°íºení, a zjistí se minimální a maximální váhy spojení (getMinMaxWeights), která jsou pot°ebná p°i pozd¥j²ím vykreslování. Následn¥ je vytvo°ena instance t°ídy JK, coº je vlastn¥ JFrame, obsahující navíc metody pro vytvo°ení spodní kontrolní li²ty pro výpis informací o síti a Canvas, slouºící pro vykreslování vizualizace. P°esn¥ji °e£eno, metoda pro vytvo°ení Canvas vrací instanci t°ídy JKCanvasJ3D, která je potomkem t°ídy Canvas3D. Canvas3D je poté t°ída z balíku Javy 3D, která roz²i°uje t°ídu Canvas o moºnosti renderování 3D grackých objekt·. Pro vykreslení uzl· a spojení slouºí metody drawNodes a drawLinks. V nich se pro v²echny vytvo°ené objekty uzl· a hran volají jejich draw metody, p°i£emº se pouºijí jednotlivá gracká primitiva JKCanvasJ3D. Metody t°ídy JKCanvasJ3D umoº¬ují jednoduché kreslení základních tvar· jako koule (drawSphere), kuºel (drawCone), linka (drawLine), válec (drawCylinder). Dále jsou k dispozici metody pro kreslení specických grackých objekt·, drawMark pro zna£ky, drawArrow pro ²ipky a drawScalarMap pro skalární mapy. Kaºdá z t¥chto metod vytvá°í odpovídající gracký objekt, který je potomkem spole£né abstraktní t°ídy GOB3D. V ní se specikují jednotlivé vlastnosti grackých objekt· pot°ebných pro Javu 3D. V²echny vytvo°ené gracké objekty se ukládají do kolekce typu ArrayList t°ídy JKCanvasJ3D. Její metoda redrawAll slouºí k sestavení celé 3D scény a nastavení pot°ebných
KAPITOLA 2.
TEORETICKÁ ÁST
21
Obrázek 2.14: ást zjednodu²eného diagramu t°íd vizualiza£ní knihovny
parametr· Javy 3D. Pro vykreslení objekt· na plátn¥ je nutné ji zavolat. Poslední vlastností vizualiza£ní knihovny, kterou je vhodné zd·raznit, je snímání polohy kurzoru. Ta umoº¬uje získat jednozna£né ID grackého objektu. Poté se jiº mohou metodou setColor obarvit gracké objekty, které se mají zvýraznit.
22
KAPITOLA 2.
TEORETICKÁ ÁST
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
23
3 Srovnání open source nástroj· pro vizualizaci sít¥ Hlavním kritériem pro pr·zkum dostupných nástroj·, které by mohly poslouºit k vizualizaci topologie dop°edné sít¥, byla jejich otev°ená licence. M¥lo by se jednat o open source aplikace, nikoliv o komer£ní produkty. Dále jsem se p°i hledání snaºil zam¥°it na projekty, které nabízejí jednoduchou implementaci, ale zárove¬ také ²iroké moºnosti vizualizace. 3.1
Graphviz
Graphviz je p·vodn¥ unixový nástroj pro tvorbu graf· a diagram·. Podrobn¥j²í informace lze najít na ociálních stánkách projektu [5]. Jeho vývoj za£aly výzkumné laborato°e AT&T1 . Díky ²iroké komunit¥ jsou momentáln¥ k dispozici verze i pro ostatní opera£ní systémy jako Windows, Mac Os X, r·zné linuxové distribuce a unixové systémy FreeBSD a Solaris. Výhodou Graphvizu je, ºe diagramy se nevytvá°ejí pomocí GUI, ale pomocí jednoduchého DOT jazyku. K dispozici jsou také knihovny, díky kterým je moºné pouºít jednotlivé nástroje Graphvizu ve vlastní aplikaci.
Obrázek 3.1: Graphviz: vizualizace sít¥ pro výpo£et XOR Graphviz se skládá z jiº vý²e jmenovaného DOT jazyka a sady nástroj·, které um¥jí generovat a/nebo zpracovávat DOT soubory. Jednotlivé nástroje jsou:
1
•
dot - nástroj pro rozvrºení (layout) orientovaných graf· do r·zných výstupních formát·
•
neato - obdobný nástroj jako dot pro neorientované grafy
•
twopi - nástroj pro paprskové rozvrºení grafu
•
circo - nástroj pro kruhové rozvrºení grafu
•
fdp - dal²í nástroj pro layout u neorientovaných graf·
•
dotty - GUI pro vizualizaci a editaci graf·
americká telekomunika£ní spole£nost
24
KAPITOLA 3.
•
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
lefty - programovatelný widget2 , který zobrazuje DOT grafy a umoº¬uje uºivateli provád¥t
na n¥m akce pomocí my²i. Lefty proto m·ºe být pouºit v MVC3 GUI aplikacích, které pouºívají grafy.
Graphviz nabízí mnoho moºností pro výstupní formát. Mezi nejzajímav¥j²í pat°í:
• obrázkové formáty PNG, JPEG, GIF • vektorový formát SVG • postscriptový formát PS Samoz°ejmostí je moºnost upravovat vlastní vzhled graf·. Je moºné volit nap°íklad barvy graf·, typy font·, styly £ar, tabulkové layouty uzl·, hypertextové odkazy a uºivatelsky denované tvary.
3.1.1 DOT jazyk DOT je jazyk pro popis graf· ve formátu plain text, tedy "£istý" text bez formátování. Jedná se o jednoduchou formu popisu, kterou m·ºe pouºívat jak uºivatel, tak po£íta£ový program. DOT grafy jsou v¥t²inou soubory s koncovkou .dot. Existuje mnoºství program·, které umí grafy v DOT formátu p°e£íst a renderovat nebo poskytnout prost°edí k manipulaci s grafy.
3.1.1.1 Základy syntaxe DOT jazyk m·ºe být pouºit k reprezentaci neorientovaných graf·. V tomto p°ípad¥ se pouºívá klí£ové slovo graph, ozna£ující za£átek grafu. Popis jednotlivých uzl· je uzav°en mezi sloºené závorky. Pro spojení mezi jednotlivými uzly se pouºívá dvojitá poml£ka (). Pouºití DOT jazyku - p°íklad £. 1 (obrázek 3.2):
graph graphname { a -- b -- c; b -- d; } Dále je moºné pouºít DOT jazyk k popisu orientovaných graf·. Syntaxe je podobná té, která se pouºívá pro neorientované grafy. Jedinými rozdíly jsou klí£ové slovo diagraph, které ozna£uje po£átek grafu, a nutnost pouºít ²ipku (>) k znázorn¥ní spojení mezi uzly. Pouºití DOT jazyku - p°íklad £. 2 (obrázek 3.3):
digraph graphname { a -> b -> c; b -> d; } komponenta GUI, dovolující interakci s uºivatelem model-view-controller, softwarová architektura rozd¥lující datový model aplikace, uºivatelské rozhraní a °ídící logiku do t°í nezávislých komponent 2 3
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
25
Obrázek 3.2: DOT jazyk: p°íklad £. 1
Obrázek 3.3: DOT jazyk: p°íklad £. 2
V DOT jazyku je samoz°ejm¥ moºné pouºít komentá°e. Podporovány jsou komentá°e ve stylu C/C++, tedy dvojité lomítko (// komentá°) pro jedno°ádkový komentá° a konstrukce lomítko-hv¥zda (/* komentá° */) pro více°ádkové komentá°e. Navíc jsou ignorovány v²echny °ádky za£ínající znakem #. Dále lze k uzl·m a hranám p°i°adit atributy ovliv¬ující jejich barvu, tvar £i styl £áry. Tyto atributy se umís´ují vºdy do hranatých závorek ([nazev=hodnota]) p°ímo za p°íkaz a p°ed st°edník. Popis pro atributy uzl· je umíst¥n p°ímo za p°íkaz, obsahující pouze název uzlu a ºádné jiné vztahy (spojení). Pouºití DOT jazyku - p°íklad £. 3 (obrázek 3.4):
graph graphname { // The label attribute can be used to change the label of a node a [label="Foo"]; // Here, the node shape is changed. b [shape=box]; // These edges both have different line properties a -- b -- c [color=blue]; b -- d [style=dotted]; }
26
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
Obrázek 3.4: DOT jazyk: p°íklad 3
3.2
Tulip Software
Jedná se o aplikaci spadající do oblasti vizualizace informací tzv. InfoViz. Software byl vytvo°en Davidem Auberem z Université Bordeaux a je roz²irován pod licencí GNU General Public License. Více o aplikaci se lze dozv¥d¥t na [14].
Obrázek 3.5: Tulip Software: vizualizace sít¥ pro výpo£et XOR I kdyº framework Tulipu dovoluje vizualizaci, návrh i editaci malých graf·, v²echny £ásti frameworku byly tvo°eny tak, aby byly schopné vizualizovat grafy obsahující více neº jeden milion element·. Takovýto vizualiza£ní systém musí kreslit i zobrazovat rozsáhlé grafy, povolit jednoduchou navigaci skrze celý graf, stejn¥ tak jako vytaºení ur£ité oblasti grafu (subgrafu) a moºnost jeho zv¥t²ení. Architektura Tulipu mimo jiné nabízí 3D vizualizaci grafu s moºností modikace, systém p°ídavných modul· (plug-ins ) pro snadný vývoj dal²ích funkcí, automatické kreslení graf·, automatický výb¥r element· a automatické metrické obarvení grafu (metric coloration ). Pro ukládání informací o vytvo°eném grafu je pouºíván formát TLP (Tulip Software Graph Format ). Tulip ale umoº¬uje i import soubor· v jiném formátu neº TLP. Je tak moºné nahrát grafy uloºené ve formátu DOT (pouºíván nap°. v GraphVizu), GML (Graph Modelling Language)
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
27
nebo textovém formátu, obsahujícím matici sousednosti grafu. Export z aplikace je poté moºný do formátu TLP a GML. P°i ukládání do obrázku je moºné volit mezi formáty BMP, EPS, JPEG, PBM, PGM, PNG, PPM, SVG, XBM, XPM. Na grafy je v programu moºné aplikovat r·zné algoritmy, pat°ící do rozli£ných kategorií. Jedná se o algoritmy pro výb¥r element·, tedy ozna£ení uzl· nebo hran, které spl¬ují zadanou podmínku. Dále pak je moºné aplikovat obarvovací algoritmy, které mohou nastavit barvu prvk· t°eba podle jejich aktuální vzdálenosti. Dal²í jsou m¥°ící algoritmy, po£ítající vlastnosti grafu jako je stupe¬ uzlu, tedy po£et jeho soused·. Pro zobrazení topologie neuronové sít¥ je z°ejm¥ nejzajímav¥j²í kategorie pro rozloºení (layout) grafu. Díky ní je moºné graf zobrazit v r·zných pohledech. U dop°edné neuronové sít¥ se z mého osobního pohledu jako nejvhodn¥j²í jevilo zobrazení Hierarchical Graph, tedy hiearchický graf s jednotlivými úrovn¥mi uzl·. Zde je moºné jako jednu úrove¬ brát vrstvu neuronové sít¥.
Obrázek 3.6: Tulip Software: vizualizace sít¥ importované z formátu DOT, layout Hierarchical Graph
U kaºdého grafu lze kontrolovat jeho vlastnosti. Jednodu²e tak zjistíme, zda je graf prostý, zda-li se jedná o acyklický graf £i zda jde o orientovaný strom. Graf lze potom automaticky upravit tak, aby spl¬oval podmínky pro vybranou vlastnost.
3.2.1 tplrender tplrender je renderer pro p°íkazovou °ádku zaloºený na Tulipu. Po zadání popisu grafu je schopen aplikovat n¥který z algoritmu pro layout grafu a jeho následné uloºení do vybraného formátu. Pro jeho zprovozn¥ní jsou nezbytné knihovny Mesa a OSMesa, slouºící k renderování mimo obrazovku. Povinné parametry pro renderovací p°íkaz jsou typ vstupního souboru s denicí grafu a prex jména souboru, který bude vytvo°en. Jako výchozí vstupní typ je brán TLP formát Tulipu, lze ov²em pouºít v²echny typy, jeº umí Tulip importovat. Jako nepovinné parametry se poté ur£uje velikost a formát (standartn¥ JPEG) vytvo°eného obrázku a název layoutu, který se pouºije.
28
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
3.2.2 Tulip Software Graph Format (TLP) První °ádka TLP souboru musí obsahovat specikaci verze formátu (od Tulip 3 se jedná o verzi 2.0). Denice je uzav°ená do závorek, kaºdý °ádek za£ínající st°edníkem je ignorován. Tyto závorky také uzavírají v²echny pot°ebné denice grafu (uzly a hrany). Jako dodate£né informace lze do hlavi£ky souboru uvést datum vzniku, jméno autora a komentá°. P°íklad takové hlavi£ky je uveden na následujícím p°íkladu:
(tlp "2.0" (date "09-09-2007") (author "Jaroslav Matousek") (comments "Zde muze byt komentar ke grafu") ; dal²í definice (uzly a hrany, vlastnosti) ... ) Jednotlivé uzly (nodes) jsou denovány jako list jejich index·. Ty musí být p°irozené £íslo. Hrany (edge) jsou ur£eny t°emi p°irozenými £ísly. Prvním je index hrany, druhým index uzlu, ze kterého hrana vychází, a t°etím index uzlu, do kterého hrana vstupuje. P°íklad ur£ení uzl· a hran:
(nodes 1 2 3 4 5 ) (edge 2 2 1) Pro ur£ení vlastností jednotlivých element· se pouºívá klí£ové slovo property. Po n¥m následuje identika£ní £íslo podgrafu, pro který vlastnost ur£ujeme (pokud graf není rozd¥lený denuje se pro root graf s id 0). Dále se ur£í typ vlastnosti. Zde se m·ºe napsat jedna z moºností bool, color (R, G, B), double, layout (sou°adnice x, y, z), int, size (²í°ka, vý²ka, hloubka) nebo string. Poslední je poté název vlastnosti, kterou denujeme. Základními jsou viewColor, viewLabel, viewLayout, viewSelection, viewSize a viewShape. Nejjednodu²²í je ukázat si denici vlastností na p°íkladu:
(property 0 color "viewColor" (default "(235,0,23,255)" "(0,0,0,0)" ) (node 1 "(200,0,200,255)") (node 2 "(100,100,0,255)") (node 3 "(100,100,0,255)") (edge 2 "(200,100,100)") ) 3.3
Graph Gear
Graph Gear je malá, jednoduchá a zajímavá aplikace pro v²echny moºné platformy, slouºící k vizualizaci graf·. Je distribuována pod GNU GPL licencí a stáhnout ji lze na [4]. Umoº¬uje vytvá°et interaktivní grafy s rozvrºením jednotlivých uzl· pomocí silou °ízeného umís´ování (Force-directed placement [23]). Graf je pomocí javascriptu renderován z XML souboru a zobrazován pomocí SWF objektu. Jedná se tedy o ashovou animaci zobrazenou na HTML stránce. Se zobrazeným grafem m·ºe uºivatel pomocí my²i libovoln¥ pohybovat. V²echny uzly, hrany, barvy jednotlivých prvk· i jejich popisky se denují uvnit° XML souboru.
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
29
Obrázek 3.7: GraphGear: vizualizace sít¥ pro výpo£et XOR
Nevýhodou této aplikace je, ºe zobrazuje pouze neorientované grafy, má omezenou moºnost interakce uºivatele s jednotlivými uzly a momentáln¥ lze pouºít pouze jeden typ uzl·. V dal²ích verzích je plánováno roz²í°ení po£tu typ· uzl· a moºnost importu jiných typ· pro popis graf· (nap°. GML). Jak nadenovat graf pomocí vstupního XML souboru je patrné z následujícího p°íkladu:
<node id="n1" text="x" color="0x66cc33" textcolor="0xffffff"/> <node id="n2" text="y" color="0x66cc33" textcolor="0xffffff"/> <node id="n3" text="1" color="0xff0000" textcolor="0xffffff"/> <node id="n4" text="2" color="0xff0000" textcolor="0xffffff"/> <node id="n5" text="1" color="0xff0000" textcolor="0xffffff"/> <node id="n6" text="z" color="0x0033ff" textcolor="0xffffff"/> <edge <edge <edge <edge <edge <edge <edge 3.4
sourceNode="n1" sourceNode="n1" sourceNode="n2" sourceNode="n2" sourceNode="n3" sourceNode="n4" sourceNode="n5"
targetNode="n3" targetNode="n4" targetNode="n4" targetNode="n5" targetNode="n6" targetNode="n6" targetNode="n6"
label="1" textcolor="0x555555"/> label="1" textcolor="0x555555"/> label="1" textcolor="0x555555"/> label="1" textcolor="0x555555"/> label="1" textcolor="0x555555"/> label="-2" textcolor="0x555555"/> label="1" textcolor="0x555555"/>
A Graph Library Extension of SVG
Kurt Normark, lektor z dánské univerzity v Aalborgu, vytvo°il roz²í°ení [22] pro specikaci formátu SVG verze 1.1. Toto roz²í°ení umoº¬uje snadné vytvá°ení graf· pomocí p°idávání uzl· a hran mezi nimi. Jsou podporovány rozmanité tvary uzl·, moºnosti p°ipojení hran k uzl·m a styly zobrazování hran. Jak uzly, tak i hrany mohou být ozna£eny popiskem. Navíc existuje n¥kolik moºností jak grafy animovat.
30
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
Startovacím bodem tohoto roz²í°ení SVG je knihovna, poskytující p°esný obraz SVG 1.1 ve funkcionálním programovacím jazyce Scheme. Kaºdý element z SVG 1.1 je reprezentován jako specická funkce ve Scheme. P°íkazy pro vykreslení grafu jsou poté implementovány jako funk£ní abstrakce nad obrazem funkcí SVG 1.1. Cílem této práce ov²em nebylo automatické rozmís´ování jednotlivých prvk· v grafu. Sou£asná verze softwaru pot°ebuje p°esné ur£ení pozice kaºdého uzlu. Mechanismus roz²í°ení SVG je zaloºen na obecném mechanismu pro roz²í°ení XML jazyka. Základní my²lenkou je p°evést SVG dokument na výraz ve funkcionálním jazyce, který bude vracet SVG hodnotu. Pro kaºdý element v SVG tak existuje korespondující zrcadlová (mirror) funkce ve Scheme. Název mirror funkce je stejný jako název SVG elementu. Soubor zrcadlových funkcí v Scheme jazyku, které odpovídají funkcím v SVG 1.1, je generován automaticky p°ímo z denice typu dokument· SVG 1.14 , a to pomocí nástroj· obsaºených v softwaru LAML [13]. LAML je software vytvo°ený také Kurtem Normarkem, s hlavní my²lenkou p°enést XML a HTML do oblasti programovacího jazyka Scheme. Pomocí LAMLu lze mimo jiné vytvo°it webové stránky v jazyce Scheme nebo transformovat XML dokumenty. Jak se v·bec grafy vytvá°ejí je op¥t nejlep²í ukázat p°ímo na p°íklad¥:
(let* ((x1 100) (x2 (+ x1 100)) (x3 (+ x2 100)) (y1 100) (y2 (+ y1 100)) (y3 (+ y2 100)) (stroke-props (list 'stroke "black" 'stroke-width "1" 'arrow "yes")) ) (let* ( (node-a (svg-node rectangular x1 y3 "x" 'min-width 50 'bg-color "grey")) (node-b (svg-node rectangular x2 y3 "y" 'min-width 50)) (node-c (svg-node rectangular x1 y2 "1" 'min-width 50 'bg-color "red")) (node-d (svg-node rectangular x2 y2 "2" 'min-width 50 'bg-color "red")) (node-e (svg-node rectangular x3 y2 "1" 'min-width 50 'bg-color "red")) (node-f (svg-node rectangular x1 y1 "z" 'min-width 50 'bg-color "lightblue")) (edge1 (svg-edge node-a "ct" node-c "cb" stroke-props 'ldx 5 'ldy 5 "1")) (edge2 (svg-edge node-a "ct" node-d "cb" stroke-props 'ldx 5 'ldy 5 "1")) (edge3 (svg-edge node-b "ct" node-d "cb" stroke-props 'ldx 5 'ldy 5 "1")) (edge4 (svg-edge node-b "ct" node-e "cb" stroke-props 'ldx 5 'ldy 5 "1")) (edge5 (svg-edge node-c "ct" node-f "cb" stroke-props 'ldx 5 'ldy 5 "1")) (edge6 (svg-edge node-d "ct" node-f "cb" stroke-props 'ldx 5 'ldy 5 "-2")) (edge7 (svg-edge node-e "ct" node-f "cb" stroke-props 'ldx 5 'ldy 5 "1")) ) (svg-graph (list node-a node-b node-c node-d node-e node-f) (list edge1 edge2 edge3 edge4 edge5 edge6 edge7) )))
'font-size "16" 'font-size "16" 'font-size "16" 'font-size "16" 'font-size "16" 'font-size "16" 'font-size "16"
Vn¥j²í p°íkaz let* denuje soustavu sou°adnic a vlastnosti vykreslení £ar. Vnit°ní p°íkaz poté denuje jednotlivé uzly a hrany. Uzly jsou pozicovány absolutn¥ pomocí p°edchozí denice. Jsou 4
SVG 1.1 DTD - Document Type Denition
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
31
Obrázek 3.8: SVG Graph Library: vizualizace sít¥ pro výpo£et XOR
ur£eny svým jménem (nap°. node-a) a za klí£ovým slovem svg-node se u nich povinn¥ uvádí jejich tvar a ob¥ sou°adnice v po°adí x, y. Mezi klí£ová slova pro denici tvaru pat°í circular pro kruh, cloud pro oblá£ek, diamond pro koso£tverec, triangular pro trojúhelník a rectangular pro £tverec. Dále je moºno uvést popisek uzlu a dal²í vlastnosti, jako minimální ²í°ku objektu £i jeho barvu. Denice hran je uvedena názvem hrany (nap°. edge1) a klí£ovým slovem svg-edge. Pro denici hran jsou nutné £ty°i parametry. Konkrétn¥ se jedná o uzly, které má hrana spojovat a zp·sob napojení hrany na oba uzly. Ten je specikován dvojicí znak· hv, popisujících horizontální a vertikální ur£ení místa napojení. h m·ºe nabývat hodnot l, c, nebo r (vlevo, uprost°ed, vpravo); v potom m·ºe nabývat hodnot t, c a b (naho°e, uprost°ed, dole). V dal²ích nepovinných parametrech m·ºeme up°esnit velikost fontu pro popisky a jejich umíst¥ní, tedy posunutí v ose x a ose y oproti st°edu hrany. Jak u uzl·, tak u hran lze denovat veliké mnoºství r·zných nepovinných XML atribut·. Vlastní vytvo°ení grafu zaji²´uje funkce svg-graph, která má jako své parametry seznamy uzl· a hran. Tato funkce vrací vyrenderovaný graf ve specikaci formátu SVG, tedy jako skupinu fragment· p°íkaz· rect a path. 3.5
GINY: Graph INterface librarY
GINY je gracká knihovna napsaná v jazyce Java. Implementuje pom¥rn¥ zajímavý systém pro tvorbu podgraf·. Poskytuje mnoºství algoritm· na automatické rozmíst¥ní prvk· grafu. Auto°i ozna£ují GINY jako knihovnu s velmi intuitivním programovacím rozhraním. Celý projekt je p°edev²ím zam¥°en na moºnost aplikace r·zných grafových algoritm· na vytvá°ené grafy. Pro vizuální stránku knihovny je pouºit framework Piccolo 5 . Jedná se o takzvané ZUI (Zoomable User Interface ), tedy 2D gracké rozhraní, umoº¬ující jednoduché p°íblíºení vykreslených objekt·. Více o projektu lze nalézt na serveru Sourceforge [3]. Mezi projekty, které tuto knihovnu k vizualizaci pouºívají, pat°í Cytoscape6 . http://www.cs.umd.edu/hcil/piccolo/ Cytoscape (http://www.cytoscape.org/) je open source bioinformatický software pro zobrazení sítí molekulárních interakcí 5 6
32
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
Obrázek 3.9: Ukázka vizualizace vytvo°eného pomocí GINY
Knihovna GINY (obrázek 3.10) má jasné odd¥lení svého rozhraní na £ást modelovou (Model) a £ást zobrazovací (View). Výhoda rozd¥lení se uplatní v p°ípadech, kdy aplikace bez jakékoliv graky cht¥jí pouºít algoritmy z knihovny. Nemusejí tak být zat¥ºovány záleºitostmi týkajícími se graky. V modelové £ásti (giny.model) se nacházejí £ty°i t°ídy, a to GraphRoot, GraphPerspective, Node, a Edge. Zatímco t°ída GraphRoot reprezentuje skupinu v²ech uzl· (Node) a hran (Edge) v grafu, GraphPerspective m·ºe být libovolné velikosti a obsahovat ºádný nebo v²echny objekty z GraphRoot. Instancí GraphPerspective m·ºe být více a mohou obsahovat stejné uzly a hrany. Ve²keré grafové algoritmy, které chceme pouºít, se aplikují práv¥ na jednotlivé instance t°ídy GraphPerspective. V zobrazovací £ásti (giny.view) jsou k dispozici t°i t°ídy, konkrétn¥ GraphView, NodeView a EdgeView. V²echny jsou závislé na balí£ku giny.model a slouºí k zobrazení jeho t°íd. Jedinou t°ídou, kterou nelze p°ímo zobrazit, je GraphRoot. 3.6
JGraph a JGraphT
Dal²í dv¥ knihovny, slouºící pro vizualizaci graf·, které jsou ²í°eny jako open source projekty, jsou JGraph a JGraphT. Jak jiº z jejich názvu vyplývá, jsou si velice blízké.
3.6.1 JGraph JGraph nabízí mnoho r·zných kreslících funkcí. Pomocí její API jsou uºivatelé schopni vizualizovat grafy, vytvá°et s nimi rozli²né formy interakce, provád¥t automatické rozvrºení grafu (layout) a analýzu grafu. JGraph je ²í°ena pod licencí GNU Lesser General Public License a k její kompilaci je pot°eba nástroj pro automatické sestavování Apache Ant. Knihovna JGraph [9] je zaloºena na javovské komponent¥ Swing. Mezi zajímavé vlastnosti JGraph pat°í libovolné p°iblíºení grafu, takzvaný Zoom. Pro tuto vymoºenost je pouºívána Java2D. Dále stojí za zmínku moºnost tvorby vrstev, nastavování pr·hlednosti pro kreslené prvky a funkce zp¥tného kroku (Undo) pro v²echny dostupné operace. Programátor si m·ºe zvolit typ uzlu podle své libosti, a´ uº se bude jednat o libovolný tvar, obrázek nebo jiná Swing
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
33
Obrázek 3.10: P°ehled rozhraní GINY
komponenta (dokonce i dal²í JGraph). Pro pot°eby automatického rozvrºení komponent grafu slouºí knihovna JGraph Layout Pro. Ta je dostupná na stránkách projektu[9] pod GNU GPL licencí. JGraph Layout Pro vezme strukturu grafu denovanou pomocí knihovny JGraph a na této grafové struktu°e vykoná bu¤ jednu nebo ob¥ dv¥ specické funkce. První je umíst¥ní uzl· grafu za pouºití algoritmu, který se snaºí splnit zadané poºadavky pro pozici uzl·. P°íkladem m·ºe být stromový layout (Tree layout), snaºící se jednotlivé uzly umístit do stromové struktury. Druhou funkcí je za pomocí obdobného algoritmu jako u uzl· p°idat nebo odebrat kontrolní body hran.
3.6.2 JGraphT JGraphT je knihovnou, která pro vizualizaci graf· pouºívá JGraph. Knihovna ke staºení se nachází na serveru Sourceforge [10] a pouºívat ji lze pod licencí GNU LGPL. Je schopna zobrazit jak neorientované, tak orientované grafy. Jednotlivé hrany mohou být ozna£eny svojí váhou. P°i zobrazení grafu má programátor na výb¥r, zda uºivateli své aplikace umoºní editaci uzl· a hran (tedy moºnost jejich posunu, zv¥t²ování atd.), nebo si p°eje zobrazit graf bez moºnosti modikace. Ke kaºdému prvku v grafu lze denovat listener pro interakci s uºivatelem. Knihovna JGraphT je optimalizována pro datové modely a algoritmy. Je vytvo°ena tak, aby podporovala rozsáhlé aplikace i aplikace poºadující vysoký výkon. Dokáºe totiº pracovat s grafy obsahujícími aº n¥kolik milión· uzl· a hran. Oproti JGraph má tu výhodu, ºe je o n¥co rychlej²í a nemá takové nároky na systémové zdroje. Z mého osobního pohledu je tedy pro jednodu²²í vizualizace graf· vhodn¥j²í pouºít JGraphT. Knihovna JGraph najde své uplatn¥ní, pot°ebujeme-li speci£t¥j²í vizualizace, kup°íkladu pokud poºadujeme, aby jednotlivé uzly byly tvo°eny obrázky. Samoz°ejm¥ existuje i moºnost pouºívat ob¥ knihovny zárove¬ a kombinovat tak jejich výhody.
34
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
Obrázek 3.11: Ukázka layoutu JGraph Layout Pro, vizualizace pomocí JGraph
3.7
JUNG (Java Universal Network/Graph Framework)
JUNG [11] je softwarová knihovna slouºící k modelování, analýze a vizualizaci dat, které mohou být reprezentována jako graf nebo sí´. Knihovnu lze voln¥ pouºívat pod licencí Berkeley Software Distribution. Architektura JUNG je vytvo°ena tak, aby podporovala rozmanité reprezentace entit a jejich vztah·. P°íkladem mohou být orientované a neorientované grafy, grafy s paralelními hranami nebo hypergrafy. Sou£asná distribuce JUNG obsahuje implementace mnoºství algoritm· z teorie graf·, vyt¥ºování dat, náhodnou tvorbu graf·, statistickou analýzu nebo výpo£ty vzdáleností £i tok· v síti. JUNG nabízí také vizualiza£ní framework, usnad¬ující tvorbu nástroj· pro interaktivní pr·zkum dat v síti. Uºivatel m·ºe pouºít n¥který z jiº implementovaných layout algoritm· nebo si pomocí frameworku vytvo°it vlastní. Dále jsou poskytovány ltrovací mechanismy, které nap°íklad umoºní pouºít algoritmy na vybranou £ást grafu. Zajímavou vlastností je umoºn¥ní p°idání libovolného Java datového typu jako popisek k uzl·m £i hranám. Pro zobrazování pouºívá JUNG Java Swing knihovny, paraleln¥ se v²ak vyvíjí verze pouºívající AWT. JUNG umoºnuje i import struktury sít¥ ze souboru ve formátu GraphML. K tomu je ov²em pot°eba XML parser Xerces 7 . V knihovn¥ mají objekty graf·, vrchol· a hran n¥kolik vlastností, které m·ºeme nastavovat nebo naopak zji²´ovat, a operací, které s nimi m·ºeme provád¥t. U grafu tak m·ºeme p°idávat vrcholy (addVertex) a hrany (addEdge) nebo zji²´ovat jaké vrcholy a hrany se v grafu nacházejí (getVertices, getEdges). U vrchol· i hran je moºné zji²´ovat, do kterého grafu pat°í (getGraph) a dal²í vlastnosti grafu. V JUNG jsou hojn¥ vyuºívána rozhraní a abstraktní t°ídy. Existují tak rozhraní Graph, Vertex a Edge, specikující chování pro grafy mající hrany vºdy pouze mezi dv¥ma vrcholy. Pro orientované grafy jsou to rozhraní DirectedGraph a DirectedEdge, pro neorientované poté 7
http://xerces.apache.org
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
35
Obrázek 3.12: JGraphT: vizualizace sit¥ pro výpo£et XOR
UndirectedGraph a UndirectedEdge. Mezi hlavní abstraktní t°ídy pat°í AbstractSparseGraph, AbstractSparseVertex a AbstractSparseEdge, ur£ené pro tvorbu °ídkých graf·. Z t¥chto t°íd poté d¥dí vlastnosti t°ídy pro tvorbu orientovaných a neorientovaných °ídkých graf· (DirectedSparse{Graph, Edge, Vertex}, UndirectedSparse{Graph, Edge, Vertex}). Graf m·ºe být vytvo°en t°emi r·znými zp·soby. Na£tením ze souboru ve formátu GraphML, algoritmicky pouºitím t°íd pro tvorbu náhodných graf· nebo p°ímým pouºitím konstruktoru pro poºadovaný druh grafu. Pouºitím:
DirectedGraph g = new DirectedSparseGraph(); se vytvo°í nový orientovaný °ídký graf. Poté se jiº mohou vytvo°it jednotlivé vrcholy a následn¥ p°idat do grafu. Jakmile jsou vytvo°ené vrcholy, je moºné je propojit hranami:
Vertex v1 = (Vertex) g.addVertex(new DirectedSparseVertex()); Vertex v2 = (Vertex) g.addVertex(new DirectedSparseVertex()); DirectedEdge e = (DirectedEdge) g.addEdge(new DirectedSparseEdge(v1, v2)); V tomto p°íkladu je hrana vytvo°ena a p°idána do grafu v jednom kroku. Jedná se ov²em o dv¥ operace, a proto je moºné vytvo°it i hrany, které nebudou do grafu pat°it. Ty také mohou zp·sobit výjimky p°i volání metody getGraph. Pomocí metody copy je umoºn¥no kopírování vrchol· a hran mezi grafy. Pro odstran¥ní vrchol· a hran z grafu slouºí metody removeVertex a removeEdge:
g.removeEdge(e); g.removeVertex(v1); Pro p°i°azení uºivatelských dat jednotlivým prvk·m grafu sloºí t°ída UserData. Pomocí její metody addUserDatum tak nap°íklad m·ºeme p°i°adit vrchol·m nebo hranám r·zné textové popisky. Dal²ími metodami lze potom tato p°i°azená data získat (getUserDatum), zm¥nit (setUserDatum) £i odstranit (removeUserDatum):
36
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
Obrázek 3.13: Ukázka vizualizace vytvo°ené pomocí JUNG
String name_key = "name"; String current_address_key = "address"; v2.addUserDatum(name_key, "Josef Novak", UserData.SHARED); v2.addUserDatum(current_address_key, "Prague, Czech Republic", UserData.SHARED); ... String v_name = v2.getUserDatum(namekey); v2.setUserDatum(current_address_key, "Horni Dolni, Slovakia", UserData.SHARED); v2.removeUserDatum(current_address_key); Posledním argumentem v metodách je objekt CopyAction, který specikuje jak se má s daty nakládat p°i kopírování. Nyní jiº zbývá pouze vytvo°ený graf p°idat na Swing komponentu. Po vytvo°ení JFrame se do n¥j p°idá vizualiza£ní panel VisualizationViewer, který d¥dí vlastnosti JPanel. Parametry VisualizationViewer jsou Layout, který se má pouºít na asociovaný graf, a Renderer pro vykreslení vizualizace.
JFrame jf = new JFrame(); VisualizationViewer vv = new VisualizationViewer(new SpringLayout(g), new PluggableRenderer()); jf.getContentPane().add(vv); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.pack(); jf.setVisible(true); 3.8
Záv¥re£né srovnání
P°i porovnání v²ech uvedených vizualiza£ních nástroj· je z°ejmé, ºe n¥které jsou pro pot°eby vizualizace topologie dop°edných neuronových sítí vhodn¥j²í a n¥které mén¥. Jejich výhody a nevýhody jsou shrnuty v tabulce 3.1. Jako nevhodné nástroje pro implementaci vizualizace topologie sítí ve FAKE GAME jsou zcela z°ejm¥ Graphviz a Tulip Software. Oba totiº jako aplikace pro p°íkazovou °ádku slouºí
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
Vizualiza£ní nástroj Výhody Graphviz Tulip Software Graph Gear SVG Extension Library GINY JGraph, JGraphT JUNG
tvorba graf· pomocí DOT jazyka; export do mnoha formát· export do mnoha formát·; moºnost aplikace algoritm· na grafy jednoduchá tvorba grafu p°ímé roz²í°ení SVG specikace MVC model; mnoºství layout manager· jednoduchost pouºití; rozsáhlé moºnosti vizualizace; mnoºství layout manager· jednoduchá tvorba graf·; mnoºství grafových algoritm· a layout·
37
Nevýhody ²patná moºnost implementace do Java aplikace ²patná moºnost implementace do Java aplikace pouze pro neorientované grafy; nemoºnost pouºití v Java aplikaci sloºit¥j²í tvorba graf·; chybí layout manager nutnost pouºít dal²í framework pro vizualizaci chybí moºnost importu; oproti JUNG mírn¥ náro£n¥j²í na systémové zdroje pro import je pot°ebný externí parser
Tabulka 3.1: Porovnání vybraných vizualiza£ních nástroj· spí²e pro vytvo°ení statických obrázk· z reprezentace grafu ve vstupním souboru. Nástroj Graph Gear je pro pot°eby FAKE GAME nepouºitelný, jelikoº výsledná vizualizace je pouze ve form¥ ashové aplikace pro HTML stránky. Gracká knihovna roz²i°ující SVG specikaci má velikou nevýhodu ve sloºité tvorb¥ graf· a nemoºnosti uleh£ení p°i rozmís´ování jednotlivých komponent pomocí layout managera. Jako jasný klad knihovny GINY je její architektura, rozd¥lená na modelovou a zobrazovací £ást, p°esn¥ dle MVC návrhového vzoru. Nutnost pouºití externího vizualiza£ního frameworku je ov²em velká p°ekáºka pro moºnost jednoduché implementace. Pro pot°eby FAKE GAME tedy jako nejlep²í vycházejí knihovny JGraph/JGraphT a JUNG. Osobn¥ si myslím, ºe p°i zhruba stejn¥ malé náro£nosti tvorby graf· hovo°í ve prosp¥ch knihovny JUNG v¥t²í mnoºství jiº implementovaných grafových algoritm· a layout manager·, které by se daly vyuºít pro automatické rozmíst¥ní komponent. Podle zku²enosti jejich uºivatel· by také m¥la být o n¥co mén¥ náro£ná na systémové zdroje, coº je vºdy velká výhoda.
38
KAPITOLA 3.
SROVNÁNÍ OPEN SOURCE NÁSTROJ PRO VIZUALIZACI SÍT
KAPITOLA 4.
NÁVRH A REALIZACE EENÍ
39
4 Návrh a realizace °e²ení B¥hem tvorby této diplomové práce byla v rámci semestrálního projektu v p°edm¥tu Geometrické modelování vytvo°ena 2D vizualizace topologie hybridních induktivních model·. Vizualizace byla vytvo°ena s vyuºitím nástroje JUNG (viz kapitola 3.7) a je zcela vyhovující pro pot°eby tisku. Proto jiº nebyla vyvíjená jiná 2D vizualizace, ale pouze tato existující dopln¥na o poºadovaný export do vektorového SVG formátu. Místo toho byla roz²í°ena £ást 3D vizualizace tak, aby umoº¬ovala lep²í sledování chování model·. Krom¥ zobrazování topologie sít¥ s interaktivním ovládáním uºivatele, byl nov¥ poloºen poºadavek na p°enesení vizualizace klasikace sít¥ do trojrozm¥rného prost°edí. Tato vizualizace by navíc m¥la umoº¬ovat sledování odezev u jednotlivých jednotek sít¥ a v²echny získané informace p°ehledn¥ zobrazit. Jiº v zadání práce byly doporu£eny knihovny jak pro export do SVG (knihovna Batik), tak i pro 3D vizualizaci topologie (vizualiza£ní knihovna z aplikace NeuroEvolution). Výb¥r implementa£ního prost°edí je tedy jednozna£ný. P°i vlastní realizaci vizualizace v aplikaci FAKE GAME bylo nejprve nutné provést analýzu sou£asného °e²ení. Aplikace FAKE GAME je pom¥rn¥ rozsáhlá, p°esto její modulární charakter umoºnil pom¥rn¥ velkou volnost p°i implementaci. Aplikace FAKE GAME je vytvá°ena v jazyku Java, a proto programovací jazyk byl dop°edu ur£en. 4.1
Za£len¥ní do struktury FAKE GAME
Pro realizaci vizualizace pot°ebujeme provést analýzu moºného zp·sobu integrace do sou£asného °e²ení aplikace FAKE GAME. Konkrétn¥ je nutné najít vhodný zp·sob za£len¥ní nových funkcí do grackého uºivatelského prost°edí aplikace. Dále musíme analyzovat datové struktury pouºívané ve FAKE GAME, které budou pro vizualizaci pot°ebné. Inicializace GUI aplikace FAKE GAME je provád¥na ve t°íd¥ GMDHtree. Ta je rovn¥º hlavní spou²t¥cí t°ídou celé aplikace obsahující metodu main(). Pro za£len¥ní do aplikace je nejvhodn¥j²ím místem menu Model, které jiº obsahuje poloºky pro 2D vizualizaci topologie. Do n¥j byla p°idána nová poloºka Display structure of model in 3D a zaregistrována událost výb¥ru, která vytvo°í nové okno s vizualizací. Funkce pro export 2D vizualizace je za£len¥na p°ímo do t°ídy JungVisualization, která vizualizaci pomocí knihovny JUNG zaji²´uje. T°ída má vlastní, na ostatních £ástech aplikace nezávislé uºivatelské rozhraní. Do jejího menu byla p°idána nová poloºka Save as SVG se zaregistrovanou událostí výb¥ru pro zobrazení dialogu pro výb¥r souboru a následné uloºení do n¥j. Z datových struktur, které budou ve vizualizaci vyuºívány, je nejd·leºit¥j²í instance myData t°ídy TreeData, která obsahuje ve²keré informace o síti a také objekty t°íd Controls a InputControls, zastupující ovládací prvky uºivatelského rozhraní. 4.2
Export vizualizace do formátu SVG
Ve FAKE GAME je n¥kolik typ· 2D vizualizace struktury vytvo°ených model·. Z pohledu pro moºný export do formátu, který by se dal vyuºít pro tisk, je nejp°ehledn¥j²í nejspí²e vizualizace zaloºená na knihovn¥ JUNG. Ta jiº obsahovala moºnost exportu do formátu EPS. K tomu vyuºívá open-source utilitu EPSDump. Nedostatkem této utility je, ºe má problémy p°i vykreslování transparentních objekt·.
40
KAPITOLA 4.
NÁVRH A REALIZACE EENÍ
Nov¥ tedy byl p°idán export do SVG. K tomu byl pouºit balík Batik zp·sobem, který je popsán v kapitole 2.6.2. Ke generování SVG nejsou pot°eba v²echny knihovny Batiku, proto byly do projektu FAKE GAME p°idány pouze batik-svggen.jar a v²echny, na kterých je závislý. Graf vzájemné závislostí balík· je na obrázku 4.1. Závislost je zakreslena ²ipkama (knihovna je závislá na té, ke které ²ipka vede) a dotykáním jednotlivých polí£ek (knihovna je závislá na té, která se jí zespodu dotýká).
Obrázek 4.1: Graf závislostí JAR archiv· v Batiku Export byl oproti jednoduchému p°íkladu z kapitoly 2.6.2 roz²í°en o p°idání generátoru kontextu. Ten se pouºije do konstruktoru p°i tvorb¥ instance SVGGraphics2D, namísto p·vodního Document. Tím bylo umoºn¥no p°idání vlastního komentá°e do vygenerovaného SVG a také p°idání p°iloºených font· namísto systémových. Kód pro vytvo°ení instance SVGGraphics2D tedy vypadá následovn¥:
SVGGeneratorContext ctx = SVGGeneratorContext.createDefault(document); ctx.setComment("Generated by FAKEGAME with Batik SVG Generator"); ctx.setEmbeddedFontsOn(true); SVGGraphics2D svgGenerator = new SVGGraphics2D(ctx, true); Metoda paint je volána na instanci t°ídy VisualizationViewer. Jedná se o t°ídu z knihovny JUNG, která má na starosti ve²keré £innosti týkající se vytvá°ení vizualizace graf·. T°ída VisualizationViewer je potomkem t°ídy JPanel, a proto m·ºe být bez problému pouºita pro pot°eby SVG generátoru. Na obrázku 4.2 je poté vid¥t rozdíl mezi p·vodním exportem do EPS a nov¥ vytvo°eným exportem do SVG pomocí Batiku. Je tak z°ejmá výhoda moºnosti Batiku p°iloºit k obrázku font, kterým bylo písmo vykresleno na grackém Canvasu v Jav¥ a nepouºívá se tak systémový font. P°i pouºívání systémového fontu totiº mohlo docházet k p°ekrývání text· s transparentními objekty, které ov²em balík EPSDump chybn¥ interpretoval.
KAPITOLA 4.
NÁVRH A REALIZACE EENÍ
41
Obrázek 4.2: Porovnání p·vodního exportu do EPS (vlevo) a nového do SVG (vpravo)
4.3
Modul pro zobrazení induktivních model·
Implementace vizualiza£ního modulu pro zobrazení topologie model·, vytvo°ených v aplikaci FAKE GAME, je vytvo°ena s pouºitím knihovny pro vizualizaci rekurentních neuronových sítí popsanou v kapitole 2.8. Konkrétn¥ z knihovny byly do FAKE GAME p°idány t°ídy VNet3D, Node, Link, VNetJ3D, NodeJ3D a LinkJ3D. K sestavení struktury model· a vnit°ní reprezentaci informací o nich pro pot°eby vizualizace byla vytvo°ena t°ída NetworkStructure3D. T°ída také poskytuje metody pro získání r·zných vlastností modelu. K vytvo°ení nového okna s vizualizací aktuáln¥ vybraného modelu slouºí její metoda create(GMDHTree). Metoda create je volána s parametrem GMDHtree, tedy instancí hlavní t°ídy FAKE GAME. Z ní získá objekt GMDHnetwork, obsahující mimo jiné informace o topologii modelu, který je aktuáln¥ v uºivatelském rozhraní aplikace vybraný. Dále jsou p°evzaty objekty Controls a InputControls, díky nimº lze získávat vlastnosti prvk· uºivatelského rozhraní FAKE GAME. Po vytvo°ení struktury modelu a jejího uloºení do nové instance t°ídy VNet3D je zavolána metoda draw pro vykreslení vizualizace (viz kapitola 2.8.1).
4.3.1 Pouºité datové struktury pro uloºení topologie Ve t°íd¥ NetworkStructure3D byly vytvo°eny pro reprezentaci dat vnit°ní t°ídy InputCanvas a NeuronCanvas. První z nich slouºí pro uchovávání informací o vstupních jednotkách a druhá pro jednotky ve skrytých vrstvách. P°i tvorb¥ struktury modelu pro vizualizaci jsou jednotky ze vstupní vrstvy vkládány do spojového seznam prvk· (LinkedList). Pro skryté jednotky je vytvo°eno dvojrozm¥rné pole. Po£et jeho °ádk· odpovídá po£tu vrstev a po£et sloupc· nejvy²²ímu po£tu jednotek v n¥které ze skrytých vrstev. Pro ukládání uzl· a spojení ur£ených pro vykreslení vizualizace, jsou ve t°íd¥ VNet3D ur£eny prom¥nné t°ídy spojového seznamu LinkedList. Jedná se o prom¥nné allNodes pro allLinks. Do dal²ích prom¥nných inputLayer a hiddenLayer (ob¥ typu LinkedList) jsou ukládány vstupní, respektive skryté jednotky. Tyto prom¥nné se pouºívají p°i vytvá°ení jednotlivých
42
KAPITOLA 4.
NÁVRH A REALIZACE EENÍ
vrstev. Vrstvy se ukládají do pole prom¥nné velikosti (ArrayList) layers. Jelikoº kaºdý uzel nebo spojení mají pro pot°eby vizualizace dané jedine£né ID, ukládají se je²t¥ do asociativního kontejneru s hashovací tabulkou (Hashmap) all. Jako klí£ se pouºívá práv¥ ID daného prvku a prom¥nná je vyuºívána p°i výpisu informací ve vizualizaci.
4.3.2 Vytvá°ení reprezentace modelu pro vizualizaci P°i vytvá°ení reprezentace modelu, která je pozd¥ji pouºita pro vykreslení vizualizace, se uzly a spojení ukládají do struktur, které jiº byly popsané v kapitole 4.3.1. Pro pot°eby vizualizace GAME model· byla nutná úprava metody addNode (pro p°idávání uzl·) a metody createLayers (pro vytvo°ení vrstev) t°ídy VNet3D. V p·vodní implementaci se totiº jednotlivé vrstvy tvo°ily podle nejkrat²í vzdálenosti uzl· od vstupních uzl·. Jelikoº v GAME modelech jsou povolena i spojení mezi nesousedními skrytými vrstvami, nebylo zachováno umíst¥ní uzl· do odpovídajích vrstev. Proto byl do t°ídy Node p°idán atribut, udávající ve které vrstv¥ se uzel v GAME modelu nachází. Tím bylo nutné upravit metodu addNode a p°idat parametr udávající £íslo vrstvy pro daný uzel. Zm¥nit bylo nutné i metodu createLayers. Nov¥ se do pole layers nejd°íve p°idá vstupní vrstva inputLayer. Dle nejvy²²ího indexu vrstvy uzl· z prom¥nné hiddenLayer se vytvo°í odpovídající po£et vrstev, reprezentovaných spojovým seznamem. Postupn¥ se kaºdý uzel vloºí do p°íslu²né vrstvy. Nové vrstvy se následn¥ p°idají do pole layers. Knihovna pro vizualizaci rekuretních neuronových sítí byla navrºena tak, aby se zvýraz¬ovala spojení vedoucí z uzl·. U GAME model· je ov²em vhodn¥j²í u jednotek vizualizovat spojení, která do nich vstupují. Proto byl do t°ídy Node p°idán spojový seznam spojení vedoucích do uzlu. Do n¥j se spojení p°idávají p°ímo p°i tvorb¥ reprezentace modelu.
4.3.3 P°idané vizualiza£ní moºnosti V GUI aplikace FAKE GAME jsou pro lep²í orientaci jednotlivé vstupy ozna£eny specickou barvou. Vykreslování vstupních uzl· ve vizualizaci proto bylo upraveno tak, aby kaºdá jednotka m¥la barvu odpovídající té na panelu aplikace. Obarvení vstupních jednotek je vid¥t na obrázku 4.3. Spole£n¥ s barevným textovým výpisem ve spodní £ásti okna by tato úprava m¥la zlep²it orientaci ve vizualizaci.
Obrázek 4.3: Obarvení vstupních jednotek ve vizualizaci a chybné zobrazení p°i p·vodním nastavení pr·hlednosti GAME modely mohou být sestaveny z mnoºství jednotek r·zných typ·. Jelikoº typ pouºité jednotky má velký vliv na vlastnosti celého modelu, je z hlediska studia dat a model· na nich vytvo°ených zajímavé získat informace o tom, které jednotky v pr·b¥hu u£ení a tvorby GAME modelu p°eºily.
KAPITOLA 4.
43
NÁVRH A REALIZACE EENÍ
Název jednotky LinearNeuron CombiNeuron PolyHornerNeuron PolySimpleNeuron PolySimpleNRNeuron ExpNeuron SigmNeuron SinusNeuron GaussianNeuron GaussNeuron MultiGaussianNeuron GaussPDFNeuron PolyFractNeuron BPNetwork BPNRNetwork
Zkratka Ozna£ení L PC PH P PN E S SI GS G MG GP R PE PEN
Linear Polynomial - combi Polynomial Horner Polynomial Polynomial - NR Exponential Sigmoid Sine Gaussian Gauss MultiGaussian Gaussian PDF Rational Perceptron net Perceptron net (NR)
Tabulka 4.1: P°ehled GAME jednotek, jejich zkratek ve vizualizaci a ozna£ení Pouºitá vizualiza£ní knihovna umoº¬ovala na plátno p°idávat jednoduché zna£ky. Jiº implementované byly nap°íklad k°íºek £i hv¥zda. K tomu je ur£ena metoda drawMark t°ídy JKCanvasJ3D, která do grafu scény p°idá nový objekt typu GOB3DMark. P°i vytvá°ení objektu je pouºit konstruktor, jehoº jeden parametr udává jaký typ zna£ky se má p°idat. Vlastní kreslící direktiva jsou sou£ástí t°ídy GOB3DMark. Pro pot°eby vizualizace model· byly do t°ídy GOB3DMark p°idána direktiva k vykreslení popisek jednotlivých jednotek. Jedná se o jedno aº t°í písmenné zkratky odvozené z názvu jednotek. Jejich vzhled ve vizualizaci je vid¥t na obrázku 4.4. P°ehled jednotek pouºitých ve FAKE GAME, jejich zkratek v popiskách vizualizace a ozna£ení p°ebrané z aplikace, které je pouºito pro textový výpis do spodního okna, je shrnut v tabulce 4.1. V p°ípad¥ implementace nových jednotek pro aplikaci FAKE GAME sta£í p°idat direktiva pro vykreslení nové zna£ky. Vizualizace je stále funk£ní, i kdyº se tak neu£iní. Typy jednotek se nevykreslují p°ímo na plátno, ale pouze do textového okna (po najetí kurzoru na vybraný uzel).
4.3.4 Nové vlastnosti vizualiza£ního okna Vzhled p·vodního okna pro vizualizaci je vid¥t na obrázku 2.13, nového poté na obrázku 4.4. Do okna byla p°idána li²ta s poloºkami menu pro nov¥ implementované funkce. Spodní li²ta s ovládacími prvky (viz obrázek 4.5) byla roz²í°ena o nové komponenty. Byl upraven seznam vlastností sít¥, které se vypisují do informa£ního textového okna. P°idáno bylo okno se seznamem vstup· sít¥ a okno pro vizualizaci záznamu RMS chyby pr·b¥hu u£ení u perceptronových jednotek. Na panel byly umíst¥ny i ovládací prvky pro vizualizaci klasikace modelu. P°i vývoji bylo zji²t¥no, ºe funkce snímání polohy kurzoru na plátn¥ není p°i pouºití v aplikaci FAKE GAME funk£ní. Byla totiº implementována pomocí nekone£né smy£ky, která p°i p°ímém spu²t¥ní t°ídy VNetJ3D její main metodou nevadila. Po za£len¥ní do FAKE GAME, kdy se t°ída volá z °ídící t°ídy uºivatelského rozhraní, ov²em zp·sobovala problémy. Docházelo
44
KAPITOLA 4.
NÁVRH A REALIZACE EENÍ
Obrázek 4.4: Okno vizualiza£ního modulu s ozna£enými jednotkami
k tomu, ºe se nikdy nevykreslil obsah plátna s vizualizací. Proto byl p°ímo ve t°íd¥ VNetJ3D pro objekt plátna zaregistrován nový poslucha£, pouºívající adaptér MouseMotionAdapter. Poslucha£ zaji²´uje získání ID objektu, nad kterým se nachází kurzor. Podle toho, zda se jedná o ID uzlu nebo spojení, se 3D objekty obarvují a na spodní li²t¥ se zobrazují p°íslu²né informace. Pozice kurzoru nad spojením jej zvýrazní £ervenou barvou. Kdyº je kurzor umíst¥n nad uzlem ze vstupní vrstvy, vypí²e se do informa£ního panelu jméno vstupu a obarví se výstupní spojení. U jednotek ze skrytých vrstev se zvýrazní spojení vedoucí do jednotky a p°idán je výpis typu jednotky, názvu metody pouºité k nastavení vah a chyby na u£ícím + testovaném souboru. N¥které typy jednotek znázor¬ují i n¥co navíc - perceptronové nap°íklad svoji konguraci vrstev a záznam RMS chyby v pr·b¥hu u£ení.
Obrázek 4.5: Informa£ní panel pro výpis parametr· modelu Pro moºnost jednoduchého uloºení aktuální vizualizace do souboru byl implemetován export do formátu JPEG. Jsou vyuºívány t°ídy GraphicsContext3D a ImageComponent z balíku Javy 3D a BufferedImage z java.awt. Pro kódování do JPEG poté t°ídy z balíku javax.imageio. 4.4
Vizualizace odezvy model·
Dal²ím £ástí implementace bylo roz²í°ení modulu pro vizualizaci topologie GAME model· o moºnost vizualizovat v trojrozm¥rném prostoru odezvu sít¥. Vytvo°ená neuronová sí´ je
KAPITOLA 4.
NÁVRH A REALIZACE EENÍ
45
schopná po p°edloºení vstupního vektoru dat vrátit svou odezvu. Cílem vizualizace bylo p°ehledn¥ zobrazit chování modelu neuronové sít¥. Jako poºadavek bylo zadáno, aby navíc vizualizace umoº¬ovala vizualizaci odezvy nejen pro celý model, ale i pro libovolnou konkrétní jednotku modelu. Díky tomu by uºivatel mohl lépe prozkoumávat chování modelu. Konkrétn¥ m¥la vizualizace zobrazovat klasika£ní úlohu model·.
4.4.1 Klasika£ní úloha model· U klasika£ní úlohy je úkolem model· na základ¥ vstupních dat ur£it, zda-li se jedná o £lena dané t°ídy nebo nikoliv. Prost°ednictvím vizualizace klasikace lze zjistit jak model klasikuje i v místech, kde nejsou k dispozici u£ící data. Na model neuronové sít¥ lze pohlíºet jako na odezvu y ur£enou vstupním vektorem ~x a p°enosovou funkcí f :
y = f (~x), kde ~x = (x1 , x2 , x3 , . . . , xn ) pro xi ∈ h0, 1i kde n je dimenze vstupního vektoru, nebo-li po£et vstupních prom¥nných modelu. P°edloºením vstupního vektoru modelu je získána jeho odezva. Standardn¥ se odezva normalizuje do rozsahu h0, 1i. V tomto kontextu 1 ozna£uje p°íslu²nost k dané t°íd¥ na základ¥ vstupních parametr·, 0 znamená ºe se nejedná o £lena dané t°ídy. P°i 2D vizualizacích je £áste£ná p°íslu²nost ke t°íd¥, kdy se odezva nachází n¥kde uprost°ed intervalu h0, 1i, v¥t²inou zobrazována pom¥rnou pr·hledností nebo odstínem barvy. U 3D vizualizace se vyuºije t°etí rozm¥r, a tím m·ºe být v n¥kterých p°ípadech dosaºeno lep²í p°ehlednosti. P°i výb¥ru dvou parametr· xi a xj ze vstupního vektoru lze pro v²echny jejich vzájemné kombinace, kdy jejich hodnoty pat°í do interval· h0, 1i×h0, 1i, získat odezvu modelu jako funkci dvou prom¥nných:
y = f (~x) = f (x1 , . . . , xi , . . . , xj , . . . , xn ), kde xi , xj ∈ h0, 1i, (k 6= i, j) je konst. Tímto zp·sobem lze získat graf zobrazující p°íslu²nost k dané t°íd¥ na celé plo²e. S tím také souvisí nep°íjemná vlastnost, která byla v obdobné form¥ zmín¥na jiº v kapitole 2.4.3. Pro zobrazení grafu s rozli²ením 10 vzork· na rozsahu h0, 1i je t°eba vypo£ítat 100 hodnot. Jiº to m·ºe být u sloºit¥j²ích GAME model· výpo£etn¥, a tedy i £asov¥ náro£né. Navíc p°i pouºití 3D vizualizace odpovídá toto rozli²ení po£tu £ástí, ze kterých se vykreslovaný 3D objekt skládá. V¥t²í rozli²ení tak znamená i v¥t²í nároky na systémové prost°edky. Je tedy více neº vhodné ve vizualizaci umoºnit uºivateli nastavit rozli²ení. Nastavení ostatních vstupních prom¥nných ovliv¬uje odezvu modelu. Spole£n¥ s jejich zm¥nou se zm¥ní i vzhled grafu klasikace. Proto je vhodné graf p°i této zm¥n¥ ve vizualizaci obnovit.
4.4.2 Vizualizace reálných dat Uºite£nou vlastností pro vizuální kontrolu odezvy model· neuronové sít¥ je porovnání, zda-li vizualizace odezvy odpovídá dat·m z u£ící nebo testovací mnoºiny. P°i malé dimenzi vstupního vektoru, tedy pokud je vektor pouze dvoudimenzionální, lze data vizualizovat pouze zna£kami s barvou odpovídající p°íslu²né t°íd¥, do které pat°í. V p°ípad¥, ºe je vstupní vektor v¥t²í dimenze, nelze jiº tento zp·sob vizualizace pouºít. Odezvy model· jsou v grafu zobrazeny v °ezu, který je ur£en dv¥ma vstupními parametry.
46
KAPITOLA 4.
NÁVRH A REALIZACE EENÍ
Pokud by data byla vizualizována pouze jednoduchými zna£kami, není moºné rozeznat, jak jsou vzdálena od ostatních dimenzí. Tím by ve vizualizaci byla ztracena £ást informací o vstupních datech. Je tedy nutné u kaºdé zna£ky ur£it její vzdálenost od práv¥ zobrazovaného °ezu. Vhodným zp·sobem je ur£ení Euklidovské vzdálenosti s vykreslovaného datového vektoru d~ od st°edu sou°adného systému vizualizace, tedy vektoru ~x:
s2 =
n X
(dk − xk )2 , kde k 6= i, j
k=0
kde i a j jsou indexy vstupních parametr· denující zobrazovaný °ez. Velikost vykreslované zna£ky l je ur£ena dle vztahu:
l=
kdyº s = 0 kdyº 0 < s ≤ k nezobrazena kdyº s > k
c
c c+s
kde c je velikost nejv¥t²í zna£ky, k je konstanta. Nejv¥t²í zna£ka se nachází p°ímo v rovin¥ zobrazovaného °ezu. Konstantou k se nastavuje vzdálenost od roviny °ezu, od které se zna£ky jiº nevykreslují. Tím je dosaºeno lep²í p°ehlednosti grafu. Velikost vykreslené zna£ky p°edstavuje její význam. ím je v¥t²í, tím blíºe je související vektor zobrazovanému °ezu. Ve vizualizaci by tedy odezva neuronové sít¥ m¥la zahrnovat v²echny velké zna£ky. Jak vypadá 2D vizualizace implementovaná v aplikaci FAKE GAME lze vid¥t na obrázku 4.6. Na n¥m jsou pro datový soubor iris vid¥t odezvy model· Setosa, Versicolour a Virginica spole£n¥ s vizualizovanými daty.
Obrázek 4.6: 2D vizualizace klasika£ního modelu Iris a u£ících dat
4.4.3 Implementace vizualizace K vizualizaci odezvy model· slouºí t°ída Classification2D3D. Nový objekt t°ídy je vytvo°en p°i zavolání metody, která obsluhuje zaregistrovanou událost výb¥ru poloºky Classication v menu Graph hlavního vizualiza£ního okna. Sou£asn¥ je volána metoda create z t°ídy Classification2D3D. Na obrázku 4.7 je znázorn¥na vytvo°ená 3D vizualizace pro stejné modely a data pouºitá k vizualizaci na obrázku 4.6.
KAPITOLA 4.
NÁVRH A REALIZACE EENÍ
47
Obrázek 4.7: 3D vizualizace klasika£ního modelu Iris a u£ících dat
Metoda create nejd°íve pomocí metody updateParams získá hodnoty aktuáln¥ vybraných vstup· v uºivatelském rozhraní FAKE GAME. Poté je metodou updateVect aktualizován datový vektor získanými hodnotami vstup·. Dal²ím krokem je výpo£et zna£ek pro kaºdý ze vstupních vektor· metodou updateData. Zna£ky jsou reprezentovány objekty vno°ené t°ídy Spot. Pro kaºdou zna£ku jsou uchovávány hodnoty její pozice v grafu, Euklidovská vzdálenost popsaná v kapitole 4.4.2 a barva zna£ky, která odpovídá p°i°azení do p°íslu²né klasika£ní t°ídy. V²echny zna£ky jsou uloºeny v poli. Následuje vytvo°ení nového okna pro vizualizaci odezvy a vykreslení v²ech grackých objekt·. Pro vizualizaci odezvy je pouºívána metoda drawScalarMap t°ídy CanvasJ3D. Metoda p°idá do grafu scény objekt typu GOB3DScalarMap. Datové vektory jsou vizualizovány pomocí zna£ek ve form¥ objekt· typu GOB3DSphere. Jedná se o koule, které se do grafu scény p°idávají metodou drawSphere t°ídy CanvasJ3D. P°i vykreslování je uplatn¥no pravidlo pro maximální vzdálenost zna£ky od roviny °ezu (viz kapitola 4.4.2).
4.4.4 Nastavování vlastností vizualizace Aby mohl uºivatel jednodu²e m¥nit parametry vizualizace, byla do menu Options hlavního vizualiza£ního okna p°idána poloºka Graph properties. U ní je jako registrovaná událost výb¥ru p°idáno vytvo°ení nové instance t°ídy Classification2D3DProperties. Jedná se o t°ídu vytvá°ející kongura£ní okno pro nastavení parametr· vizualizace. Nastavená kongurace je uloºena do instance t°ídy Classification2D3DCfg. M¥nit lze rozli²ení vizualizace, citlivost pro odezvu, maximální vzdálenost zna£ky od roviny °ezu. Ur£it lze i zda se mají vizualizovat vektory dat, vykreslovat osy a zda má být odezva vykreslena transparentním objektem.
4.4.5 Zm¥na výstupní jednotky model· Ke studování odezvy model· nejenom na výstupní jednotce, je nutné vytvo°it mechanismus pro zm¥nu výstupní jednotky na libovolnou jinou. Pro vlastní zm¥nu je jiº v aplikaci FAKE GAME implementována metoda setOutputNeuron. Zbývalo tedy doplnit vizualizaci o funkci zm¥ny jednotky. Jelikoº pro uºivatele je zajisté nejintuitivn¥j²í m¥nit výstupní jednotku kliknutím na ur£enou jednotku p°ímo ve vizualizaci, byl pro objekt plátna t°ídy VNetJ3D zaregistrován dal²í poslucha£, nyní vyuºívající adaptér MouseAdapter. Poslucha£ zajistí zavolání metody setOutputNeuron na jednotku, na kterou bylo ve vizualizaci kliknuto. Navíc je vybraný uzel obarven naºluto.
48
KAPITOLA 4.
NÁVRH A REALIZACE EENÍ
Aby se zm¥na projevila v okn¥ s vizualizací odezvy, je nutné stisknout tla£ítko Refresh. To volá metodu refresh z t°ídy Classification2D3D, která vymaºe v²echny gracké objekty z plátna a následn¥ vytvo°í a vykreslí vizualizaci pro aktuáln¥ vybranou jednotku.
4.4.6 Propojení vizualizace topologie a odezvy model· Jestliºe chceme studovat odezvy jednotek v kontextu celého modelu, je z°ejm¥ výhodn¥j²í odezvy jednotlivých jednotek n¥jakým zp·sobem zakomponovat p°ímo do vizualizace topologie modelu. Výsledný vzhled vizualizace je vid¥t na obrázku 4.8.
Obrázek 4.8: Vizualizace topologie modelu se zobrazenými odezvami jednotlivých jednotek
Na ovládací panel vizualiza£ního okna bylo p°idáno za²krtávací polí£ko pro výb¥r, zda se mají vizualizovat i odezvy jednotek a tla£ítko Refresh. Stiskem se p°ekreslí vizualizace topologie modelu a pod kaºdou jednotku je p°idán graf vizualizace odezvy ve stavu, kdy je tato jednotka vybraná jako výstupní. P°i tvorb¥ grackých objekt· k vykreslení se tedy pro v²echny jednotky ze skryté vrstvy nejprve nastaví jednotka jako výstupní a poté vytvo°í graf vizualizace odezvy a vizualizace datových vektor·. Topologie je vykreslována s v¥t²ími rozestupy mezi jednotkami ve vrstv¥, proto se musí v²echny gracké objekty odpovídajícím zp·sobem posunout v prostoru. Pokud se v grackém rozhraní aplikace FAKE GAME zm¥ní aktuáln¥ vybraný model, je po stisku tla£ítka Refresh vytvo°ena i nová vizualizace topologie, odpovídající vybranému modelu. Do t°ídy VNet3D byla p°idána nová metoda deleteAllNodes, která vymaºe v²echny datové struktury slouºící k uloºení topologie. Vytvo°í se reprezentace nového modelu (viz kapitola 4.3.2) a vykreslí se.
KAPITOLA 4.
NÁVRH A REALIZACE EENÍ
49
4.4.7 Roz²í°ení vizualiza£ní knihovny Pro pot°eby vizualizace odezvy model· bylo t°eba mírné úpravy v pouºité vizualiza£ní knihovn¥. Do konstruktoru t°ídy GOB3DScalarMap, která zastupuje objekty 3D graf· odezev, byl p°idán parametr typu int. Tento parametr ur£uje, z kolika £ástí se bude 3D objekt sestavovat. Jedná se tedy o rozli²ení nastavené uºivatelem v kongura£ním okn¥. V t°íd¥ JKUtils3D byla p°idána metoda drawAxesOnPos, pomocí které lze vykreslit sou°adnicové osy se st°edem v zadaném míst¥ prostoru a s denovanými barvami os. Jak vypadá vizualizace s p°idanými osami je vid¥t na obrázku 4.9.
Obrázek 4.9: Vizualizace klasika£ní úlohy se zobrazenými osami Poslední významné úpravy prob¥hly p°i nastavování transparence (pr·hlednosti) vykreslovaného 3D grafu. Porovnání vykreslení objektu bez zapnuté pr·hlednosti a s polovi£ní pr·hledností je na obrázku 4.10.
Obrázek 4.10: Porovnání vykreslení objektu s nastavenou polovi£ní pr·hledností a nepr·hledného objektu V p·vodní verzi byla transparence nastavována v²eobecn¥ na kaºdý gracký objekt GOB3D. Takové nastavení ov²em zp·sobovalo, ºe vykreslené objekty se nesprávn¥ p°ekrývaly. To je dob°e patrné z obrázku 4.3, kde vpravo jsou zobrazeny vstupní jednotky kdyº byla pr·hlednost
50
KAPITOLA 4.
NÁVRH A REALIZACE EENÍ
nastavena p·vodním zp·sobem. Nastavení transparence tedy bylo p°esunuto do t°ídy GOB3DScalarMap, kde se nastavuje pr·hlednost speciáln¥ pro tento objekt.
KAPITOLA 5.
TESTOVÁNÍ
51
5 Testování K dokon£ení úsp¥²né implementace bylo nutné vizualiza£ní modul d·kladn¥ otestovat. Testování by se dalo rozd¥lit na n¥kolik £ástí a probíhalo £áste£n¥ jiº b¥hem vývoje. Prvn¥ bylo nutné otestovat, jestli je správn¥ navrºen algoritmus pro tvorbu struktury pro vizualizaci modelu. Proto byly vytvo°eny jednoduché modely z testovacích dat (z datového souboru iris). Zobrazená topologie byla porovnána s tou, kterou produkovaly ostatní moduly pro 2D vizualizaci topologie. Zkontrolováno bylo i zda se do informa£ního panelu správn¥ vypisují informace o jednotkách, a zda zna£ky u jednotek opravdu odpovídají jejich typu. Dále bylo nutné ov¥°it, jestli i po pro°ezání (zjednodu²ení) struktury modelu pomocí funkce implementované v FAKE GAME bude modul novou strukturu správn¥ vizualizovat. Zde byla objevena drobná chyba v implementaci, která byla vzáp¥tí odstran¥na. Konkrétn¥ se jednalo o p°ípad, kdy po zjednodu²ení modelu se odstraní v²echny jednotky jedné vrstvy. Proto se p°i tvorb¥ struktury prázdné vrstvy zcela vynechají a nezobrazují se. U posledního kroku pro otestování vizualizace topologie byl pouºit datový soubor matice800, obsahující 800 vstup·. I p°es rozsáhlost modelu si modul s vizualizací poradil, zatímco ani jeden z 2D vizualiza£ních modul· takovýto model p°íli² p°ehledn¥ zobrazit nedokázal. Porovná-li se nov¥ vytvo°ená vizualizace topologie s t¥mi jiº existujícími, je z°etelný p°ínos t°etí dimenze do vizualizace. Nedochází tolik k p°ek°íºení jednotlivých spojení. Navíc díky interaktivit¥ zobrazení a obarvování spojení lze jednodu²eji studovat topologii modelu. V dal²í £ásti se testovala vizualizace odezev na vstupní data. Nejprve byla ov¥°ena správnost zobrazování funkce pro kreslení 3D graf· z pouºité vizualiza£ní knihovny. Pro ten ú£el byly vizualizovány jednoduché geometrické funkce, u kterých lze vizueln¥ ov¥°it jejich správné vykreslení. Dal²ím krokem bylo otestování vizualizace odezvy a datových vektor· pro modely vytvo°ené z datového souboru iris. K porovnání byly pouºity jak 2D vizualizace klasikace, tak modul pro 3D vizualizaci regrese. Nebyly nalezeny ºádné chyby v zobrazování. Proto testování dále pokra£ovalo s vizualizací sloºit¥j²ích dat.
Obrázek 5.1: Vizualizace klasikace problému vno°ených spirál
52
KAPITOLA 5.
TESTOVÁNÍ
Pouºit byl datový soubor spirals, slouºící k °e²ení sloºité klasika£ní úlohy dvou do sebe vno°ených spirál. P°i vizualizaci odezvy pro jednu jednotku (viz obrázek 5.1), bylo bez problému moºné nastavit i vy²²í rozli²ení. Kdyº byly odezvy zobrazeny pro v²echny jednotky najednou (viz obrázek 5.2) bylo znát sníºení plynulosti vizualizace p°i nastavení vysokého rozli²ení. Proto u model· s velkým po£tem jednotek je vhodné p°i tomto zp·sobu vizualizace odezev nastavit spí²e men²í rozli²ení pro vykreslování.
Obrázek 5.2: Vývoj odezvy v modelu °e²ícím problém vno°ených spirál Modul byl otestován i pro soubor regresních dat bosthouse. V n¥m je popsána závislost ceny dom· v Bostonu na 13 vstupních parametrech. Pomocí vytvo°eného modelu je moºné na základ¥ 2 vstupních parametr· odhadnout cenu domu. Na obrázku 5.3 je vid¥t jak se tato závislost vyvíjí v jednotlivých jednotkách modelu. P°i porovnání vytvo°ené vizualizace odezev model· s jiº implementovanou dvoudimenzionální vizualizací jsou z°ejmé výhody nové vizualizace a moºnosti interaktivního ovládání. S vytvo°eným grafem lze libovoln¥ otá£et, p°ibliºovat a p°esn¥ji prozkoumat správnost klasikace modelu. Kdyº se vizualizace porovná s tou pro 3D zobrazení regresních závislostí, m·ºe se na první pohled zdát podobná. Pro klasika£ní úlohy má ov²em nov¥ vytvo°ená vizualizace výhodu v obarvování zna£ek vizualizující datové vektory odpovídající barvou. Díky tomu je ihned z°ejmé, zda model klasikuje data správn¥ £i nikoliv. Nejv¥t²ím p°ínosem je poté moºnost zvolit jednotku, pro kterou se bude odezva zobrazovat. Lze tak lépe studovat vliv jednotlivých jednotek na výstup. U p·vodních vizualizací bylo moºné odezvu zkoumat pouze pro výstup modelu. Poslední £ástí bylo otestování ukládání 2D vizualizace do formátu SVG. Z n¥kolika vizualizací r·zn¥ sloºitých topologií model· byly vytvo°eny SVG soubory. Vzhled byl porovnán s vizualizací v aplikaci. Správná implementace struktury SVG dokumentu byla vyzkou²ena ve vektorovém editoru Inskscape. Do n¥j byly v²echny soubory v po°ádku na£teny a bylo moºné v nich upravovat popisky, p°ípadn¥ posouvat gracké objekty.
KAPITOLA 5.
TESTOVÁNÍ
53
Obrázek 5.3: Závislost ceny domu v modelu regresního datového souboru bosthouse u jednotlivých jednotek
54
KAPITOLA 5.
TESTOVÁNÍ
KAPITOLA 6.
ZÁV
R
55
6 Záv¥r Cíle, stanovené v zadání práce, se poda°ilo splnit. V rámci práce byly prostudovány techniky vizualizace topologie neuronových sítí a sítí obecn¥. Srovnány byly open source nástroje, které mohou slouºit k zobrazení topologie dop°edné sít¥. Do aplikace FAKE GAME byl implementován modul pro zobrazení induktivních model·, umoºnující interaktivní ovládání uºivatelem. Modul slouºí také k vizualizaci klasika£ní úlohy model·. Pro ú£ely vizualizace byla pouºita 3D knihovna pro zobrazení rekurentních neuronových sítí. Existující modul pro vizualizaci topologie ve formátu vhodném pro tisk byl roz²í°en o moºnost exportu do vektorového formátu SVG, k £emuº byla vyuºita knihovna Batik. V porovnání s jiº implementovanou 2D vizualizací topologie model·, umoº¬uje nov¥ vytvo°ený modul relativn¥ p°ehledné zobrazení i pro sloºit¥j²í struktury. Pouºitá vizualiza£ní knihovna byla mimo jiné roz²í°ena o kreslení zna£ek typu jednotek. Interaktivita ovládání a s ní spojené automatické obarvování spojení, vedoucích do jednotek, nebo výpis informací o vybrané jednotce, výrazn¥ zjednodu²ují zkoumání struktury model·. Vizualizaci lze uloºit do souboru ve formátu JPEG. Pro studium chování model· a ov¥°ování jeho kvality byl modul dopln¥n o vizualizaci odezvy na vstupní datové vektory. Vizualizovat je moºné odezvu modelu v závislosti na dvou vstupních parametrech, ur£ujících °ez mnohadimenzionálním prostorem modelu. Dal²í kvalitou pro studování model· a kontrolu správnosti jejich odezvy je vizualizace datových vektor·, pouºívající Euklidovskou vzdálenost k interpretaci vzdálenosti od zobrazovaného °ezu. V souladu s interaktivitou celé vizualizace m·ºe uºivatel vybrat jednotku v zobrazené topologii, pro kterou chce sledovat odezvu. Tento p°ístup p°iná²í zcela nové moºnosti studia chování jednotlivých jednotek ve vytvo°ených GAME modelech. Pro komplexní pohled na model bylo implementováno propojení vizualizace jeho topologie a v²ech jednotek. Díky tomu lze sledovat vliv jednotlivých jednotek na celkový výstup modelu. Vzhledem k tomu, ºe b¥hem tvorby této práce byl dokon£en modul pro 2D zobrazení topologie vyhovující pot°ebám pro tisk, nebyl vyvíjen dal²í 2D vizualiza£ní modul. Existující modul povoloval export pouze do formátu EPS, a tak díky roz²í°ení o uloºení do SVG je moºné vytvo°ené obrázky dodate£n¥ upravovat ve vektorovém grackém editoru (nap°íklad doplnit popisky u vstup· atd.). Místo vytvo°ení 2D vizualizace byla práce roz²í°ena o vizualizaci odezev. Celý modul byl úsp¥²n¥ otestován na n¥kolika vytvo°ených modelech. Zobrazování struktury bylo vyzkou²eno na r·zn¥ sloºitých topologiích, v£etn¥ modelu s 800 vstupy. P°esto je moºné navrhnout roz²í°ení modulu. P°edn¥ by bylo vhodné implementovat do vizualizace textové popisky pro vstupy nebo typy jednotek. To vyºaduje v¥t²í zásah do vizualiza£ní knihovny. Dal²ím moºným roz²í°ením by mohla být vizualizace více model· najednou.
56
KAPITOLA 6.
ZÁV
R
KAPITOLA 7.
LITERATURA
57
7 Literatura [1] Batik SVG Toolkit - hlavní stránka. http://xmlgraphics.apache.org/batik/. [2] FAKE GAME - hlavní stránka projektu. http://sourceforge.net/projects/fakegame/. [3] GINY: Graph INterface librarY - hlavní stránka. http://csbi.sourceforge.net/. [4] Graph Gear - hlavní stránka. http://www.creativesynthesis.net/blog/projects/graph-gear/. [5] Graphviz - hlavní stránka. http://www.graphviz.org/. [6] Java 3D - hlavní stránka. https://java3d.dev.java.net/. [7] Java 3D API Tutorial. http://java.sun.com/developer/onlineTraining/java3d/. [8] Java Neural Network Simulator - hlavní stránka. http://www.ra.cs.uni-tuebingen.de/software/JavaNNS/. [9] JGraph - hlavní stránka. http://www.jgraph.com/. [10] JGraphT - hlavní stránka. http://jgrapht.sourceforge.net/. [11] JUNG - hlavní stránka. http://jung.sourceforge.net/. [12] Kurz SVG - tvorba vektorové graky v XML. http://interval.cz/serialy/kurz-svg-tvorba-vektorove-grafiky-v-xml/. [13] LAML - hlavní stránka. http://www.cs.aau.dk/~normark/laml/. [14] Tulip Software - hlavní stránka. http://www.tulip-software.org/. [15] J. Drchal. Evolution of recurrent neural networks, 2006. Diplomová práce VUT FEL. [16] Fan-Yin Tzeng, Kwan-Liu Ma. Opening the Black Box - Data Driven Visualization of Neural Network. In IEEE Visualization, page 49, 2005. [17] J. Kolá°. Teoretická informatika. eská informatická spole£nost, 2000. [18] K. Sugiyama. Graph drawing and applications for software and knowledge engineers. World Scientic, 2002.
58
KAPITOLA 7.
LITERATURA
[19] P. Kordík. Fully Automated Knowledge Extraction using Group of Adaptive Models Evolution, 2006. Diserta£ní práce VUT FEL. [20] M. Uºák, R. Jak²a, P. Sin£ák. Reduction of Visual Information in Neural Network Learning Visualization, 2008. [21] M. norek. Neuronové sít¥ a neuropo£íta£e. Vydavatelství VUT, 2004. [22] K. Normark. A Graph Library Extension of SVG, 2007. http://www.cs.auc.dk/~normark/laml/papers/svg-open-2007/paper.html. [23] T. Fruchterman, E. Reingold. Graph drawing by force-directed placement. Software Practice and Experience, 21(11):11291164, 1991. [24] T. Nishizeki, M. S. Rahman. Planar Graph Drawing. World Scientic, 2004.
DODATEK A.
SEZNAM POUITÝCH ZKRATEK
59
A Seznam pouºitých zkratek 2D
Two-dimensional
3D
Three-dimensional
API
Application Program Interface (Programové rozhraní aplikace) - soubor rutin, protokol· a nástroj· pro tvorbu softwarových aplikací
CSS
Cascading Style Sheets (tabulky kaskádových styl·) - jazyk pro popis zp·sobu zobrazení dokument· ve zna£kovacím jazyce
DOCTYPE
Document Type Declaration
DOM
Document Object Model - platformov¥ a jazykov¥ nezávislé rozhraní pro p°evod XML dokument· na stromovou reprezentaci (standardizované organizací W3C)
FAKE
Fully Automated Knowledge Extraction
GMDH
Group Method of Data Handling
GAME
Group of Adaptive Models Evolution
GNU GPL
GNU General Public Licence
GNU LGPL GML
GNU Lesser General Public License
Graph Modelling Language
GUI
Graphical User Interface - gracké uºivatelské rozhraní
SVG
Scalable Vector Graphics - ²kálovatelná vektorová graka
SWF
Shockwave Flash
W3C
World Wide Web Consortium - mezinárodní konsorcium vyvíjející webové standardy
XML
eXtensible Markup Language - standart organizace W3C popisující denování a pouºívání vlastního zna£kovacího jazyka
60
DODATEK A.
SEZNAM POUITÝCH ZKRATEK
DODATEK B.
UIVATELSKÁ / INSTALANÍ PÍRUKA
61
B Uºivatelská / instala£ní p°íru£ka Vizualiza£ní modul pro zobrazení topologie modelu je sou£ástí projektu FAKE GAME. Aplikaci lze stáhnout p°ímo ze stránek projektu [2]. Na nich lze nalézt informace o aktuální verzi aplikace. Aplikaci není nutné instalovat, skripty pro její spu²t¥ní se nacházejí v adresá°i bin p°eloºeného programu.. P°ed spu²t¥ním vizualizace je t°eba na£íst nebo vytvo°it GAME model ur£ený k vizualizaci. Na£tení lze provést pomocí poloºky menu File - Load. Pokud jsou na£tena pouze data bez jiº vytvo°eného modelu, vytvo°íme jej pomocí poloºky menu Model - Create GAME model. Následn¥ je nutné vybrat, který z model· se má vizualizovat. K tomu je ur£en rozbalovací seznam Select model(s) v pravé dolní £ásti grackého uºivatelského rozhraní. Po výb¥ru modelu se zp°ístupní poloºka menu Model - Display structure of model in 3D. Pomocí ní se zobrazí hlavní okno vizualizace topologie. B.1
Popis hlavního okna vizualizace
Vzhled hlavního okna vizualizace je vid¥t na obrázku B.1.
Obrázek B.1: Hlavní okno vizualiza£ního modulu K manipulaci s vizualizací se pouºívají v²echny t°i tla£ítka my²i spole£n¥ s jejím pohybem.
62
DODATEK B.
UIVATELSKÁ / INSTALANÍ PÍRUKA
Stiskem levého tla£ítka lze pohybem my²i s objekty otá£et. Obdobn¥ stiskem pravého tla£ítka lze s objektem posouvat v horizontálním £i vertikálním sm¥ru. Stisk prost°edního tla£ítka (p°íp. rolovacího kole£ka) slouºí k p°iblíºení nebo oddálení objekt·. Po najetí kurzoru nad jednotku se zvýrazní spojení, která do ní vedou. Sou£asn¥ se do spodního panelu vypí²í informace o jednotce. Konkrétn¥ se zobrazuje typ jednotky, metoda pouºitá k nastavení vah a chyba na u£ícím + testovacím souboru. U jednotek obsahujících perceptronovou sí´ se navíc vypí²e jejich kongurace (po£ty neuron· ve skrytých vrstvách), u polynomiálních jednotek tvar polynomu. Vpravo od tohoto panelu se nachází okno, do kterého se u perceptronových jednotek vizualizuje záznam RMS chyby v pr·b¥hu u£ení. U ostatních jednotek okno z·stává £erné. Dále je uveden textový výpis názvu vstup·. Jejich barvy odpovídají barvám p°i°azeným vstup·m v GUI aplikace FAKE GAME. Spodní ovládací panel obsahuje také ovládací prvky pro vizualizaci odezev jednotek. Za²krtnutím poloºky Graphs a následným stiskem tla£ítka Refresh se p°ekreslí vizualizace a pod kaºdou jednotkou se objeví vizualizace její odezvy na vstupní vektor dat. Výb¥r vstup· a vektoru dat, pro které se má vizualizace klasikace provést, se vybírá pomocí ovládacích prvk· GUI aplikace FAKE GAME. Od²krtnutím poloºek Nodes a Links je moºné vypnout vizualizaci v²ech uzl· nebo spojení. V horní £ásti vizualiza£ního okna se nachází ovládací menu. Jeho první poloºka Menu Capture to JPEG slouºí k uloºení vizualizace do souboru ve formátu JPEG. Dal²í poloºkou menu je Graph - Classication, která zobrazí nové okno pro vizualizaci odezvy vybrané jednotky. Výb¥r jednotky ur£ené k vizualizaci se provádí kliknutím na její uzel ve vizualizaci topologie. P°i zm¥n¥ vybrané jednotky (ve vizualizaci se obarví její uzel na ºluto) se pomocí tla£ítka Refresh p°ekreslí vizualizace pro aktuáln¥ vybranou jednotku. Poslední poloºkou v menu je Options - Graph properties, která slouºí k nastavení vlastností vizualizace odezvy. V kongura£ním dialogu je moºné nastavit následující vlastnosti:
• Resolution - rozli²ení vizualizace, p°i velkém po£tu vykreslovaných objekt· je doporu£eno nastavit men²í rozli²ení • Sensitivity - normalizovaná hodnota odezvy, od které je odezva povaºována za nulovou • Size of estimation domain - vzdálenost od roviny °ezu, pro kterou se jiº nemají vizualizovat datové vektory • Show axis - zobrazení os ve vizualizaci (barva osy odpovídá barv¥ ur£ené pro p°íslu²ný vstup v GUI aplikace FAKE GAME) • Show data vectors - zobrazení zna£ek reprezentující datové vektory ve vizualizaci • Transparency - vykreslování grafu odezvy pr·hledn¥
DODATEK C.
OBSAH PILOENÉHO CD
C Obsah p°iloºeného CD Obsahem p°iloºeného CD je:
Návod k ovládání modulu je uveden v uºivatelské p°íru£ce v dodatku B.
63
64
DODATEK C.
OBSAH PILOENÉHO CD