• No results found

Obě předchozí metody jsou založeny pouze na ukládání trénovacích vzorků v určité podobě, které se následně porovnávají s rozpoznávaným vzorkem. Lineární klasifiká-tor je první metodou, u které lze mluvit o opravdovém učení. Lineární klasifikáklasifiká-tor je speciálním případem neuronové sítě, která nemá skryté vrstvy. Vstupem je sloupco-vý vektor příznaků, což znamená, že v případě obrázků je ztracena informace o pozici pixelu v obrázku, protože všechny pixely jsou roztažené do jednoho vektoru.

V případě rozpoznávání písmen, kdy probíhá klasifikace do jedné z 26 tříd, si lze lineární klasifikátor představit jako 26 perceptronů, z nichž je každý připojený ke každému vstupnímu pixelu s určitou vahou. Perceptron je velmi zjednodušený matematický model neuronu, ze kterých je tvořen lidský mozek.

Každý perceptron má N vstupních příznaků xi. Každý vstupní příznak má ur-čitou váhu, se kterou vstupuje do perceptronu. Po vynásobení vstupů a jejich vah se všechny prvky sečtou. Poslední částí perceptronu je aktivační funkce f, která je popsána v kapitole 2.4.1. V lineárním klasifikátoru jsem použil perceptrony bez aktivační funkce. Název perceptronů se nepoužívá velmi často, místo toho se o per-ceptronech mluví jako o neuronech.

Obrázek 9: Schéma perceptronu

Tato metoda si nepamatuje trénovací vzorky, ale pouze sadu parametrů neboli vah W, které se na základě trénovacích dat učí užitečné informace o rozpoznávaných objektech. Po naučení parametrů už nejsou používány trénovací data a klasifikátor pracuje pouze s maticí W.

Každý řádek matice vah lze interpretovat jako samostatný klasifikátor pro jednu třídu. Každý klasifikátor vytvoří skóre pro danou třídu na základě jistoty, že vstupní vektor patří do příslušné třídy. Výstupní vektor z je složen z těchto skóre a nejvyšší skóre označuje výslednou třídu. Klasifikátory jsou takto seřazeny pod sebou, aby se

mohlo využít maticového násobení. Všechny klasifikátory jsou vyhodnoceny v jedné operaci, jak je vidět v rovnici 3. K výslednému vektoru bývá přidán takzvaný bias vektor b, který obsahuje další parametry, ale přínos je jen velmi malý. V bakalářské práci je podobného efektu docíleno přidáním Batch-normalizace.

z = W × xi + b (3)

Další možnou interpretací metody lineárního klasifikátoru je oddělování bodů nadro-vinami v N dimenzionálním prostoru, kde N je počet vstupních příznaků. Každý řádek matice W definuje jednu nadrovinu. Pokud jsou pouze dva vstupní příznaky, pak se tento problém zjednoduší na oddělování bodů přímkami v 2D prostoru.

Obrázek 10: Interpretace funkce lineárního klasifikátoru z interaktivní aplikace [1]

Obrázek 10 je vytvořen pro vstupní data o dvou příznacích. Na tomto obrázku lze vidět tři přímky, které jsou definovány naučenou maticí vah W. Kombinací těchto tří přímek vznikají tři oblasti, které vypovídají o výsledku klasifikace. Pokud bude nový bod v modré oblasti, pak ho klasifikátor zařadí do třídy modrých bodů. Obrázek 10 je pořízen z interaktivního dema [1], pro vyzkoušení fungování lineárního klasifikátoru.

V tomto demu lze sledovat všechny parametry tohoto klasifikátoru.

I když se jedná o speciální případ neuronové sítě, je tato metoda užitečná, proto-že umožňuje porovnání matice parametrů W s etalony z předchozí metody. Každý řádek matice W lze interpretovat jako samostatný etalon pro jedno písmeno. V ma-tici W by mohly vzniknout podobné písmena, jako ty z předchozí metody, pokud by to byla optimální cesta klasifikace. I když jsou písmena, uložená v matici W, pro člověka nečitelná, jedná se o optimálnější etalony, které vedou k lepší přesnosti rozpoznávání.

31

Obrázek 11: Příklady klasifikátorů písmen A, E, O, R a Z

Odlišný vzhled obrázků je způsoben tím, že etalony v metodě nejbližšího sou-seda měly pouze kladné hodnoty. Lineární klasifikátor používá i záporné hodnoty, které jsou na obrázku 11 znázorněny bílou barvou. Záporné hodnoty způsobí, že pokud touto pozicí prochází část písmene, je ohodnocení pro danou třídu sníženo.

Výsledkem poklesu ohodnocení, je nižší šance, že písmeno patří do dané třídy. Toto je dobře vidět u písmene ”O”.

K tomu, aby se mohl lineární klasifikátor učit, je zapotřebí, znát gradient vstupu

∂L

Výsledky rozpoznávání lineárním klasifikátorem jsou dle očekávání lepší než výsled-ky z metody nejbližšího souseda. Učení této metody trvá přibližně jednu minutu a rozpoznání jednoho vzorku zabere přibližně 90 µs. Regularizace neměla pozitivní vliv na výsledky rozpoznávání a ani nedocházelo k výraznému přetrénování. Velikost dávky byla zvolena 1024, počáteční rychlost učení 0,1 a její exponenciální snižování s faktorem 0,998.

Tabulka 4: Výsledky rozpoznávání lineárním klasifikátorem Sada dat Přesnost Přesnost MATLAB

Data1 77,5 % 75,4 %

Data3 79 % 77,1 %

Data5 79,6 % 78,6 %

MNIST 90,8 % 90,4 %

Jelikož se jedná o speciální případ neuronové sítě, pokusil jsem se vytvořit po-dobnou síť v programu MATLAB, s využitím Neural Network toolboxu. Učení v MATLABu je rychlejší, což lze očekávat, protože MATLAB využívá výpočet-ního výkonu grafické karty. V MATLABu docházelo k většímu přetrénování a ani v MATLABu neměla regularizace pozitivní účinek.

2.3.1 Chybová funkce

Aby se mohla jakákoliv metoda učit, musí být nejprve určeno ohodnocení, jak dobře či špatně umí rozpoznávat dané vzorky. Ohodnocení je možné, pouze pokud je ke každému vzorku známa třída, do které patří. Mezi dvě nejznámější chybové funkce patří Softmax a Support Vector Machine, neboli SVM. V praxi mají tyto dvě chybové funkce velmi podobné výsledky, proto je v této práci použita pouze funkce SVM.

Funkce SVM vytvoří ohodnocení v podobě číselné hodnoty z výstupního vektoru.

SVM „chce“ aby skóre správné třídy bylo alespoň o ∆ větší než skóre ostatních tříd.

Pokud je největší skóre o ∆ větší než všechny ostatní skóre, poté je ohodnocení rovno 0, neboli výstupní vektor se shoduje se správným výsledkem. V opačném případě ohodnocení vyjadřuje, jak moc je výsledný vektor špatně.

L =

j̸=yi

max (0, sj − syi + ∆) (7)

2.3.2 Učení

Parametry v matici W jsou na začátku náhodně nastaveny, a postupem času se musí měnit tak, aby po vynásobení s vstupním vektorem x klasifikátor správně předpoví-dal třídu vstupního vektoru. K učení je využita chybová funkce, která je definována tak, aby pro správné předpovědi hodnotila klasifikátor nízkými hodnotami. Jelikož je hodnocení závislé na parametrech W, lze problém učení považovat za hledání mi-nima funkce s proměnnými parametry. Pokud by chybová funkce byla závislá pouze na dvou parametrech, pak ji lze zobrazit ve 3D, kde souřadnice x a y jsou proměnné parametry a souřadnice z zobrazuje výsledné ohodnocení z chybové funkce.

Obrázek 12: Příklad chybové funkce s dvěma proměnnými parametry

I když se může zdát, že stačí náhodně zkoušet různá nastavení parametrů W, v praxi by tento postup mohl fungovat jen pro klasifikátory s malým počtem para-metrů. S rostoucím počtem parametrů se zvyšuje i dimenze prostoru, ve kterém je hledáno minimum. V případě lineárního klasifikátoru, který má na vstupu vektor o velikosti 1024 prvků a 26 tříd, je v klasifikátoru 26624 parametrů. V tak velkém

33

prostoru by náhodné hledání trvalo příliš dlouho. Náhodné hledání, v efektivněj-ší formě, je však v některých případech jediným způsobem, jak najít parametry.

Jedna z efektivnějších forem náhodného hledání parametrů je například genetický algoritmus.

Efektivnější hledání minima lze dosáhnout pomocí gradientu funkce. Gradient vyjadřuje, jakým směrem funkce stoupá. Pokud je od parametrů odečten gradient, pak lze předpokládat, že klasifikátor bude při stejném vstupu ohodnocen nižší hod-notou. Nižší hodnota ohodnocení znamená, že klasifikátor vytvořil lepší předpověď.

Analogií k optimalizační úloze je kulička na okraji misky, která se postupně skutálí na dno misky. Stejně tak se bod, definovaný parametry klasifikátoru, ”skutálí” do lokálního minima chybové funkce.

Tato metoda učení se nazývá Stochastic Gradient Descent, neboli SGD, ve vol-ném překladu stochastický sestup po gradientu. Mnohem častěji se však používá Mini-batch Gradient Descent - MGD, kde se gradient nevytváří pouze z jednoho vstupního vektoru, ale z dávky vstupních vektorů – mini-batch. Zatímco SGD op-timalizuje klasifikátor pouze pro jednu třídu za jednu iteraci, MGD opop-timalizuje klasifikátor pro všechny třídy zároveň v jedné iteraci. MGD vytváří stabilnější gra-dient a tím umožňuje sestup k minimu po kratší dráze. Čím větší je dávka, tím kvalitnější gradient je vytvořen. Proto se velikost dávky nastavuje v rozmezí 128 až 1024 vzorků, pokud se všechna data vejdou do operační paměti.

Jelikož se jedná o iterativní proces, je potřeba zvolit, jak velký skok ve směru gradientu se provede. Velikost kroku neboli rychlost učení se volí hyperparametrem λ. Pokud je rychlost učení příliš malá, pak hledání minima trvá déle a je možné, že se sestup ustálí v neoptimálním lokálním minimu. Naopak pokud je rychlost učení příliš velká, tak je sestup k minimu rychlý, ale je možné, že se bod neustálí v úplném minimu, ale bude oscilovat okolo tohoto minima. Z toho vyplývá, že je na začátku dobré sestupovat rychle a ke konci sestup zpomalit, aby došlo k sestupu až na minimum. Proto se často hyperparametr λ během učení snižuje. Postupů, jak snižovat rychlost učení, je hned několik. Pro tuto bakalářskou práci jsem zvolil exponenciální snižování rychlosti učení pomocí hyperparametru λdec. λdecmůže mít hodnotu mezi 0 a 1, ale většinou je velmi blízko 1, například 0.999, z čehož vyplývá, že při každé iteraci je rychlost učení snížena.

λ = λdec · λ (8)

Pro vypočítání gradientu je zapotřebí znát lokální derivaci dané funkce. Jelikož jsou v této práci používány vrstvy, výsledná derivace se skládá z lokálních derivací jed-notlivých vrstev, které se složí dohromady podle pravidla o derivaci složené funkce.

Derivace složené funkce znamená, že lokální derivace dané vrstvy se vynásobí s gra-dientem výstupu dané vrstvy ∂L∂z, který je roven gradientu vstupu následující vrstvy

∂fi+1

∂x . Takto se gradient postupně šíří z výstupu poslední vrstvy, který je rovný 1, skrz všechny vrstvy.

2.3.3 Regularizace

Hlavním cílem učení je, aby klasifikátor správně rozpoznal vzorky, které vidí poprvé.

Ty mohou být unikátní, a proto je potřeba, aby se klasifikátor učil obecné informace.

Pokud se klasifikátor naučí rozpoznávat pouze vzorky, které už viděl, nebo které jsou téměř totožné s trénovacími vzorky, pak se mluví o přetrénování, neboli overfitting.

Jedná se o velký problém v neuronových sítích a regularizace je jednou z možností jak přetrénování omezit.

Regularizace je součástí chybové funkce, kde se přičte regularizační penalizace.

Zatímco chybová funkce hodnotí správnost rozpoznávání, regularizace hodnotí pa-rametry W. Pokud se v matici W nachází malé množství parametrů s vysokými hodnotami, zatímco ostatní parametry mají hodnoty blízké nule, pak pravděpodob-ně dochází k přetrénování, protože nejsou využity všechny příznaky ze vstupního vektoru. To znamená, že se klasifikátor dívá pouze na několik málo příznaků, které byly rozhodující pro trénovací data, ale pravděpodobně se nejedná o pravidla, která by platila obecně.

Nejběžnější regularizační penalizace je L2, neboli kvadratická penalizace. Tato penalizace bude „trestat“ vysoké hodnoty parametrů, a tím budou mít parametry tendenci být více rozprostřené a tím budou lépe využívat všechny dostupné příznaky ze vstupního vektoru.

Síla regularizace se nastavuje hyperparametrem η. Správné nastavení tohoto hy-perparametru lze nejlépe poznat, pokud je přesnost rozpoznávání trénovacích dat podobná přesnosti rozpoznávání validačních dat. Pokud je přesnost rozpoznávání trénovacích dat výrazně vyšší, pak je regularizace příliš slabá a dochází k přetréno-vání. Úplná forma chybové funkce je zobrazena v rovnici 10.

L = 1 N

i

Li + ηR (W ) (10)

Gradient regularizace ∂W∂R, je nutné přičíst k lokálnímu gradientu parametrů W.

∂R

∂W = 2· η · W (11)

35

Related documents