next up previous contents
Next: About this document ... Up: main Previous: Literatura   Obsah

Uživatelská dokumentace

V první řadě je nutné zdrůraznit, že tato uživatelská dokumentace není a nemá být jediným zdrojem informací o používání realizovaného softwaru a systému Bang2. Jejím účelem je pouze seznámit čtenáře s nejnutnějšími základy použití systému Bang2 k testování učení RBF sítí. Hlavním cílem je popsat formát konfiguračního souboru.

Návod na instalaci a spuštění systému lze najít na přiloženém CD. Popis grafického prostředí na stránkách jednotlivých agentů v [12, oddíl Man]. Především doporučujeme stránku RBF agenta [12, oddíl Man, stránka rbf] a uživatelskou dokumentaci systému Bang2 [12, oddíl HowTo, User Guide].

Nejprve popíšeme nejjednodušší způsob použití systému Bang2 k učení RBF sítě.

  1. Vytvoříme konfigurační soubor, ve kterém specifikujeme požadovanou konfiguraci sítě, jméno souboru s tréninkovou množinou a typ metody učení.

  2. Po spuštění systému Bang2 se objeví grafické okno s tlačítky odpovídajícími jménům jednotlivým agentů. Vybereme tlačítko se jménem RBF agenta -- Rafael.

  3. Tím otevřeme Rafaelovo grafické okno. Načteme připravenou konfiguraci (tlačítko [LoadConfig]). Implicitně se konfigurace načítá ze souboru rbf.xml v adresáři cfg. Jiné jméno konfiguračního souboru lze specifikovat v sekci [Files & Saves Config].

  4. Načtenou konfiguraci si můžeme prohlédnout a případně upravit (tlačítka [Configure Learning] a [Configure Net]).

  5. Nyní jsme připraveni spustit požadovaný výpočet (tlačítko [Learn]). Položky konfigurace, které jsme nespecifikovali, si doplní Rafael vlastními hodnotami.

  6. Pokud je výpočet iterativního charakteru, otevře se nám grafické okno zobrazující aktuální hodnotu chybové funkce. Takový výpočet ukončíme tlačítkem [End]. Během výpočtu máme možnost upravovat koeficienty učení, pravděpodobnosti genetických operátorů apod.

  7. Naučenou síť si můžeme uložit do souboru (tlačítko [Save]). Dále je možné funkci sítě navzorkovat do souboru ([Sample to File]), ohodnotit pomocí sítě vstupní části tréninkové nebo testovací množiny a toto ohodnocení uložit do souboru ([Eval File]), v případě sítě s jedním vstupem a jedním výstupem lze zobrazit graf této sítě ([Gnuplot]).

Nyní se seznámíme se strukturou konfiguračního souboru a významem jednotlivých parametrů. Předpokládáme, že čtenář si přečetl teoretickou část diplomové práce a zná jednotlivé metody.

Konfigurační soubor obsahuje XML element rbf. Kterýkoliv podelement nebo jeho atribut obsažený v následujícím výpisu může být vynechán.


 1: <rbf>
 2:   <!-- konfigurace RBF sítě -->
 3:   <rbfconfig>
 4:      <neurons input="INT" output="INT" hidden="INT"/>
 5:      <width/>
 6:      <norm type="[none|full|diagonal|
 7:                  diagonal_uniform|full_uniform]"/>
 8:   </rbfconfig> 
 9:   <!-- jména používaných souborů -->
10:   <files>
11:      <netfile> STRING </netfile>
12:      <evalfile> STRING </evalfile>
13:      <samplefile> STRING </samplefile>
14:      <timelogfile> STRING </timelogfile>
15:   </files> 
16:   <!-- konfigurace umetody učení -->
17:   <learning_config>
18:      <trainset name="STRING"/>
19:      <regularization lambda="DOUBLE"/>
20:      [ <three_step> ... </three_step> | <bp> ... </bp> 
21:        | <genetic> .... </genetic> ]      
22:   </learning_config>
23: </rbf>
Podelemet rbfconfig určuje konfiguraci RBF sítě. Řádek 4 specifikuje počty neuronů v jednotlivých vrstvách. Přítomnost elementu width specifikuje možnost adaptace parametru šířka. Řádek 6 a 7 specifikuje použitou normu ( none je klasická euklidovská norma, full respektive diagonal použití vážené normy s obecnou respektive diagonální maticí u každé jednotky, diagonal_uniform a full_uniform znamená použití vážené normy, ale matice je pro všechny jednotky společná).

Podelement files (řádek 10) specifikuje jména souborů, pro uložení sítě (ř. 11), pro uložení ohodnocení tréninkové množiny (ř. 12), pro navzorkování sítě (ř. 13) a pro uložení údaje o času výpočtu (ř. 14).

Na řádku 17 začíná specifikace učení. Obsahuje jménou souboru s tréninkovou množinou (ř. 18), hodnotu regularizačního parametru (ř. 19) a typ metody učení (ř. 20).


24: <three_step>
25:    <step1> 
26:       [ <skip/> | <random_samples/> 
27:         | <uniform_samples/> | <vq> ... </vq> 
28:         | <genetic>     
29:              <genetix> ... </genetix> 
30:              <vqgeop cannonical="[yes|no]"/>
31:           </genetic> ]
32:    </step1>
33:    <step2>
34:       [ <skip/> 
35:         | <q_neighbours q="INT" coef="DOUBLE"/>  
36:         | <gradient overlap="DOUBLE" epsilon="DOUBLE" 
37:                     alfa="DOUBLE">
38:              <stopcriterion>
39:                  [ <iteration count="INT"/> 
40:                    | <error eps="DOUBLE"/> ]
41:              </stopcriterion>
42:              <inform log="[yes|no]" name="STRING" 
43:                      period="INT"/> 
44:           </gradient> ]
45:    </step2>
46:    <step3>
47:       [ <skip/> 
48:         | <leastsquares derivate="[yes|no]"> 
49:            [ <svd/> | <rq/> | <inverse/> ]
50:           </leastsquares> 
51:         | <lms> ... </lms> ]
52:    </step3>
53: </three_step>

Element three_step specifikuje použití třífázového učení. Obsahuje podelementy step1, step2 a step3 určující jednotlivé kroky. Kterýkoli z těchto tří elementů může obsahovat podelement skip, který říká, že daný krok se nemá provádět vůbec.

Pro první krok (ř. 25) můžeme použít rovnoměrné rozmístění středů ( uniform samples), náhodné vzorky z tréninkové množiny ( random_samples), metodu vektorové kvantizace ( vq) nebo genetické učení ( genetic).

U druhého kroku lze požadovat použití heuristiky q sousedů (ř. 35), atribut q určuje počet sousedů a atribut c koeficient úměrnosti. Druhou možností je použití gradientní minimalizace (ř. 36), můžeme specifikovat parametr překrytí ( overlap) a parametry gradientní metody (rychlost učení epsilon, moment alfa). Podelement stopcriterion určuje kritérium ukončení výpočtu, lze zadat požadovaný počet iterací nebo hodnotu, pod níž má klesnout chybová funkce; pokud zadáme obě kritéria, výpočet skončí po splnění jednoho z nich. Podelement inform určuje periodu, se kterou má bý uživatel informován o průběhu chybové funkce, atribut log určuje zda se má tato hodnota zaznamenávat do souboru a atribut name určuje jméno tohoto souboru.

Jako třetí krok si vybereme buď leastsquares -- použití metody nejmenších čtverců (specifikujeme, zda použít SVD rozklad svd, Moore-Penroseovu pseudoinverzi inverse nebo QR rozklad rq), nebo LMS algoritmus -- viz str. [*].


54: <vq>
55:    <stopcriterion> 
56:       [ <iteration count="INT"/> 
57:         | <error eps="DOUBLE"/> ]
58:    </stopcriterion>
59:    [ <loyd/> 
60:      | <k-means>
61:           <learningrate fi="DOUBLE" delta="DOUBLE"/>
62:           [ <radial alfa="DOUBLE" coef="DOUBLE" iters="INT"/> 
63:             | <memory beta="DOUBLE" gamma="DOUBLE"/> ]
64:        </k-means> ]    
65:    <inform log="[yes|no]" name="STRING" period="INT"/> 
66: </vq>

Element vq určuje použití vektorové kvantizace. Podelementy stopcriterion a inform mají stejný význam jako u gradientní metody (viz str. [*]). Dále máme výběr mezi použitím Lloydova algoritmu ( loyd) nebo Kohononova učení ( k-means). U Kohonenova učení navíc můžeme specifikovat parametr učení ( fi), upravit klesání tohoto parametru ( delta), použít jedno z vylepšení -- lokální paměť ( memory) nebo radiální růst ( radial).


67: [ <bp> | <lms> ]
68:    <init> [ <random/> | <heuristic/> | <outside/> ] </init>
69:    <centers   epsilon="DOUBLE" alfa="DOUBLE"/>
70:    <widths    epsilon="DOUBLE" alfa="DOUBLE"/>
71:    <norms     epsilon="DOUBLE" alfa="DOUBLE"/>
72:    <weights   epsilon="DOUBLE" alfa="DOUBLE"/>
73:    <stopcriterion>
74:       [ <iteration count="INT"/>
75:         | <error eps="DOUBLE"/> ]
76:    </stopcriterion>
77:    <gnuplot steps="INT"/>
78:    <save period="INT"><file name="STRING"/></save>
79:    <inform log="[yes|no]" name="STRING" period="INT"/> 
80: [ </bp> | </lms> ]

Element bp nebo lms určuje použití gradientního algoritmu. V druhém případě se učí pouze váhy. Řádek 68 určuje způsob inicializace vah, náhodně, jednoduchou heuristikou (středy náhodně z tréninkové množiny, váhy nula, šířky a matice jedna), outside říká, že inicializace se má přeskočit, síť bude nastavena mimo agenta realizujícího gradientní výpočet. Řádky 69 - 72 určují rychlost učení a parametr momentu pro jednotlivé parametry (středy, šířky, matice norem, váhy). Samotná přítomnost elementu centers říká, že středy jsou adaptovatelné (podobně pro ostatní parametry). Dále je tu stopcriterion a inform, význam je stejný jako u gradientního algoritmu v druhé fázi (viz str. [*]). Řádek 77 říká, že funkce sítě má být průběžně zobrazována pomocí Gnuplotu, atribut steps určuje hustotu vykreslení. Toto zobrazování je možné pouze u sítí s jedním vstupem a jedním výstupem. Řádek 78 říká, že mezivýsledek se má zálohovat do souboru a jak často.


81: <genetic>
82:    <genetix> ... </genetix>
83:    <rbfgeop cannonical="[yes|no]">
84:       <onlyHidden/>
85:       <difflength max="INT" span="INT"/>
86:       <load file="STRING"/>
87:       <w_bound low="DOUBLE high="DOUBLE"/>
88:       <d_bound low="DOUBLE high="DOUBLE"/>
89:       <n_bound low="DOUBLE high="DOUBLE"/>
90:    </rbfgeop>
91:    <fitness> 
92:       [ <lms> .... </lms> 
93:         | <error lambda="DOUBLE"/> ]
94:    </fitness>
95:    <finish> <lms> ... </lms> </finish> 
100: </genetic>
Element genetic specifikuje použití genetického učení. Obsahuje konfiguraci obecné genetiky (ř. 82), konfiguraci genetických operátorů (ř. 83), specifikaci chybové funkce (ř. 91) a případně specifikaci metody, kterou má být vítěz doučen (ř. 95).

Element rbfgeop specifikuje genetické operátory učení RBF sítí, atribut cannonical říká, zda použít kanonickou nebo klasickou verzi operátorů. Použití elementu onlyHidden určuje, že jedinci mají reprezentovat pouze skrytou vrstvu. Element diffLength říká, že jedinci můžou být různé délky, atribut max pak určuje maximální povolenou délku, atribut span rozsah, ve kterém jsou generovány délky jedinců počáteční populace. Řádek 85 říká, že počáteční jedinci nemají být vytvářeni náhodně, ale načítáni ze souboru. Další tři řádky specifikují dolní a horní meze pro váhy (ř. 87), šířky (ř. 88) a matice norem (ř. 89).

Element fitness určuje, zda má být hodnota účelové funkce spočtena použitím gradientního algoritmu (pro případ, že učíme pouze skryté vrstvy, lms) nebo klasicky průchodem tréninkovou množinou (pro celé sítě, error, atribut lambda určuje regularizační člen).


101:  <genetix popsize="INT" elite="INT"/>
102:     <inform log="[yes|no]" name="STRING" period="INT"/> 
103:    <save period="INT"><file name="STRING"/></save>
104:    <rates> 
105:       <JMENO_OPERATORU_1 rate="DOUBLE"/>
            ....
106:       <JMENO_OPERATORU_N rate="DOUBLE"/> 
107:    </rates> 
108:    <stopcriterion>
109:       [ <iteration count="INT"/>
110:         | <error eps="DOUBLE"/> ] 	
111:    </stopcriterion>
112: </genetix>

Element genetix je konfigurací agenta realizujícího obecný genetický algoritmus. Atribut popsize uručuje velikost populace, elite počet jedinců vybíraných do elity. Podelementy inform a stopcriterion mají stejný význam jako u ostatních iteračních agentů (viz str. [*]). Element save určuje zálohování populace do souboru.

Element rates obsahuje pravděpodobnosti jednotlivých operátorů, v našem případě může obsahovat podelementy mutation a crossover.


next up previous contents
Next: About this document ... Up: main Previous: Literatura   Obsah
Petra Kudova
2001-04-19