Conditions for passing the course, study materials
Umělé neuronové sítě se inspirují fungováním neuronových sítí živých organismů a mezi jejich schopnosti patří např. učit se na příkladech, vyrovnat se s částečným poškozením sítě, zobecňovat naučená data. Důležitými vlastnostmi jsou masívní paralelismus a absence centrálního řízení sítě. Jednotlivé neurony v sítí si vzájemně posílají signály, jejichž intenzita je modulována vahami synapsí - propojů mezi neurony. V každém neuronu je zpracován souhrn do něj přicházejících signálů a výsledek je přeposlán dále. Sítě jsou v naprosté většině aplikací simulovány na běžně dostupných GPU, speciální hardware se dnes používá v minimální míře.
Lineární klasifikátor je nejjednodušší model hlubokého učení (v tomto případě "mělkého" učení, protože nepoužívá hlubokou architekturu). Lineární klasifikátor implementujeme pomocí jednoduchého modelu neuronu - tzv. perceptronu, s nímž jste se seznámili v předchozí kapitole. Vyložíme základní rámec hlubokého učení, na čem je založeno, jak probíhá a jaké základní fáze a komponenty používá. Představíme tři algoritmy tréninku - lineární regresi, perceptronový učící algoritmus a logistickou regresi. Hledání minima ztrátové funkce přiblížíme z pohledu gradientního sestupu, z pohledu algebry a pomocí počtu pravděpodobnosti - aby pravděpodobnost správné klasifikace byla co nejvyšší.
Následně ukážeme klasifikaci do více kategorií. Při klasifikaci do dvou kategorií se ve výstupní vrstvě (s jedním neuronem) používá obvykle aktivační funkce sigmoida, a jako ztrátová funkce sítě se bere střední kvadratická chyba (mean_squared_error), anebo lépe binární křížová entropie (binary_crossentropy). Co ale v případě více kategorií? Ukážeme, že přirozeným zobecněním sigmoidy na více kategorií je aktivační funkce softmax, a ztrátovou funkcí poskytujíc správné výsledky s největší pravděpodobností je křížová entropie (categorical_crossentropy).
Základním modelem hlubokého učení jsou vícevrstvé přímovazebné sítě složené z neuronů, které počítají lineární kombinaci vstupů a vah wx, na niž navazuje nelinearita (nejčastěji relU nebo sigmoid). Typicky využívají učení s učitelem založené na minimalizaci ztrátové funkce, nejčastěji s využitím gradientních metod. Tyto sítě mají řadu aplikací a vyskytují se jako samostatné moduly v řadě složitějších architektur.
Klasický algoritmus Backpropagation ze 70. let, který jako první umožnil učení vícevrstvého perceptronu, je stále používán a optimalizován pro zvýšení rychlosti a účinnosti učení.
Pro zvýšení rychlosti tréninku a zejména pro zlepšení kvality výsledného naučení sítě (kdy nejčastějším problémem bývá přeučení) je nutno laborovat s nastavením sítě, tedy s hyperparametry jako např. počet, velikost a struktura vrstev, jejich aktivační funkce apod. Regularizace je pak modifikace učícího algoritmu zaměřená na snížení chyby na testovací množině, bez ohledu na tréninkovou chybu. Konečně optimalizátor je metoda úpravy vah na základě ztrátového skóre během učení. Nejjednodušším optimalizátorem je klasický algoritmus SGD, existuje však řada jeho vylepšení, které zvýšují efektivitu a přesnost učení.
Přestože existují metodiky, jak všechna tato vylepšení učení používat, není zatím možné je zcela automatizovat a zpravidla vyžadují experimentování a zkušenost toho, kdo síť nastavuje.
Zpracování obrazu je dnes jednou z nejrozšířenějších aplikací hlubokého učení a výsledky jsou často srovnatelné s lidským pozorovatelem. Obrazová data (tj. matice obrazových bodů) vyžadují poněkud odlišný způsob zpracování. Dříve se obrazy složitě předzpracovávaly a extrahovaly se z nich tzv. příznaky nezávislé na obrazových transformacích (posun, rotace, změna měřítka, osvětlení...). Příznaky pak sloužily jako vstup sítě. S nástupem hlubokého učení je možno napájet síť přímo obrazovými data. To však vyžaduje mnohavrstevné architektury se speciálními typy vrstev, zejména konvoluční vrstvy a vrstvy sdružující dle maxima (max-pooling).
Sekvenčními daty jsou nejčastěji texty anebo sekvence obrázků (video), hudební záznamy a podobně. Tedy data, kde existuje vnitřní logika a závislost mezi jednotlivými prvky sekvence, a to mnohdy od sebe vzdálenými na textové/časové ose. Rekurentní vrstvy sítě se snaží tyto závislosti postihnout pomoc vnitřních zpětných vazeb, tzn. vstupem do vrstvy je jednak výstup předchozí vrstvy, jednak výstup této vrstvy samotné z předchozího kroku výpočtu. Graf propojení neuronů v síti tedy obsahuje cykly.
Transformer je model hlubokého učení, který využívá mechanismus sebepozornosti (self-attention), přiřazující každé části vstupních/výstupních dat k ní relevantní kontext. Používá se především v oblastech zpracování přirozeného jazyka (NLP) a počítačového vidění (CV). Transformery se zpravidla skládají z enkodéru, který kóduje vstupní sekvenci do její vnitřní reprezentace stejné délky, a dekodéru, který z vnitřní reprezentace generuje výstup. Některé modely (např. pro generování textů) neobsahují enkodér.