Чи можливий градієнтний спуск для kernelized SVM (якщо так, то чому люди використовують квадратичне програмування)?


21

Чому люди використовують методи квадратичного програмування (наприклад, SMO) при роботі з ядрами SVM? Що не так з градієнтним узвозом? Чи неможливо користуватися ядрами або це занадто повільно (і чому?).

Ось трохи більше контексту: намагаючись зрозуміти SVMs трохи краще, я використовував Gradient Descent для підготовки лінійного класифікатора SVM, використовуючи наступну функцію витрат:

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

Я використовую такі позначення:

  • w - вагова характеристика моделі, а - її параметр зміщення.b
  • x(i) - вектор функції навчального екземпляра .ith
  • y(i) - цільовий клас (-1 або 1) для екземпляра.ith
  • m - кількість навчальних екземплярів.
  • C - гіперпараметр регуляризації.

Я отримав (під) градієнтний вектор (щодо і ) з цього рівняння, і градієнтний спуск спрацював чудово.wb

Тепер я хотів би вирішити нелінійні проблеми. Чи можу я просто замінити всі крапкові продукти на у функції витрат, де - функція ядра (наприклад, Gaussian RBF, ), то використовуйте обчислення для отримання (під) градієнтного вектора та йти вперед з градієнтним узвозом? K( u , v )KK( u , v )= e - γ u - v 2utvK(u,v)KK(u,v)=eγuv2

Якщо це занадто повільно, чому це так? Чи функція витрат не опукла? Або це тому, що градієнт змінюється занадто швидко (це не Ліпшиц безперервно), тому алгоритм продовжує стрибати по долинах під час спуску, тому він сходить дуже повільно? Але навіть тоді, як це може бути гірше, ніж часова складність програмування квадратичного програмування, яка є O(nsamples2×nfeatures) ? Якщо мова йде про локальні мінімуми, чи не може стохастичний ГД з імітованим відпалом подолати їх?

Відповіді:


6

Встановіть так, що і , з , де - відображення вихідної вхідної матриці , . Це дозволяє вирішити SVM за допомогою первинної рецептури. Використання позначень про втрату:w t ϕ ( x ) = u tK w t w = u t K u K = ϕ ( x ) t ϕ ( x ) ϕ ( x ) xw=ϕ(x)uwtϕ(x)=utKwtw=utKuK=ϕ(x)tϕ(x)ϕ(x)x

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

m × m u m × 1K - матриця , а - матриця . Ні те не є нескінченним.m×mum×1

Дійсно, подвійне, як правило, швидше вирішується, але первинне має і свої переваги, такі як приблизні рішення (які не гарантуються у подвійній рецептурі).


Тепер, чому дуал настільки помітніше, зовсім не очевидно: [1]

Історичні причини, за якими більшість досліджень за останнє десятиліття стосувалися подвійної оптимізації, є незрозумілими . Ми вважаємо, що це тому, що SVM були вперше введені в їх жорсткій маржинальній формулюванні [Boser et al., 1992], для якої подвійна оптимізація (через обмеження) видається більш природною. В цілому, однак, слід віддавати перевагу SVM з м'яким запасом, навіть якщо дані про навчання є роздільними: межа прийняття рішення є більш надійною, оскільки враховується більше навчальних балів [Chapelle et al., 2000]


Шапель (2007) стверджує, що часова складність як первинної, так і подвійної оптимізації є , найгірший випадок - , але вони проаналізували квадратичні та приблизні втрати шарніру, тому не є правильними втратами шарніру, оскільки його не можна диференціювати за допомогою методу Ньютона. O ( n 3 )O(nnsv+nsv3)O(n3)


[1] Шапель, О. (2007). Навчання підтримуючої векторної машини в первинному. Нейрові обчислення, 19 (5), 1155-1178.


1
+1 Чи можете ви, можливо, розширити також складність часу
seanv507

@ seanv507 дякую, справді я мав би вирішити це, я скоро оновлю цю відповідь.
Firebug

4

Якщо застосувати перетворення до всіх вхідних векторів ваги ( ), ми отримаємо таку функцію витрат:x ( i )ϕx(i)

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

Трюк ядра замінює на . Так як вага вектор є НЕ трансформували, ядро трик не може бути застосований до функції витрат вище .K ( u , v ) wϕ(u)tϕ(v)K(u,v)w

Вищенаведена функція витрат відповідає первинній формі цілі SVM:

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

за умови і дляζ ( i )0 i = 1 , , my(i)(wtϕ(x(i))+b)1ζ(i))ζ(i)0i=1,,m

Подвійна форма є:

minα12αtQα1tα

за умови і для0 α iCi=1,2,,mytα=00αiCi=1,2,,m

де - вектор, повний 1s, а - матриця з елементами .Q m × m Q i j = y ( i ) y ( j ) ϕ ( x ( i ) ) tϕ ( x ( j ) )1Qm×mQij=y(i)y(j)ϕ(x(i))tϕ(x(j))

Тепер ми можемо використовувати трюк ядра, обчислюючи так:Qij

Qij=y(i)y(j)K(x(i),x(j))

Таким чином, хитрість ядра може бути використана лише у подвійній формі проблеми SVM (плюс деякі інші алгоритми, такі як логістична регресія).

Тепер ви можете використовувати бібліотеки квадратичного програмування, що не існують, для вирішення цієї проблеми або використовувати множники Lagrangian, щоб отримати необмежену функцію (функція подвійної вартості), а потім шукати мінімум за допомогою Gradient Descent або будь-якої іншої методики оптимізації. Одним з найбільш ефективних підходів є алгоритм SMO, реалізований libsvmбібліотекою (для kernelized SVM).


1
Я не впевнений, чому ви позначили свою відповідь Community Wiki. Це здається ідеально правильною відповіддю на ваше запитання.
Sycorax каже, що повернеться до Моніки

Дякуємо @GeneralAbrial Я позначив свою відповідь спільнотою Wiki, щоб уникнути підозр, що я знав відповідь, перш ніж ставити питання.
MiniQuark

1
Ви завжди повинні робити те, що вважаєте правильним, але задавати і відповідати на власне запитання цілком кошерно.
Sycorax каже, що повернеться до Моніки

Зачекайте, чи не вдалося ви перетворити ваговий вектор у щоб і , з , а потім оптимізувати ваги вибірки ? w t ϕ ( x ) = uK w t w = u t K u K = ϕ t ϕ uw=ϕ(x)uwtϕ(x)=uKwtw=utKuK=ϕtϕu
Firebug

2

Я можу помилятися, але я не бачу, як ми можемо замінити крапкові продукти на ядра, не перетворивши це на подвійну проблему.

Ядра відображають вхід неявно в деякий простір функцій, де стає , функція втрати стає Якщо застосовано ядро ​​Гаусса, матиме ifinite розміри, так буде .ϕ ( x ) J ( w , b ) = C m i = 1 m a x ( 0 , 1 - y ( i ) ( w tϕ ( x ( i ) ) + b ) )xϕ(x)
ϕ(x(i))wJ(ш,б)=Сi=1ммах(0,1-у(i)(штϕ(х(i))+б))+12штш
ϕ(х(i))ш

Мабуть, важко оптимізувати вектор нескінченних розмірів безпосередньо за допомогою градієнтного спуску.

Відповідь оновлення
Firebug дає змогу замінити крапкові продукти ядрами в первинному формулюванні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.