Operácie

Cvičenie základov strojového učenia: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
Balogh (diskusia | príspevky)
dBez shrnutí editace
 
(29 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 1: Riadok 1:
__NOTOC__


== Návod: Jednoduché rozpoznávanie obrázkov s Teachable Machine ==
== Úlohy ==
 
# Vyskúšajte si jednoduché rozpoznávanie obrázkov pomocou nástroja [https://teachablemachine.withgoogle.com/ Teachable Machine]
# Natrénujte rozpoznávanie aspoň troch rozličných gest pomocou [https://www.math.ml-machine.org/ math.ml-machine.org] (ak by niečo nešlo, alternatívne sa dá použiť aj [https://createai.microbit.org/ CreateAI])
# Implementujte algoritmus v micro:bite a pozorujte vplyv jednotlivých parametrov na kvalitu a rýchlosť učenia.
 
''(na tomto návode na cvičenia spolupracovala Gemini AI)''
 
 
== '''1. časť: Jednoduché rozpoznávanie obrázkov s Teachable Machine''' ==
 
'''Teachable Machine''' je bezplatný webový nástroj od spoločnosti Google, ktorý umožňuje trénovať jednoduché modely strojového učenia (napr. rozpoznávanie obrázkov) bez potreby programovania. Funguje priamo v prostredí
internetového prehliadača Edge alebo Chrome. Nie je potrebné nič ďalšie inštalovať. Na počítači potrebujete webkameru. Počítače v CPU majú webkameru na monitore zasunutú.
 
<center>
[[File:teachableMachine.png|thumb|center|800px|''Príklad rozpoznávania chorôb izbových rastlín.'']]
</center>


'''Teachable Machine''' je bezplatný webový nástroj od spoločnosti Google, ktorý umožňuje trénovať jednoduché modely strojového učenia (napr. rozpoznávanie obrázkov) bez potreby programovania. Je ideálny pre rýchle študentské projekty.


=== 🎯 Krok 1: Začnite Projekt ===
=== 🎯 Krok 1: Začnite Projekt ===
# Otvorte nástroj vo svojom prehliadači: [https://teachablemachine.withgoogle.com/ Teachable Machine]
# Otvorte nástroj vo svojom prehliadači: [https://teachablemachine.withgoogle.com/ Teachable Machine]
# Kliknite na tlačidlo '''Začíname''' (Get Started).
# Kliknite na tlačidlo '''Get Started''' (Začíname).
# Vyberte typ projektu '''Projekt rozpoznávania obrázkov''' (Image Project).
# Vyberte typ projektu '''Image Project''' (Projekt rozpoznávania obrázkov).
# Zvoľte '''Štandardná klasifikácia obrázkov''' (Standard image model).
# Zvoľte '''Standard image model''' (Štandardná klasifikácia obrázkov).
 
 


=== 🖼️ Krok 2: Vytvorte a Naplňte Triedy (Kategórie) ===
=== 🖼️ Krok 2: Vytvorte a Naplňte Triedy (Kategórie) ===
''Triedy sú kategórie, ktoré sa bude model učiť rozpoznávať (napr. "Jablko", "Banán").''
''Triedy sú kategórie, ktoré sa bude model učiť rozpoznávať (napr. "Ruka", "Prst").''


# '''Premenovanie Tried:''' V sekcii s triedami (Class 1, Class 2, atď.):
# '''Premenovanie Tried:''' V sekcii s triedami (Class 1, Class 2, atď.):
#* Kliknite na názov triedy (napr. ''Class 1'') a premenujte ju na názov vášho prvého objektu (napr. '''Jablko''').
#* Kliknite na názov triedy (napr. ''Class 1'') a premenujte ju na názov vášho prvého objektu (napr. '''Ruka''').
#* Postup zopakujte pre ďalšie triedy (napr. '''Banán''', '''Stôl''' - pre pozadie/prázdne miesto).
#* Postup zopakujte pre ďalšie triedy (napr. '''Prst''', '''Nič''' - pre pozadie/prázdne miesto).
# '''Pridanie Tréningových Dát:''' Pre každú triedu musíte nahrať vzorky.
# '''Pridanie Tréningových Dát:''' Pre každú triedu musíte nahrať vzorky.
#* Kliknite na tlačidlo '''Nahrať''' (Upload) pod názvom triedy.
#* Kliknite na tlačidlo '''Webcam''' (Kamera) pod názvom triedy.
#* Nahrajte aspoň '''20-30 obrázkov''' pre každý objekt/triedu. Fotky by mali zachytávať objekt z rôznych uhlov a s rôznym osvetlením, aby bol model robustný.
#* Podržte tlačidlo '''Hold to record''' a nahrajte aspoň '''10-20 obrázkov''' pre každý objekt/triedu. Počas získavania obrázkov by ste mali zachytávať objekt z rôznych uhlov a s rôznym osvetlením, aby bol model robustný.
 
 
'''⚡️ Pre Pokročilých Študentov: ''' na trénovanie nemusíte použiť kameru, ale môžete si pripraviť 3-4 sady obrázkov, ktoré chcete roztriediť do kategórií (napr. psi, mačky, kone a pod.) a nahrať ich do trénovacej množiny zo súborov.


=== 🧠 Krok 3: Trénujte Model ===
=== 🧠 Krok 3: Trénujte Model ===
''Trénovanie učí model priradiť vzory k správnej triede.''
''Trénovanie učí model priradiť vzory k správnej triede.''


# V strednej sekcii kliknite na tlačidlo '''Trénovať model''' (Train Model).
# V strednej sekcii kliknite na tlačidlo '''Train Model''' (Trénovať model).
# '''Počkajte:''' Proces trvá od niekoľkých sekúnd do minút. Počas trénovania nezavrite okno prehliadača.
# Čakajte. Proces trvá od niekoľkých sekúnd do minút. Počas trénovania nezavrite okno prehliadača.
# Po dokončení sa zobrazí správa '''"Model Trained!"''' (Model trénovaný!).
# Po dokončení sa zobrazí správa '''"Model Trained!"''' (Model trénovaný!).
# Ak si roztvoríte pokročilé '''Advanced''' možnosti, môžete meniť parametre učenia alebo sa pozrieť ako samotný proces prebieha '''Under the hood'''.


=== 🧪 Krok 4: Testujte Model ===
=== 🧪 Krok 4: Testujte Model ===
''V pravej sekcii môžete model ihneď otestovať.''
 
V pravej časti môžete model ihneď otestovať.


# Použite '''Webkamera''' (Webcam) alebo '''Súbor''' (File) na ukázanie nového obrázku alebo živého vstupu z kamery.
# Použite '''Webkamera''' (Webcam) alebo '''Súbor''' (File) na ukázanie nového obrázku alebo živého vstupu z kamery.
Riadok 34: Riadok 59:
#* Ak model rozpozná objekt s vysokou istotou (blízko 100%), trénovanie bolo úspešné.
#* Ak model rozpozná objekt s vysokou istotou (blízko 100%), trénovanie bolo úspešné.


=== 📤 Krok 5: Exportujte Model (Voliteľné) ===
''Ak chcete model použiť v inej webovej aplikácii (napr. vo Scratchi, P5.js alebo na vlastnej stránke):''


# Kliknite na tlačidlo '''Exportovať Model''' (Export Model).
 
# Zvoľte požadovaný formát (napr. '''TensorFlow.js''' pre web).
'''⚡️ Pre Pokročilých Študentov:''' Ak chcete model použiť v inej webovej aplikácii (napr. vo Scratchi, P5.js alebo na vlastnej stránke), môžete to spraviť tlačidlom '''Export Model''' (Exportovať Model). Zvoľte požadovaný formát (napr. '''TensorFlow.js''' pre web) a kliknite na '''Upload my model'''. Poskytnutý webový odkaz môžete použiť vo svojom projekte.
# Kliknite na '''Nahrať môj model''' (Upload my model) a skopírujte poskytnutý webový odkaz, ktorý môžete použiť vo svojom projekte.
 


----
----
'''💡 Dôležitý Tip:'''
'''💡 Dôležitý Tip:'''
Nezabudnite vždy trénovať aj triedu pre '''prázdne pozadie''' (napr. "Stôl" alebo "Nič"), aby model nepriraďoval vaše objekty k náhodným záberom, keď tam nič nie je.
Nezabudnite vždy trénovať aj triedu pre '''prázdne pozadie''' (napr. "Nič"), aby model nepriraďoval vaše objekty k náhodným záberom, keď tam nič nie je.
```
 
 
 
 
 


Chceli by ste k tomuto návodu pridať aj obrázky alebo odkazy na konkrétne kurzy na wiki?


== '''2. časť: ML-machine pre micro:bit s matematickou vizualizáciou''' ==


Nástroj '''ml-machine''' je trocha zložitejší nástroj, ktorý umožňuje trénovať jednoduché modely strojového učenia (Machine Learning) a nasadiť ich priamo na mikrokontrolér BBC micro:bit. Táto
verzia na '''math.ml-machine.org''' navyše vizualizuje matematické princípy trénovania, čo je
ideálne pre hlbšie pochopenie pre pokročilejších študentov.




== Návod: ml-machine pre Micro:bit s matematickou vizualizáciou ==
<center>
[[File:mlProjectWindow.png|thumb|center|800px|''Príklad rozpoznávania rozličných pohybov.'']]
</center>


'''ml-machine''' je nástroj vytvorený pre študentov, ktorý umožňuje trénovať jednoduché modely strojového učenia (Machine Learning) a nasadiť ich priamo na mikrokontrolér BBC micro:bit. Táto verzia na '''math.ml-machine.org''' navyše vizualizuje matematické princípy trénovania, čo je ideálne pre hlbšie pochopenie pre pokročilejších študentov.


=== 🎯 Krok 1: Príprava a Spustenie Projektu ===
=== 🎯 Krok 1: Príprava a Spustenie Projektu ===


# Otvorte nástroj v prehliadači: [https://www.math.ml-machine.org/ math.ml-machine.org]
# Otvorte nástroj v prehliadači: [https://www.math.ml-machine.org/ math.ml-machine.org]
# V ľavej časti obrazovky sa nachádza sekcia '''Model Setup''' (Nastavenie modelu).
# V ľavej časti obrazovky sa nachádzajú jednotlivé sekcie pre postupnú tvorbu a trénovanie modelu.
# '''Input (Vstup):''' Vyberte typ vstupu, ktorý bude micro:bit posielať. Pre jednoduché projekty zvyčajne zvolíte:
Začneme sekciou'''Data''' v ktorej budeme zbierať vstupné dáta. Ako vstup sa dá využiť len
#* '''Accelerometer''' (Akcelerometer) pre rozpoznávanie pohybu (napr. pre rozpoznávanie mávania, poklepania).
akcelerometer.  
#* Alebo '''Digital/Analog Pin''' (Digitálny/Analógový pin) pre externé senzory (napr. svetelný senzor, snímač teploty).
# Teraz pripojíme micro:bit, ktorý bude zbierať trénovacie dáta. Najprv nahráte do micro:bitu
# '''Output (Výstup):''' Zvoľte typ výstupu, napr. '''LED Matrix''' (LED Matica) pre zobrazenie ikony alebo '''Serial''' (Sériový výstup) pre odosielanie dát do počítača.
špeciálny kód (Download).
# '''Classes (Triedy):''' Nastavte počet tried, ktoré chcete rozpoznať (napr. 2 alebo 3). Premenujte ich na jasné popisy (napr. '''Mávanie''', '''Kľud''', '''Otočenie''').
# Po jeho nahratí pripojíte micro:bit cez Bluetooth rozhranie (Connect).  
# Na niektorých počítačoch bude potrebné zapnúť Bluetooth v prostredí Windows. Po spárovaní by sme
teoreticky mohli micro:bit odpojiť a merať dáta nezávisle na PC, ale potrebujeme pripojenie káblikom kvôli napájaniu. Ak by sme mali batériu, toto spojenie by sme mohli teraz prerušiť.
 


=== 📈 Krok 2: Zber Dát (Data Collection) ===
=== 📈 Krok 2: Zber Dát (Data) ===
''Pre správne trénovanie je kľúčový kvalitný zber dát – čím viac rôznorodých a presných dát pre každú triedu, tým lepší model.''
''Pre správne trénovanie je kľúčový kvalitný zber dát – čím viac rôznorodých a presných dát pre každú triedu, tým lepší model.''


# V sekcii '''Data Collection''' zvoľte, ako budete dáta zbierať (cez '''micro:bit''' alebo '''simulátor''').
# Veľkým tlačidlom ➕ vytvoríte toľko kategórií, koľko ich chcete natrénovať. Napríklad vytvoríme jednu pre pohyb vodorovne a jednu pre zvislo. Nezabuddnite ich rozumne pomenovať (Press here to change name).
# Ak používate micro:bit, pripojte ho k počítaču a spárujte. Uistite sa, že máte na micro:bite nahraný firmvér, ktorý mu umožňuje komunikovať s ml-machine (zvyčajne ho ponúkne na stiahnutie samotný nástroj).
# Postupne nazbierame trénovacie dáta ('''+ Add Data'''). Pripravte sa a počas merania držte stlačené tlačidlo '''B''' na microbite. Pre každú kategóriu potrebujete minimálne 4-5 vzoriek. Snažte sa dáta zbierať v rôznych podmienkach, ktoré zodpovedajú reálnemu použitiu.
# Pre každú vytvorenú triedu:
 
#* Kliknite na príslušné tlačidlo triedy (napr. '''Mávanie''').
'''💡 Dôležitý Tip:'''
#* Spustite akciu (napr. začnite micro:bitom mávať, držte ho v kľude, alebo ho otočte).
Nezabudnite vždy trénovať aj triedu pre prípad, kedy sa nič nedeje (napr. "Nič"), aby model nepriraďoval vaše pohyby k náhodným triedam, hoci s microbitom nehýbete.
#* Zbierajte '''dostatočné množstvo vzoriek''' (ideálne 50+ pre každú triedu). Snažte sa dáta zbierať v rôznych podmienkach, ktoré zodpovedajú reálnemu použitiu.
 
 
 
=== 🧠 Krok 3: Trénovanie Modelu (Trainer) ===
''Táto verzia ml-machine ponúka aj vizuálny pohľad na to, ako sa model učí a ako "vidí" vaše dáta. Je to kľúčové pre pochopenie matematického pozadia.''
 
# Prejdite do sekcie '''Trainer''' (Trénovanie).
# Spustite učenie neurónovej siete tlačidlom '''Train Model'''. Parametre zatiaľ nemusíte meniť.
#* V pravej časti okna sa zobrazí  graf, na ktorom uvidíte, ako počas trénovania a učenia klesá chybová funkcia.
 
<center>
[[File:lossCurve.png|thumb|center|''Pokles chybovej krivky v čase.'']]
</center>
 
=== 🧪 Krok 4: Testovanie a validácia (Validate) ===
 
# '''Testovanie presnosti (Accuracy):''' Otestujte model s novými, neznámymi dátami priamo z micro:bitu. Podobne ako v 2. kroku aj sem pridajte nejaké nové dáta, ktorými svoj model otestujete.
Na týchto dátach sa už model nebude učiť, ale viete vyhodnotiť ako presne sa natrénoval. Ak sú výsledky presné (vysoká predikcia pre správnu triedu), model je pripravený. Ak nie, vráťte sa ku Krok 2 (viac dát) alebo Krok 3 (úprava algoritmu/parametrov).
 
 
=== 🚀 Krok 5: Nasadenie do praxe (Model) ===
 
# Prejdite do sekcie '''Model'''.
#* V stĺpci Prediction vidíte, ako model rozpoznáva aktuálne signály. Posuvníkom viete nastaviť citlivosť, teda hranicu istoty, pri ktorej sa spustí nejaká akcia na micro:bite.
#* V stĺpci Led output viete každej triede priradiť nejaký obrázok na displeji
#* V ďalšom môžete priradiť aj nejaký zvuk (prosím, nepoužívať!).
#* V poslednom stĺpci je možné zapnúť pri danej triede aj výstup na mikropočítači a niečo tým reálne ovládať. Túto možnosť nemáme zatiaľ ako využiť.
#* V okne s reálnymi dátami pripojte mikrobit (vyberte možnosť The same - teda ten istý, ktorý aj meria) a overte funkčnosť vašej natrénovanej siete v realite.
#* Model je teraz natrvalo v micro:bite a ak by sme ho napájali z batérie, tak dokáže vykonávať predikcie autonómne bez pripojenia k počítaču.
 
 
 
 
 
== '''3. časť: Vysvetlivky a experimentovanie s parametrami''' ==
 
 
=== Architektúra a Štruktúra Neurónovej Siete v ml-machine ===
 
Neurónová sieť (NN) použitá v ml-machine je optimalizovaná pre malé zariadenia, ako je micro:bit, a je navrhnutá tak, aby efektívne spracovala extrahované príznaky (Features) bez veľkých nárokov na pamäť.
Používa jednoduchú, ale výkonnú architektúru známu ako '''Multi-layer Perceptron (MLP)''' alebo '''Plne prepojená sieť''' (Fully Connected Network). Ide o základný typ neurónovej siete, kde je každý neurón v jednej vrstve prepojený s každým neurónom v nasledujúcej vrstve. Architektúra je takmer vždy trojvrstvová, čo je minimum potrebné pre efektívnu klasifikáciu, známa ako '''Štruktúra Enkodér/Klasifikátor'''.
 
[[File:ml-machine_NN_architecture_visual.png|thumb|center|500px|Grafické znázornenie architektúry neurónovej siete používanej v ml-machine. Zobrazuje vstupnú vrstvu (príznaky), skrytú vrstvu (učenie) a výstupnú vrstvu (triedy) s prepojeniami medzi nimi.]]
 
# Vstupná vrstva ('''Input Layer''') prijíma spracované dáta, t.j. príznaky (features) vypočítané z dát akcelerometra (napr. Max values, Mean, Standard Deviation, RMS, atď.). Počet neurónov závisí od počtu vybraných príznakov. Ak je vybratých 9 príznakov, vstupná vrstva bude mať 9 neurónov.
# Skrytá vrstva ('''Hidden Layer''') vykonáva hlavnú výpočtovú prácu – učí sa komplexné vzťahy a vzory medzi vstupnými príznakmi a výstupnými triedami. Neuróny v tejto vrstve spracúvajú informácie a posúvajú ich ďalej. Počet neurónov je definovaný parametrom '''Nodes''' (Uzly), ktorý môžete meniť pri trénovaní. Toto číslo určuje, akú komplexnosť môže model spracovať a koľko "pamäte" má na učenie. Prednastavená hodnota je 16.
# Výstupná vrstva ('''Output Layer''') poskytuje konečné predpovede v podobe pravdepodobnosti pre každú triedu. Počet neurónov v tejto vrstve je zhodný s počtom tried (napr. Mávanie, Kľud, Otočenie). Najvyššia hodnota na výstupe z tejto vrstvy určuje triedu, do ktorej patrí vstup.
 
Táto jednoduchá, no efektívna štruktúra zabezpečuje, že natrénovaný model bude mať veľmi malú veľkosť, čo je kritické pre pamäťovo obmedzené zariadenia ako je micro:bit. Zároveň dokáže vykonávať predikcie za zlomok sekundy, čím spĺňa náročné požiadavky na rýchlosť.
 
 
=== Parametre trénovania a graf ===
 
Nasledovné tzv. hyperparametre sú kľúčové pre kontrolu procesu učenia (optimalizácie) modelu.
 
[[File:ml-machine_parameters.png|thumb|600px|center|Priebeh učenia znázornený graficky a parametre, ktoré ovplyvňujú kvalitu a rýchlosť učenia.]]
 
# '''Learning rate (Miera učenia)''' určuje, o aký veľký krok sa model posunie smerom k správnemu riešeniu po každej dávke dát. Ovplyvňuje rýchlosť a stabilitu konvergencie modelu.
#* '''Prečo a kedy meniť:'''
#** '''Zvýšiť:''' Ak je trénovanie príliš pomalé, môžete mierne zvýšiť ''Learning rate''. Príliš vysoká hodnota však spôsobí nestabilitu (model "preskakuje" optimálne riešenie).
#** '''Znížiť:''' Ak sa strata (Loss) neustále zvyšuje alebo kolíše (model je nestabilný), mali by ste ho znížiť. Príliš nízka hodnota však trénovanie spomalí.
# '''Epochs (Epochy)''' definuje, koľkokrát celý tréningový dataset prejde neurónovou sieťou. Jedna epocha znamená, že model videl všetky tréningové dáta raz.
#* '''Prečo a kedy meniť:'''
#** '''Zvýšiť:''' Ak model nedosahuje dostatočnú presnosť a graf straty ešte nekonvergoval, pridajte epochy, aby mal model viac šancí sa učiť.
#** '''Znížiť:''' Ak model už dosiahol stabilnú nízku stratu, ďalšie epochy sú zbytočné. Príliš veľa epoch môže viesť k '''pretrénovaniu''' (overfittingu), kedy sa model učí len špecifické tréningové dáta a zlyháva na nových, neznámych dátach.
# '''Nodes (Uzly/Neuróny)''' - definuje počet umelých neurónov v skrytej vrstve neurónovej siete. Ovplyvňuje komplexnosť a kapacitu modelu učiť sa zložité vzťahy.
#* '''Prečo a kedy meniť:'''
#** '''Zvýšiť:''' Ak sú dáta veľmi zložité a model má nízku presnosť, zvýšte počet uzlov. Model získa vyššiu kapacitu na modelovanie komplexnejších vzťahov.
#** '''Znížiť:''' Ak sú dáta jednoduché, alebo ak sa model pretrénováva, znížte počet uzlov. Zníženie tiež urýchli trénovanie a zníži nároky na pamäť micro:bitu.
# '''Batch size (Veľkosť dávky)''' určuje, koľko vzoriek z tréningového datasetu sa spracuje v jednej dávke, kým sa vykoná jedna úprava váh siete.
#* '''Prečo a kedy meniť:'''
#** '''Zvýšiť:''' Väčšie dávky urýchľujú trénovanie a vedú k stabilnejším úpravám váh. Vyžadujú však viac pamäte.
#** '''Znížiť:''' Menšie dávky zaručujú, že sa úpravy váh dejú častejšie, čo môže modelu pomôcť uniknúť z lokálnych miním. Trénovanie je však pomalšie a menej stabilné.
 
'''Graf - Loss over time'''


=== 🧠 Krok 3: Trénovanie Modelu a Vizualizácia ===
* '''Čo vidíme na grafe (Loss over time):'''
''Táto verzia ml-machine je výnimočná v tom, že ponúka vizuálny pohľad na to, ako sa model učí a ako "vidí" vaše dáta. Je to kľúčové pre pochopenie matematického pozadia.''
** Graf ukazuje, ako sa mení '''funkcia straty''' (Loss function) modelu v priebehu času (alebo presnejšie, v priebehu epoch/krokov trénovania). Funkcia straty je číselná miera toho, aká zlá je predikcia modelu vzhľadom na skutočnú hodnotu; cieľom trénovania je minimalizovať túto stratu.
** '''Ideálny scenár:''' Strata by mala klesať rýchlo na začiatku a potom sa postupne vyrovnávať (konvergovať) blízko nuly, čo signalizuje, že model sa úspešne učí.


# Prejdite do sekcie '''Training''' (Trénovanie).
* '''Súvis s parametrami:'''
# '''Výber Algoritmu:''' Pre micro:bit sa najčastejšie používajú jednoduché a efektívne algoritmy ako '''K-Nearest Neighbors (k-NN)''' alebo '''Support Vector Machine (SVM)'''. Zvoľte si jeden.
** '''Epochs:''' Ovplyvňujú dĺžku horizontálnej osi (čas). Čím viac epoch, tým dlhší je priebeh grafu.
# '''Parametre (Pre pokročilých):''' Experimentujte s parametrami algoritmu (napr. hodnota ''K'' pre k-NN alebo ''Kernel'' pre SVM). Sledujte, ako zmena parametrov ovplyvňuje výsledky vizualizácie.
** '''Learning rate:''' Ovplyvňuje strmosť a stabilitu klesania. Vysoký ''Learning rate'' môže spôsobiť, že krivka straty bude veľmi "roztrasená" alebo sa dokonca zvýši (nestabilita). Nízky ''Learning rate'' spôsobí veľmi pomalé klesanie.
# '''Štart trénovania:''' Kliknite na tlačidlo '''Train Model'''.
** '''Nodes & Batch size:''' Tieto ovplyvňujú celkovú kapacitu modelu a šum v grafe. Ak model s menším počtom uzlov dosiahne vysokú a stabilnú stratu, znamená to, že nemá dostatočnú kapacitu na naučenie sa dát.
# '''Matematická Vizualizácia - Rozhodovacie Hranice:'''
#* V pravej časti okna sa zobrazí '''dátový graf''', kde sú vaše zozbierané dáta pre každú triedu znázornené ako farebné body.
#* Po trénovaní uvidíte '''rozhodovacie hranice''' (Decision Boundaries) – sú to čiary alebo plochy, ktoré vizuálne rozdeľujú dátový priestor. Každá oblasť ohraničená týmito hranicami reprezentuje jednu triedu.
#* '''Príklad:''' Ak trénujete rozpoznávanie ''"Mávanie"'' a ''"Kľud"'', môžete vidieť, ako sa dáta pre ''Mávanie'' (napr. červené body) zhlukujú na jednej strane hranice a dáta pre ''Kľud'' (napr. modré body) na druhej.
#* Vizualizácia ukazuje, ako model "myslí" a ako bude klasifikovať nové, neznáme dáta – ak nový dátový bod spadne do červenej oblasti, bude klasifikovaný ako ''Mávanie''.
#
# Príklad vizualizácie rozhodovacích hraníc (predstavte si tento obrázok tu):
# [[File:ml-machine_decision_boundaries_example.png|thumb|center|500px|Príklad vizualizácie dátových bodov a rozhodovacích hraníc v ml-machine. Rôzne farby reprezentujú rôzne triedy a čiary sú hranice, ktoré model použije na klasifikáciu nových dát.]]
#
# Sledujte, ako sa menia tieto hranice, keď pridáte viac dát alebo zmeníte algoritmus/parametre.


=== 🧪 Krok 4: Testovanie a Nasadenie ===


# '''Testovanie (Test Model):''' Otestujte model s novými, neznámymi dátami priamo z micro:bitu. Ak sú výsledky presné (vysoká predikcia pre správnu triedu), model je pripravený. Ak nie, vráťte sa ku Krok 2 (viac dát) alebo Krok 3 (úprava algoritmu/parametrov).
# '''Nasadenie na micro:bit (Export):''' Prejdite do sekcie '''Export'''.
#* Vyberte možnosť '''Download .hex file''' (Stiahnuť .hex súbor).
#* Nástroj vygeneruje a stiahne súbor s natrénovaným modelom.
#* Tento '''HEX súbor''' presuňte priamo na disk micro:bitu (presne tak, ako by ste nahrávali kód z MakeCode).
#* Model je teraz natrvalo v micro:bite a dokáže vykonávať predikcie autonómne bez pripojenia k počítaču.


----
'''⚡️ Pre Pokročilých Študentov:'''
'''⚡️ Pre Pokročilých Študentov:'''
Skúste porovnať presnosť a vizualizácie rozhodovacích hraníc pri použití rôznych algoritmov (napr. k-NN vs. SVM) a rôzneho nastavenia parametrov. Tým pochopíte, prečo je výber algoritmu a optimalizácia parametrov kľúčová pre úspešné strojové učenie.
 
Skúste porovnať presnosť a vizualizáciu rozhodovacích hraníc pri použití rôzneho nastavenia parametrov. Tým pochopíte, prečo je výber algoritmu a optimalizácia parametrov kľúčová pre úspešné strojové učenie.
Sledujte, ako zmena parametrov ovplyvňuje výsledky klasifikácie. Sledujte, ako sa menia výsledky, keď pridáte viac dát alebo zmeníte algoritmus/parametre.






== Vysvetlenie Príznakov (Features) pre ml-machine ==


Tieto pojmy predstavujú '''Príznaky''' (Features), ktoré sa extrahujú zo surových dát zo senzora (napr. akcelerometra) počas krátkeho časového úseku, známeho ako dátové okno.
=== Príznaky (Features) pre ml-machine ===


Spoločne tvoria '''Odtlačok prsta''' (Fingerprint) danej akcie. Namiesto trénovania modelu na tisíckach surových dátových bodov trénuje len na týchto kľúčových štatistických súhrnoch, čo je pre micro:bit s obmedzeným výkonom oveľa efektívnejšie.
Aby sme nemuseli trénovať sieť na reálnom signáli, ktorý môže mať aj niekoľko tisíc hodnôt, zmeriame signál počas krátkeho časového úseku, známeho ako dátové okno.
Potom vypočítame tzv. príznaky (Features), ktoré sa extrahujú zo surových dát zo senzora (napr. akcelerometra). Sú to bežne známe štatistické parametre signálu, napr.
aritmetický priemer, max. a min. hodnota a pod. Spoločne tvoria tzv. 'odtlačok prsta' (fingerprint) danej akcie. Namiesto trénovania modelu na tisíckach surových dátových bodov trénujeme
len na týchto kľúčových štatistických súhrnoch, čo je pre micro:bit s obmedzeným výkonom oveľa efektívnejšie.


=== Definície Pojmov ===
[[File:ml-machine_fingeprints.png|thumb|600px|center|Štatistické vlastnosti zmeraného signálu tvoria tzv. fingerprint (odtlačok).]]
 
 
'''Všeobecné štatistické príznaky:'''


; Všeobecné štatistické príznaky:
* '''Max values (Maximálne hodnoty):''' Najvyššie namerané hodnoty akcelerácie na osiach X, Y a Z v danom časovom okne. Určujú maximálnu intenzitu alebo rýchlosť vykonanej akcie.
* '''Max values (Maximálne hodnoty):''' Najvyššie namerané hodnoty akcelerácie na osiach X, Y a Z v danom časovom okne. Určujú maximálnu intenzitu alebo rýchlosť vykonanej akcie.
* '''Minimum values (Minimálne hodnoty):''' Najnižšie (najviac negatívne) namerané hodnoty akcelerácie na osiach X, Y a Z v časovom okne. Pomáhajú určiť smer a rozsah pohybu.
* '''Minimum values (Minimálne hodnoty):''' Najnižšie (najviac negatívne) namerané hodnoty akcelerácie na osiach X, Y a Z v časovom okne. Pomáhajú určiť smer a rozsah pohybu.
Riadok 122: Riadok 220:
* '''Standard deviation (Štandardná odchýlka):''' Miera rozptylu dát okolo priemeru. Čím je hodnota vyššia, tým je pohyb v danom časovom okne viac dynamický a premenlivý.
* '''Standard deviation (Štandardná odchýlka):''' Miera rozptylu dát okolo priemeru. Čím je hodnota vyššia, tým je pohyb v danom časovom okne viac dynamický a premenlivý.


; Špecializované signálové príznaky:
''' Špecializované signálové príznaky:'''
* '''Total acceleration (Celková akcelerácia):''' Vypočítaná veľkosť akcelerácie (vektorová dĺžka) bez ohľadu na smer osí X, Y a Z. Reprezentuje celkovú silu, ktorá pôsobí na micro:bit.
* '''Total acceleration (Celková akcelerácia):''' Vypočítaná veľkosť akcelerácie (vektorová dĺžka) bez ohľadu na smer osí X, Y a Z. Reprezentuje celkovú silu, ktorá pôsobí na micro:bit.
* '''Root mean square (Stredná kvadratická hodnota, RMS):''' Miera celkovej energie signálu v danom časovom okne. Pre micro:bit slúži na odhad intenzity pohybu.
* '''Root mean square (Stredná kvadratická hodnota, RMS):''' Miera celkovej energie signálu v danom časovom okne. Pre micro:bit slúži na odhad intenzity pohybu.
Riadok 129: Riadok 227:




== Parametre Trénovania Neurónových Sietí a Graf "Loss over time" ==
'''⚡️ Pre Pokročilých Študentov:'''
 
Pri defaultnom nastavení využíva neurónová sieť všetkých 9 parametrov (max, min, priemer, odchýlka...). Skúste premyslieť, ktoré z týchto 9 parametrov sú pre váš model skutočne podstatné a použite na trénovanie siete len tie najdôležitejšíe. Dokážete znížiť počet parametrov na 3-4? Výrazne sa tým zrýchli trénovanie ako aj veľksoť výsledného kódu pre mikroprocesor. Ako sa zhorší kvalita predikcie? Čo keby ste znížili počet neurónov v skrytej vrstve?
Ak študenti v ml-machine zvolia trénovanie pomocou '''Neurónovej siete''' (Neural Network), môžu meniť nasledujúce parametre. Tieto parametre sú kľúčové pre kontrolu procesu učenia (optimalizácie) modelu.
A nestačilo by zrýchlenie merať len v jednej, resp. dvoch osiach namiesto všetkých troch? Cieľom je minimalizovať veľkosť kódu a tým aj zrýchliť celý algoritmus.
 
=== Kľúčové Hyperparametre ===
 
; '''Learning rate (Miera učenia)'''
* '''Čo ovplyvňuje:''' Určuje, o aký veľký krok sa model posunie smerom k správnemu riešeniu po každej dávke dát. Ovplyvňuje rýchlosť a stabilitu konvergencie modelu.
* '''Prečo a kedy meniť:'''
** '''Zvýšiť:''' Ak je trénovanie príliš pomalé, môžete mierne zvýšiť ''Learning rate''. Príliš vysoká hodnota však spôsobí nestabilitu (model "preskakuje" optimálne riešenie).
** '''Znížiť:''' Ak sa strata (Loss) neustále zvyšuje alebo kolíše (model je nestabilný), mali by ste ho znížiť. Príliš nízka hodnota však trénovanie spomalí.
 
; '''Epochs (Epochy)'''
* '''Čo ovplyvňuje:''' Definuje, koľkokrát celý tréningový dataset prejde neurónovou sieťou. Jedna epocha znamená, že model videl všetky tréningové dáta raz.
* '''Prečo a kedy meniť:'''
** '''Zvýšiť:''' Ak model nedosahuje dostatočnú presnosť a graf straty ešte nekonvergoval, pridajte epochy, aby mal model viac šancí sa učiť.
** '''Znížiť:''' Ak model už dosiahol stabilnú nízku stratu, ďalšie epochy sú zbytočné. Príliš veľa epoch môže viesť k '''pretrénovaniu''' (overfittingu), kedy sa model učí len špecifické tréningové dáta a zlyháva na nových, neznámych dátach.
 
; '''Nodes (Uzly/Neuróny)'''
* '''Čo ovplyvňuje:''' Definuje počet umelých neurónov v skrytej vrstve neurónovej siete. Ovplyvňuje komplexnosť a kapacitu modelu učiť sa zložité vzťahy.
* '''Prečo a kedy meniť:'''
** '''Zvýšiť:''' Ak sú dáta veľmi zložité a model má nízku presnosť, zvýšte počet uzlov. Model získa vyššiu kapacitu na modelovanie komplexnejších vzťahov.
** '''Znížiť:''' Ak sú dáta jednoduché, alebo ak sa model pretrénováva, znížte počet uzlov. Zníženie tiež urýchli trénovanie a zníži nároky na pamäť micro:bitu.


; '''Batch size (Veľkosť dávky)'''
== '''💡 4. Alternatíva: CreateAI (iba pre micro:bit V2)''' ==
* '''Čo ovplyvňuje:''' Určuje, koľko vzoriek z tréningového datasetu sa spracuje v jednej dávke, kým sa vykoná jedna úprava váh siete.
* '''Prečo a kedy meniť:'''
** '''Zvýšiť:''' Väčšie dávky urýchľujú trénovanie a vedú k stabilnejším úpravám váh. Vyžadujú však viac pamäte.
** '''Znížiť:''' Menšie dávky zaručujú, že sa úpravy váh dejú častejšie, čo môže modelu pomôcť uniknúť z lokálnych miním. Trénovanie je však pomalšie a menej stabilné.


=== Graf "Loss over time" ===
Nástroj [https://createai.microbit.org/ CreateAI] slúži na trénovanie jednoduchých modelov strojového učenia, no je zameraný len na micro:bit '''V2''', ktorý má výkonnejší procesor a viac pamäte. Na rozdiel od ml-machine, ktorý sa implementuje neurónovú sieť v počítači
a micro:bit funguje len ako zdroj signálov, CreateAI umožňuje nahrať celú natrénovanú sieť priamo do micro:bitu a po odpojení od počítača tak získať reálnu autonómnu aplikáciu, ktorá dokáže rozpoznávať natrénované vzory
a na ich základe buď len zobrazovať niečo na displeji, ale pokojne aj napr. riadiť mobilný robot. Hovoríme o tzv. Edge computingu, kedy sa náročný model zjednoduší do tej miery, aby bol použiteľný aj na menej výkonnom hardvéri.


; '''Čo vidíme na grafe (Loss over time):'''
Ak máte k dispozícii micro:bit V2<ref>Spoznáte ho podľa toho, že logo [[File:logo_uBit.png|25px]] nie je farebné, ale zlaté</ref> tak si vyskúšajte natrénovať aspoň dva-tri rozličné pohyby a preneste aplikáciu priamo do micro:bitu.
* Graf ukazuje, ako sa mení '''funkcia straty''' (Loss function) modelu v priebehu času (alebo presnejšie, v priebehu epoch/krokov trénovania). Funkcia straty je číselná miera toho, aká zlá je predikcia modelu vzhľadom na skutočnú hodnotu; cieľom trénovania je minimalizovať túto stratu.
* '''Ideálny scenár:''' Strata by mala klesať rýchlo na začiatku a potom sa postupne vyrovnávať (konvergovať) blízko nuly, čo signalizuje, že model sa úspešne učí.


; '''Súvis s parametrami:'''
[[Category: Základy počítačov]]
* '''Epochs:''' Ovplyvňujú dĺžku horizontálnej osi (čas). Čím viac epoch, tým dlhší je priebeh grafu.
* '''Learning rate:''' Ovplyvňuje strmosť a stabilitu klesania. Vysoký ''Learning rate'' môže spôsobiť, že krivka straty bude veľmi "roztrasená" alebo sa dokonca zvýši (nestabilita). Nízky ''Learning rate'' spôsobí veľmi pomalé klesanie.
* '''Nodes & Batch size:''' Tieto ovplyvňujú celkovú kapacitu modelu a šum v grafe. Ak model s menším počtom uzlov dosiahne vysokú a stabilnú stratu, znamená to, že nemá dostatočnú kapacitu na naučenie sa dát.

Aktuálna revízia z 19:33, 28. november 2025


Úlohy

  1. Vyskúšajte si jednoduché rozpoznávanie obrázkov pomocou nástroja Teachable Machine
  2. Natrénujte rozpoznávanie aspoň troch rozličných gest pomocou math.ml-machine.org (ak by niečo nešlo, alternatívne sa dá použiť aj CreateAI)
  3. Implementujte algoritmus v micro:bite a pozorujte vplyv jednotlivých parametrov na kvalitu a rýchlosť učenia.

(na tomto návode na cvičenia spolupracovala Gemini AI)


1. časť: Jednoduché rozpoznávanie obrázkov s Teachable Machine

Teachable Machine je bezplatný webový nástroj od spoločnosti Google, ktorý umožňuje trénovať jednoduché modely strojového učenia (napr. rozpoznávanie obrázkov) bez potreby programovania. Funguje priamo v prostredí internetového prehliadača Edge alebo Chrome. Nie je potrebné nič ďalšie inštalovať. Na počítači potrebujete webkameru. Počítače v CPU majú webkameru na monitore zasunutú.

Príklad rozpoznávania chorôb izbových rastlín.


🎯 Krok 1: Začnite Projekt

  1. Otvorte nástroj vo svojom prehliadači: Teachable Machine
  2. Kliknite na tlačidlo Get Started (Začíname).
  3. Vyberte typ projektu Image Project (Projekt rozpoznávania obrázkov).
  4. Zvoľte Standard image model (Štandardná klasifikácia obrázkov).


🖼️ Krok 2: Vytvorte a Naplňte Triedy (Kategórie)

Triedy sú kategórie, ktoré sa bude model učiť rozpoznávať (napr. "Ruka", "Prst").

  1. Premenovanie Tried: V sekcii s triedami (Class 1, Class 2, atď.):
    • Kliknite na názov triedy (napr. Class 1) a premenujte ju na názov vášho prvého objektu (napr. Ruka).
    • Postup zopakujte pre ďalšie triedy (napr. Prst, Nič - pre pozadie/prázdne miesto).
  2. Pridanie Tréningových Dát: Pre každú triedu musíte nahrať vzorky.
    • Kliknite na tlačidlo Webcam (Kamera) pod názvom triedy.
    • Podržte tlačidlo Hold to record a nahrajte aspoň 10-20 obrázkov pre každý objekt/triedu. Počas získavania obrázkov by ste mali zachytávať objekt z rôznych uhlov a s rôznym osvetlením, aby bol model robustný.


⚡️ Pre Pokročilých Študentov: na trénovanie nemusíte použiť kameru, ale môžete si pripraviť 3-4 sady obrázkov, ktoré chcete roztriediť do kategórií (napr. psi, mačky, kone a pod.) a nahrať ich do trénovacej množiny zo súborov.

🧠 Krok 3: Trénujte Model

Trénovanie učí model priradiť vzory k správnej triede.

  1. V strednej sekcii kliknite na tlačidlo Train Model (Trénovať model).
  2. Čakajte. Proces trvá od niekoľkých sekúnd do minút. Počas trénovania nezavrite okno prehliadača.
  3. Po dokončení sa zobrazí správa "Model Trained!" (Model trénovaný!).
  4. Ak si roztvoríte pokročilé Advanced možnosti, môžete meniť parametre učenia alebo sa pozrieť ako samotný proces prebieha Under the hood.


🧪 Krok 4: Testujte Model

V pravej časti môžete model ihneď otestovať.

  1. Použite Webkamera (Webcam) alebo Súbor (File) na ukázanie nového obrázku alebo živého vstupu z kamery.
  2. Sledujte výsledky: V sekcii Output sa zobrazí, ktorú triedu model rozpoznáva a s akou Istotou (Confidence).
    • Ak model rozpozná objekt s vysokou istotou (blízko 100%), trénovanie bolo úspešné.


⚡️ Pre Pokročilých Študentov: Ak chcete model použiť v inej webovej aplikácii (napr. vo Scratchi, P5.js alebo na vlastnej stránke), môžete to spraviť tlačidlom Export Model (Exportovať Model). Zvoľte požadovaný formát (napr. TensorFlow.js pre web) a kliknite na Upload my model. Poskytnutý webový odkaz môžete použiť vo svojom projekte.



💡 Dôležitý Tip: Nezabudnite vždy trénovať aj triedu pre prázdne pozadie (napr. "Nič"), aby model nepriraďoval vaše objekty k náhodným záberom, keď tam nič nie je.




2. časť: ML-machine pre micro:bit s matematickou vizualizáciou

Nástroj ml-machine je trocha zložitejší nástroj, ktorý umožňuje trénovať jednoduché modely strojového učenia (Machine Learning) a nasadiť ich priamo na mikrokontrolér BBC micro:bit. Táto verzia na math.ml-machine.org navyše vizualizuje matematické princípy trénovania, čo je ideálne pre hlbšie pochopenie pre pokročilejších študentov.


Príklad rozpoznávania rozličných pohybov.


🎯 Krok 1: Príprava a Spustenie Projektu

  1. Otvorte nástroj v prehliadači: math.ml-machine.org
  2. V ľavej časti obrazovky sa nachádzajú jednotlivé sekcie pre postupnú tvorbu a trénovanie modelu.

Začneme sekciouData v ktorej budeme zbierať vstupné dáta. Ako vstup sa dá využiť len akcelerometer.

  1. Teraz pripojíme micro:bit, ktorý bude zbierať trénovacie dáta. Najprv nahráte do micro:bitu

špeciálny kód (Download).

  1. Po jeho nahratí pripojíte micro:bit cez Bluetooth rozhranie (Connect).
  2. Na niektorých počítačoch bude potrebné zapnúť Bluetooth v prostredí Windows. Po spárovaní by sme

teoreticky mohli micro:bit odpojiť a merať dáta nezávisle na PC, ale potrebujeme pripojenie káblikom kvôli napájaniu. Ak by sme mali batériu, toto spojenie by sme mohli teraz prerušiť.


📈 Krok 2: Zber Dát (Data)

Pre správne trénovanie je kľúčový kvalitný zber dát – čím viac rôznorodých a presných dát pre každú triedu, tým lepší model.

  1. Veľkým tlačidlom ➕ vytvoríte toľko kategórií, koľko ich chcete natrénovať. Napríklad vytvoríme jednu pre pohyb vodorovne a jednu pre zvislo. Nezabuddnite ich rozumne pomenovať (Press here to change name).
  2. Postupne nazbierame trénovacie dáta (+ Add Data). Pripravte sa a počas merania držte stlačené tlačidlo B na microbite. Pre každú kategóriu potrebujete minimálne 4-5 vzoriek. Snažte sa dáta zbierať v rôznych podmienkach, ktoré zodpovedajú reálnemu použitiu.

💡 Dôležitý Tip: Nezabudnite vždy trénovať aj triedu pre prípad, kedy sa nič nedeje (napr. "Nič"), aby model nepriraďoval vaše pohyby k náhodným triedam, hoci s microbitom nehýbete.


🧠 Krok 3: Trénovanie Modelu (Trainer)

Táto verzia ml-machine ponúka aj vizuálny pohľad na to, ako sa model učí a ako "vidí" vaše dáta. Je to kľúčové pre pochopenie matematického pozadia.

  1. Prejdite do sekcie Trainer (Trénovanie).
  2. Spustite učenie neurónovej siete tlačidlom Train Model. Parametre zatiaľ nemusíte meniť.
    • V pravej časti okna sa zobrazí graf, na ktorom uvidíte, ako počas trénovania a učenia klesá chybová funkcia.
Pokles chybovej krivky v čase.


🧪 Krok 4: Testovanie a validácia (Validate)

  1. Testovanie presnosti (Accuracy): Otestujte model s novými, neznámymi dátami priamo z micro:bitu. Podobne ako v 2. kroku aj sem pridajte nejaké nové dáta, ktorými svoj model otestujete.

Na týchto dátach sa už model nebude učiť, ale viete vyhodnotiť ako presne sa natrénoval. Ak sú výsledky presné (vysoká predikcia pre správnu triedu), model je pripravený. Ak nie, vráťte sa ku Krok 2 (viac dát) alebo Krok 3 (úprava algoritmu/parametrov).


🚀 Krok 5: Nasadenie do praxe (Model)

  1. Prejdite do sekcie Model.
    • V stĺpci Prediction vidíte, ako model rozpoznáva aktuálne signály. Posuvníkom viete nastaviť citlivosť, teda hranicu istoty, pri ktorej sa spustí nejaká akcia na micro:bite.
    • V stĺpci Led output viete každej triede priradiť nejaký obrázok na displeji
    • V ďalšom môžete priradiť aj nejaký zvuk (prosím, nepoužívať!).
    • V poslednom stĺpci je možné zapnúť pri danej triede aj výstup na mikropočítači a niečo tým reálne ovládať. Túto možnosť nemáme zatiaľ ako využiť.
    • V okne s reálnymi dátami pripojte mikrobit (vyberte možnosť The same - teda ten istý, ktorý aj meria) a overte funkčnosť vašej natrénovanej siete v realite.
    • Model je teraz natrvalo v micro:bite a ak by sme ho napájali z batérie, tak dokáže vykonávať predikcie autonómne bez pripojenia k počítaču.



3. časť: Vysvetlivky a experimentovanie s parametrami

Architektúra a Štruktúra Neurónovej Siete v ml-machine

Neurónová sieť (NN) použitá v ml-machine je optimalizovaná pre malé zariadenia, ako je micro:bit, a je navrhnutá tak, aby efektívne spracovala extrahované príznaky (Features) bez veľkých nárokov na pamäť. Používa jednoduchú, ale výkonnú architektúru známu ako Multi-layer Perceptron (MLP) alebo Plne prepojená sieť (Fully Connected Network). Ide o základný typ neurónovej siete, kde je každý neurón v jednej vrstve prepojený s každým neurónom v nasledujúcej vrstve. Architektúra je takmer vždy trojvrstvová, čo je minimum potrebné pre efektívnu klasifikáciu, známa ako Štruktúra Enkodér/Klasifikátor.

Grafické znázornenie architektúry neurónovej siete používanej v ml-machine. Zobrazuje vstupnú vrstvu (príznaky), skrytú vrstvu (učenie) a výstupnú vrstvu (triedy) s prepojeniami medzi nimi.
  1. Vstupná vrstva (Input Layer) prijíma spracované dáta, t.j. príznaky (features) vypočítané z dát akcelerometra (napr. Max values, Mean, Standard Deviation, RMS, atď.). Počet neurónov závisí od počtu vybraných príznakov. Ak je vybratých 9 príznakov, vstupná vrstva bude mať 9 neurónov.
  2. Skrytá vrstva (Hidden Layer) vykonáva hlavnú výpočtovú prácu – učí sa komplexné vzťahy a vzory medzi vstupnými príznakmi a výstupnými triedami. Neuróny v tejto vrstve spracúvajú informácie a posúvajú ich ďalej. Počet neurónov je definovaný parametrom Nodes (Uzly), ktorý môžete meniť pri trénovaní. Toto číslo určuje, akú komplexnosť môže model spracovať a koľko "pamäte" má na učenie. Prednastavená hodnota je 16.
  3. Výstupná vrstva (Output Layer) poskytuje konečné predpovede v podobe pravdepodobnosti pre každú triedu. Počet neurónov v tejto vrstve je zhodný s počtom tried (napr. Mávanie, Kľud, Otočenie). Najvyššia hodnota na výstupe z tejto vrstvy určuje triedu, do ktorej patrí vstup.

Táto jednoduchá, no efektívna štruktúra zabezpečuje, že natrénovaný model bude mať veľmi malú veľkosť, čo je kritické pre pamäťovo obmedzené zariadenia ako je micro:bit. Zároveň dokáže vykonávať predikcie za zlomok sekundy, čím spĺňa náročné požiadavky na rýchlosť.


Parametre trénovania a graf

Nasledovné tzv. hyperparametre sú kľúčové pre kontrolu procesu učenia (optimalizácie) modelu.

Priebeh učenia znázornený graficky a parametre, ktoré ovplyvňujú kvalitu a rýchlosť učenia.
  1. Learning rate (Miera učenia) určuje, o aký veľký krok sa model posunie smerom k správnemu riešeniu po každej dávke dát. Ovplyvňuje rýchlosť a stabilitu konvergencie modelu.
    • Prečo a kedy meniť:
      • Zvýšiť: Ak je trénovanie príliš pomalé, môžete mierne zvýšiť Learning rate. Príliš vysoká hodnota však spôsobí nestabilitu (model "preskakuje" optimálne riešenie).
      • Znížiť: Ak sa strata (Loss) neustále zvyšuje alebo kolíše (model je nestabilný), mali by ste ho znížiť. Príliš nízka hodnota však trénovanie spomalí.
  2. Epochs (Epochy) definuje, koľkokrát celý tréningový dataset prejde neurónovou sieťou. Jedna epocha znamená, že model videl všetky tréningové dáta raz.
    • Prečo a kedy meniť:
      • Zvýšiť: Ak model nedosahuje dostatočnú presnosť a graf straty ešte nekonvergoval, pridajte epochy, aby mal model viac šancí sa učiť.
      • Znížiť: Ak model už dosiahol stabilnú nízku stratu, ďalšie epochy sú zbytočné. Príliš veľa epoch môže viesť k pretrénovaniu (overfittingu), kedy sa model učí len špecifické tréningové dáta a zlyháva na nových, neznámych dátach.
  3. Nodes (Uzly/Neuróny) - definuje počet umelých neurónov v skrytej vrstve neurónovej siete. Ovplyvňuje komplexnosť a kapacitu modelu učiť sa zložité vzťahy.
    • Prečo a kedy meniť:
      • Zvýšiť: Ak sú dáta veľmi zložité a model má nízku presnosť, zvýšte počet uzlov. Model získa vyššiu kapacitu na modelovanie komplexnejších vzťahov.
      • Znížiť: Ak sú dáta jednoduché, alebo ak sa model pretrénováva, znížte počet uzlov. Zníženie tiež urýchli trénovanie a zníži nároky na pamäť micro:bitu.
  4. Batch size (Veľkosť dávky) určuje, koľko vzoriek z tréningového datasetu sa spracuje v jednej dávke, kým sa vykoná jedna úprava váh siete.
    • Prečo a kedy meniť:
      • Zvýšiť: Väčšie dávky urýchľujú trénovanie a vedú k stabilnejším úpravám váh. Vyžadujú však viac pamäte.
      • Znížiť: Menšie dávky zaručujú, že sa úpravy váh dejú častejšie, čo môže modelu pomôcť uniknúť z lokálnych miním. Trénovanie je však pomalšie a menej stabilné.

Graf - Loss over time

  • Čo vidíme na grafe (Loss over time):
    • Graf ukazuje, ako sa mení funkcia straty (Loss function) modelu v priebehu času (alebo presnejšie, v priebehu epoch/krokov trénovania). Funkcia straty je číselná miera toho, aká zlá je predikcia modelu vzhľadom na skutočnú hodnotu; cieľom trénovania je minimalizovať túto stratu.
    • Ideálny scenár: Strata by mala klesať rýchlo na začiatku a potom sa postupne vyrovnávať (konvergovať) blízko nuly, čo signalizuje, že model sa úspešne učí.
  • Súvis s parametrami:
    • Epochs: Ovplyvňujú dĺžku horizontálnej osi (čas). Čím viac epoch, tým dlhší je priebeh grafu.
    • Learning rate: Ovplyvňuje strmosť a stabilitu klesania. Vysoký Learning rate môže spôsobiť, že krivka straty bude veľmi "roztrasená" alebo sa dokonca zvýši (nestabilita). Nízky Learning rate spôsobí veľmi pomalé klesanie.
    • Nodes & Batch size: Tieto ovplyvňujú celkovú kapacitu modelu a šum v grafe. Ak model s menším počtom uzlov dosiahne vysokú a stabilnú stratu, znamená to, že nemá dostatočnú kapacitu na naučenie sa dát.


⚡️ Pre Pokročilých Študentov:

Skúste porovnať presnosť a vizualizáciu rozhodovacích hraníc pri použití rôzneho nastavenia parametrov. Tým pochopíte, prečo je výber algoritmu a optimalizácia parametrov kľúčová pre úspešné strojové učenie. Sledujte, ako zmena parametrov ovplyvňuje výsledky klasifikácie. Sledujte, ako sa menia výsledky, keď pridáte viac dát alebo zmeníte algoritmus/parametre.



Príznaky (Features) pre ml-machine

Aby sme nemuseli trénovať sieť na reálnom signáli, ktorý môže mať aj niekoľko tisíc hodnôt, zmeriame signál počas krátkeho časového úseku, známeho ako dátové okno. Potom vypočítame tzv. príznaky (Features), ktoré sa extrahujú zo surových dát zo senzora (napr. akcelerometra). Sú to bežne známe štatistické parametre signálu, napr. aritmetický priemer, max. a min. hodnota a pod. Spoločne tvoria tzv. 'odtlačok prsta' (fingerprint) danej akcie. Namiesto trénovania modelu na tisíckach surových dátových bodov trénujeme len na týchto kľúčových štatistických súhrnoch, čo je pre micro:bit s obmedzeným výkonom oveľa efektívnejšie.

Štatistické vlastnosti zmeraného signálu tvoria tzv. fingerprint (odtlačok).


Všeobecné štatistické príznaky:

  • Max values (Maximálne hodnoty): Najvyššie namerané hodnoty akcelerácie na osiach X, Y a Z v danom časovom okne. Určujú maximálnu intenzitu alebo rýchlosť vykonanej akcie.
  • Minimum values (Minimálne hodnoty): Najnižšie (najviac negatívne) namerané hodnoty akcelerácie na osiach X, Y a Z v časovom okne. Pomáhajú určiť smer a rozsah pohybu.
  • Mean (Priemer): Aritmetický priemer všetkých nameraných hodnôt pre každú os. Popisuje typickú, alebo strednú polohu/orientáciu zariadenia počas merania.
  • Standard deviation (Štandardná odchýlka): Miera rozptylu dát okolo priemeru. Čím je hodnota vyššia, tým je pohyb v danom časovom okne viac dynamický a premenlivý.

Špecializované signálové príznaky:

  • Total acceleration (Celková akcelerácia): Vypočítaná veľkosť akcelerácie (vektorová dĺžka) bez ohľadu na smer osí X, Y a Z. Reprezentuje celkovú silu, ktorá pôsobí na micro:bit.
  • Root mean square (Stredná kvadratická hodnota, RMS): Miera celkovej energie signálu v danom časovom okne. Pre micro:bit slúži na odhad intenzity pohybu.
  • Zero crossing rate (Frekvencia prechodu nulou): Počet, koľkokrát nameraná hodnota prekročila nulovú stredovú čiaru (z pozitívnej na negatívnu a späť) v danom okne. Indikuje frekvenciu oscilačných alebo opakovaných pohybov.
  • Number of extremes (Počet extrémov): Počet momentov, kedy akcelerácia dosiahla lokálne maximum alebo minimum (vrcholy a doly). Indikuje frekvenciu alebo počet opakovaní/zmien v smere pohybu.


⚡️ Pre Pokročilých Študentov: Pri defaultnom nastavení využíva neurónová sieť všetkých 9 parametrov (max, min, priemer, odchýlka...). Skúste premyslieť, ktoré z týchto 9 parametrov sú pre váš model skutočne podstatné a použite na trénovanie siete len tie najdôležitejšíe. Dokážete znížiť počet parametrov na 3-4? Výrazne sa tým zrýchli trénovanie ako aj veľksoť výsledného kódu pre mikroprocesor. Ako sa zhorší kvalita predikcie? Čo keby ste znížili počet neurónov v skrytej vrstve? A nestačilo by zrýchlenie merať len v jednej, resp. dvoch osiach namiesto všetkých troch? Cieľom je minimalizovať veľkosť kódu a tým aj zrýchliť celý algoritmus.

💡 4. Alternatíva: CreateAI (iba pre micro:bit V2)

Nástroj CreateAI slúži na trénovanie jednoduchých modelov strojového učenia, no je zameraný len na micro:bit V2, ktorý má výkonnejší procesor a viac pamäte. Na rozdiel od ml-machine, ktorý sa implementuje neurónovú sieť v počítači a micro:bit funguje len ako zdroj signálov, CreateAI umožňuje nahrať celú natrénovanú sieť priamo do micro:bitu a po odpojení od počítača tak získať reálnu autonómnu aplikáciu, ktorá dokáže rozpoznávať natrénované vzory a na ich základe buď len zobrazovať niečo na displeji, ale pokojne aj napr. riadiť mobilný robot. Hovoríme o tzv. Edge computingu, kedy sa náročný model zjednoduší do tej miery, aby bol použiteľný aj na menej výkonnom hardvéri.

Ak máte k dispozícii micro:bit V2[1] tak si vyskúšajte natrénovať aspoň dva-tri rozličné pohyby a preneste aplikáciu priamo do micro:bitu.

  1. Spoznáte ho podľa toho, že logo nie je farebné, ale zlaté