Začněme vysvětlením rozdílu mezi strojovým učením a klasickým programováním. Při klasickém programování je naším cílem navrhnout a implementovat algoritmus, který zpracuje vstupní data tak, aby bylo dosaženo požadovaného výsledku.
Při učení neuronových sítí máme k dispozici velké množství vstupních datových souborů a s nimi spojených známých výsledků a naším cílem je, aby model neuronové sítě vytvořil co nejpřesnější algoritmus, který ze vstupních dat vytvoří požadované výstupy. Model natrénovaný na známých případech pak použijeme k vytvoření výstupů pro další vstupní sady, u nichž výsledky neznáme.
Máme nové jméno
Populární ekonomicko-technický magazín CIO Business World od letošního roku změnil název na CIOtrends.
Typickým příkladem je předpovídání, zda zákazník banky bude splácet úvěr. Model byl natrénován na velkém množství předchozích případů, u kterých známe výsledek. Na základě vstupních atributů, v tomto případě věku, pohlaví, povolání, rodinného stavu, počtu dětí, regionu a mnoha dalších údajů, které banka od žadatele o úvěr požaduje, model vygeneruje výstup – pravděpodobnost, s jakou klient úvěr splatí.
Neuron a neuronová síť
Základním stavebním prvkem neuronové sítě je umělý neuron, který simuluje chování biologického neuronu. Neuron přijímá vstupy, které se násobí váhami, a poté tyto hodnoty zpracovává pomocí aktivační funkce. Neuronová síť se skládá z neuronů uspořádaných do tří druhů vrstev.
- Vstupní vrstva přijímá vstupní data, například textové vstupy, zpracovávaný text, soubory číselných hodnot nebo obrázky a videa.
- Skryté vrstvy zpracovávají data a hledají vzory. Počet a velikost těchto vrstev závisí na typu úlohy, kterou má síť řešit, nebo na konkrétní úloze.
- Výstupní vrstva zprostředkovává výsledky, například klasifikaci objektů nebo předpověď hodnot.
Mezi neurony ve vrstvách existují spojení, která jsou reprezentována váhami. Váhy určují, jak velký vliv má jeden neuron na druhý. Během učení se tyto váhy upravují tak, aby pomohly síti dosáhnout požadovaného výkonu. Všechny neurony dané vrstvy přijímají vstupy od neuronů předchozí vrstvy a následně posílají své výstupy do další vrstvy. Nakonec výstupní vrstva vytváří výstup celé sítě.
Struktura neuronové sítě, zejména počet vrstev a počet neuronů v každé vrstvě, je vždy kompromisem. Potřebujete dostatečně velkou síť, aby zachytila strukturu problému, ale na druhou stranu ne příliš velkou, aby nebyla příliš pomalá.
Hluboké učení
Hluboké učení neboli deep machine learning je metoda strojového učení, kdy algoritmus využívající vícevrstvé nelineární výpočetní modely dokáže z dat získat informace. Modely hlubokého učení používají neuronové sítě s velkým počtem vrstev.
I jednoduché modely mají obvykle alespoň deset vrstev, složitější varianty mají stovky nebo tisíce vrstev. Modely se trénují na obrovském množství dat. Čím větší je množství trénovacích dat, tím přesnější jsou předpovědi modelu. Trénování je časově náročné, natrénovaný model pak lze použít pro předpovědi v reálném čase.
Trénování neuronové sítě
Trénování neuronové sítě umožňuje modelu dělat přesné předpovědi. Bez trénování by síť nebyla schopna upravit své parametry tak, aby správně reagovala na různá vstupní data. Trénování se používá k úpravě parametrů neuronové sítě, zejména váhových koeficientů, aby se zlepšila přesnost předpovědí.

Model se učí na základě poskytnutých dat, aby se dokázal přizpůsobit různým situacím. Cílem trénování je, aby ztrátová funkce, která měří nepřesnost předpovědí, byla co nejmenší. Trénování neuronové sítě je iterativní proces, který začíná inicializací váhových koeficientů. Ty mohou být například nastaveny na náhodné hodnoty. Trénování neuronové sítě probíhá v iteracích nazývaných epochy. Každá epocha se skládá z následujících kroků:
Dopředné šíření – (forward propagation) neboli srozumitelněji dopředný přechod, při kterém vstupní data procházejí sítí ze vstupní vrstvy přes skryté vrstvy do výstupní vrstvy. Výstupy sítě se porovnávají se skutečnými hodnotami, což umožňuje vypočítat chybu. Přechody vpřed se používají také tehdy, když se natrénovaná neuronová síť používá k predikci.
Výpočet ztrátové funkce – ztrátová funkce určuje rozdíl mezi předpovězenými výstupy modelu a skutečnými hodnotami, kterých chceme dosáhnout. Zjednodušeně řečeno, ztrátová funkce vypočítává, jak nepřesné byly předpovědi ve srovnání se skutečnými daty pro danou sadu vstupů. Cílem trénování je minimalizovat hodnotu ztrátové funkce, a tím zvýšit přesnost modelu.
Optimalizace – v tomto kroku hledáme váhové koeficienty, které minimalizují ztrátovou funkci. Optimalizátor neboli algoritmus pro úpravu vah modelu na základě ztrátové funkce určuje, jak a o kolik se mají jednotlivé parametry změnit, aby se minimalizovala hodnota ztrátové funkce. Efektivně řídí, jak se model učí a přizpůsobuje na základě vstupních dat. Výběr správného optimalizátoru může výrazně ovlivnit rychlost a kvalitu konvergence modelu.
Zpětné šíření – při zpětném šíření informace o změnách parametrů proudí zpět, od výstupu přes skryté vrstvy ke vstupu. Zpětné šíření řeší úpravu vah neuronových spojení, tak aby neuronová síť poskytovala výstup, který se blíží požadovanému výsledku, tj. minimalizujeme ztrátovou funkci.
Proces postupuje od výstupů ke vstupům. Nejprve se vypočítá gradient vah poslední výstupní vrstvy a jako poslední se vypočítá gradient vah první vrstvy. Výsledky výpočtu gradientu z příslušné vrstvy se použijí při výpočtu gradientu pro předchozí vrstvu.
Teoretické minimum
V tomto ohledu máme dvě zprávy, jednu dobrou a jednu špatnou. Dobrou zprávou je, že navzdory složitosti problému je základní princip fungování poměrně jednoduchý. Špatnou zprávou je, že se ve výkladu neobejdeme bez derivací, takže by bylo dobré vědět, co je to derivace.
Je to změna funkce vzhledem k velmi malé změně její proměnné nebo proměnných. Derivace funkce v libovolném bodě je z geometrického hlediska sklon tečné čáry ke grafu funkce.
Cílem je najít bod nejmenší chyby neboli lokální minimum funkce, v němž je tečna přímky vodorovná. V procesu trénování proto průběžně aktualizujeme váhové koeficienty. Sklon vlevo je klesající neboli záporný a znamená, že je třeba zvýšit hodnotu váhového koeficientu. Sklon vpravo je směrem nahoru neboli kladný a v tomto případě je třeba hodnotu váhového koeficientu snížit.
Míra snížení nebo zvýšení je určena koeficientem udávajícím míru učení. Zpravidla jde o malé číslo, například 0,01. Tento postup se v jednotlivých cyklech opakuje, dokud není dosaženo minima. V tomto bodě bude tečna rovnoběžná s osou x.
Sestup po gradientu
Cílem gradientního sestupu je minimalizovat chybu mezi předpovídaným a skutečným výstupem. Jak již bylo uvedeno, výchozím bodem může být libovolný bod. V tomto bodě najdeme derivaci, tj. gradient tečny. Sklon v počátečním bodě bude strmější, ale s generováním nových parametrů by se strmost měla postupně snižovat, dokud se nedosáhne nejnižšího bodu na křivce, tzv. bodu konvergence, v němž je směr tečny rovnoběžný s osou x.

Zpětná propagace při trénování neuronových sítí v praxi znamená řetězení derivací z výstupů na vstupy. Nejprve se vypočítá derivace hodnoty chyby vzhledem k hodnotám vah poslední vrstvy. Výsledkem jsou gradienty a jejich hodnoty použijeme k výpočtu gradientů další vrstvy. Tento postup se opakuje, dokud model nedosáhne gradientů pro každou váhu.
Zjistíme hodnotu, o kterou musíme změnit hodnotu příslušného váhového koeficientu. Tuto hodnotu vynásobíme rychlostí učení. Jde o malou hodnotu, obvykle 0,1, 0,01 nebo 0,001. Míra učení ovlivňuje, jak rychle se model přizpůsobí danému problému.
Nižší hodnoty míry učení vyžadují více trénovacích epoch, protože při každé aktualizaci dochází pouze k malým změnám vah. Chyby v prvních neuronech se počítají na základě chyb z dalších vrstev. Následuje opět dopředné šíření, při kterém získáme předpovídanou výstupní hodnotu.
O gradientech se zmiňujeme také proto, že při trénování neuronové sítě mohou nastat dvě nežádoucí situace – explodující a mizející gradient.
Explozivní gradient (explodující gradient) nastává, když gradienty exponenciálně rostou při postupu sítě zpět, což vede k nestabilnímu trénování. Tento jev způsobuje, že hodnoty gradientů jsou příliš velké, což vede k obrovským aktualizacím váhových koeficientů. Neuronová síť se nemůže efektivně učit a stává se nestabilní.
Mizející gradient je nestabilní chování, ke kterému dochází při učení hlubokých neuronových sítí, když není možné šířit informace o gradientu z vrstev na výstupu zpět do vrstev na vstupu. Gradient „mizí“ tak, že postupným násobením velmi nízkých hodnot se stává stále menším a menším a blíží se nule. Jinými slovy, váhový koeficient se neaktualizuje nebo téměř neaktualizuje. Sítě tak předčasně konvergují k nesprávnému řešení nebo je prakticky nemožné je naučit.
Tento problém se řeší změnou aktivační funkce. Aktivační funkce určuje, jaký bude výstup neuronu na základě jeho vstupu. Účelem aktivační funkce je vnést do výstupu neuronu nelinearitu. Neuronová síť bez aktivační funkce je v podstatě jen lineární regresní model a výstupem složených lineárních funkcí bude opět jen lineární funkce. Nelineární transformace aktivačních funkcí umožňují neuronové síti učit se a řešit složitější úlohy.
Neuronové sítě jsme vyhodili oknem a vrátily se do dveří
Základy neuronových sítí položili vědci již v roce 1943, kdy neurovědec Warren McCulloch a matematik Walter Pitts představili první matematický model neuronu. Dokázali, že neuronové sítě mohou teoreticky řešit jakoukoli výpočetní úlohu.
V 70. letech 20. století došlo k významnému teoretickému pokroku, když Geoffrey Hinton a jeho kolegové vyvinuli algoritmus zpětného šíření, který umožnil efektivně trénovat vícevrstvé sítě. Trénování neuronových sítí je však výpočetně náročné, zejména pokud sítě obsahují velký počet vrstev a neuronů. Klasické procesory by tyto úlohy nedokázaly efektivně zvládnout, což omezuje rozsah a použitelnost hlubokého učení. Hlavním problémem bylo již zmíněné mizení gradientu.
Při rozumném objemu výpočtů na danou dobu se váhy přestaly aktualizovat a neuronová síť se přestala učit. Proto se obor na nějakou dobu dostal do pozadí.
Rozvoj a masové využití hlubokého učení je úzce spojen s pokrokem v oblasti výpočetní techniky, konkrétně s dostupností výkonných grafických karet, které se ukázaly jako mimořádně vhodné pro paralelní zpracování dat. Mají tisíce jader schopných zvládat jednoduché operace současně, což je ideální pro trénování neuronových sítí, které vyžadují masivně paralelní výpočty.
Hlavním důvodem, proč GPU výrazně urychlily vývoj hlubokého učení, je jejich schopnost efektivně řešit maticové operace, které jsou základem výpočtů v neuronových sítích. Zatímco CPU jsou optimalizovány pro sériové zpracování úloh, GPU mají architekturu navrženou pro paralelní zpracování velkého množství dat, což je pro rychlé trénování hlubokých neuronových sítí klíčové.
Před nástupem výkonných GPU trvalo trénování hlubokých neuronových sítí na velkých souborech dat týdny, měsíce, nebo dokonce roky. Grafické karty umožnily zkrátit tuto dobu na dny, nebo dokonce hodiny, což výrazně zvýšilo efektivitu a praktičnost využití hlubokého učení. Toto zvýšení rychlosti trénování umožnilo výzkumníkům a vývojářům experimentovat s většími a složitějšími modely, což vedlo k významnému pokroku v oblasti umělé inteligence.
Vysoký výkon grafických karet a dalších speciálních hardwarových řešení, jako jsou jednotky TPU (Tensor Processing Units), umožnil trénovat neuronové sítě i při velmi malých změnách váhových koeficientů a dosáhnout požadovaného výsledku. S rostoucím výkonem hardwaru mohou výzkumníci a vývojáři vytvářet stále složitější modely neuronových sítí, které budou schopny řešit ještě náročnější úlohy a přinášet nové inovace v oblasti umělé inteligence.
Autor je redaktor Nextech
Ćlánek vyšel v magazínu CIOtrends 1/2025.

CIOtrends si můžete objednat i jako klasický časopis (v tištěné i v digitální podobně) Věnujeme se nejnovějším technologiím a efektivnímu řízení podnikové informatiky. Přinášíme nové ekonomické trendy a analýzy a zejména praktické informace z oblasti podnikového IT se zaměřením na obchodní a podnikatelské přínosy informačních technologií. Nabízíme možná řešení problémů spojených s podnikovým IT v období omezených rozpočtů. Naší cílovou skupinou je vyšší management ze všech odvětví ekonomiky.
Chcete si článek přečíst celý?
Tento článek je součástí exkluzivního obsahu pouze pro odběratele našeho newsletteru.
Přihlaste se k odběru newsletteru a my vám do mailu pošleme odkaz na celý článek.