Umělá inteligence

Hluboké učení

 Cíle

  • Seznámit se se základními principy a modely hlubokého učení
  • Pochopit princip gradientních metod učení, přípravy dat a nastavení tréninkového algoritmu
  • Umět využívat základní funkce knihovny Tensorflow (anebo obdobné)

 Klíčová slova

Umělá neuronová síť, gradientní učení, Backpropagation, transformer, velký jazykový model (LLM)

Shrnutí kapitoly

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ů.

Neuron3.png
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 vektorymaticemi 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.

Ověření znalostí
  1. Zkonstruujte ručně umělou neuronovou síť počítající funkci XOR se dvěma vstupy. Hodnotám vstupů/výstupů přířaďte význam -1=false, 1=true. Uveďte, jakou aktivační funkci jste použili.
  2. Existuje celkem 2 na 2n (dvě na dvě na n) různých logických funkcí s n vstupy a jedním výstupem. Kolik z nich lze realizovat jediným perceptronem s funkcí "ostrá nelinearita"?
  3. Z hlediska teorie pravděpodobnosti má v některých případech smysl trénovat síť na minimum funkce log (f(w)) , kde f je logistická sigmoida. Najděte derivaci funkce log (f(w)) vzhledem ke každé váze wi
  4. Zopakujte předchozí úlohu pro derivaci funkce log (1–f(w)).
  5. Uvažujte síť s neurony s lineární aktivační funkcí, kde výstup neuronu je konstanta krát vnitřní potenciál.
    (a) Pro síť s jednou skrytou vrstvou spočtěte vektor výstupů sítě y jako funkci matice vah W a vstupů sítě x, tak aby se ve výpočtu nikde neobjevovaly výstupy neuronů skryté vrstvy. Ukažte, že lze sestavit síť bez skryté vrstvy, která počítá stejnou funkci.
    (b) Zobecněte výsledek pro libovolný počet skrytých vrstev. 
  6. Tréninková množina pro algoritmus Backpropagation má 100 vzorků se stejným vstupem. U 80 z nich je požadovaný výstup sítě 1, ve zbývajících 20 je to 0. Uvažujte, že síť se naučí na globální minimum chyby. Jaký bude výstup sítě pro daný vzorový vstup? Nápověda: spočtěte derivaci chybové funkce pro danou tréninkovou množinu a položte ji rovnu nule.
Úloha: jednoduchá neuronová síť. Čas na odevzdání:1 týden
Na https://playground.tensorflow.org/ si zvolte dataset "Spiral". Manipulujte s hyperparametry sítě, až se vám podaří (během max. 3000 tréninkových epoch) dosáhnout trénovací i testovací chyby (Training loss / Test loss) nanejvýš 0.01. Můžete použít nejvýše 8 skrytých neuronů. Vysvětlení k principům a parametrům modelu sítě najdete v úvodních kapitolách knihy F. Chollet: Deep learning v jazyku Python. Odevzdejte odkaz na playground, který v sobě obsahuje veškeré parametry sítě. Max 8 bodů.
Literatura a zdroje

Základní:

  • RUSSELL, S.J., NORVIG, P. Artificial Intelligence: A Modern Approach, kap. 18.7.

  • Chollet, F.: Deep learning v jazyku Python. Grada, Praha, 2019.

Doporučená:

  • Goodfellow, I., Bengio, Y., Courville, A.: Deep Learning, MIT Press, 2016. Dostupné online.

Užitečné odkazy: