Boltzmannův stroj Organizační dynamika: ► Cyklická síť se symetrickými spoji (tj. libovolný neorientovaný graf) ► Množinu všech neuronů značíme N ► označme £y- vnitřní potenciál a y} výstup (stav) neuronu j ► stav stroje: y e {-1,1 }|/V|. ► označme wj,- reálnou váhu spoje od neuronu / k neuronu j. ► žádný neuron nemá bias a přepokládáme wn = 0 pro j g N. i Botzmannův stroj Aktivní dynamika: Stavy neuronů jsou iniciálně nastaveny na hodnoty z množiny {-1,1}, tj. y|0) e {-1,1} pro j e N. V ř-tém kroku aktualizujeme náhodně vybraný neuron j e N takto: nejprve vypočteme vnitřní potenciál n a poté náhodně zvolíme hodnotu y)} e {-1,1} tak, že P[^ = l] = a(íf-1))kde 1 + e-2£/T(f) Parametr T(t) se nazývá teplota v čase t. Boltzmannuv stroj Velmi vysoká teplota T(ŕ) znamená, že P [y|ŕ) = 1 ] « 1 a stroj se chová téměř náhodně. Velmi nízká teplota T(ŕ) znamená, že buď P[yy-ŕ) = i] « 1 nebo P [yfř^ = 1 ] « 0 v závislosti na tom, jestli ^ > 0 nebo ^ < 0. Potom se stroj chová téměř deterministicky (tj. jako Hopfieldova síť). Boltzmannův stroj - reprezentace rozložení Cíl: Chceme sestrojit síť, která bude reprezentovat dané pravděpodobnostní rozložení na množině vektorů {-1,1}|/V|. Velmi hrubá a nepřesná idea: Boltzmannův stroj mění náhodně svůj stav z množiny {-1,1}|/V|. Když necháme B. stroj běžet dost dlouho s fixní teplotou, potom budou frekvence návštěv jednotlivých stavů nezávislé na iniciálním stavu. Tyto frekvence budeme považovat za pravděpodobnostní rozložení na {-1,1}|/V| reprezentované B. strojem. V adaptivním režimu bude zadáno nějaké rozložení na stavech a cílem bude nalézt konfiguraci takovou, že rozložení reprezentované strojem bude odpovídat zadanému rozložení. 4 Rovnovážný stav Fixujme teplotu T (tj. T(ŕ) = T pro t = 1,2,...). Boltzmannův stroj se po jisté době dostane do tzv. termální rovnováhy. Tj. existuje čas ť takový, že pro libovolný stav stroje f e {-1,1}|/V| a libovolné ľ > ť platí, že P/v(/):=P[y(r)=ľ] splňuje p/v(y*) ~ le~E(^)/7 kde tj. Boltzmannovo rozložení Pozn.: Teorie Markovových řetězců říká, že P [ý(r) = y*j je také dlouhodobá frekvence návštěv stavu 7*. Toto platí bez ohledu na iniciální nastavení neuronů! Síť tedy reprezentuje rozložení pN. Boltzmannův stroj - učení Problém: Tak jak jsme si jej definovali má Boltzmannův stroj omezenou schopnost reprezentovat daná rozložení. Proto množinu neuronů N disjunktně rozdělíme na ► množinu viditelných neuronů V ► množinu skrytých neuronů S. Pro daný stav viditelných neuronů a e {-1,1}'V| označme pv(a) = P/s/(a,j8) J8e{-1/I}isi pravděpodobnost stavu viditelných neuronů a v termálním ekvilibriu bez ohledu na stav skrytých neuronů. Cílem bude adaptovat síť podle daného rozložení na Boltzmannův stroj - učení Adaptivní dynamika: Nechť Pd je pravděpodobnostní rozložení na množině stavů viditelných neuronů, tj. na Cílem je nalézt konfiguraci sítě W takovou, že pv odpovídá Pd Vhodnou mírou rozdílu mezi rozděleními pv a Pd je relativní entropie zvážená pravděpodobnostmi vzorů (tzv. Kullback-Leibler divergence) Pd(a) Boltzmannův stroj - učení S(w) budeme minimalizovat pomocí gradientního sestupu, tj budeme počítat poslounost matic vah W(°\ ... ► váhy v jsou inicializovány náhodně blízko 0 ► v ^-tém kroku (zde l = 1,2,...) je vypočteno takto: ji i' i' kde A^ = -e(0~(^"1)) J1 dWj, je změna váhy wj/ v č-lém kroku a 0 < e(i) < 1 je rychlost učení v ^-tém kroku. Zbývá spočítat (odhadnout) W). Boltzmannův stroj - učení Formálním derivováním funkce 8 lze ukázat, že i^ = _l(/y(n jn\ _/y(ny(n\ dWjj T V J Ifixed V J *i /free ► /yfř Mř )\ je průměrná hodnota yíř Víř ^ v termální rovnováze za předpokladu, že hodnoty viditelných neuronů jsou fixovány na počátku výpočtu dle rozložení pd. * (yf Vf ^)free Je průměrná hodnota \f ^ v termální rovnováze bez fixace viditelných neuronů. Celkově Aw^ = -£(0~(^-1)) i1 aWjj e(t) free Boltzmannův stroj - učení Pro výpočet (y^ ^)fjxed Provecl' následující: ► Polož J/:=0a proveď následující akce q krát: 1. fixuj náhodně hodnoty viditelných neuronů dle rozložení pd (tj. v průběhu následujících kroků je neaktualizuj) 2. simuluj stroj po ľ kroků 3. přičti aktuální hodnotu yíř ^ k proměnné J/. ► bude dobrým odhadem {y^ \f ^)fjxed za předpokladu že q je dostatečně velké číslo. (yjř Vf ^)free se odhadne podobně, pouze se nefixují viditelné neurony (tj. v kroku 1. se zvolí libovolný startovní stav a v následném výpočtu se mohou aktualizovat všechny neurony). 10 Boltzmannuv stroj - učeni Pro upresnení analytická verze: I fixed L( x V1 Pn{0L,{S) aB aB ae|-1,1}l"l |3e|-1,1}isi V ' kde yj je výstup neuronu; ve stavu (a,|6). ye{-1,1}M Omezený Boltzmannův stroj (OBS) Organizační dynamika: ► Cyklická síť se symetrickými spoji, neurony jsou rozděleny do dvou skupin: ► V - viditelné ► S - skryté Množina spojů je V x S (tj. úplný bipartitní graf) ► Množinu všech neuronů značíme N ► označme £y- vnitřní potenciál a y} výstup (stav) neuronu j ► stav stroje: y e {0, 1}|/n/|. ► označme wj-, váhu spoje mezi neuronem / a neuronem j. ► Uvažme bias: Wj0 je váha mezi neuronem j a "fiktivním" neuronem 0 jehož hodnota y0 je stále 1. 12 Omezený Botzmannův stroj Aktivní dynamika: Hodnoty viditelných neuronů jsou iniciálně nastaveny na hodnoty z množiny {0,1}. V Mém kroku aktualizujeme neurony takto: ► t liché: náhodně zvolíme nové hodnoty skrytých neuronů, pro j e S p[if=i]=i 1 + exp v -wjo-YjWjíyI1 1) v ieV \ ► ř sudé: náhodně zvolíme nové hodnoty viditelných neuronů, pro j eV p[if=i]=i 1 + exp -wjo-YjWjíyI1 1) v v ieS 13 Rovnovážný stav Definujeme energetickou funkci E E(ý) = - Yj wjiyjyi-YjWioyi~lLwJoyj ieV,jeS ieV je S Omezený Boltzmannův stroj se po jisté době dostane do termální rovnováhy. Tj. existuje čas ŕ* takový, že pro libovolný stav stroje y* e {0,1 }|/V| platí p[y(r) = ľ]-P/v(ľ) Zde pN(y*) = le-W kde Z= Yj e_e(7) ye{0,1}lNl tj. Boltzmannovo rozložení Síť tedy reprezentuje rozložení pN. Omezený Boltzmannův stroj - učení Pro daný stav viditelných neuronů a e {0,1 označme j^{0,1}isi pravděpodobnost stavu viditelných neuronů a v termální rovnováze bez ohledu na stav skrytých neuronů. Adaptivní dynamika: Nechť Pd je pravděpodobnostní rozložení na množině stavů viditelných neuronů, tj. na {0,1}|V|. Rozložení pd může být dáno tréninkovou posloupností tak, že Pd{pt) = #(a,T)/p kde #(a,T) je počet výskytů a v posloupnosti T Cílem je nalézt konfiguraci sítě W takovou, že pv odpovídá Pd- Omezený Boltzmannův stroj - učení Vhodnou mírou rozdílu mezi rozděleními pv a Pd je relativn entropie zvážená pravděpodobnostmi vzorů (tzv. Kullback Leibler distance) Pd(a) (Odpovídá maximální věrohodnosti vůči posloupnosti T v případě, že Pd je definováno pomocí T) Omezený Boltzmannův stroj - učení S(w) budeme minimalizovat pomocí gradientního sestupu, tj budeme počítat posloupnost vektorů vah w(°\ ... ► váhy v jsou inicializovány náhodně blízko 0 ► v Mém kroku (zde t = 1,2,...) je vypočteno takto: JI J' J' kde J1 dWj, je změna váhy wj/ v Mém kroku a 0 < e(t) < 1 je rychlost učení v Mém kroku. Zbývá spočítat (odhadnout) Omezený Boltzmannův stroj - učeni Lze ukázat, že Ji -((wL-W free ► (yjyi)fjxed Je průměrná hodnota yyy/ po jednom kroku výpočtu za předpokladu, že hodnoty viditelných neuronů jsou fixovány dle rozložení pd. ► (yj* >})f je průměrná hodnota yjf ^ v termální rovnováze bez fixace viditelných neuronů. Problém: výpočet (y^ Vf trvá dlouho (musíme opakovaně přivést stroj do termální rovnováhy). (yf Vf se Proto nahrazuje (yjyi)recon c°ž je průměrná hodnota yí3V/ za předpokladu, že iniciální hodnoty viditelných neuronů jsou voleny dle Pc/. 18 Omezený Boltzmannův stroj - učen Tedy AWiľ = £W ■ (Mftxed " Mrecon) (yjyi)fixed se vyP°^te takt0: Polož J/:=0a opakuj q krát: ► fixuj náhodně hodnoty viditelných neuronů dle pd ► simuluj jeden krok výpočtu a přičti aktuální hodnotu y/y, k J/ Pro vhodné q bude y Iq dobrým odhadem (y]yi)fjxed (yjyi)recon se vypočte takto: Polož J/:=0a opakuj q krát: ► nastav náhodně hodnoty viditelných neuronů dle Pd ► simuluj tři kroky výpočtu a přičti aktuální hodnotu y,y, k J/ (tj. vypočti hodnoty skrytých neuronů, potom hodnoty viditelných (tzv. rekonstrukci vstupu) a potom hodnoty skrytých neuronů) Pro vhodné q bude J//q dobrým odhadem (y/y) recon (yjyi)fjxed Je možné počítat analyticky pro vhodně zadané p^. 19 Hluboké site Standardní vícevrstvá síť Organizační dynamika: Výstupní Q O CLOJO Skryté CTa 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ě l + 1. 20 Hluboké sítě 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 ► y} je stav (výstup) neuronu j po skončení výpočtu ► Wjj je váha spoje od neuronu / do neuronu j ► y<_ je množina všech neuronů, z nichž vede spoj do j (zejména 0 g ► je množina všech neuronů, do nichž vede spoj z j Hluboké site Aktivní dynamika: ► vnitřní potenciál neuronu j\ ► aktivační funkce 1 a = 1 + e~t pro všechny neurony stejná! ► Stav nevstupního neuronu j e Z \ X po skončení výpočtu je (yj 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. Hluboké sítě - adaptivní dynamika Tréninková posloupnost T vzorů tvaru (x^di),^,^),...,^,^) kde každé xk e {0,1 }|X| je vstupní vektor a každé dk e {0,1 }|y| je očekávaný výstup sítě. Pro každé j e Y 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 Používají se i jiné funkce. 23 Proč hluboké sítě ... když jedna vrstva stačí k aproximaci libovolné rozumné funkce? ► Jedna vrstva je často značně neefektivní, tj. může vyžadovat obrovský počet skrytých neuronů pro reprezentaci dané funkce Výsledky z teorie Booleovských obvodů ukazují, že nutný počet neuronů může být exponenciální vzhledem k dimenzi vstupu ... ok, proč neučit hluboké sítě pomocí obyčejné zpětné propagace? ► Rychlost učení rapidně klesá s počtem vrstev ► Hluboké sítě mají tendenci se snadno přetrénovat 24 Vícevrstvá síť - mizející gradient Pro každé w,-, máme dE _ y dEk dwii ~ ^ dwii kde pro každé k = 1,..., p platí dEk dEk a pro každé j e Z \X dostaneme — =yj-dkj proyeY Pro standardní logistickou sigmoidu a váhy inicializované blízko 0 je o'r(E,r) • Wrj menší než 1 (pro velké váhy zase větší než 1). 25 Hluboké sítě - adaptivní dynamika Předpokládejme k vrstvou síť. Označme ► Wj matici vah mezi vrstvami / - 1 a / ► F, funkci počítanou částí sítě s vrstvami 0,1,..., / tedy Fi je funkce počítaná jednovrstvou sítí skládající se ze vstupní a první vrstvy sítě, Fk je funkce celé sítě Všimněte si, že pro každé / lze vrstvy / - 1 a / společně s maticí W, chápat jako omezený Boltzmannův stroj B, (předpokládáme T = 1) Učení ve dvou fázích: ► předtrénování bez učitele: Postupně pro každé / = \ ,...,k trénuj OBS B, na náhodně volených vstupech z posloupnosti F/_1(x1)/.../F/_1(xp) pomocí algoritmu pro učení OBS (zde F0(x/) = x/) (tedy Bj se trénuje na tréninkových vzorech transformovaných vrstvami 0,...,/-1) ► doladění sítě s učitelem např. pomocí zpětné propagace 26 Hluboké sítě Po první fázi dostaneme k vrstvou síť, která reprezentuje rozložení na datech. Z tohoto rozložení lze samplovat takto: ► přiveď nejvyšší OBS do termální rovnováhy (to dá hodnoty neuronů v nejvyšších dvou vrstvách) ► propaguj hodnoty do nižších vrstev (tj. proveď jeden krok aktualizace stavů mezilehlých OBS) ► stav neuronů v nejspodnější vrstvě potom bude představovat vzorek dat; pravděpodobnost s jakou se tam objeví konkrétní stav je pravděpodností onoho stavu v rozložení reprezentovaném sítí 27 Hluboké sítě - klasifikace Předpokládejme, že každý vstup patří do jedné ze dvou tříd. Chceme vstupy klasifikovat pomocí vícevrstvé sítě. Vícevrstvou síť lze trénovat pomocí zpětné propagace. Ta je silně závislá na vhodné inicializaci, často hrozí dosažení mělkého lokálního minima apod. Dobře fungující síť si vyvine systém extraktom vlastností (tj. každý neuron reaguje na nějakou vlastnost vstupu). Jak toho dosáhnout? ► Natrénuj hlubokou síť na datech (v této fázi ignoruj příslušnost do tříd) ► Uvažuj výslednou síť jako obyčejnou vícevrstvou síť, tj. zaměň dynamiku Boltzmannova stroje za sigmoidální aktivační funkce a obvyklé vyhodnocení zdola nahoru ► přidej výstupní vrstvu s jedním neuronem ► dolaď síť pomocí zpětné propagace (malá rychlost učení pro skryté vrstvy, velká pro výstupní vrstvu): Pro vstupy z jedné třídy uvažujeme očekávaný výstup 1 pro ostatní 0. Aplikace - redukce dimenze ► Redukce dimenze dat: Tedy zobrazení R z Rn do Rm takové, že ► m < n, ► pro každý vzor x platí, že x je možné "rekonstruovat" z ► Standardní metoda PCA (exituje mnoho lineárních i nelineárních variant) Rekonstrukce - PCA Original faces Recovered faces 1024 pixelü komprimoväno do 100 dimenzi (tj. 100 cisel). Redukce dimenze pomocí hlubokých sítí [M] | 5O0 [ | 500 I ™: j [ ■ ■ i I _ JEZ 1000 1000 I 2000 2000 Pret raining Top ! rbm: RBM RBM Unrolling 5 30 j | 500 1 1000 i W2+Eř 2000 Fine-tuning Obrázky - Předtrénování ► Data: 165 600 černobílých obrázků o rozměrech 25 x 25, střední intenzita bodu 0, rozptyl 1. Obdrženo z Olivetti Faces databáze obrázků 64 x 64 standardními úpravami. ► 103 500 tréninková sada, 20 700 validační, 41 400 testovací ► Síť: Struktura sítě 2000-100-500-30, trénink pomocí postupného vrstvení RBM. Poznámky: Trénink nejnižší skryté vrsty (2000 neuronů): Hodnoty pixelů "rozmlženy" Gaussovským šumem, rychlost učení nízká: 0.001, počítáno 200 iterací Ve všech vrstvách kromě nejvyšší jsou hodnoty skrytých neuronů při tréninku binární (v nejvyšší jsou hodnoty vypočteny ze sigmoidální pravděpodobnosti přidáním šumu) Hodnoty viditelných neuronů jsou při tréninku reálné z intervalu [0,1] (zde je mírná odchylka od našeho algoritmu) Obrázky - Doladění ► Stochastické aktivace nahrazeny deterministickými Tj. hodnota skrytých neuronů není výsledkem náhodného pokusu, ale přímo výpočtu sigmoid udávajících pravděpodobnost. ► Zpětná propagace ► Chybová funkce cross-entropy kde Pí je intenzita Mého pixelu ve vstupu a p, v rekonstrukci. 33 1. Originál 2. Rekonstrukce hlubokou sítí (redukce na 30-dim) 3. Rekonstrukce PCA (redukce na 30-dim) 34