SVM и нейронная сеть - PullRequest
       34

SVM и нейронная сеть

29 голосов
/ 22 января 2012

В чем разница между SVM и нейронной сетью?Верно ли, что линейный svm - это то же самое NN, а для нелинейных сепарабельных задач NN использует добавление скрытых слоев, а SVM использует изменение размеров пространства?

Ответы [ 6 ]

43 голосов
/ 23 января 2012

Этот вопрос состоит из двух частей.Первая часть - «Какова форма функции, изученной этими методами?»Для NN и SVM это обычно одно и то же.Например, нейронная сеть с одним скрытым слоем использует ту же форму модели, что и SVM.То есть:

При заданном входном векторе x выходные данные будут такими: output (x) = sum_over_all_i weight_i * nonlinear_function_i (x)

Обычно нелинейные функции также будут иметь некоторые параметры.Таким образом, эти методы должны узнать, сколько нелинейных функций следует использовать, каковы их параметры и каково значение всех весов weight_i.

Следовательно, разница между SVM и NN заключается в том, какони решают, что эти параметры должны быть установлены.Обычно, когда кто-то говорит, что использует нейронную сеть, он подразумевает, что пытается найти параметры, которые минимизируют среднеквадратичную ошибку прогноза по сравнению с набором обучающих примеров.Они также почти всегда будут использовать алгоритм оптимизации стохастический градиентный спуск , чтобы сделать это.SVM, с другой стороны, пытаются минимизировать как ошибку обучения, так и некоторую меру «сложности гипотез».Таким образом, они найдут набор параметров, который соответствует данным, но также является в некотором смысле «простым».Вы можете думать об этом как бритва Оккама для машинного обучения.Наиболее распространенным алгоритмом оптимизации, используемым с SVM, является последовательная минимальная оптимизация .

Другое большое различие между этими двумя методами заключается в том, что при использовании стохастического градиентного спуска не гарантируется нахождение оптимального набора параметров при использовании.как NN реализации используют его.Тем не менее, любая приличная реализация SVM собирается найти оптимальный набор параметров.Люди любят говорить, что нейронные сети застряли в локальных минимумах, а SVM - нет.

23 голосов
/ 01 июня 2012

NNs являются эвристическими, в то время как SVM теоретически основаны. SVM гарантированно сходится к лучшему решению в PAC (вероятно, приблизительно правильном) смысле. Например, для двух линейно разделимых классов SVM будет рисовать разделяющую гиперплоскость непосредственно посередине между ближайшими точками двух классов (они становятся опорными векторами ). Нейронная сеть будет рисовать любую линию, которая разделяет выборки, что правильно для обучающего набора, но может не иметь лучших свойств обобщения.

Так что нет, даже для линейно разделимых задач NN и SVM не одинаковы.

В случае линейно неразделимых классов как SVM, так и NN применяют нелинейную проекцию в многомерное пространство. В случае NN это достигается путем введения дополнительных нейронов в скрытый слой (слои). Для SVM функция ядра используется с тем же эффектом. Отличное свойство функции ядра состоит в том, что вычислительная сложность не увеличивается с числом измерений, в то время как для NN она, очевидно, возрастает с числом нейронов.

11 голосов
/ 13 февраля 2012

Выполнение простого готового сравнения между машинами опорных векторов и нейронными сетями (БЕЗ выбора параметров) в нескольких популярных наборах данных регрессии и классификации демонстрирует практические различия: SVM становитсяочень медленный предсказатель, если создается много векторов поддержки, тогда как скорость предсказания нейронной сети намного выше, а размер модели намного меньше.С другой стороны, время обучения намного меньше для SVM.Что касается точности / потери - несмотря на вышеупомянутые теоретические недостатки нейронных сетей - оба метода находятся на одном уровне - особенно для проблем регрессии, нейронные сети часто превосходят машины опорных векторов.В зависимости от вашей конкретной проблемы это может помочь выбрать правильную модель.

1 голос
/ 13 марта 2017

SVM и NN имеют такой же выделенный блок, как и перцептрон, но SVM также использует трюк ядра, чтобы поднять размерность, скажем, с 2 до 3d с помощью перевода, такого как Y = (x1,2, .. ^ 2, y1,2 ... ^ 2) которые могут разделять линейно неразделимые равнины, используя прямую линию. хотите демо, как это и спросите меня:)

0 голосов
/ 08 февраля 2019

Практически большинство ваших предположений часто совершенно верно.Я уточню: для линейных разделяемых классов Linear SVM работает довольно хорошо, и обучаться намного быстрее.Для нелинейных классов есть трюк ядра, который отправляет ваши данные в пространство более высокой размерности.Этот прием, однако, имеет два недостатка по сравнению с NN.Во-первых, вам нужно искать правильные параметры, потому что классификатор будет работать только в том случае, если в более высоком измерении два набора будут линейно разделены.Теперь - тестирование параметров часто выполняется с помощью поиска в сетке, который занимает много времени процессора.Другая проблема заключается в том, что вся эта методика не такая общая, как NN (например, для NLP, если часто приводит к плохому классификатору).

0 голосов
/ 05 декабря 2013

На самом деле они точно эквивалентны друг другу.Единственное отличие состоит в их стандартных реализациях с выбором функций активации, регуляризации и т. Д., Которые, очевидно, отличаются друг от друга.Кроме того, я еще не видел двойной формулировки для нейронных сетей, но SVM все равно движутся к первичному.

...