Глубокое понимание SVM, подробное объяснение алгоритма SMO

машинное обучение

СегодняТемы машинного обученияВ 35-й статье мы продолжим принцип модели SVM, а сегодня объясним алгоритм SMO.

Обзор формулы

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

Используя метод множителей Лагранжа и решая двойственную задачу исходной задачи, мы получаем квадратичное программирование:

Условия КТТ, которым он должен удовлетворять, следующие:

То есть нам нужно решить экстремальное значение (1) в этих условиях.В случае этого ограничения, хотя мы упростили формулу, чтобы иметь только один параметральфа\alpha, но как получить это экстремальное значение? Для решения этой задачи нам необходимо ввести новый алгоритм, что и является основным содержанием сегодняшней статьи -Алгоритм SMO.

Введение в алгоритм SMO

Полное написание SMO — это Sequential Minimal Optimization, что переводится в алгоритм минимальной оптимизации последовательности. Основная идея алгоритма заключается в том, что нам нужно найти рядальфа\alphaтакое, что (1) принимает экстремальное значение, но проблемаНам сложно одновременно оптимизировать этот ряд значений. Итак, алгоритм SMO придумал очень оригинальный способ объединить эту сериюальфа\alphaДва из них считаются переменными, а все остальные фиксированные значения считаются константами.

Вопрос в том, почему мы выбираем дваальфа\alphaРассматривать это как переменную и не выбирать одну? Не проще ли выбрать один? Поскольку одним из наших ограничений являетсяyiальфаi=0\sum y_i\alpha_i=0, так что если мы выберем только одинальфа\alphaЕсли скорректировать, то очевиднонарушит это ограничение. Итак, мы выбираем два, один из них меняется, а другой меняется вместе с ним, чтобы гарантировать, что ограничения не будут нарушены.

Для удобства описания по умолчанию выбираем дваальфа\alphaсоответственноальфа1,альфа2\alpha_1, \alpha_2. Кроме того, поскольку мы участвуем вxiTxjx_i^Tx_jоперация, мы делаемKij=xiTxjK_{ij}=x_i^Tx_j. Таким образом, вышеприведенная формула (1) может быть записана как:

из них за счетy1=±1y_1 = \pm 1,такyi2=1y_i^2 = 1, указанная выше Константа означает, что в дополнение кальфа1,альфа2\alpha_1, \alpha_2другие константы. мы предполагаем, чтоальфа1y1+альфа2y2=k\alpha_1y_1 + \alpha_2y_2 = kальфа1,альфа2е[0,C]\alpha_1, \alpha_2 \in [0, C],так какyiy_iЕсть только два варианта, 1 или -1, поэтому мы можем обсудить это в каждом конкретном случае.

Обсуждайте в каждом конкретном случае

Сначала мы обсудимy1y_1иy2y_2Когда числа разные, типов не более двух.Первый случайальфа1альфа2=k\alpha_1 - \alpha_2 = k, это,альфа2=альфа1k\alpha_2 = \alpha_1 - k, будем считать, что k > 0 в этот момент, второй случайальфа2=альфа1+k\alpha_2 = \alpha_1 + k, мы предполагаем, что k 0, это фактически первый случай. это становитсяЗадача линейного программирования, мы можем нарисовать картину очень четко.

Для первого случая мы видим, чтоальфа2\alpha_2Диапазон(0,Cальфа2+альфа1)(0, C - \alpha_2 + \alpha_1), диапазон второго случая(альфа2альфа1,C)(\alpha_2 - \alpha_1, C). Здесь мы снова обозначаем kальфа1,альфа2\alpha_1,\alpha_2, так как мы хотим оптимизировать итерационным методомальфа1,альфа2\alpha_1,\alpha_2Значение , поэтому мы делаем предыдущий раундальфа1,альфа2\alpha_1, \alpha_2соответственноальфа1o,альфа2o\alpha_{1o}, \alpha_{2o}. О здесь относится к старому значению.альфа2\alpha_2Нижняя граница L для следующего раунда равнаmax(0,альфа2oальфа1o)\max(0, \alpha_{2o} - \alpha_{1o}), верхняя граница H равнаmin(C+альфа2oальфа1o,C)\min(C+\alpha_{2o} - \alpha_{1o}, C).

Аналогично рисуемальфа1,альфа2\alpha_1, \alpha_2В случае одного и того же знака также есть k > 0 и k

Первый случайy1=y2=1y_1 = y_2 = 1, тогдаальфа1+альфа2=k\alpha_1 + \alpha_2 = k, при k > 0 соответствующиеальфа2\alpha_2Значение(0,альфа1o+альфа2o)(0, \alpha_{1o} + \alpha_{2o}). Когда k > C, на этот раз также имеет место 1' в правом верхнем углу. В это время после пунктирной линии посерединеальфа2\alpha_2Диапазон(альфа1o+альфа2oC,C)(\alpha_{1o} + \alpha_{2o} - C, C).

Второй случайy1=y2=1y_1 = y_2 = -1,В настоящее времяальфа1+альфа2=k\alpha_1 + \alpha_2 = k, в этот момент k 0альфа1,альфа2C0\le \alpha_1, \alpha_2 \le C, поэтому на данный момент решения нет. Комбинируя эти два случая, можно получить, что нижняя граница L равнаmax(0,альфа1o+альфа2oC)\max(0, \alpha_{1o} + \alpha_{2o} - C), последний H былmin(альфа1o+альфа2o,C)\min(\alpha_{1o} + \alpha{2o}, C).

Мы предполагаем, что получаем следующий раунд после перебораальфа2\alpha_2даальфа2new,unc\alpha_{2new, unc},здесьunc означает неограниченный. Затем мы добавляем ограничения прямо сейчас, мы можем получить:

здесьальфа2new,unc\alpha_{2new,unc}когда мы используем вывод, чтобы получить экстремальное значениеальфа2\alpha_2, но проблема в том, что это значение может быть недоступно из-за ограничений. Следовательно, приведенный выше ряд операций заключается в исследовании экстремальных значений, которые мы можем получить при наличии ограничений. Не имеет значения, если вы не понимаете процесс вывода, по крайней мере, этот вывод нужно понять.

Устранение замены

Теперь у нас есть новый после следующей итерацииальфа2\alpha_2Диапазон значений , следующее, что нужно сделать, это решить проблему, которая минимизирует функцию потерь, такую ​​​​как градиентный спуск.альфа1\alpha_1иальфа2\alpha_2значение, так какальфа1+альфа2\alpha_1 + \alpha_2Значение определено, поэтому мы можем решить одну из них.

мы заказываемальфа1y1+альфа2y2=ξ\alpha_1y_1 + \alpha_2y_2 = \xi, то мы можем заменитьальфа1=y1(ξальфа2y2)\alpha_1 = y_1(\xi - \alpha_2y_2)

Подставляем эту формулу в исходную формулу, а полученную формулу можно исключитьальфа1\alpha_1, так что мы получаемсодержит толькоальфа2\alpha_2формула. Мы можем думать об этом как оальфа2\alpha_2функцию, для дальнейшего упрощения сделаемvi=j=3myjальфаjKi,j,Ei=f(xi)yi=j=1mальфаjyjKi,j+byiv_i = \sum_{j=3}^my_j \alpha_j K{i, j} , E_i = f(x_i ) - y_i = \sum_{j=1}^m \alpha_jy_jK_{i, j} + b - y_i

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

f(альфа2)=12K11(ξальфа2y2)+12K22альфа22+y2K12(ξальфа2y2)альфа2(ξальфа2y2)y1альфа2+(ξальфа2y2)v1+y2альфа2v2f(\alpha_2) = \frac12 K_{11}(\xi - \alpha_2y_2) + \frac12K_{22}\alpha_2^2 + y_2K_{12}(\xi- \alpha_2y_2)\alpha_2 - (\xi - \alpha_2y_2)y_1 - \alpha_2 + (\xi - \alpha_2y_2)v_1 + y_2\alpha_2v_2

Далее нужно сделать эту формулуВывод и экстремальное значение, является содержанием средней школы математики.

Wальфа2=K11альфа2+K22альфа22K12альфа2K11ξy2+K12ξy2+y1y21v1y2+y2v2=0\frac {\partial W}{\partial\alpha_2}=K_{11}\alpha_2 + K_{22}\alpha_2 - 2K_{12}\alpha_2 - K{11}\xi y_2+K{12}\xi y_2 + y_1y_2 -1 - v_1y_2 + y_2v_2 = 0

Решаем эту формулу и окончательно получаем:

альфа2new,unc=альфа2o+y2(E1E2)K11+K222K12\alpha_{2new, unc} = \alpha_{2o} + \frac{y_2(E_1 - E_2)}{K_{11}+K_{22} - 2 K_{12}}

Из этой формулы мы можем найтиальфа2\alpha_2Значение после очередного раунда итераций, после того, как значение получено, мы можем сравнить его с верхней и нижней границей ограничения, и тогда мы можем получить наилучшее значение, которое можно получить при условии выполнения ограничения. Наконец, мы положилиальфа2\alpha_2Подставить в формулу для решенияальфа1\alpha_1. так что мы будемТакже оптимизирована параальфа\alphaпараметр, алгоритм SMO на самом делеПовторно используйте описанный выше метод оптимизации, чтобы постоянно выбирать два параметра для оптимизации., пока не будет достигнуто количество итераций, или новые улучшения не могут быть внесены.

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

Сегодняшняя статья здесь, если вам понравилась эта статья, пожалуйста, приходите на волнукачество три, поддержите меня (Подписывайтесь, делайте репосты, лайкайте).

Оригинальная ссылка, обратите внимание