430 likes | 564 Views
Nel ine ární klasifikátory. Nelineární klasifikátory. obsah: XOR problém dvouvrstvý perceptron třívrstvý perceptron algoritmy založené na přímé klasifikaci trénovací množiny „tiling“ algoritmus algoritmus zpětného šíření zobecněný lineární klasifikátor polynomiální klasifikátor.
E N D
Nelineární klasifikátory • obsah: • XOR problém • dvouvrstvý perceptron • třívrstvý perceptron • algoritmy založené na přímé klasifikaci trénovací množiny • „tiling“ algoritmus • algoritmus zpětného šíření • zobecněný lineární klasifikátor • polynomiální klasifikátor
Nelineární klasifikátory • nyní se budeme zabývat problémy, které nejsou lineárně separabilní • tedy lineární klasifikátor nepovede k uspokojivým výsledkům • pokusíme se vyjít od problému lineárního klasifikátoru a rozšířit jej, aby uměl pracovat i s nelineárně separabilními třídami • nejjednodušší nelineárně separabilní problém je XOR funkce => neexistuje jediná nadrovina (přímka), která tyto dvě třídy odděluje
Nelineární klasifikátory • na rozdíl od funkce XOR jsou funkce AND a OR lineárně separabilní => pro tyto funkce lze najít perceptron, který je klasifikuje • na obrázku je perceptron pro funkci OR
Klasifikace více nadrovinami • k vyřešení problému XOR se pokusíme použít dvě nadroviny (místo jediné): g1(x)=0 a g2(x)=0 => nyní lze třídy A a B separovat • třída A ... (+) část z g1(x) (–) část z g2(x) • třída B ... obráceně • dostali jsme 2 fáze klasifikace • 1. fáze • spočteme pozici příznakových vektorů x s ohledem na každou z klasifikačních nadrovin • 2. fáze • výsledky první fáze spojíme dohromady a najdeme pozici x s ohledem na všechny klasifikační nadroviny
Klasifikace více nadrovinami – 1. fáze • 1. fáze pro problém XOR: • použijeme 2 perceptrony • perceptrony budou mít vstupy x1 a x2 a příslušné váhy • výstup i-tého perceptronu je yi= f (gi (x)) pro i = 1, 2 • v tabulce jsou shrnuty hodnoty yi pro všechny možné vstupy: => 1. fáze je mapování vstupního vektoru x do nového vektoru y =(y1,y2)
Klasifikace více nadrovinami – 2. fáze • 2. fáze pro problém XOR: • výsledky první fáze jsou spojovány dohromady • rozhodování je prováděno na transformovaných datech • třída A ... y1 = (1,0) • třída B ... y2 = (0,0) a y3 = (1,1) => tyto transformované vzory lze snadno oddělit jedinou nadrovinou g(y) => nelineárně separabilní problém jsme namapovali na lineárně separabilní problém • XOR problém lze vyřešit 3 perceptrony, které jsou uspořádány do tzv. dvouvrstvého perceptronu • jednotlivé dělicí nadroviny: g1(x) = x1 + x2– 1/2 = 0 g2(x) = x1 + x2– 3/2 = 0 g(y) = y1– y2– 1/2 = 0
Dvouvrstvý perceptron • struktura dvouvrstvého perceptronu: • jednotlivé vrstvy: • vstupní vrstva • počet jednotek odpovídá dimenzi vzorů • předložena data a ty se jen rozdistribuují do dalších vrstev (nic nepočítají) • skrytá vrstva • realizuje první fázi • výstupní vrstva • realizuje druhou fázi • pro jednoduchost se omezíme na 1 výstupní neuron (lze snadno zobecnit)
Dvouvrstvý perceptron – skrytá vrstva • skrytá vrstva • provede mapování vstupního prostoru na vrcholy jednotkové hyperkostky Hp v p-dimenzionálním prostoru • mapování vstupního prostoru na vrcholy hyperkostky se dosáhne vytvořením p nadrovin • každá nadrovina je tvořena jedním perceptronem ve skryté vrstvě • výstup skrytého neuronu je 0 nebo 1
Dvouvrstvý perceptron – skrytá vrstva • na obrázku je příklad tří protínajících se nadrovin • i-tá složka ve vrcholu odpovídá pozici oblasti s ohledem na i-tou nadrovinu gi • např. • vrchol 001 odpovídá oblasti, která je (+) poloprostoru nadroviny g1, (–) poloprostoru g2 a (+) poloprostoru g3 • skrytá vrstva: • skrytá vrstva rozdělí l-dimenzionální vstupní prostor do mnohostěnů, které jsou dány průniky nadrovin • všechny vektory uvnitř jednoho mnohostěnu jsou mapovány na jeden vrchol hyperkostky
Dvouvrstvý perceptron – výstupní vrstva • výstupní vrstva • zatím uvažujeme jen jeden výstupní perceptron • realizuje další nadrovinu, která rozdělí hyperkostku na 2 části • příklad: • třída A ... oblasti namapované na vrcholy 000, 001, 011 • třída B ... oblasti namapované na vrcholy 010, 100, 110, 111 => nadrovina oddělující tyto třídy má tvar: –y1 –y2 –y3 +0,5 = 0 a je realizována výstupním neuronem
Dvouvrstvý perceptron – výstupní vrstva • jiný příklad: • třída A ... oblasti namapované na vrcholy 000, 111, 110 • třída B ... zbytek => není možné sestrojit jedinou nadrovinu, která třídy oddělí • dvouvrstvý perceptron • umí separovat třídy, které jsou sjednocením mnohostěnných oblastí • ale neumí separovat každé sjednocení mnohostěnných oblastí • pozn. • existují vrcholy, které neodpovídají žádně mnohostěnné oblasti (např. 101) .... virtuální mnohostěny • tyto oblasti nemají vliv na klasifikaci
Třívrstvý perceptron • dvouvrstvý perceptron: • neumí separovat třídy, které jsou libovolným sjednocením mnohostěnných oblastí • ekvivalentní problém jako perceptron versus XOR => přidáme další vrstvu => třívrstvý perceptron • třívrstvý perceptron: • zvládne separovat třídy, které jsou libovolným sjednocením mnohostěnných oblastí
Třívrstvý perceptron – skryté vrstvy • předpoklad: • nechť třída A je sjednocení J mnohostěnných oblastí a třída B jsou ostatní oblasti • 1. skrytá vrstva • má p neuronů • provede mapování vstupního prostoru na vrcholy jednotkové hyperkostky Hp v p-dimenzionálním prostoru • 2. skrytá vrstva • pro třídu A potřebujeme J neuronů ve 2. skryté vrstvě • každý neuron realizuje jednu nadrovinu, která izoluje právě jediný vrchol hyperkostky • na jedné straně nadroviny bude vybraný vrchol hyperkostky • na druhé straně budou zbylé vrcholy hyperkostky • výstupní vrstva • pro jednoduchost uvažujeme jen 1 výstupní perceptron • výstupní neuron realizuje OR-bránu pro jednotlivé třídy
Třívrstvý perceptron – činnost sítě • 1. skrytá vrstva • provede mapování vstupního prostoru na vrcholy jednotkové hyperkostky Hp v p-dimenzionálním prostoru • 2. skrytá vrstva • vstupní vektor je ze třídy A • jeden z neuronů ve 2. skryté vrstvě dá výstup 1 • ostatních J-1 neuronů ve 2. skryté vrstvě dá výstup 0 • vstupní vektor je ze třídy B • všechny neurony ve 2. skryté vrstvě dají 0 • výstupní vrstva • výstupní neuron realizuje OR-bránu pro jednotlivé třídy • výstup bude 1 pro třídu A • výstup bude 0 pro třídu B
Třívrstvý perceptron – shrnutí • struktura sítě • vstupní vrstva • propaguje data do sítě • 1. skrytá vrstva • vytváří nadroviny • 2. skrytá vrstva • vytváří oblasti • výstupní vrstva • vytváří třídy • zobecnění struktury na více tříd • výstupní vrstva bude mít více neuronů, které realizují funkci OR pro každou třídu
Třívrstvý perceptron – praxe • třívrstvý perceptron má schopnosti separovat libovolné sjednocení mnohostěnných oblastí • v praxi ale máme jen množinu trénovacích dat a neznáme tvar oblastí • chceme algoritmus, který nám dá nastavení vah (popř. struktury sítě) podle trénovacích dat • 2 základní techniky: 1. algoritmy založené na přímé klasifikaci trénovací množiny • sít je vytvářena tak, aby správně klasifikovala všechna dostupná trénovací data 2. algoritmus zpětného šíření • zvolíme si pevnou strukturu sítě a hledáme nastavení vah, abychom minimalizovali ztrátovou funkci sítě
Algoritmy založené na přímé klasifikaci trénovacích dat • jsou to tzv. konstruktivní algoritmy • vyjdeme z malé sítě (která typicky není schopna řeši problém) • síť rozšiřujeme, dokud celá trénovací množina není správně klasifikována • existující algoritmy: • Meza 1989 („tiling“ algoritmus), Frea 1990 • přidávají vrtsvy do sítě • Kout 1994, Bose 1996 • používají 1-2 skryté vrstvy • přidávají neurony do těchto skrytých vrstev • některé algoritmy umožní vazby mezi libovolnými vrstvami (Frea 1990) • některé algoritmy povolí vazby mezi neurony v jedné vrstvě (Refe 1991) • typický postup • dekompozice problému na menší problémy (které zvládne 1 neuron) a z nich sestavíme výsledné řešení
„Tiling“ algoritmus – Meza, 1990 • algoritmus • většinou vytvoří síť s více skrytými vrstvami • popíšeme pro případ klasifikace do 2 tříd • množinu trénovacích dat označíme X • uvažujme tyto trénovací data
„Tiling“ algoritmus – krok 1 • Krok 1 – vytváření 1. vrstvy • algoritmus začíná s jediným neuronem n(X) v 1. vrstvě ... hlavní neuron • hlavní neuron je naučen podle přihrádkového algoritmu na trénovací množině X • po naučení se trénovací množina X rozdělí do dvou podmnožin X+ a X – • X+ jsou vzory z X, které hlavní neuron klasifikuje 1 • X– jsou vzory z X, které hlavní neuron klasifikuje 0 • když X+ obsahuje vzory z obou tříd => přidáme další neuron n(X+) ... pomocný neuron • tento pomocný neuron n(X+) je naučen jen pomocí trénovacích dat z X+ • když X– obsahuje vzory z obou tříd => přidáme dalšípomocný neuron n(X–) • tento pomocný neuron n(X–) je naučen jen pomocí trénovacích dat z X–
„Tiling“ algoritmus – krok 1 • pomocný neuron n(X+) je naučen na množině X+: • pomocný neuron n(X–) je naučen na množině X–: X++ dostaneme: X+– X–+ X––
„Tiling“ algoritmus – krok 1 • když některá z množin X++ nebo X +– odpovídajících neuronu n(X+) obsahuje vektory z obou tříd => pro danou množinu přidáme další pomocné neurony • když některá z množin X–+ nebo X –– odpovídajících neuronu n(X–) obsahuje vektory z obou tříd => pro danou množinu přidáme další pomocné neurony • proces opakujeme, dokud pomocné neurony neklasifikují správně svojí trénovací množinu • trénovací množina je konečná => po konečném počtu kroků se proces zastaví => první vrstva bude mít 1 hlavní neuron a více pomocných neuronů • lze ukázat, že žádné 2 vzory z různých tříd nebudou mít stejný výstup z první vrstvy
„Tiling“ algoritmus – krok 2 • Krok 2 – vytváření 2. vrstvy • označme X1 = {y; y = f1(x), pro všechna x z množiny X} • kde f1 je mapování implementované první vrstvou => množina X1 je nyní trénovací množina pro 2. vrstvu • nyní použijeme postup v Kroku 1 a trénovací množinu X1 a vytvoříme 2. vrstvu • postup opakujeme • dokud nově vzniklá vrstva neobsahuje jen hlavní neuron, který klasifikuje správně příslušnou trénovací množinu
„Tiling“ algoritmus – závěr • výsledná síť pro „náš“ příklad: • Meza 1989 ukázal • vhodná volba vah mezi sousedními vrstvami zajistí, že každý nově přidávaný neuronbude klasifikovat správně všechny vektory, které klasifikoval správně hlavní neuron v „předchozí“ vrstvě, a navíc minimálně jeden další vektor => tedy v konečném počtu kroků síť bude správně klasifikovat celou trénovací množinu X
Algoritmus zpětného šíření • obecný algoritmus na učení vrstevnatých sítí • pevná architektura sítě • hledáme nastavení vah, které minimalizuje ztrátovou funkci • budeme uvažovat obecnou vrstevnatou síť • síť je tvořena L vrstvami • k0 je počet vstupních jednotek • kr je počet neuronů ve vrstvě r (r=1,...,L) • vstupní jednotky „nic nepočítají“, jen propagují informaci dál • všechny neurony mají stejnou aktivační funkci • aktivační funkce je spojitá a derivovatelná (místo skokové funkce) • trénovací vzory jsou dvojice (x(i); y(i)) pro i=1,...,n vstup požadovaný výstup
Algoritmus zpětného šíření – aktivační funkce • aktivační funkce • aktivační funkce je spojitá a derivovatelná • sigmoidální funkce kde a je strmost • hyperbolický tangens pro hodnoty z intervalu (-1,+1) • pokud začneme používat spojité aktivační funkce => mapování vektorů na vrcholy hyperkostky je neplatné • nyní to bude ztrátová funkce, která bude určovat správnou klasifikaci
Algoritmus zpětného šíření – idea algoritmu • idea algoritmu • během učení předložíme síti i-tý trénovací vzor x(i) • síť nám dá „svůj“ výstup ŷ(i) • výstup sítě se liší od požadovaného výstupu y(i) • váhy se počítají tak, aby ztrátová funkce J byla minimalizována • ztrátová funkce J závisí na y(i) a ŷ(i) pro i =1,...,n • minimalizaci ztrátové funkce uděláme iterativně pomocí metodysnižování gradientu • značení proměnných: • wjr váhový vektor neuronu j ve vrstvě r (včetně prahu) • vjr potenciál neuronu j ve vrstvě r = vážený součet vstupů do neuronu j • yjr výstup neuronu j ve vrstvě r yjr = f(vjr) aktivační funkce
Algoritmus zpětného šíření – metoda snižování gradientu • základní krok iterace (změny váhového vektoru) kde wjr(new) je aktuální odhad váhového vektoru Δwjr je oprava váhového vektoru wjr • ztrátovou funkci definujeme: • kde E(i) je chyba při rozpoznávání trénovací dvojice (x(i); y(i)) a síť dá výstup ŷ(i) • typicky se chyba na jednom vzoru E(i) definuje jako: tento člen zbývá spočítat
Algoritmus zpětného šíření – odvození • potřebujeme spočítat člen • k jeho spočtení použijeme řetízkové pravidlo • řetízkové pravidlo dosadíme do (*) (*) umíme spočítat přímo δjr(i) výstup vrstvy r-1
Algoritmus zpětného šíření – zpětný krok • pro spočtení δjr(i) použijeme techniku zpětného šíření • pro výstupní vrstvu lze spočítat hodnotu δjr(i) přímo • pro nevýstupní vrstvu r využijeme hodnoty spočtené ve vrstvě r+1 • spočtení δjr • nastavení vah spočtení yjr
Algoritmus zpětného šíření – zpětný krok • výstupní vrstva (r=L): • nevýstupní vrstva (r<L): derivace aktivační funkce
Algoritmus zpětného šíření – algoritmus • inicializace všech vah na malá náhodná čísla • dopředný výpočet • pro každý trénovací vzor x(i) pro i=1,...,n spočteme (od nejnižších vrstev výše): • potenciál každého neuronu vjr(i) • výstup každého neuronu yjr(i) pro j=1,...,kr a r=1,...,L • výstup L-té vrstvy je skutečný výstup sítě ŷ(i) • zpětný výpočet • pro i=1,...,n a j=1,...,krspočteme: • následně spočteme ze vztahu (pro r = L, L-1,...2):
Algoritmus zpětného šíření – algoritmus • aktualizace vah • pro r = 1,...,L a j = 1,...,kr aktualizujeme váhy • dokud nejsou splněny ukončovací podmínky, opakujeme krok 2 • nejčastější ukončovací podmínka je „dokud celková ztráta neklesne pod danou mez“
Algoritmus zpětného šíření – poznámky • konvergence je ovlivněna parametrem μ .... parametr učení • μ je velké • rychlá konvergence • snadno může přeskočit úzké globální minimum ztrátové funkce • μ je malé • pomalá konvergence • je možné udělat parametr učení adaptivní • minimalizace může skončit v lokálním minimu • nutná reinicializace a zopakování učení • popsané učení je tzv. dávkové učení • existuje i online učení
Algoritmus zpětného šíření – klasifikace • když je neuronová síť naučena, pak můžeme klasifikovat • to je krok 2 v algoritmu učení • klasifikace: • předložíme neznámý vzor • zjistíme výstup sítě („odezva sítě na tento vzor“) • vzor je klasifikován do třídy, která je indikována výstupem
Zobecněný lineární klasifikátor • u problému XOR jsme ukázali, že neurony ve skryté vrstvě provádí mapování • mapování převede původní (nelineárně separabilní) problém na transformovaný (lineárně separabilní) problém • mapování: x→ y kde f(∙) je aktivační funkce a g1 a g2 je lineární kombinace vstupů na jednotlivých neuronech • z tohoto pozorování vyjdeme a zobecníme ho
Zobecněný lineární klasifikátor • předpoklady: • uvažujme l-dimenzionální příznakový vektor, který patří do jedné ze tříd A a B • třídy A a B jsou nelineárně separabilní • f1(∙), ... , fk(∙) jsou nelineární funkce fi:Rl→ R pro i=1,...,k které definují mapování x є Rl→ y Rk • cíl: zjistit, zda existuje hodnota k a funkce fi takové, že třídy A a B jsou lineárně separabilní v k-dimenzionálním prostoru vektoru y • chceme zjistit, zda existuje k-dimenzionální prostor, kde můžeme zkonstruovat nadrovinu wRk: wTy+w0> 0 pro xA wTy+w0< 0 pro xB (*)
Zobecněný lineární klasifikátor − odvození • předpokládáme, že v původním prostoru byly třídy A a B nelineárně separovatelné • nelineární hyperplocha g(x)=0 separuje třídy • podmínky (*) jsou v podstatě ekvivalentní odhadu nelineární g(x) jako lineární kombinace funkcí fi(x) => problém odhadnutí funkce na základě vybraných interpolačních funkcí fi(x) => řeší numerická matematika • když zvolíme funkce fi • „stačí“ spočítat váhy wi nadroviny v k-dimenzionálním prostoru => zobecněný lineární klasifikátor
Zobecněný lineární klasifikátor − odvození • zobecněný lineární klasifikátor lze realizovat dvouvrstvou sítí • neurony mají různé aktivační funkce fi • první vrstva neuronů udělá mapování do prostoru vektoru y • druhá vrstva neuronů spočte nadrovinu • klasifikace do c tříd • je nutné navrhnout c váhových vektorů wr r =1,..,c • jeden neuron pro každou třídu • r-tou třídu vybereme podle maximálního výstupu wrT·y + wr0
Polynomiální klasifikátor • příklad zobecněného lineárního klasifikátoru • funkce g(x) je aproximována pomocí polynomů nejvýše r-tého stupně (proměnné x) • pro r =2 dostaneme: • když x= (x1,x2)T, pak vektor y bude v obecném případě mít tvar • klasifikační plocha bude mít tvar => počet volných parametrů určuje hledanou dimenzi k
Polynomiální klasifikátor • zobecnění pomocí na polynomy stupně r je přímé • při zobecnění dostaneme součiny kde • pro polynomy stupně r a l-dimenzionální vektory x dostaneme • např. r = 10 a l = 10 => dostaneme k = 184,756 • tedy i pro středně velké vektory a stupně polynomů dostaneme obrovksý počet volných parametrů
Polynomiální klasifikátor − funkce XOR • vrátíme se zpět k příkladu s funkcí XOR • definujeme vektor y (a tím definujeme funkce fi): • vstupní vektory jsou namapovány na 3 vrcholy trojrozměrné jednotkové kostky (*) (00) → (000) (11) → (111) (10) → (100) (01) → (010)
Polynomiální klasifikátor − funkce XOR • vrcholy kostky jsou oddělitelné nadrovinou (rovinou) • do této rovnice dosadíme mapování (*) a dostaneme oddělující plochu => výsledná klasifikační funkce je