0V súčasnosti sa riadiaci subsystém robotov softvérovo realizuje vyhodnotením údajov zo vstupných senzorov rôznymi logickými podmienkami, pomocou ktorých sú vstupným údajom zo senzorov robota priradené požadované výstupy.

Iná metóda realizácie riadiaceho subsystému robota spočíva vo využití neurónových sietí. Využitie neurónovej siete spočíva v tom, že v procese učenia sa neurónov sú vypočítané tzv. váhy (pamäť neurónov) v závislosti od údajov zo vstupných senzorov (vstupný vektor) a očakávaných výstupov. V priebehu činnosti robota riadiaci subsystém vypočíta na základe váh a vstupného vektora reakciu robota na vstupný vektor. Výhoda použitia neurónovej siete sa prejaví pri spravovaní väčšieho množstva vstupných údajov. Napríklad, ak má robot osem vstupných senzorov, je k dispozícii 256 možných reakcií na vstupné údaje. Programovanie takého množstva kombinácií je už zložitejšie a časovo náročnejšie. Zložitejšie roboty majú desiatky vstupných senzorov. Z toho dôvodu sa javí využitie neurónových sietí ako výhodné.

Biologický neurón

Neuróny [1] sú základné stavebné prvky nervovej sústavy. Každý neurón je napojený na stovky až tisíce ďalších neurónov a tak vzniká výpočtová sieť. Úlohou neurónov je zbieranie, spracovávanie, uchovávanie a prenos informácií. Jednotlivé neuróny sú prepojené cez nervové zakončenia (synapsie).

1 
 Obr. 1: Neurón [1]

Technický neurón - perceptrón

Technický neurón – perceptrón je veľmi zjednodušená forma biologického neurónu. Je základnou stavebnou a výpočtovou jednotkou neurónovej siete. Jedným z najrozšírenejších modelov umelého neurónu je perceptrón používajúci skokovú aktivačnú (prenosovú) funkciu signum. Pamäť neurónu je reprezentovaná váhami na jednotlivých vstupoch neurónu.

 2
 Obr. 2: Model neurónu [2]

Neurón spracováva vstupné informácie na výstupné najčastejšie podľa vzťahu [2]:

zj = Σ wi * xi + b (i = 1 až n)

kde z je výstup (potenciál) neurónu
f(z) – aktivačná funkcia (lineárna, signum, sigmoida, …)
xi – vstupy neurónu
wi – synaptické váhy na vstupoch
b – prah citlivosti (bias)
Ako aktivačná funkcia sa často používa funkcia signum.
Definícia aktivačnej funkcie signum:
Sign(z) = 1 pre z > 0
Sign(z) = 0 pre z <= 0
Výraz Σ wi * xi + b = 0 je rovnicou priamky. Vzorec vhodne upravíme. Ako
ukážku použijeme dvojvstupový neurón.
x1 * w1 + x2 * w2 = -b x1 = -b/w1, ak x2 = 0 x2 = -b/w2, ak x1 = 0
Dostaneme priamku spájajúcu body x1 a x2, ktoré rozdelia rovinu na triedy „0“ a „1“.

 3
 Obr. 3: Rozdelenie vstupného priestoru do dvoch tried („0“ a „1“) priamkou pre prípad neurónu s dvoma vstupmi [2]

Podľa spôsobu učenia delíme neurón na učenie s učiteľom (porovnávanie výstupu s požadovanou hodnotou) a na učenie bez učiteľa. Učenie je proces, pomocou ktorého získame hodnoty váh (vektoru w) také, že dokážu rozdeliť rovinu do požadovaných tried. Najrozšírenejšou metódou učenia je Hebbovo učenie (Hebbov algoritmus), ktoré je odvodené z učenia biologických systémov, podľa ktorého v procese učenia dochádza k modifikácii váh.

Algoritmus učenia [2]:

1. Inicializácia váh (malé náhodné hodnoty)
2. postupné predkladanie vstupného vektoru a požadovaného výstupu
3. výpočet potenciálu neurónu
4. výpočet (adaptácia) váh
výstup = očakávaný výstup: wi(t + 1) = wi(t) (koniec výpočtu)
výstup = 0 a mal by byť 1: wi(t + 1) = wi(t) + n * d * xi(t)
výstup = 1 a mal by byť 0: wi(t + 1) = wi(t) – n * d * xi(t)
5. opakovanie procesu učenia (až dosiahneme nulovú, resp. minimálnu odchýlku výstupnej hodnoty od očakávanej).

Niekedy sa používa n, ktorá sa v čase mení (znižuje sa) podľa vzťahu
n = k/t
k = malá konštantná hodnota
d = rozdiel medzi skutočnou (očakávanou) a vypočítanou hodnotou, platí
d = o(t) – y(t)
Jednovrstvové neurónové siete je možné použiť len na riešenie tzv. lineárne separovateľných úloh (AND, OR). Na riešenie lineárne neseparovateľných úloh (XOR) musíme použiť viacvrstvovú sieť.

Použitie pri spracovaní logických operácií

 4
 Obr. 4: Príklad pre dvojvstupový neurón (logická operácia AND)

w = [0,2; 0,3] – inicializácia váh je náhodná
b = 0,1
n = 0,5

4.5 
 Tab. 1: Vstupné vektory a očakávané výstupy funkcie AND

Vlastný výpočet váh (adaptácia) a prahu citlivosti prebieha tak dlho, až d je nulová pre všetky vstupné vektory X (v našom príklade sú štyri).

4.75 
 Tab. 2: Výpočet váh

výsledok: w = [0,7; 0,3], b= -0.9
x1 = 0,9 / 0,7 = 1,28
x2 = 0,9 / 0,3 = 3

V posledných štyroch riadkoch v tab. 2 je vidieť, že d = 0 pre všetky kombinácie vstupných vektorov a očakávaných výstupov. Učenie siete je skončené. Výsledok výpočtu hodnôt je jeden z možných, pretože inicializácia váh je náhodná.

5 
 Obr. 5: Rozdelenie roviny naObr. 5: Rozdelenie roviny natriedu „0“ a „1“ podľa tabuľky 2

Riešenie logickej operácie XOR

Pretože funkcia XOR je lineárne neseparovateľná (nedokáže rozdeliť rovinu na triedu „0“ a „1“), na jej riešenie je nutné použiť viacvrstvovú neurónovú sieť.

 6
 Obr. 6: Príklad pre dvojvstupový neurón – riešenie logickej operácie XOR [2]

 

 4.5
 Tab. 3: Vstupné vektory a očakávané výstupy funkcií XOR, NAND, OR a AND podľa obr. 6

Ako vidíme, kombináciou funkcií NAND, OR a AND dostaneme funkciu XOR.

Príklad pre trojvstupovú neurónovú sieť - riešenie pohybu dvojkolesového robota s použitím aktivačnej funkcie signum a lineárnej aktivačnej funkcie

Cieľom tejto kapitoly je realizácia jednoduchej (jednovrstvovej) neurónovej siete na riadenie malého mobilného robota – sledovača čiary. Na základe údajov zo vstupov (infrasenzorov), riadiaci subsystém (neurónová sieť), ovláda jednosmerné motory pomocou PWM [2] signálov a tým aj smer jazdy robota.

 7
 Obr. 7: Schéma neurónovej siete s aktivačnou funkciou signum

 

8 
 Obr. 8: Schéma neurónovej siete s lineárnou aktivačnou funkciou

Ako je zrejmé z obr. 7, na ovládanie motorov robota je použitá jednovrstvová neurónová sieť s dvoma neurónmi a troma vstupmi. Na overenie funkčnosti neurónovej siete s prenosovou funkciou signum a lineárnou prenosovou funkciou použijeme 3Pi robot [3]. 3Pi je malý dvojkolesový robot s reflexnými infrasenzormi. Infrasenzory budú použité na snímanie čiernej vodiacej čiary. Program na ovládanie 3Pi bol napísaný v programovacom jazyku C [4]. Na snímanie vodiacej čiary použijeme tri infrasenzory z toho dôvodu, že na snímanie čiary so šírkou 19 alebo 25 mm sú postačujúce. Zvyšné dva infrasenzory (krajné) sa používajú na snímacie priečnej čiary (štart, stop).

9 
 Obr. 9: 3Pi robot [3]

Parametre: – CPU ATmega328 – 20 MHz [5]
– dva jednosmerné motory
– päť reflexných infračervených senzorov
– LCD display

 10
 Obr. 10: 3Pi robot – pohľad zospodu [3]

 

 11
 Obr. 11: Kombinácie pohybu robota po čiare s troma vstupmi

Červené štvorce na obr. 10 predstavujú infračervené snímače 3Pi robota. Sú červeno zakrúžkované na obr. 9. Červený štvorec na čiernom podklade predstavuje log. 1 a na bielom podklade log. 0.

Aktivačná funkcia signum:

Podľa obr. 11 zostrojíme tabuľku vstupov (vstupných vektorov) a očakávaných výstupov.

 11.5
 Tab. 4: Vstupné vektory a očakávané výstupy pre aktivačnú funkciu signum

Počiatočné (inicializačné) hodnoty váh sú náhodné hodnoty z intervalu <0, 1>.
Koeficient učenia n = 0,5
Chyba učenia d = 0

Vypočítané váhy:
LM: w[0][3] = 7,984; w[0][2] = 3,331; w[0][1] = ] = -4,056; w[0][0] = 0,402;
PM: w[1][3] = -2,516; w[1][2] = 1,831; w[1][1] = 3,944; w[1][0] = 0,402;

Lineárna aktivačná funkcia:

Definícia lineárnej aktivačnej funkcie: y = z

Podľa obr. 11 zostrojíme tabuľku vstupov (vstupných vektorov) a očakávaných výstupov.

 11.75
 Tab. 5: Vstupné vektory a očakávané výstupy pre lineárnu aktivačnú funkciu

Počiatočné (inicializačné) hodnoty váh sú náhodné hodnoty z intervalu <0, 1>. Koeficient učenia n=0,1; Chyba učenia d = 0,2

Vypočítané váhy:
LM: w[0][3] = 0,17; w[0][2] = 0,07; w[0][1] = 0,01; w[0][0] = 0,39;
PM: w[1][3] = 0,00; w[1][2] = 0,03; w[1][1] = 0,13; w[1][0] = 0,44;

Robot počas svojho pohybu po čiernej čiare sníma svojimi infrasenzormi odraz infračerveného svetla od plochy pod ním. Nakoľko odraz infračerveného svetla od čiernej plochy je iný ako od bielej plochy, je na výstupe infrasenzorov rozdielne napätie. Toto napätie je digitalizované analógovo – číslicovými prevodníkmi robota a po úprave predstavujú vstupný vektor do tabuľky očakávaného pohybu robota. Váhy obsahuje riadiaci subsystém robota v programe. Vypočítané výstupné hodnoty neurónov idú priamo do pohybového subsystému robota. Výsledkom tejto činnosti je pohyb robota po dráhe.

Záver

Lineárna aktivačná funkcia je pre pohyb robota – sledovača čiary vhodnejšia (ak je chyba učenia malá), pretože pohyb po čiare je plynulejší, ako pri prenosovej funkcii signum (tab. 4, tab. 5), ktorá pozná iba dva stavy:
0 = napr.: motor vypnutý;
1 = napr.: motor zapnutý
Uvedená jednovrstvová neurónová sieť spoľahlivo funguje aj s použitím aktivačnej funkcie sigmoida. Váhy pre pohyb robota (sledovača čiary) sú vypočítané na externom počítači a vložené do zdrojového kódu na riadenie robota. Možný je aj ten postup, že výpočet váh sa realizuje priamo v 3Pi podľa tab. 4 alebo tab. 5 v závislosti od aktivačnej funkcie. Jednovrstvová neurónová sieť s troma vstupmi patrí k tým jednoduchším. Na zložitejšie aplikácie sa používajú iné typy sietí. Napríklad Kohonenova sieť, viacvrstvové typy sietí a podobne. V prípade viacvrstvových sietí s väčším počtom vstupov nie je možné ručne definovať parametre takejto siete, a preto sa používajú niektoré z existujúcich výpočtových algoritmov. Najznámejší je algoritmus „back – propagation“. Neurónové siete sa používajú v rôznych oblastiach činností. Od rozpoznávania hlasu až po riadenie kozmických robotov.

Použitá literatúra:

[1] Úvod do neurónových sietí – dokument dostupný na adrese http://www.lopikus.cz/temp/BMI-NAN.ppt, strana 4 – 8.
[2] Novák, P.: Mobilní roboty (1. diel) Praha: 2005. 247 strán. ISBN 80-7300-141-1.
[3] https://www.pololu.com/docs/pdf/0J21/3pi.pdf
[4] Váňa, V.: Mikrokontroléry ATMEL AVR – Programování v jazyce C. Praha 2003. ISBN 80-7300-102-0.
[5] http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf

TEXT/FOTO ING. DUŠAN HORVÁTH, PHD. – DOC. ING. MARIAN KRÁLIK, CSC. STU BRATISLAVA