Optimální rozdělující nadplocha. Support vector machine. Adaboost. Petr Pošík Czech Technical University in Prague Faculty of Electrical Engineering Dept. of Cybernetics Opakování Lineární diskriminační funkce........................................................................................ 3 Optimální rozdělující nadplocha 4 Optimální rozdělující nadplocha...................................................................................... 5 Velikost marginu.................................................................................................... 6 Učení optimální rozdělující nadplochy................................................................................. 7 Optimální rozdělující nadplocha: závěrečné poznámky.................................................................. 8 Demo: optimální rozdělující nadplocha................................................................................ 9 Když lineární hranice nestačí... Rozšíření báze..................................................................................................... Dvě soustavy souřadnic............................................................................................ Rozšíření báze: poznámky.......................................................................................... 4 Optimální rozdělujíci nadplocha s rozšířením báze..................................................................... 5 Kernel trik........................................................................................................ 6 Support vector machine............................................................................................. 7 Demo: SVM s lineárním jádrem...................................................................................... 8 Demo: SVM s Gaussovským (RBF) jádrem............................................................................ 9 Boosting Ensembles, committees............................................................................................. Boosting.......................................................................................................... AdaBoost......................................................................................................... 3 AdaBoost graficky................................................................................................. 4 AdaBoost: poznámky............................................................................................... 5 Závěr............................................................................................................. 6
Opakování / 6 Lineární diskriminační funkce Binární klasifikace objektů x (klasifikace do tříd, dichotomie): Stačí diskriminační funkce Pravidlo: f(x i ) > y i = + f(x i ) < y i = neboli y i = sign( f(x)) Učení lin. diskr. funkce: např. perceptronový algoritmus: váhový vektor je váženým součtem trénovacích bodů x i najde jakoukoli separující nadplochu, pokud taková existuje Která z nekonečného množství rozdělujících nadploch je optimální? P. Pošík c Artificial Intelligence 3 / 6 Optimální rozdělující nadplocha 4 / 6 Optimální rozdělující nadplocha Margin (odstup): šířka pásma, v němž se hranice mezi třídami může pohybovat (kolmo ke své směrnici), aniž by se dotkla některého bodu Lineární klasifikátor s maximálním marginem w T x+w = w T x+w = w T x+w = Support vectors: datové vektory ležící v plus-rovině nebo minus-rovině pouze ty mají vliv na hranici mezi třídami Proč maximalizovat margin? Intuitivně se to zdá být nejbezpečnější Pokud bychom udělali malou chybu při stanovování hranice, máme nejmenší šanci, že způsobíme špatnou klasifikaci Model je stabilní vůči změně trénovací množiny, pokud nedojde ke změně některého ze support vectors Existují teoretické výsledky (založené na VC dimenzi), že hledat klasifikátor s maximálním marginem je dobré Maximální margin v praxi dobře funguje Plus-rovina: {x : w T x+w = } Minus-rovina: {x : w T x+w = } Hranice mezi třídami: {x : w T x+w = } P. Pošík c Artificial Intelligence 5 / 6
Velikost marginu Jak vypočítat velikost marginu M ze známých w a w? w T x+w = x + w T x+w = M w T x+w = w x Víme, že: w T x + + w = w T x + w = x + λw = x + Velikost marginu: Můžeme odvodit: w T (x + x ) = w T (x + λw x ) = λw T w = λ = w T w = w M = x + x = λw = λ w = w w = w P. Pošík c Artificial Intelligence 6 / 6 Učení optimální rozdělující nadplochy Chceme maximalizovat margin M = při splnění omezení na správnou klasifikaci. To lze formulovat jako úlohu kvadratického w programování (QP). Primární úloha QP: minimalizuj w T w vzhledem k w,..., w D tak, aby y i (w T x i + w ) Duální úloha QP: maximalizuj α i α i α j y i y j xi T x j vzhledem k α,..., α m i= i= j= tak, aby α i a α i y i =. i= Výpočet řešení primární úlohy z řešení duální úlohy: m w = α i y i x i, w = y k w T x k, i= kde (x k, y k ) je libovolný support vector. P. Pošík c Artificial Intelligence 7 / 6 3
Optimální rozdělující nadplocha: závěrečné poznámky Význam duální formulace: Úloha QP v duální formě je pro QP solvery snáze řešitelná než QP v primární formě. Klasifikovat nové body pak lze pomocí funkce f(x, w, w ) = sign(w T x+w ) = sign( α i y i xi T x+w ), i= t.j. data se v diskriminační funkci vyskytují jen ve formě skalárních součinů. Data s α i > jsou support vectors, takže součty mohou být jen přes support vectors. Duální formulace umožňuje využít dalších triků, o kterých se teprve dozvíte. Když data nejsou lineárně separabilní: I v tomto případě existuje formulace úlohy QP (soft margin). Primární úloha má dvojnásobný počet omezení, úloha tedy je složitější. Výsledky úlohy QP se soft marginem jsou stejného typu jako bez něj. P. Pošík c Artificial Intelligence 8 / 6 Demo: optimální rozdělující nadplocha.8.6.4.....4.6.8. P. Pošík c Artificial Intelligence 9 / 6 4
Když lineární hranice nestačí... / 6 Rozšíření báze a.k.a. vyrovnání příznakového porstoru. Proč? Lineární hranice nemusí být dostatečně flexibilní Využijeme algoritmy pro učení lineární diskriminační funkce i pro učení nelineárních modelů Jak? Zavedeme nový vícerozměrný obrazový prostor F Do tohoto prostoru přetransformujeme data (odvodíme nové příznaky): x z = Φ(x), x = (x, x,..., x D ) z = (Φ (x), Φ (x),..., Φ G (x)), přičemž obvykle D G. aučíme lineární model, který v původním prostoru nebude lineární f(z) = w z + w z +...+w G z G + w f(x) = w Φ (x)+w Φ (x)+...+w G Φ G (x)+w P. Pošík c Artificial Intelligence / 6 Dvě soustavy souřadnic Transformace do vícerozměrného prostoru obrazů Původní prostor Prostor obrazů x = (x, x,..., x D ) z = (z, z,..., z G ) z = log x z = x x 3 z 3 = e x... Učení lineární funkce v prostoru obrazů f(x) = w log x + w x x 3 + w 3 e x +...+w f(z) = w z + w z + w 3 z 3 +...+w P. Pošík c Artificial Intelligence / 6 elineární funkce v původním prostoru 5
Dvě soustavy souřadnic: graficky Transformace do vícerozměrného prostoru obrazů Původní prostor Prostor obrazů.8.6.4...4.6.8 4 6 8 x 5 5 x 9 8 7 6 5 4 3 9 8 7 6 4 6 8 x Učení lineární funkce v prostoru obrazů 5 5 3 4 6 8 x x 5 4 3 4 6 8 x P. Pošík c Artificial Intelligence 3 / 6 elineární funkce v původním prostoru Rozšíření báze: poznámky Výhody: univerzální, obecně použitelná metoda evýhody: zůstává na člověku zvolit, které nové příznaky dá učicímu algoritmu k dispozici data je třeba skutečně namapovat do obrazového prostoru Existuje metoda, jak využít rozšíření báze, aniž bychom mapování skutečně museli provést!!! P. Pošík c Artificial Intelligence 4 / 6 6
Optimální rozdělujíci nadplocha s rozšířením báze Připomeňme: při učení optimální rozdělující nadplochy se vektory x vyskytují pouze v optimalizačním kritériu α i α i α j y i y j xi T x j i= i= j= a v diskriminační funkci f(x) = sign( Použijeme-li rozšíření báze, změní se α i y i xi T x+w ). i= optimalizační kritérium na α i α i α j y i y j Φ(x i ) T Φ(x j ) i= i= j= a diskriminační funkce na f(x) = sign( i= α i y i Φ(x i ) T Φ(x)+w ). Místo skalárního součinu v obrazovém prostoru lze použít funkci K(x i, x j ) v optimalizačním kritériu α i α i α j y i y j K(x i, x j ) i= i= j= a v diskriminační funkci f(x) = sign( i= α i y i K(x i, x)+w ). P. Pošík c Artificial Intelligence 5 / 6 Kernel trik Existují funkce dvou vektorových argumentů (K(a, b)), jejichž hodnoty jsou rovny skalárnímu součinu (φ(a) T φ(b)) vektorů vzniklých namapováním obou původních vektorů do mnoharozměrného prostoru obrazů. Takovým funkcím se říká jádrové funkce nebo kernely. Kernel trik: Mějme lineární algoritmus, v němž se trénovací příklady vyskytují pouze ve skalárních součinech. Takový algoritmus lze znelinearizovat, když nahradíme skalární součiny dvou trénovacích vektorů jádrovou funkcí těchto vektorů. Výsledek je stejný, jako by se tentýž algoritmus učil v mnoharozměrném prostoru nelineárních bázových funkcí. Díky kernelům ovšem není nutné vlastní mapování provádět, algoritmus je mnohem efektivnější. Často používané kernely: Polynomiální: K(a, b) = (a T b+) d, kde d je stupeň polynomu. Gaussovský (RBF): K(a, b) = exp( a b σ ), kde σ je šířka Gaussiánu. P. Pošík c Artificial Intelligence 6 / 6 7
Support vector machine Support vector machine (SVM) = optimální rozdělující nadplocha + kernel trik P. Pošík c Artificial Intelligence 7 / 6 Demo: SVM s lineárním jádrem.8.6.4.....4.6.8..5.9.8.7.6.5.4.3....4.6.8 3.5.5.5.5.5.5 3 3 3 P. Pošík c Artificial Intelligence 8 / 6 8
Demo: SVM s Gaussovským (RBF) jádrem.8.6.4.....4.6.8..5.9.8.7.6.5.4.3....4.6.8 3.5.5.5.5.5.5 3 3 3 P. Pošík c Artificial Intelligence 9 / 6 Boosting / 6 Ensembles, committees Ensemble je komise různých modelů, jejichž predikce jsou sloučeny dohromady např. hlasováním nebo vážením. Jednotlivé metody si liší tím, jakým způsobem vytvářejí jednotlivé modely tak, aby byly různé. P. Pošík c Artificial Intelligence / 6 9
Boosting Boosting obecná metoda, jak ze slabých klasifikátorů vytvořit silný klasifikátor všechny modely jsou stejného typu, všechny jsou učeny stejným algoritmem různorodost modelů: každý z T modelů se učí na jinou podmnožinu trénovacích dat máme-li algoritmus pro učení slabého klasifikátoru, který umí konzistentně nacházet modely, jejichž přesnost je alespoň o málo větší než náhodné tipování, lze dokázat, že boosting umí vytvořit klasifikátor s vysokou úspěšností, např. 99 %. AdaBoost trénovací data všechny modely se učí na všech trénovacích datech (nikoli jen na podmnožinách) v každé iteraci t =,..., T se liší váhy D t (i) trénovacích bodů x i špatně zaklasifikované body mají v další iteraci větší váhu výsledný klasifikátor vážené hlasování P. Pošík c Artificial Intelligence / 6 AdaBoost Algoritmus : AdaBoost Vstup: Trénovací množina správně ohodnocených ( bodů: {x ) i, y i }, x i R D, y i {+, }, i =,..., m Výstup: Finální klasifikátor H final (x) = sign t= T α t h t (x) begin Inicializuj váhy trénovacích případů: D (i) = m. 3 for t =,..., T do 4 ajdi slabý klasifikátor h t 5 Spočti váženou chybu: ǫ t = i= m D t(i)i(y i = h t (x i )) 6 Spočti váhu modelu h t : α t = ln ( ǫt ǫ t ) > 7 Uprav váhy trénovacích bodů: D t+ (i) = D { t(i) e α t, pokud yi = h t (x i ), Z t e α t, pokud y i = h t (x i ), = D t(i) Z t exp( α t y i h t (x i )), kde Z t je normalizační konstanta. P. Pošík c Artificial Intelligence 3 / 6
AdaBoost graficky Iterace : Iterace: Iterace : Iterace: Iterace 3: Iterace: 3.9.9.9.8.8.8.7.7.7.6.6.6.5.5.5.4.4.4.3.3.3........4.6.8 ǫ =.3 α =.4..4.6.8 ǫ =. α =.65..4.6.8 ǫ 3 =.3 α 3 =.9 Iterace: Iterace: Iterace: 3 Cely model.9.9.9.9.8.8.8.8.7.7.7.7.6.6.6.6.5.5.5.5.4.4.4.4.4.3....4.6.8 +.65.3....4.6.8 +.9.3....4.6.8 =.3....4.6.8 P. Pošík c Artificial Intelligence 4 / 6 AdaBoost: poznámky Trénovací chyba: označme γ t =.5 ǫ t, o co je t. model lepší než náhodné hádání označme γ = min t γ t, neboli všechny modely h(t) jsou na trénovací sadě úspěšnější než náhodné hádání alespoň o γ (platí také γ t : γ t γ > ) lze ukázat, že trénovací chyba Err Tr (H final ) e γ T P. Pošík c Artificial Intelligence 5 / 6
Závěr Metody pro binární klasifikaci objektů popsaných reálnými příznaky: učení lineární diskriminační funkce perceptron (pomalu konverguje) optimální rozdělující nadplocha (úloha QP) využití lineárních metod pro konstrukci nelineárních modelů rozšíření báze kernel trik (SVM) ensembles (AdaBoost) Poznámky: SVM: existují jádra umožňující využít SVM i pro nenumerické příznaky (např. pro klasifikaci textů) AdaBoost: algoritmus je možné využít i pro kategoriální příznaky P. Pošík c Artificial Intelligence 6 / 6