Машина опорных векторов Ли Хунъи SVM для машинного обучения

машинное обучение искусственный интеллект

Более захватывающее внимание (глаз машинного обучения)~

вводить

  • Машина опорных векторов в основном состоит из двух частей: функции потерь при сворачивании (Hinge Loss) и метод ядра (Kernel Method)

функция потерь

  • Предположим, что наш формат входных данных выглядит следующим образом:

  • Где x представляет вектор данных, y представляет метку данных, а метки делятся на две категории, а именно + 1 и - 1. Здесь функция демоделирования:

  • Таким образом, функция потерь для классификации:

  • Определено, что когда вычисляемое значение функции не равно метке, она принимает 1, а при равенстве принимает 0, но полученная таким образом функция немного плоха, ее нельзя дифференцировать, т. е. градиентный спуск не может быть выполнен. Поэтому мы используем другую функцию в качестве функции потерь, а именно:

Обсуждение различных функций потерь

  • Далее мы обсудим свойства различных функций потерь, как показано на следующем рисунке:

  • На приведенном выше рисунке абсцисса равна yf(x), если прогнозируемый знак совпадает с исходной меткой, то их значение потерь равно 0, если знак противоположен, значение потерь равно 1, где черная линия — это идеальная кривая функции потерь, но ясно видно, что это недифференцируемая функция, поэтому вместо этого мы используем приблизительную функцию потерь.Эта приблизительная функция потерь может быть выбрана различными способами, и каждый возможный выбор будет обсуждаться ниже :

  • Красная кривая представляет собой кривую квадратичной функции, и выражение ее функции потерь:

  • Мы видим, что когда значение метки данных равно +1, прогнозируемое значение +1 может привести к наименьшим потерям; когда значение метки равно -1, прогнозируемое значение -1 может привести к наименьшим потерям. Следовательно, когда yf(x)=1, получается минимальное значение функции потерь, но последняя функция является необоснованной, потому что по мере того, как прогнозируемое значение постепенно становится больше, значение функции потерь фактически становится все больше и больше, что, очевидно, необоснованный.

  • Далее мы рассмотрим использованиеsigmoid+square lossВ качестве функции потерь ее функциональная кривая показана синим цветом Конкретная функция потерь выглядит следующим образом:

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

  • Из выражения видно, что если yf(x) стремится к бесконечности, то полное значение функции будет стремиться к ln1=0, а если yf(x) стремится к отрицательной бесконечности, то полное значение функции будет стремиться к ∞, поэтому Кривая функции показана выше. Эта кривая функции разумна, потому что значение функции постепенно уменьшается по мере увеличения y^nf(xn). Сравнивая метод сигмовидной + квадратной лоос как функцию потерь, мы видим, что когда независимая переменная (значение, соответствующее оси абсцисс) принимает отрицательную бесконечность, сигмовидная + перекрестная энтропия будет иметь большое значение градиента, а сигмоидная + квадратная Значение градиента loos почти равно 0, то есть в процессе градиентного спуска первый будет вознагражден за свои основные усилия, а второй не будет вознагражден, поэтому весьма вероятно, что он не хочет много работать. Еще один момент, здесь мы делим значение функции перекрестной энтропии на ln2, основная цель состоит в том, чтобы надеяться получить верхнюю границу идеальной функции потерь.

  • Наконец, мы рассмотрим функцию потерь при сворачивании (Hinge Loss), конкретное выражение и кривая функции показаны на следующем рисунке:

Для приведенной выше функции потерь мы видим, что для положительного примера, если f(x)>1, получается идеальный результат классификации, а для отрицательного примера, если f(x)1, это достаточно хорошо, но они находятся в одном направлении.penaltyСчитается, что на самом деле он недостаточно хорош.Хотя его можно правильно классифицировать, функция потерь по-прежнему или сдвигает независимую переменную вправо, чтобы стать лучше.Этот интервал также называется запасом. где функция потерь принимает 1, который дает точную верхнюю границу идеальной функции потерь.

  • Если сравнивать функцию кросс-энтропии и функцию потерь при сворачивании, то самая большая разница между ними заключается в отношении к правильно классифицированным примерам. Если черную точку на рисунке переместить из позиции 1 в позицию 2, мы увидим, что значение функции кросс-энтропийной потери будет продолжать уменьшаться, а это значит, что она надеется получить лучшие результаты после нее. уже получил хорошие результаты. ; Но функция складывания - это хорошая функция, когда она больше, чем поле, это хорошо. При практическом использовании функция свертывания немного лучше, чем функция кросс-энтропийных потерь, то есть ненамного. Однако функция складывания лучше учитывает общую ситуацию, и эффект будет лучше при выполнении мультиклассификации.

Линейный классификатор SVM

  • Шаги линейного SVM в основном разделены на три части, как показано на следующем рисунке:

Первая часть — это целевая функция, в которой используется целевая функция, показанная на рисунке выше, которая может быть выражена как операция скалярного произведения между двумя векторами, которая, в свою очередь, может быть выражена как транспонирование весов и умножение входных данных. Икс.
  • Второй шаг состоит в построении функции потерь.Здесь используются складывающаяся функция потерь и обычный член L2, поскольку предыдущая функция потерь, очевидно, является выпуклой функцией, а последний член регуляризации также, очевидно, является выпуклой функцией, поэтому их комбинация также является выпуклой функцией;

  • Таким образом, параметры могут быть обновлены с использованием метода градиентного спуска на третьем этапе. Некоторые люди могут подумать, что эта функция кусочно-линейна и может использовать градиентный спуск, да. Подумайте о предыдущем RElu, который тоже имеет место быть, его также можно обучить с помощью метода градиентного спуска.

  • Здесь мы видим, что разница между логистической регрессией и линейным SVM на самом деле является разницей в функции потерь. С другой стороны, на первом этапе мы видим, что SVM и нейронная сеть на самом деле связаны, поэтому в ICML в 2013 году есть статья «Глубокое обучение с использованием линейных машин опорных векторов».

Обучите SVM с градиентным спуском

  • Во-первых, мы выносим функцию потерь при сворачивании в функции потерь и оцениваем, равны ли следующие два уравнения:

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

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

ядерный метод

двойное представительство

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

  • Происхождение этого результата можно рассматривать с точки зрения обновления параметров с помощью упомянутого ранее метода градиентного спуска. Как показано на рисунке выше, мы объединяем все процессы обновления веса в вектор, где производная функции потерь при свертывании обозначается как c(w), а ее конкретное выражение также показано на рисунке выше. Если мы установим начальное значение веса равным 0, то параметр w на самом деле является линейной комбинацией входных данных, а поскольку для складывающейся функции потерь в ней много нулевых значений, то и нулей в коэффициент α , так что вес фактически является разреженной комбинацией входных данных, а точки данных, соответствующие разреженности, отличной от нуля, называются опорными векторами. Этот результат делает модель более надежной.Даже если есть выбросы или необоснованные точки, пока они не выбраны в качестве опорных векторов, влияние на результаты классификации не будет большим.

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

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

  • После ввода w вы можете видеть, что f (x) в основном состоит из этих трех частей. Первая часть - это коэффициент α, который представляет собой вектор-строку с общим количеством столбцов N. Последние две могут использовать ассоциативный закон умножение матриц, чтобы получить вектор-столбец A с общим количеством N строк. Таким образом, f(x) может быть выражено в виде приведенного выше рисунка, где (xn x) может быть выражено как K(xn, x) , мы будемKназывается методом ядра.

  • Как показано на рисунке ниже, после выражения целевой функции в виде линейной комбинации коэффициентов и K(xn, x) следующей задачей является минимизация функции потерь:

  • Следует отметить, что хотя в последнем элементе есть n и n', диапазон суммирования этих двух одинаковый, за исключением того, что операция суммирования выполняется сначала над n', а затем операция суммирования над n. Здесь нам действительно не нужно знать вектор xn, нам просто нужно знать внутреннюю связь между векторами xn и xn'. Этот метод называется Kernel Trick.

Уловка ядра

  • Когда мы сопоставляем исходные точки данных с многомерным пространством, часто бывает очень полезно использовать трюк ядра, как показано на следующем рисунке:

  • Как показано на рисунке выше, мы сопоставляем х с Φ(x). В это время мы преобразуем расчет в большие размеры, а затем делаем скалярное произведение. Благодаря упрощению мы можем знать, что этот процесс эквивалентен первому выполнению точечного произведение на исходные данные, а затем возведение в квадрат. Этот метод может сократить объем вычислений, когда входными данными являются многомерные данные, как показано на следующем рисунке:

  • Если вы сначала выполняете многомерное отображение, вам нужно выполнить k + C (K, 2) умножение, чтобы получить точки многомерных данных, а затем сделать скалярное произведение между многомерными точками, всего 3 *k+C(K,2) умножения. Однако, если сначала выполняется операция скалярного произведения, а затем выполняется операция возведения в квадрат, необходимо вычислить k+1 умножений. Этот расчет значительно меньше. Таким образом, основная роль трюка с ядром заключается в уменьшении объема вычислений.

  • Далее мы представим ядро ​​радиальной базисной функции в качестве примера.

  • Мы можем видеть, что если радиальную базисную функцию разложить по формуле Тейлора, мы увидим, что это сумма бесконечных членов, поэтому нет способа решить ее, сначала отобразив в большие измерения, а затем выполнив скалярное произведение. Кроме того, с помощью описанного выше процесса мы также можем узнать, что ядро ​​​​RBF (радиальная базисная функция) на самом деле является классификатором в бесконечном измерении.Хотя эффект лучше, его также очень легко переобучить.

  • Далее мы представим ядро ​​сигмоида в качестве примера.

  • На самом деле мы можем видеть, что процесс вычисления f (x) может быть рассчитан следующей нейронной сетью.Для входных данных x он сначала выполняет скалярное произведение с x1.Этот процесс фактически вычисляет вес первого нейрона.Ввод, всего таких нейронов n, их можно умножить на соответствующие коэффициенты, а затем добавить к целевой функции f(x). Следовательно, SVM, использующая ядро ​​сигмоида, на самом деле представляет собой нейронную сеть только с одним скрытым слоем, а функцией активации является функция сигмоида.

  • Не все скалярные произведения векторов перед другими операциями имеют соответствующие функции ядра, можно проверить только те, которые удовлетворяют теории Мерсера.

Взаимосвязь между глубоким обучением и машинами опорных векторов

  • Машины глубокого обучения и опорных векторов в принципе тесно связаны, как показано на следующем рисунке:

  • Скрытый слой перед глубоким обучением фактически выполняет многомерное отображение признаков и, наконец, использует линейный классификатор для классификации;

  • SVM использует метод ядра для нелинейного отображения данных, а затем использует линейный классификатор для классификации.

  • Оба являются методами сначала сопоставления признаков, а затем классификации, Фактически, метод ядра SVM также поддается обучению, но они не могут обучаться до уровня глубокого обучения.

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

Более захватывающее внимание (глаз машинного обучения)~