Czy możliwe jest zejście gradientu dla SVM w jądrze (jeśli tak, to dlaczego ludzie używają programowania kwadratowego)?

21

Dlaczego ludzie używają technik programowania kwadratowego (takich jak SMO) podczas obsługi SVM z jądrem? Co jest nie tak z Gradient Descent? Czy nie jest możliwe używanie go z jądrem, czy jest to po prostu zbyt wolne (i dlaczego?).

Oto nieco więcej kontekstu: starając się lepiej zrozumieć SVM, użyłem Gradient Descent do wyszkolenia liniowego klasyfikatora SVM za pomocą następującej funkcji kosztu:

J(w,b)=Ci=1mmax(0,1y(i)(wtx(i)+b))+12wtw

Używam następujących notacji:

  • w to wagi cech modelu, ato parametr odchylenia.b
  • i thx(i) jest wektorem funkcji instancji szkoleniowej .ith
  • i thy(i) to klasa docelowa (-1 lub 1) dla instancji .ith
  • m jest liczbą instancji treningowych.
  • C to hiperparametr regularyzacji.

Z tego równania wyprowadziłem (pod) wektor gradientu (w odniesieniu do w i b ), a zejście gradientu działało dobrze.

Teraz chciałbym rozwiązać problemy nieliniowe. Można po prostu zastąpić wszystkich iloczyn skalarny utv z K(u,v) w funkcji kosztu, gdzie K jest funkcją jądra (na przykład Gaussa RBF, K(u,v)=eγuv2) ), a następnie użyj rachunku różniczkowego do uzyskania wektora (pod) gradientu i kontynuuj z gradientem opadania?

Jeśli jest za wolny, dlaczego? Czy funkcja kosztu nie jest wypukła? A może dlatego, że gradient zmienia się zbyt szybko (nie jest ciągły w skali Lipschitza), więc algorytm przeskakuje przez doliny podczas zniżania, więc zbiega się bardzo wolno? Ale nawet wtedy, jak może być gorzej niż złożoność czasowa programowania kwadratowego, którą jest O(nsamples2×nfeatures) ? Jeśli jest to kwestia lokalnych minimów, czy Stochastic GD z symulowanym wyżarzaniem nie może ich pokonać?

MiniQuark
źródło

Odpowiedzi:

6

Ustaw tak, aby w t ϕ ( x ) = u tK i w t w w = u t K u , z K = ϕ ( x ) t ϕ ( x ) , gdzie ϕ ( x ) jest odwzorowaniem oryginalnej macierzy wejściowej, xw=ϕ(x)uwtϕ(x)=utKwtw=utKuK=ϕ(x)tϕ(x)ϕ(x)x. Pozwala to na rozwiązanie SVM poprzez pierwotne sformułowanie. Używając notacji do utraty:

J(w,b)=Ci=1mmax(0,1y(i)(utK(i)+b))+12utKu

jestmacierzą m × m , a u jestmacierzą m × 1 . Żadne nie jest nieskończone.Km×mum×1

Rzeczywiście, dual jest zwykle szybszy do rozwiązania, ale pierwotny ma również swoje zalety, takie jak przybliżone rozwiązania (które nie są gwarantowane w podwójnym sformułowaniu).


Dlaczego podwójny jest o wiele bardziej widoczny, wcale nie jest oczywisty: [1]

Historyczne powody, dla których większość badań w ostatniej dekadzie dotyczyła podwójnej optymalizacji, są niejasne . Uważamy, że dzieje się tak, ponieważ maszyny SVM zostały po raz pierwszy wprowadzone w formułowaniu twardego marginesu [Boser i in., 1992], dla których podwójna optymalizacja (z powodu ograniczeń) wydaje się bardziej naturalna. Zasadniczo jednak preferowane powinny być maszyny SVM z miękkim marginesem, nawet jeśli dane szkoleniowe są rozdzielne: granica decyzji jest bardziej solidna, ponieważ bierze się pod uwagę więcej punktów szkoleniowych [Chapelle i in., 2000]


Chapelle (2007) twierdzi, że złożoność czasowa optymalizacji zarówno pierwotnej, jak i podwójnej wynosi , najgorszym przypadkiem jest O ( n 3 ) , ale przeanalizowali kwadratowe i przybliżone straty zawiasów, więc nie jest to właściwe utrata zawiasu, ponieważ nie można go rozróżnić przy użyciu metody Newtona.O(nnsv+nsv3)O(n3)


[1] Chapelle, O. (2007). Trenowanie maszyny wektora podporowego w pierwotnej postaci. Obliczenia neuronowe, 19 (5), 1155-1178.

Firebug
źródło
1
+1 Czy możesz rozszerzyć także złożoność czasu
seanv507
@ seanv507 dzięki, rzeczywiście powinienem był to rozwiązać, wkrótce zaktualizuję tę odpowiedź.
Firebug,
4

Jeśli zastosujemy transformację do wszystkich wektorów masy wejściowej ( x ( i ) ), otrzymamy następującą funkcję kosztu:ϕx(i)

J(w,b)=Ci=1mmax(0,1y(i)(wtϕ(x(i))+b))+12wtw

Sztuczka jądra zastępuje przez K ( u , v ) . Ponieważ wektor wagi w niejesttransformowany,sztuczka jądra nie może być zastosowana do powyższej funkcji kosztu.ϕ(u)tϕ(v)K(u,v)w

Powyższa funkcja kosztu odpowiada pierwotnej formie celu SVM:

minw,b,ζCi=1mζ(i)+12wtw

z zastrzeżeniem i ζ ( i )0 dla i = 1 , , my(i)(wtϕ(x(i))+b)1ζ(i))ζ(i)0i=1,,m

Forma podwójna to:

minα12αtQα1tα

ytα=00αiCi=1,2,,m

1Qm×mQij=y(i)y(j)ϕ(x(i))tϕ(x(j))

Qjajot

Qjajot=y(ja)y(jot)K.(x(ja),x(jot))

Zatem sztuczka jądra może być używana tylko w przypadku podwójnej postaci problemu SVM (plus niektóre inne algorytmy, takie jak regresja logistyczna).

Teraz możesz użyć gotowych bibliotek programowania kwadratowego, aby rozwiązać ten problem, lub użyć mnożników Lagrangian, aby uzyskać funkcję nieograniczoną (funkcja podwójnego kosztu), a następnie wyszukać minimum za pomocą spadku gradientu lub innej techniki optymalizacji. Jednym z najbardziej wydajnych podejść wydaje się być algorytm SMO implementowany przez libsvmbibliotekę (dla jądra SVM).

MiniQuark
źródło
1
Nie jestem pewien, dlaczego zaznaczyłeś swoją odpowiedź Community Wiki. To wydaje się być poprawną odpowiedzią na twoje pytanie.
Sycorax mówi Przywróć Monikę
Dzięki @GeneralAbrial. Oznacziłem swoją odpowiedź jako Wiki Wiki, aby uniknąć podejrzeń, że znałem odpowiedź przed zadaniem pytania.
MiniQuark,
1
Zawsze powinieneś robić to, co uważasz za słuszne, ale zadawanie pytań i odpowiadanie na własne pytanie jest całkowicie koszerne.
Sycorax mówi Przywróć Monikę
Czekaj, czy nie możesz przekształcić wektora ciężaru w w=ϕ(x)u po to aby wtϕ(x)=uK. i wtw=utK.u, z K.=ϕtϕ, a następnie zoptymalizuj wagi próbek u?
Firebug,
2

Mogę się mylić, ale nie widzę, jak moglibyśmy zastąpić produkty kropkowe jądrem bez przekształcania go w podwójny problem.

Jądra odwzorowują dane wejściowe pośrednio na pewną przestrzeń cech, w której x staje się ϕ(x), wówczas funkcja utraty staje się
jot(w,b)=doja=1mmzax(0,1-y(ja)(wtϕ(x(ja))+b))+12)wtw
Jeśli zastosowane jest jądro Gaussa, ϕ(x(ja)) będą miały wymiary ifinite, podobnie będzie w.

Trudno jest zoptymalizować wektor o nieskończonych wymiarach przy użyciu bezpośredniego spadku gradientu.

Zaktualizuj
odpowiedź Firebug daje sposób na zastąpienie produktów kropkowych jądrem w pierwotnym sformułowaniu.

dontloo
źródło