Hluboké učení využívající umělé neuronové sítě se spolu s dalšími probranými metodami (SVM, evoluční algoritmy) řadí do skupiny "měkkých výpočtů" (soft computing) - metod určených k přibližnému řešení problémů, které neumíme (nebo dokonce není v principu možno) vyřešit optimálně a řešení logicky odůvodnit. Často je tomu i proto, že popis problému je sám o sobě vágní ("udělej k večeři něco dobrého") nebo přesná data nejsou k dispozici (naučte tým robotů hrát fotbal tak, aby porazil protivníka).
Umělé neuronové sítě reprezentují poznatky formou (a) signálů cirkulujících v síti - ty odpovídají krátkodobé paměti, (b) topologií sítě - počtem vrstev, počtem neuronů ve vrstvách, jejich typem a jejich vzájemným propojením, a (c) silou (vahami) těchto propojů - analogie dlouhodobé paměti. Trénink sítě spočívá v tom, že jí postupně předkládáme příklady vstupů reprezentující problém, na jehož řešení chceme síť natrénovat, a je-li to možné, ihned porovnáváme výsledky sítě se správnými výstupy. Příklad - síť klasifikující obrázky z kamery autonomního vozidla do kategorií jako "chodec", "strom", "pes", "protijedoucí auto", "stín", "semafor" a podobně. Vstupy = bitové mapy z kamery, výstupy = objekty v obraze a jejich kategorie. Během tréninku se nastavují váhy sítě (a někdy i její propojení) tak, aby se dosáhlo co největšího podílu správných výstupů.
Obr.1: Biologický neuron. By Prof. Loc Vu-Quoc - Own work, CC BY-SA 4.0, Link
Obr. 2 Matematický model neuronu, tzv. perceptron, nejčastěji používaný v umělých neuronových sítích.
Úvodní studií o umělých neuronových sítích je McCulloch-Pittsův model neuronu z roku 1943, který je schematicky znázorněn na obr. 2. Autoři si byli sami vědomi, že tento model sám o sobě má velmi limitovanou kapacitu a navrhovali, že pro složité problémy bude třeba (po vzoru mozku) vytvořit vrstevnatou síť neuronů, popřípadě i se zpětnými vazbami. Problémem bylo, že nikdo neuměl takovou síť natrénovat, a to až do roku 1985 (později se ukázalo že řešení bylo známo z jiných oborů už dříve, ale nikoho nenapadlo je použít). Z pohledu obecného strojového učení jde jednoduše o nelineární regresi...
Základem učení (hlubokých) neuronových sítí, pro někoho možná překvapivě, je jednak lineární algebra, hlavně počítání s vektory, maticemi a obecně s tenzory, a dále diferenciální počet, konkrétně gradientní metody. Aplikací gradientních metod pro vícevrstvou neuronovou síť vznikl algoritmus Backpropagation.
Obr. 3. Vícevrstvá neuronová síť architektury m-n-o-p.
Tento algoritmus (a další, vycházející z podobných principů) je dnes používán ve většině aplikací umělých neuronových sítí. V poslední době zaznamenávají fenomenální úspěch hluboké neuronové sítě, které jsou klasickou implementací obecnějšího principu hlubokého učení (deep learning). Mívají běžně desítky i stovky skrytých vrstev (viz obr. 3) a používají se pro ně vylepšené aktivační funkce a tréninkové algoritmy. Tato vylepšení jsou poměrně jednoduchá, opět ale trvalo přes 20 let, než byla nalezena a prověřena. Přestože se vynakládá značné úsilí na matematický popis neuronových sítí, ve snaze zjednodušit a zautomatizovat jejich návrh, stále je nutno s řadou jejich nastavení (tzv. hyperparametrů ručně experimentovat, aby se dosáhly kvalitní výsledky učení.
Hluboké učení dnes často předčí člověka v disciplínách jako jsou strategické hry, počítačové vidění, řízení autonomních vozidel a podobně. Pro zajímavé aplikace navštivte například Wikipedii, web firmy Google DeepMind, nebo stránky projektu Tensorflow rovněž od Google. Zde existují jednoduše použitelné softwarové knihovny, které umožňují konstruovat a spouštět sítě hlubokého učení online v prostředí Google Colab i bez důkladné znalosti jejich matematické teorie, a bez nutnosti mít výkonné GPU pro jejich trénink. Pro experimenty s hlubokým učením je vhodné začít knihou F. Chollet: Deep learning v jazyku Python, kde jsou základní principy a experimenty vysvětleny hned v úvodních třech kapitolách.