Зачем беспокоиться о двойной проблеме при установке SVM?


50

Для заданных точек данных и меток y 1 , , y n{ - 1 , 1 }x1,,xnRdy1,,yn{1,1} , основная задача SVM с жестким полем имеет вид

S.T.

minimizew,w012wTw
улицая:Yя(весTИкся+вес0)1

которая является квадратичной программой с переменными для оптимизации и яd+1я ограничениями . Двойственный

s.t.

разворачиванияαΣязнак равно1Nαя-12Σязнак равно1NΣJзнак равно1NYяYJαяαJИксяTИксJ
является квадратичной программа с п + 1 переменныхкоторые будут оптимизированы для и п неравенств и п равенства ограничений.
улицая:αя0Σязнак равно1NYяαязнак равно0
N+1NN

При реализации SVM с жестким запасом, почему бы мне решить двойную проблему вместо основной проблемы? Первичная проблема выглядит для меня более «интуитивно понятной», и мне не нужно беспокоиться о пробеле дуальности, состоянии Куна-Такера и т. Д.

Это имело бы смысл мне решить двойную задачу , если , но я подозреваю , что есть более веские причины. Это тот случай?d»N


26
Краткий ответ - ядра. Длинный ответ - keeerneeels (-;

Наиболее важной вещью двойной проблемы является введение трюка с ядром, целью которого является отображение исходных данных в пространство с более высокой размерностью.
BigeyeDestroyer

Ответы:


40

На основании лекционных заметок упомянутых в ответе @ user765195 (спасибо!), Наиболее очевидные причины, по-видимому, следующие:

Решая первичную задачу, мы получаем оптимальное , но ничего не знаем о α i . Чтобы классифицировать точку запроса x, нам нужно явно вычислить скалярное произведение w T x , что может быть дорого, если dвесαяИксвесTИксd велико.

Решая двойственную задачу, получаем (где α i = 0 для всех, кроме нескольких точек - опорных векторов). Чтобы классифицировать точку запроса x , мы вычисляемαяαязнак равно0Икс

весTИкс+вес0знак равно(Σязнак равно1NαяYяИкся)TИкс+вес0знак равноΣязнак равно1NαяYяИкся,Икс+вес0

Этот термин очень эффективно рассчитывается, если имеется всего несколько векторов поддержки. Кроме того, поскольку теперь у нас есть скалярный продукт, включающий только векторы данных , мы можем применить трюк ядра .


6
Подожди подожди. Допустим, у вас есть два вспомогательных вектора x1 и x2. Вы не можете иметь меньше двух, верно? Вы говорите, что вычисления <x1, x> и <x2, x> быстрее, чем <w, x>?
Лев

1
@Leo: обратите внимание, что я использую <x1, x>и wTx. Первый используется в качестве символа для оценки ядра K (x1, x), которая проецирует x1 и x в очень многомерное пространство и неявно вычисляет скалярное произведение проецируемых значений. Последнее является нормальным скалярным произведением, поэтому wи xдолжно быть спроецировано явно, а затем скалярное произведение вычисляется явно. В зависимости от выбора ядра, одно явное вычисление может занять гораздо больше вычислений, чем многие оценки ядра.
blubb

1
Как я понимаю первичную проблему, - множители Лагранжа, так почему же мы не можем решить первичную задачу, чтобы найти α ? Я имею в виду, что нам, вероятно, не нужно прибегать к двойной проблеме, чтобы выяснить, а ? ααα
авокадо

2
«Кроме того, поскольку теперь у нас есть скалярный продукт, включающий только векторы данных, мы можем применить трюк ядра». - Это также верно в первичной формулировке.
Firebug

2
Если люди хотят получить более подробную информацию о комментарии от @Firebug ... ознакомьтесь с уравнениями 10-12 из lib.kobe-u.ac.jp/repository/90001050.pdf (что является неограниченной версией первичного).
MrDrFenner

13

Прочитайте второй абзац на стр. 13, а обсуждение продолжите в этих заметках:

http://cs229.stanford.edu/notes/cs229-notes3.pdf


17
Это отличная ссылка и однозначно отвечает на вопрос. Я думаю, что ваш ответ будет лучше оценен, если вы суммируете ответ здесь: это делает эту тему самостоятельной.
whuber

3

Вот одна из причин, почему двойная формулировка привлекательна с точки зрения численной оптимизации. Вы можете найти подробности в следующей статье :

Hsieh, C.-J., Chang, K.-W., Lin, C.-J., Keerthi, SS, и Sundararajan, S., «Метод двухкоординатного спуска для линейного SVM большой шкалы», Труды 25-я Международная конференция по машинному обучению, Хельсинки, 2008.

Двойная формулировка включает в себя одно ограничение аффинного равенства и n связанных ограничений.

1. Ограничение аффинного равенства можно «исключить» из двойной формулировки.

Это можно сделать, просто взглянув на ваши данные в R ^ (d + 1) через вложение R ^ d в R ^ (d + 1), повторяя добавление одной координаты «1» к каждой точке данных, то есть R ^ d ----> R ^ (d + 1): (a1, ..., ad) | ---> (a1, ..., ad, 1).

Делая это для всех точек в обучающем наборе, переделывается проблема линейной отделимости в R ^ (d + 1) и устраняется постоянный член w0 из вашего классификатора, что, в свою очередь, устраняет ограничение аффинного равенства из двойственного.

2. По пункту 1 двойственное можно легко привести как выпуклую квадратичную оптимизационную задачу, ограничения которой являются только связанными ограничениями.

3. Теперь двойная задача может быть эффективно решена, т. Е. С помощью алгоритма спуска по двойной координате, который дает эпсилон-оптимальное решение в O (log (1 / epsilon)).

Это сделано, отмечая, что исправление всех альф, кроме одного, приводит к решению в закрытой форме. Затем вы можете циклически перебирать все альфы (например, выбирать один наугад, фиксировать все остальные альфы, вычислять решение в закрытой форме). Можно показать, что таким образом вы получите почти оптимальное решение «довольно быстро» (см. Теорему 1 в вышеупомянутой статье).

Есть много других причин, по которым двойная задача привлекательна с точки зрения оптимизации, некоторые из которых используют тот факт, что она имеет только одно ограничение аффинного равенства (остальные ограничения являются связанными ограничениями), в то время как другие используют наблюдение, которое при решении двойной проблемы "часто большинство альфа-каналов" равны нулю (ненулевые альфа-значения, соответствующие опорным векторам).

Вы можете получить хороший обзор вопросов численной оптимизации для SVM из презентации Стивена Райта на семинаре по вычислительному обучению (2009).

PS: я новичок здесь. Извиняюсь за то, что не умею использовать математические обозначения на этом сайте.


1
Информация об использовании набора текста по математике находится здесь: math.meta.stackexchange.com/questions/5020/…
Восстановите Монику

-5

По моему мнению, в заметках Эндрю Нг четко упоминалось, что основная задача 1 / || w || - это невыпуклая задача. Двойственное является выпуклой задачей, и всегда легко найти оптимальное значение выпуклой функции.


1
Первичное SVM, как указано выше, является выпуклым.
Дугал
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.