neural_net
Funkce:
Vrstevnatá perceptronová neuronová síť s adaptačním algoritmem Back-Propagation.
Umožňuje adaptaci sítě v průběhu její aktivní činnosti, změnu parametrů adaptace pomocí
kanálů a změnu topologie sítě v průběhu učení příp. aktivní činnosti. Trénovací množina
může být modifikována kdykoliv během činnosti sítě.
Syntax:
neural_net neural_network_name;
rem = string;
bubble = string;
timer = timer_name;
owner = owner_name;
position = integer, integer;
win_disable = [ identifier, . . . ];
win_title = string;
net_file = file_name;
train_file = file_name;
mode = real_expression;
error_value = real_dataelement;
iterations = real_expression;
learn_rate = real_expression;
momentum = real_expression;
use_momentum = boolean_expression;
linear_output = boolean_expression;
save_net = boolean_expression;
save_net_file = string;
save_train = boolean_expression;
save_train_file = string;
input_item
expression = real_expression;
end_input_item;
output_item
expression = real_dataelement;
end_output_item;
expected_output_item
expression = real_expression;
end_expected_output_item;
save_status = boolean_expression;
use_fi = boolean_expression;
struct = cardinal, cardinal, ...;
wmin = real;
wmax = real;
s = real;
end_neural_net;
Specifické parametry přístroje:
- net_file
Název souboru s neuronovou sítí. Soubor je vyhledáván v aktuálním adresáři případně
podle redirect souboru. Není-li zadán tento soubor, musí být zadána struktura sítě, tj.
musí být naplněn parametr struct. Jestliže je zadána struktura a neodpovídá souboru,
je vygenerována nová síť a uložena.
- train_file
Název souboru s trénovací množinou. Není-li zadán, je trénovací množina prázdná.
- mode
Mód činnosti sítě. Jsou povoleny následující hodnoty:
- 0 - Adaptace sítě na aktuální trénovací množinu
- 1 - Aktivní činnost sítě - síť reaguje na vstupy podle aktuálního rozložení vah
- 2 - Aktivní činnost/adaptace - síť se učí a pracuje současně
- error_value
Obsahuje datový element na na který se bude posílat hodnota váhové chybové funkce
(tato funkce bývá v literatuře označována jako Ew).
- iterations
Počet iteračních adaptačních cyklů, které se provedou v jednom časovém kroku. Má význam
pouze v módech 0 a 2.
- learn_rate
Hodnota koeficientu učení pro adapteci sítě. Hodnota musí být kladná, blízká 0. Zpravidla
se volí hodnoty 0.1 .. 0.4. V případě nevhodné volby tohoto parametru (v součinnosti s parametrem
momentum) je možné rozkmitání chybové funkce a
může dojít i ke zhroucení systému vlivem přetečení rozsahu reálných čísel
- momentum
Tento parametr má oproti learn_rate inhibiční parametr, tj. působí proti rozkmitání
soustavy. Jeho hodnota je opět kladná, blízká 0. Vhodné nastavení těchto dvou parametrů
má rozhodující vliv na rychlost učení neuronové sítě a může vést i k divergenci adaptačního
procesu (v případě nevhodné volby). Vhodná volba parametrů není matematicky popsatelná a
je záležitostí zkušeností. Oba parametry je možno měnit v průběhu adaptace - tím je možno
vytvořit modifikované algoritmy Back-Propagation dle potřeb uživatele.
- use_momentum
Používat/nepoužívat momentum.
- linear_output
Určuje tvar přenosové funkce výstupních neuronů:
- FALSE - sigmoida - rozsah výstupních veličin v intervalu (0,1)
- TRUE - lineární funkce y=x - libovolný rozsah výstupních veličin
- save_net
Uložit aktuální stav sítě do souboru podle obsahu kanálu save_net_file.
Je-li tento kanál prázdný, je aktuální stav sítě uložen do souboru, ze kterého byl načten při inicializaci.
- save_net_file
Název souboru pro uložení aktuálního stavu sítě.
- save_train
Uložit aktuální trénovací množinu do souboru podle obsahu kanálu save_train_file.
Je-li tento kanál prázdný, je trénovací množina uložena do souboru, ze kterého byla načtena při inicializaci.
- save_train_file
Název souboru pro uložení aktuální trénovací množiny.
- input_item a end_input_item
Je blok, ve kterém je možno parametrem expression zadat vstupní datový element
do sítě. Je-li potřeba použít více vstupních neuronů, je nutné použít tento blok víckrát
za sebou.
- output_item a end_output_item
Je blok, ve kterém je možno parametrem expression zadat výstupní datový element
z neuronové sítě. Je-li potřeba použít více výstupních neuronů, je nutné použít tento blok víckrát
za sebou.
- expected_output_item a end_expected_output_item
Je blok, ve kterém je možno parametrem expression zadat vstupní datový element
pro zadávání požadovaných výstupních hodnot při přidávání nových položek do trénovací množiny.
- save_status
Uloži aktuální obsah vstupních kanálů a požadovaných hodnot (tj. input_item a want_out_item).
jako poslední položku do aktuální trénovací množiny.
- use_fi
Používat/nepoužívat prahovou hodnotu neuronů. Je-li používána, její hodnota je 1.0.
- struct
Zadává strukturu sítě. Každá položka představuje počet neuronů v jedné vrstvě.
První položka představuje vstupní vrstvu, poslední položka představuje výstupní vrstvu.
- wmin
Minimální hodnota při pseudonáhodné volbě vah při inicializaci sítě.
- wmax
Maximální hodnota při pseudonáhodné volbě vah při inicializaci sítě.
- s
Hodnota strmosti sigmoidální funkce při inicializaci sítě.
Příklad:
Příklad nastavení parametrů přístroje neural_net:
neural_net SIT1;
timer = seq_1, 1;
owner = panel_1;
position = 100, 100;
net_file = 'neural1.net';
train_file = 'train1.trs';
mode = a;
error_value = b;
iterations = 10;
learn_rate = lrate;
end_function = endf;
save_net = bool;
save_net_file = strng;
save_train = bool2;
save_train_file = strng2;
input_item
expression = i1;
end_input_item;
input_item
expression = i2;
end_input_item;
input_item
expression = i3;
end_input_item;
output_item
expression = o1;
end_output_item;
struct = 3, 5, 1;
end_neural_net;
Nativní procedury přístroje
Show()
Zobrazení skrytého přístroje.
Hide()
Skrytí zobrazeného přístroje.
GetNumOfNeurons( &NumOfNeurons : real )
Vrátí počet neuronů v celé síti (včetně vstupních a výstupních)
GetNumOfNeurons( Layer : real, &NumOfNeurons : real )
Vrátí počet neuronů ve vrstvě specifikované parametrem Layer.
GetNumOfLayers( &NumOfLayers : real )
Vrátí počet vrstev v síti.
AddNeurons()
Jestliže je to možné, přidá po jednom neuronu do každé vnitřní vrstvy neuronové sítě.
DelNeurons()
Jestliže je to možné, ubere neuron z každé vnitřní vrstvy neuronové sítě.
DelLastTrainElem()
Vymaže poslední položku z trénovací množiny.
DelFirstTrainElem()
Vymaže první položku z trénovací množiny.
GetNumOfTrainElems( &NOfElems : real )
Vrátí počet položek v trénovací množině.
GetRunning( &IsRunning : boolean )
Vrátí stav sítě:
- TRUE - přístroj funguje normálně
- FALSE - došlo k matematickému zhroucení sítě (vlivem nesprávné adaptace) - je
nutno zastavit aplikaci a znovu provést adaptaci s jinými parametry příp. s
vhodnější trénovací množinou. Toto opatření je zavedeno pro zabránění zhroucení
systému.
Událostní procedury přístroje
Přístroj může volat standardní událostní procedury:
OnActivate()
Podrobnější informace k těmto procedurám lze nalézt v kapitole
Programování a procedury.