• Nie Znaleziono Wyników

Optymalizacja problemów programowania kwa- kwa-dratowego (QP)kwa-dratowego (QP)

Support Vector Machines (SVM)

3.7. Optymalizacja problemów programowania kwa- kwa-dratowego (QP)kwa-dratowego (QP)

Rozwiązania problemów optymalizacyjnych 3.23 3.27 3.44 3.61 3.77 wymagają rozwiązania problemu optymalizacji programowania kwadratowego (ang. qu-adratic programming (QP)). Wiele metod użytych w implementacjach SVM roz-wiązują zagadnienia QP bazując na komercyjnych pakietach programowania kwadratowego. Warto tu wspomnieć o LOQO [247, 248] i MINOS [190]. Pew-ną popularnością cieszyły się także odmiany metody sprzężonego spadku gra-dientu [223, 30]. Dodatkowe informacje można znaleźć w [229]. Implementacje te były jednak zbyt wolne lub wręcz nieużyteczne dla zadań, w których liczba elementów zbioru uczącego wykraczała poza kilkaset.

Warto także zwrócić uwagę na opracowanie, w którym Lin i Lin porównali algorytmu SMO (ang. Sequential Minimal Optimization), z poprawkami Keerthie-go, z innymi algorytmami redukującymi problem optymalizacyjny (raczej na ich niekorzyść) [171].

3.7.1. Dekompozycja

Punktem wspólnym algorytmów efektywnych, które powstały w ostatnich la-tach jest niewątpliwie metoda dekompozycji problemu QP [200, 142, 205] (ang.

decomposition method, a czasem także: coordinate search, method of alternating varia-bles lub coordinate descent method). Ogólny problem optymalizacyjny:

maxα W(α) = pα −1

2α (3.90)

z ograniczeniami:

0≤ αi≤ C i = 1, . . . , N, (3.91)

yα = ∆, (3.92)

(gdzie Qij=yiyjK(xi, xj)) zostaje przekształcony do:

maxαB

W(αB) = (p− QBRαR)αB1

2αBQBBαB (3.93) z ograniczeniami:

0≤ αB,i ≤ C ∀ i ∈ B, (3.94)

yBαB =∆ − yRαR, (3.95) gdzie

$ QBB QBR QRB QRR

%

jest pewną permutacją macierzy Q.

Zasadniczą ideą dekompozycji jest podział całego zbioru uczącego na dwa:

roboczy B i resztę zbioru R ={1, . . . , N} \ B. Wtedy wektor αB podlega opty-malizacji, a wektorαRjest zamrożony. Natomiast funkcja celu przyjmuje postać 3.93 (czynnik12αRQRRαR+pRαRjest stały i dlatego nie znalazł się w 3.93).

Ogólny schemat algorytmu rozwiązywania problemu optymalizacji przez dekompozycję może wyglądać jak poniżej:

1. Wyznaczyć wektorα1 jako rozwiązanie początkowe.

2. Jeśli wektorαk jest optymalny: STOP. W przeciwnym przypadku wyzna-czyć zbiór roboczy (indeksów) B⊂ {1, . . . , N} rozmiaru q, R = {1, . . . , N} \ B. WektoryαkB iαkRsą odpowiednimi, względem zbiorów indeksów B i R, częściami wektoraαk.

3. Rozwiązać podproblem optymalizacyjny 3.93 względemαkB.

4. αk+1B ustawić na rozwiązanie optymalne 3.93, aαk+1R naαkR. Następnie skok do 2.

Powyższy schemat wymaga jednak sprecyzowania odpowiedzi na trzy py-tania:

1. Jak wybierać zbiór roboczy?

2. Na jakiej podstawie decydować, czy wektorαk jest optymalny?

3. Jak rozwiązywać podproblemy 3.93?

Dwa najciekawsze algorytmy korzystające z powyższej dekompozycji proble-mu to SVMlight Joachimsa [142] i SMO Platta [205] z modyfikacjami Keerthiego i in. [154]. SVMlight w zbiorze roboczym umieszcza parzystą liczbę elemen-tów. Najczęściej jest to kilka elementów (w implementacji domyślnie 10). Można

zauważyć, że SVMlight dla zbioru roboczego wielkości 2 jest równoważny algo-rytmowi SMO z poprawkami Keerthiego [168].

Oba algorytmy korzystają tak naprawdę z tej samej transformacji algorytmu dekompozycji:

mind ∇g(α)d (3.96)

z ograniczeniami:

yd =0, (3.97)

−1 ≤ d ≤ 1, (3.98)

di ≥ 0 gdy αi =0, (3.99)

di ≤ 0 gdy αi =C, (3.100)

|{di|di = 0}| = q, (3.101) gdzie g(α) = 12αQα + pα. Z 3.101 łatwo zauważyć, że minimalizacja dotyczy tylko zbioru roboczego.

Choć tu tak naprawdę kończą się podobieństwa. SVMlight musi korzystać z procedur programowania kwadratowego do rozwiązania 3.96. Natomiast Platt w algorytmie SMO zaproponował analityczne rozwiązanie problemu w przypad-ku dwuelementowego zbioru roboczego. Dzięki temu nie zachodzi już potrzeba używania wewnętrznie procedury rozwiązywania ogólnego problemu QP. To jest właśnie naprawdę dużą zaletą, ponieważ standardowe procedury QP są wrażliwe numerycznie i skomplikowane w implementacji (setki linii kodu).

3.7.2. Wybór zbioru roboczego dla C-SVM

Pierwotny wybór zbioru roboczego w SMO zaproponowany przez Platta [205]

został zmieniony na bardziej efektywny przez wspomnianego już kilkakrotnie Keerthiego [154]. Mechanizm wyboru zbioru roboczego B = {i, j} indeksów mnożników zdefiniowany jest poniżej:

i = arg mink { ∇g(α)kdk |ykdk=1 ∧ , (3.102) dk≥ 0 gdy αk=0 ∨ dk ≤ 0 gdy αk =C},

j = arg mink { ∇g(α)kdk |ykdk=−1 ∧ , (3.103) dk≥ 0 gdy αk=0 ∨ dk ≤ 0 gdy αk =C}.

Powyższy wybór indeksów i i j wybiera te, które najbardziej łamią warunki KKT.

3.7.3. Kryterium stopu

Aby zdefiniować kryterium stopu zdefiniujemy pomocniczo gi i gj:

gi =

 −∇g(α)i, gdy yi =1 ∧ αi<C

∇g(α)i, gdy yi =−1 ∧ αi>0 , (3.104) gj =

 −∇g(α)j, gdy yj=−1 ∧ αj<C

∇g(α)j, gdy yj=1 ∧ αj>0 . (3.105) Kiedy nierówność

gi≤ −gj (3.106)

jest spełniona, wektorα jest wektorem optymalnym. W praktyce dopuszcza się pewną niedokładność, absolutnie nie zmieniając w istotny sposób ostatecznego rozwiązania:

gi≤ −gj+, (3.107)

gdzie jest bardzo małą dodatnią wartością (najczęściej stosuje się 0.001).

3.7.4. Wybór zbioru roboczego dla ν-SVM

Powyższy sposób (podrozdział 3.7.2) doboru zbioru roboczego jest odpowiedni dla C-SVC i C-SVR, nie jest jednak odpowiedni dla wersjiν-SVC i ν-SVR.

Informacje na temat wariacji wyboru zbioru roboczego dla problemów re-gresji można znaleźć w [166].

Autorem wyboru zbioru roboczego jest również Keerthi i Gilbert [154], ale warto zajrzeć również do publikacji Changa i Lina [40, 41].

Dla ∇g(α)i<∇g(α)j mamy więc:

i = arg min

k {∇g(α)kdk | yk=1 ∧ αk<C}, (3.108) j = arg max

k {∇g(α)kdk | yk=1 ∧ αk>0}, (3.109) a gdy∇g(α)i≥ ∇g(α)j mamy:

i = arg min

k {∇g(α)kdk | yk =−1 ∧ αk<C}, (3.110) j = arg max

k {∇g(α)kdk | yk =−1 ∧ αk>0}. (3.111)

3.7.5. Kryterium stopu dla ν-SVM

Dla ν-SVM nie tylko wybór zbioru roboczego jest nieco inny, ale również kry-terium stopu :

max{−G1+G2,−G3+G4} < , (3.112) gdzie G1=∇g(α)i dla i z równania 3.108, G2=∇g(α)j dla j z równania 3.109, G3=∇g(α)i dla i z równania 3.110, G4=∇g(α)j dla j z równania 3.111.

3.7.6. Analityczne rozwiązanie problemu dekompozycji

Platt w [205] zaproponował analityczne rozwiązanie problemu dekompozycji 3.93. Szczegóły wyprowadzenia (choć nieskomplikowane) wykraczają poza ra-my tego opracowania, dokładną analizę można znaleźć w [205]. Analityczne rozwiązanie stało się możliwe po zmniejszeniu zbioru roboczego B z 3.93 do dwóch elementów. Wtedy problem optymalizacyjny przyjmuje postać:

minαij

Jak wiadomo wartości mnożnikówα są ograniczone (patrz 3.45), czyli war-tości αi i αj muszą leżeć w kwadracie [0, C]× [0, C]. Natomiast równości 3.45 wymuszają położenie punktu określonego przez mnożnikiαi i αj na diagonali.

Zależnie od wartości yii yjmożna wyznaczyć ograniczenia dolne i górne na wartości nowe mnożnikaαnewj . Dla yi= yj mamy więc: Po podstawieniu 3.120 i minimalizacji bez ograniczeń 3.113 otrzymuje się:

α=

Teraz można wyznaczyć ostateczną nową wartośćαj,αnewJ :

αnewj =

Natomiast nową wartość αi wyznaczamy przez:

αnewi =αi+yiyjj− αnewi ). (3.125)

3.7.7. Wyznaczenie wartości b i ρ

Po zakończeniu procesu optymalizacji należy jeszcze wyznaczyć wartości b iρ.

Co prawda wyznaczenie wartości ρ nie jest konieczne, ale wartość b jest nie-zbędna w funkcji decyzyjnej.

Zdefiniujmy r+ i r zgodnie z [40, 41]:

r+ = ∑0<αi<C,yi=1 ∇g(α)i

0<αi<C,yi=1 1 , (3.126) r = ∑0<αi<C,yi=−1 ∇g(α)i

0<αi<C,yi=−1 1 . (3.127) Jeśli nie ma żadnego i, dla którego yi =±1 i αi spełnia 0 <αi<C to:

r±= 1 2

$

αi=maxC,yi=±1 ∇g(α)i + min

αi=0,yi=±1 ∇g(α)i

%

. (3.128)

Mając r+ i r można zdefiniować b i ρ:

ρ = r++r

2 , (3.129)

b = r+− r

2 . (3.130)

3.7.8. Dalsze sposoby przyspieszenia rozwiązywania problemów QP dla SVM

Macierz Q nie zawsze można przechowywać w pamięci. Jeśli wielkość Q unie-możliwia przechowywanie całej macierzy to można próbować przechowywać te jej części, które potencjalnie mogą być przydatne w kolejnych krokach optyma-lizacji. Sposób ten (ang. caching) zaproponowany został przez Joachimsa [142].

Praktycznie im bliżej końca procedury optymalizacji, tym mniej kolumn macie-rzy Q jest używanych i tym większe prawdopodobieństwo, że odpowiednie z nich zostaną zatrzymane w pamięci. Dlatego warto zostawiać ostatnio używane kolumny macierzy Q.

Shrinking to następny sposób na usprawnienie algorytmu optymalizacji. Po-lega on na zmniejszaniu zbioru, który jest używany w procesie optymalizacji.

Jak sugeruje Joachims w [142] tylko wolne wektory SV mogą brać czynny udział w procedurze optymalizacji. Dokładniej jeszcze definiuje to Lin w [170], gdzie pokazuje, że w końcowych iteracjach teαi, które mogą ulec zmianie należą do

zbioru: gdzie limk→∞αk=α (¯α jest optymalnym rozwiązaniem, jak pokazano w [169]).¯

Powiązane dokumenty