Почему сверточные нейронные сети не используют машину опорных векторов для классификации?

46

В последние годы сверточные нейронные сети (CNN) стали современным средством распознавания объектов в компьютерном зрении. Как правило, CNN состоит из нескольких сверточных слоев, за которыми следуют два полностью связанных слоя. Интуиция в этом заключается в том, что сверточные слои изучают лучшее представление входных данных, а полностью связанные слои затем учатся классифицировать это представление на основе набора меток.

Однако до того, как CNN начали доминировать, машины опорных векторов (SVM) были самыми современными. Поэтому кажется разумным сказать, что SVM по-прежнему является более сильным классификатором, чем двухслойная полностью подключенная нейронная сеть. Поэтому мне интересно, почему современные CNN используют тенденцию использовать полностью связанные слои для классификации, а не SVM? Таким образом, вы получите лучшее из обоих миров: сильное представление признаков и сильный классификатор, а не сильное представление признаков, а только слабый классификатор ...

Есть идеи?

Karnivaurus
источник

Ответы:

54

Это можно сделать; Tang (2013) , документ ICML для семинаров Deep Learning с использованием линейных опорных векторных машин , сделал именно это и обнаружил небольшие, но последовательные улучшения. Иногда это также делается для обучения CNN обычным способом, но затем принимают вывод позднего слоя как «функции» и обучают этому отдельному SVM.

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

Кроме того, для мультиклассовых выходов активации softmax более естественны, чем мультиклассовые SVM, и я думаю, что подход SVM в этой статье несколько более сложен в вычислительном отношении. Поэтому люди обычно просто не думают, что это того стоит.

Дугал
источник
0

Насколько я вижу, есть как минимум пара отличий:

  1. CNN предназначены для работы с данными изображений, в то время как SVM является более общим классификатором;
  2. CNN извлекают функции, в то время как SVM просто отображает свои входные данные в некое многомерное пространство, где (надеюсь) различия между классами могут быть обнаружены;
  3. Подобно 2., CNN - это глубокие архитектуры, а SVM - мелкие;
  4. Цели обучения разные: SVM стремятся максимизировать разницу, в то время как CNN - нет (хотелось бы узнать больше)

При этом SVM могут работать так же хорошо, как CNN, при условии, что хорошие функции используются с хорошей функцией ядра.

Владислав Довгальец
источник
4
Я думаю, что вы, возможно, неправильно поняли вопрос; речь идет об использовании «слоя SVM» в конце CNN.
Дугал
4
Я понимаю разницу между CNN и SVM, но, как говорит @Dougal, я спрашиваю больше о последнем слое CNN. Как правило, это полностью подключенная нейронная сеть, но я не уверен, почему SVM здесь не используются, учитывая, что они имеют тенденцию быть сильнее двухслойной нейронной сети.
Карнивавр
6
@Karnivaurus Извините, что неправильно прочитал ваш вопрос. Идея не нова. Обычно последний слой отбрасывается, а выходные данные последнего слоя используются в качестве признаков в других алгоритмах классификации. Почему это не делается последовательно и везде? Функции последнего уровня, как правило, настолько различают, что нет необходимости в сложном черном ящике, как SVM, простая логистическая регрессия делает свою работу. Это мое видение вещей.
Владислав Довгальец