Vícevrstvá síť Organizační dynamika Výstupní Q O CL O JJ Skryté CTO DX> Vstupní ► Neurony jsou rozděleny do vrstev (vstupní a výstupní vrstva: obecně několik skrytých vrstev) ► Vrstvy číslujeme od 0; vstupní vrstva je nultá ► Např. třívrstvá síť se skládá z jedné vstupní, dvou skrytých a jedné výstupní vrstvy. ► Neurony v ^-té vrstvě jsou spojeny se všemi neurony ve vrstvě í + 1. ► Vícevrstvou síť lze zadat počty neuronů v jednotlivých vrstvách (např. 2-4-3-2) i Vícevrstvá síť Značení: ► Označme ► X množinu vstupních neuronů ► Y množinu výstupních neuronů ► Z množinu všech neuronů (tedy X, Y c Z) ► jednotlivé neurony budeme značit indexy i, j apod. ► fy je vnitřní potenciál neuronu j po skončení výpočtu ► yj je stav (výstup) neuronu j po skončení výpočtu (zde definujeme y0 = 1 jako hodnotu formálního jednotkového vstupu) ► Wjj je váha spoje od neuronu / do neuronu j (zejména wj0 je váha speciálního jednotkového vstupu, tj. wj0 = -ty kde bj je bias neuronu j) ► y<_ je množina všech neuronů, z nichž vede spoj do j (zejména 0 g y<_) ► je množina všech neuronů, do nichž vede spoj z j Vícevrstvá síť Aktivní dynamika: ► vnitřní potenciál neuronu j\ aktivační funkce a} pro neuron y je libovolná diferencovatelná funkce [ např. logistická sigmoida ay-(£) = —^ ] Stav nevstupního neuronu j e Z \ X po skončení výpočtu je Yj = <7/(£y) (yy závisí na konfiguraci w a vstupu x, proto budu občas psát y,(w,x)) ► Síť počítá funkci z R|X| do R|y|. Výpočet probíhá po vrstvách. Na začátku jsou hodnoty vstupních neuronů nastaveny na vstup sítě. V kroku t jsou vyhodnoceny neurony z Mé vrstvy. Vícevrstvá síť Adaptivní dynamika: ► Dána množina T tréninkových vzorů tvaru {(xk/dk) | k = 1,...,p} kde každé xk e R|X| je vstupní vektor a každé dk e 1R|Y| je očekávaný výstup sítě. Pro každé j eY označme dkj očekávaný výstup neuronu j pro vstup xk (vektor dk lze tedy psát jako (dkj).eY)' ► Chybová funkce: E(w) = ^ Ek(w) kde Ex{w) = - Yj (yj(w,xk) - dkjf Vícevrstvá síť - učící algoritmus Dávkový algoritmus (gradientní sestup): Algoritmus počítá posloupnost vektorů vah w(°\ .... ► váhy v jsou inicializovány náhodně blízko 0 ► v kroku t + 1 (zde t = 0,1,2...) je w(ř+1) vypočteno takto: ji ji ji kde Ani"-*)-||<*<") je změna váhy wj; v kroku t + 1 a 0 < e(t) < 1 je rychlost učení v kroku t + 1. Všimněte si, že Jf:(w(ř)) je komponenta gradientu VE, tedy změnu vah v kroku ř + 1 lze zapsat také takto: = - e(ř) • VE(w^). Vícevrstvá síť - gradient chybové funkce Pro každé w,-, máme dE y dEk kde pro každé k = 1,..., p platí dEk dEk a pro každé j e Z \X dostaneme -—=yj-dkj proyeY dys dEu v- dE ■ OriZr) ■ Wrj PrO j E Z \ ( Y U X) tyj hrdVr (Zde všechna ys jsou ve skutečnosti ys(w,xk)). 6 Vícevrstvá síť - gradient chybové funkce ► Pokud oj(E) = —pro každé y e Z pak 1 | G J o'j^j) = AjYjO - Yj) a dostaneme pro každé j eZ\X = y j - dkj dEk _ yr dEk dyj ~ bi By r pro y g V Aryr(1 - yr) • wrj pro j e Z \ (Y u X) Pokud cTy(£) = a • tanh(fc» • £,) pro každé y e Z pak ^y) = -(a-yy)(a + yy) Vícevrstvá síť - výpočet gradientu dE_ _ yP dE^ Algoritmicky lze = £j |a spočítat takto: Polož Sjj := 0 (na konci výpočtu bude Sj; = Pro každé k = 1,..., p udělej následující 1. spočítej yy- pro každé j e Z a Ac-tý vzor, tedy yy- = y^w,^) (tj. vyhodnoť síť ve standardním aktivním režimu) 2. pro všechna j e Z spočítej ^ pomocí zpětného šíření (viz. následující slajd!) 3. spočítej ^ pro všechna w,, pomocí vzorce dEk dEk 4. 6// := £// + Výsledné En se rovná ,y/ i u v i iu Vícevrstvá síť - zpětné šíření dEk lze spočítat pomocí zpětného šíření: dyj spočítáme ^ pro j eY pomocí vzorce ^ = yy - dq ► rekurzivně spočítáme zbylé Nechť j je v ^-té vrstvě a předpokládejme, že ^ už máme spočítáno pro všechny neurony z vyšších vrstev (tedy vrstev i+ 1,^ + 2,...)-Pak lze ^ spočítat pomocí vzorce = I *r a'(ir) ■w" protože všechny neurony r e patří do vrstvy l + 1. 9 Složitost dávkového algoritmu Výpočet hodnoty Jf:(w(r~1)) probíhá v lineárním čase vzhledem k velikosti sítě a počtu tréninkových vzorů (za předpokladu jednotkové ceny operací včetně vyhodnocení ďr(^r) pro dané £r) Zdůvodnění: Algoritmus provede p krát následující 1. vyhodnocení sítě (tj. výpočet yj(w,Xk)) 2. výpočet ^ zpětným šířením 3. výpočet §| 4. přičtení §| k 6ji Kroky 1.-3. proběhnou v lineárním čase a krok 4. v konstantním vzhledem k velikosti sítě. Počet iterací gradientního sestupu pro přiblížení se (lokálnímu) minimu může být velký... 10 Vícevrstvá síť - učící algoritmus Online algoritmus: Algoritmus počítá posloupnost vektorů vah w(°\ .... ► váhy v jsou inicializovány náhodně blízko 0 ► v kroku ř + 1 (zde t = 0,1,2,...) je vi/(ř+1) vypočteno takto w (ř+1) _ ji tfW + Aw{t) ji kde ,(0 AivIJ = -£(í) , kde /c = (ř mod p) + 1 a 0 < e(ř) < 1 je rychlost učení v kroku t + 1. Lze použít i stochastickou verzi tohoto algoritmu, v níž je k voleno náhodně z {1,..., p}. Simulace Simulace Praktické otázky gradientního sestupu ► Otázky týkající se efektivity učení: ► Dávkový nebo online algoritmus? ► Je nutné data předzpracovat? ► Jak volit iniciální váhy? ► Je nutné vhodně volit požadované hodnoty sítě? ► Jak volit rychlost učení e (t) ? ► Dává gradient nejlepší směr změny vah? ► Otázky týkající se výsledného modelu: ► Kdy zastavit učení? ► Kolik vrstev sítě a jak velkých? ► Jak velkou tréninkovou množinu použít? ► Jak zlepšit vlastnosti (přesnost a schopnost generalizace výsledného modelu? Poznámky o konvergenci gradientního sestupu ► Chybová funkce může být velmi komplikovaná: ► může obsahovat mnoho lokálních minim, učící algoritmus v nich může skončit ► může obsahovat mnoho „plochých" míst s velmi malým gradientem, zejména pokud se aktivační funkce tzv. saturují (tedy jejich hodnoty jsou blízko extrémům; v případě sigmoidálních funkcí to znamená, že mají velké argumenty) ► může obsahovat velmi strmá místa, což vede k přeskočení minim gradientním sestupem pro velmi malou rychlost učení máme větší šanci dokonvergovat do lokálního minima, ale konvergence je hodně pomalá Teorie: pokud e(ř) = j pak dávkový i stochastický gradientní sestup konvergují k lokálnímu minimu (nicméně extrémně pomalu). ► pro příliš velkou rychlost učení může vektor vah střídavě přeskakovat minimum nebo dokonce divergovat Gradientní sestup - ilustrace Gradientní sestup s malou rychlostí učení: ▲ Více méně hladká křivka, každý krok je kolmý na vrstevnici. Obrázek: Neural Computation, Dr John A. Bullinaria Gradientní sestup - ilustrace Gradientní sestup s příliš velkou rychlostí učení: A -► Jednotlivé kroky přeskakují minimum, učení je pomalé. Obrázek: Neural Computation, Dr John A. Bullinaria Gradientní sestup - ilustrace Online učení: A Kroky nemusí být kolmé na vrstevnice, může hodně kličkovat. Obrázek: Neural Computation, Dr John A. Bullinaria Dávkový vs online učící algoritmus Výhody dávkového: ► realizuje přesně gradientní sestup pro chybovou fci (většinou konverguje k lokálnímu minimu) ► snadno paralelizovatelný (vzory je možné zpracovávat odděleně) Nevýhody dávkového: ► paměťová náročnost (musí si pamatovat chyby všech vzorů) ► redundantní data nepřidávají informaci ke gradientu. Výhody online (stochastického) ► stochastický má šanci uniknout z okolí mělkého minima (protože nerealizuje přesný grad. sestup) ► má menší paměťovou náročnost a snadno se implementuje ► je rychlejší, zejména na hodně redundantních datech Nevýhody online (stochastického) ► není vhodný pro paralelizaci ► může hodně „kličkovat" (více než gradientní sestup) Moment Problémy s gradientním sestupem: ► Může se stát, že gradient WE(w^) neustále mění směr, ale chyba se postupně zmenšuje. Toto často nastává, pokud jsme v mělkém údolí, které se mírně svažuje jedním směrem (něco jako U-rampa pro snowboarding, učící algoritmus potom opisuje dráhu snowboardisty) ► Online algoritmus také může zbytečně kličkovat. Tento algoritmus se vůbec nemusí pohybovat ve směru největšího spádu! Řešení: Ke změně vah dané gradientním sestupem přičteme část změny v předchozím kroku, tedy definujeme Aw{t) = Aw^ +a. Aw//~1) ji ji kde 0 < a < 1. S momentem: Volba aktivační funkce Požadavky na vhodnou aktivační funkci o(E)'- 1. diferencovatelnost (jinak neuděláme gradientní sestup) 2. nelinearita (jinak by vícevrstvé sítě byly ekvivalentní jednovrstvým) 3. omezenost (váhy a potenciály budou také omezené konečnost učení) 4. monotónnost (lokální extrémy fce o zanáší nové lokální extrémy do chybové funkce) 5. linearita pro malé £ (umožní lineární model, pokud stačí k řešení úlohy) Sigmoidální funkce splňují všechny požadavky. Síť se sigmoidálními funkcemi obvykle reprezentuje data distribuované (tj. více neuronů vrací větší hodnotu pro daný vstup). Později se seznámíme se sítěmi, jejichž aktivační funkce porušují některé požadavky (Gaussovy funkce) - používá se jiný typ učení. Volba aktivační funkce ► Z hlediska rychlosti konvergence je výhodné volit lichou aktivační funkci. ► Standardní sigmoida není lichá, vhodnější je použít hyperbolický tangens: a(£) = a- tanh(b-£) ► Při optimalizaci lze předpokládat, že sigmoidální funkce jsou fixní a „hýbat" pouze dalšími paramtery. ► Z technických důvodů budeme dále předpokládat, že všechny aktivační funkce jsou tvaru ay(^) = a-tanh(b-^-) kde a 1.7159 a b _ 2 3' Volba aktivační funkce lim^_ •—co 1.7159-tanh(§ •£). platí lim£. a(£) = -1.7159 cx(£) = 1.7159 a Volba aktivační funkce ■1.0 ■0.8 ■0.6 ■0.4 -0.2 0.0 0.2 0.4 0.6 0.8 1.0 o(E) = 1.7159 • tanh(| • E) je téměř lineární na [-1,1 ] první derivace funkce a(£) = 1.7159 • tanh(| • £) druhá derivace funkce a(£) = 1.7159 • tanh(| • £) Předzpracování vstupů ► Některé vstupy mohou být mnohem větší než jiné Př.: Výška člověka vs délka chodidla (oboje v cm), maximální rychlost auta (v km/h) vs cena (v Kč), apod. ► Velké komponenty vstupů ovlivňují učení více, než ty malé. Navíc příliš velké vstupy mohou zpomalit učení. ► Numerická data se obvykle normalizují tak, že mají ► průměrnou hodnotu = 0 (normalizace odečtením průměru) ► rozptyl = 1 (normalizace podělením směrodatnou odchylkou) Zde průměr a směrodatná odchylka mohou být odhadnuty z náhodného vzorku (např. z tréninkové množiny). (Ilustrace směrodatné odchylky) Předzpracování vstupů ► Jednotlivé komponenty vstupu by měly mít co nejmenší korelaci (tj. vzájemnou závislost). (Metody pro odstranění korelace dat jsou např. analýza hlavních komponent (Principal Component Analysis, PCA). Lze ji implementovat i pomocí neuronových sítí (probereme později)). 10 - 5 -5 - -5 0 5 10 I n i c i á I n í volba vah ► Iniciálně jsou váhy nastaveny náhodně z daného intervalu [-w, w] kde w závisí na počtu vstupů daného neuronu. Jaké je vhodné w? ► Uvažujeme aktivační funkci 1.7159 • tanh(| • E) pro všechny neurony. ► na intervalu [-1,1 ] se o chová téměř lineárně, ► extrémy o" jsou přibližně v bodech -1 a 1, ► mimo interval [-4,4] je o blízko extrémních hodnot. Tedy ► Pro velmi malé w hrozí, že obdržíme téměř lineární model (to bychom mohli dostat s použitím jednovrstvé sítě). Navíc chybová funkce je velmi plochá v blízkosti 0 (malý gradient). ► Pro w mnohem větší než 1 hrozí, že vnitřní potenciály budou vždy příliš velké a síť se nebude učit (gradient chyby E bude velmi malý, protože hodnota sítě se téměř nezmění se změnou vah). Chceme tedy zvolit w tak, aby vnitřní potenciály byly zhruba z intervalu [-1,1]. Inicialni volba vah ► Data mají po normalizaci (zhruba) nulovou střední hodnotu, rozptyl (zhruba) 1 a předpokládejme, že jednotlivé komponenty vstupů jsou (téměř) nekorelované, ► Uvažme neuron j z první vrstvy s d vstupy, předpokládejme, že jeho váhy jsou voleny uniformně z intervalu [-w, w]. ► Pravidlo: w je dobré volit tak, že směrodatná odchylka vnitřního potenciálu £y (označme ji oy) leží na hranici intervalu, na němž je aktivační funkce o j téměř lineární tj. v našem případě chceme oy « 1. ► Z našich předpokladů plyne Oy = ^ • w. tj. v našem případě položíme w = -^j. ► Totéž funguje pro vyšší vrstvy, d potom odpovídá počtu neuronů ve vrstvě o jedna nižší. (Zde je důležité, že je aktivační funkce lichá) Požadované hodnoty Požadované hodnoty dq by měly být voleny v oboru hodnot aktivačních funkcí, což je v našem případě [-1.716,1.716]. Požadované hodnoty příliš blízko extrémům +1.716 způsobí, že váhy neomezeně porostou, vnitřní neurony budou mít velké potenciály, gradient chybové funkce bude malý a učení se zpomalí. Proto je vhodné volit požadované hodnoty z intervalu [-1.716 + 6,1.716-0]. Optimální je, když tento interval odpovídá maximálnímu intervalu na němž jsou aktivační fce lineární. Tedy v našem případě <5 « 0.716, tj. hodnoty dkj je dobré brát z intervalu [-1,1]. Rychlost učení Obecné zásady pro volbu a změny rychlosti učení e ► Je dobré začít s malou rychlostí (např. e = 0.1). (existují i metody, které pracují s velkou počáteční rychlostí a poté ji postupně snižují) ► Pokud se chyba znatelně zmenšuje (učení konverguje), můžeme rychlost nepatrně zvýšit. ► Pokud se chyba zjevně zvětšuje (učení diverguje), můžeme rychlost snížit. ► Krátkodobé zvýšení chyby nemusí nutně znamenat divergenci. i. Obr. 2.3: Typický vývoj chyby v case při učení pomocí back propagation. Rychlost učení Chceme, aby se neurony učily pokud možno stejně rychle. Více vstupů obvykle znamená rychlejší učení. Pro každou váhu wjf můžeme mít zvláštní rychlost učení £y7 ► ejj lze iniciovat např. 1 / |y<_|, kde |y<_| je počet vstupů neuronu j. ► Po zahájení učení rychlost zvolna zvyšujeme (třeba ey/(r) = fCey/(r - 1) kde K > 1) ► Jakmile se změní znaménko Awjp (tedy Aw/.r~1) • Ai^ř' < 0), rychlost snížíme (třeba takto ey/(ř) = {e^t - 1)) Rychlost a směr - přesněji Na gradientní sestup se můžeme dívat obecněji takto: Aw^ = r(t) • s(ř) kde r(ř) je rychlost změny vah a s(ř) je směr změny vah. V našem případě: r(ř) = e(t) a s(ř) = -VE(w(f)) (nebo s(ř) = -VE/^w^)) pro online učení). ► Ideální by bylo volit r(ř) tak, abychom minimalizovali E(vřW + r(ř).s(ř)). Nebo se aspoň chceme přesunout (ve směru s(ř)) do místa, v němž začne gradient opět růst. ► Toho lze (přibližně) dosáhnout malými přesuny bez změny směru - nedostaneme ovšem o mnoho lepší algoritmus než standardní grad. sestup (který stále mění směr). ► Existují lepší metody, např. parabolická interpolace chybové funkce. Rychlost a směr - parabolická interpolace Označme E(r) = E(w^ + r • s(ř)); minimalizujeme E(r). Předpokládejme, že jsme schopni nalézt body A, 6, C takové, že E(A) > E(B) a E(C) > E(B). Pak lze tyto body proložit parabolou a nalézt její minimum D. Toto D je dobrým odhadem minima E(r). Obrázek: Neural Computation, Dr John A. Bullinaria Rychlost a směr - parabolická interpolace Parabolickou interpolaci lze dále iterovat, čímž dosáhneme ještě lepšího odhadu: Je jasné, že E(B) > E(D) a E(C) > E(D). Pokud E(B) > E(D), lze použít stejný postup jako předtím (jinak je nutné nalézt nový bod B' t. ž. E(B') > E(D)). Optimální směr Zbývá otázka, jestli je záporný gradient správným směrem Rychlost r(ř) jsme volili tak, abychom minimalizovali E(w(ř+1)) = E(tfW + r(f) • s(ř)) = E(vřW + r(ř)-(-VE(vřW)) To ovšem znamená, že derivace E(w(ř+1)) podle r(ř) (zde bereme r(ř) jako nezávislou proměnnou) bude 0, tedy ^(^ř+1)) = y ^(^+i)).L^(vř(0) <5r á-j ôwjj \ ôWjj = VE(vŕ(ŕ+1)).(-VE(^)) = 0 Tj. nový a starý směr jsou vzájemně kolmé, výpočet tedy „kličkuje". Gradientní sestup s optimální rychlostí Rychlost a směr - přesněji Řešení: Do nového směru zahrneme částečně i předchozí směr a tím zmenšíme kličkování. s(f) = -VE(tfW)+j8-s(f-1) Jak určit p ? Metoda sdružených gradientů je založena na tom, že nový směr by měl co nejméně kazit minimalizaci dosaženou v předchozím směru. Chceme nalézt nový směr s(ř) takový, že gradient funkce funkce E v novém bodě v^(ř+1) = #(0 + r(ř) • s(ř) ve starém směru s(ř - 1) je nulový: s(f-1)-VE(tf(ř+1>) = 0 Vhodné p, které to splňuje je dáno následujícím pravidlem (Polak-Ribiere): _ (VE(vř(ř+1)) - VE(w(ř))) • VE(vř(ř+1)) ^~ VE(tf(0). VE(tf(0) (Pokud by E byla kvadratická funkce, pak to konverguje v nejvýše n krocích) Gradientní sestup s optimální rychlostí Obrázek: Neural Computation, Dr John A. Bullinaria Další metody Existuje mnoho metod druhého řádu, které jsou přesnější, ale obvykle výpočetně mnohem náročnější (příliš se nepoužívají). Např. Newtonova metoda, Levenberg-Marquardt, atd. Většina těchto metod vyžaduje výpočet (nebo aspoň aproximaci) druhé derivace chybové funkce nebo funkce sítě (tj. Hessián). Lze nalézt v literatuře, např. Haykin, Neural Neworks and Learning Machines 42 Schopnost generalizace V klasifikačních problémech se dá generalizace popsat jako schopnost vyrovnat se s novými vzory. Pokud síť trénujeme na náhodně vybraných datech, není ideální přesně klasifikovat tréninkové vzory. Pokud aproximujeme funkční závislost vstupů a očekávaných výstupů pak obvykle nechceme aby funkce sítě vracela přesné hodnoty pro tréninkové vzory. Exaktněji: Obvykle se předpokládá, že tréninková množina byla generována takto: dkj = 9j(Xk) + Okj kde Qj je „správná" funkce výstupního neuronu j e Y a Q^j je náhodný šum. Chceme, aby síť pokud možno realizovala funkce gľ Kdy zastavit učení? Standardní kritérium: Chyba E je dostatečně malá. Další možnost: po několik iterací je gradient chyby malý. (Výhodou tohoto kritéria je, že se nemusí počítat chyba E) Problém: Příliš dlouhé učení způsobí, že síť „opisuje" tréninkové vzory (je přetrénovaná). Důsledkem je špatná generalizace. Řešení: Množinu vzorů rozdělíme do následujících množin ► tréninková (např. 60%) - podle těchto vzorů se síť učí ► validační (např. 20%) - používá se k zastavení učení. ► testovací (např. 20%) - používá se po skončení učení k testování přesnosti sítě, tedy srovnání několika natrénovaných sítí. Trénink, testování, validace Obvykle se realizuje několik iterací (cca 5) tréninku na tréninkové množině. Poté se vyhodnotí chyba E na validační množině. Ideálně chceme zastavit v minimu chyby na validační množině. V praxi se sleduje, zda chyba na validační množině klesá. Jakmile začne růst (nebo roste po několik iterací za sebou), učení zastavíme. Problém: Co když máme příliš málo vzorů? Můžeme tréninkovou množinu rozdělit na K skupin S^/.../ Sk-Trénujeme v K fázích, v ^-té fázi provedeme následující: ► trénujeme na Si u ... u S^_i u S^+1 u ... u Sk ► spočteme chybu funkce E na skupině Celková chyba je potom průměr e = ^ Y$=-\ fy- Extrémní verze: K = počet vzorů (používá se při extrémně málo vzorech) Typicky se volí K = 10. Velikost sítě Podobný problém jako v případě délky učení: ► Příliš malá síť není schopna dostatečně zachytit tréninkovou množinu a bude mít stále velkou chybu ► Příliš velká síť má tendenci přesně opsat tréninkové vzory - špatná generalizace Řešení: Optimální počet neuronů :-) ► teoretické výsledky existují, ale jsou většinou nepoužitelné ► existují učící algoritmy, které postupně přidávají neurony (konstruktivní algoritmy) nebo odstraňují spoje a neurony (prořezávání) ► V praxi se počet vrstev a neuronů stanovuje experimentálně (prostě se to zkusí, uvidí, opraví) a/nebo na základě zkušeností. Velikost sítě Uvažme dvouvrstvou síť. Neurony ve vnitřní vrtvě často reprezentují "vzory" ve vstupní množině. Př.: Síť 64-2-3 pro klasifikaci písmen: sample training patterns Vynechávání neuronů během učení (dropout) Přetrénování může souviset s přílišnou "závislostí" jednotlivých neuronů na chování ostatních neuronů. Pokud má síť mnoho neuronů, je schopna zachytit složité závislosti v datech mnoha různými způsoby, přičemž téměř všechny budou špatné na validační množině. Tomu lze předcházet použitím následující metody: V každém kroku gradientního sestupu měníme váhy každého jednotlivého neuronu pouze s pravděpodobností 1 /2 (v praxi lze i < 1 /2). Jinými slovy: Každý neuron je pro daný krok vyhozen ze sítě (neučí se) s pravděpodobností 1 /2. Tato metoda by měla předcházet složitým "společným" adaptacím více neuronů. Lze ji také vidět jako metodu pro trénink skupiny mnoha neuronových sítí vytvořených vyhazováním neuronů. 48 Velikost tréninkové množiny Příliš malá nebo nereprezentativní tréninková množina vede ke špatné generalizaci Příliš velká zvyšuje složitost učení. V případě dávkového algoritmu způsobuje velkou chybu (chyby na vzorech se sčítají). což může vést k přetrénování. Pravidlo pro klasifikační úlohy: počet vzorů by měl zhruba odpovídat W/5 kde ► W je počet vah v síti ► 0 < ô < 1 je tolerovaná chyba na testovací množině (tj. tolerujeme ô chybně klasifikovaných vzorů z testovací množiny) 49 Regularizace - upadání vah (weight decay) Generalizaci lze zlepšit tak, že v síti necháme jen „nutné" neurony a spoje. Možná heuristika spočívá v odstranění malých vah. Penalizací velkých vah dostaneme silnější indikaci důležitosti vah. V každém kroku učení zmenšíme uměle všechny váhy Idea: Nedůležité váhy budou velmi rychle klesat k 0 (potom je můžeme vyhodit). Důležité váhy dokážou „přetlačit" klesání a zůstanou dostatečně velké. Toto je ekvivalentní gradientnímu sestupu s konstantní rychlostí učení e, pokud chybovou funkci modifikujeme takto: ,(f+i) ji (i-c)K' + a<) E'(w) = E(w) -\--(w • w) Zde regularizační člen ^(w • w) penalizuje velké váhy. Praxe - Matice zmätenosti Confusion matrix Síť má za úkol klasifikovat objekty do K tříd J\,..., TK. Confusion matrix je tabulka, jejíž pole v Mém řádku a y-tém sloupci obsahuje počet objektů z třídy 7/5 které byly klasifikovány jako objekty z třídy T,. Example confusion matrix Predicted Cat Dog Rabbit Cat 5 3 0 Actual Dog 2 3 1 Rabbit 0 2 11 Zdroj: http://en.wikipedia.org/wiki/Confusion_matrix