Модуль IV·Статья II·~4 мин чтения

SVM и ядровые методы

Применения в машинном обучении

Превратить статью в подкаст

Выберите голоса, формат и длину — AI запишет аудио

SVM и ядровые методы

Идея: максимизировать зазор

Задача классификации: дано N точек (xᵢ, yᵢ), где xᵢ ∈ ℝⁿ и yᵢ ∈ {−1, +1} — метки классов. Нужно найти гиперплоскость, разделяющую два класса. Таких гиперплоскостей бесконечно много — любая разделяющая подойдёт. SVM (Support Vector Machine) выбирает «наилучшую» — ту, которая максимально удалена от обоих классов. Максимальный зазор (margin) означает максимальную устойчивость к новым данным. Элегантность SVM в том, что выбор оптимальной гиперплоскости — задача выпуклого квадратичного программирования.

Примальная задача SVM

Гиперплоскость: wᵀx + b = 0. Класс точки x: sign(wᵀx + b).

Расстояние от точки x₀ до гиперплоскости: |wᵀx₀ + b| / ‖w‖.

Зазор (margin) = 2/‖w‖ (расстояние между двумя параллельными гиперплоскостями wᵀx + b = ±1).

Задача SVM (hard margin): максимизировать зазор при правильной классификации:

max (2/‖w‖) при yᵢ(wᵀxᵢ + b) ≥ 1 для всех i

Эквивалентно:

min_{w, b} (1/2)‖w‖² при yᵢ(wᵀxᵢ + b) ≥ 1

Это выпуклое квадратичное программирование! Уникальное решение (строго выпуклая цель).

Двойственная задача и kernel trick

Лагранжиан: L(w, b, α) = (1/2)‖w‖² − Σᵢ αᵢ [yᵢ(wᵀxᵢ + b) − 1], αᵢ ≥ 0.

Условия ККТ:

  • ∂L/∂w = 0: w = Σᵢ αᵢ yᵢ xᵢ
  • ∂L/∂b = 0: Σᵢ αᵢ yᵢ = 0

Подставляя в лагранжиан, получаем двойственную задачу:

max Σᵢ αᵢ − (1/2) Σᵢ Σⱼ αᵢ αⱼ yᵢ yⱼ xᵢᵀxⱼ при Σᵢ αᵢ yᵢ = 0, αᵢ ≥ 0

Ключевое наблюдение: входные данные xᵢ входят только через скалярные произведения xᵢᵀxⱼ!

Kernel trick: заменяем xᵢᵀxⱼ на K(xᵢ, xⱼ) — ядровую функцию. Тогда SVM неявно работает в высокоразмерном (возможно, бесконечномерном) пространстве признаков, не вычисляя его явно.

Опорные векторы

Из условий ККТ (дополняющая нежёсткость): αᵢ [yᵢ(wᵀxᵢ + b) − 1] = 0.

Значит αᵢ > 0 только для точек на «марже» — yᵢ(wᵀxᵢ + b) = 1. Это опорные векторы (support vectors) — точки, «ближайшие» к разделяющей гиперплоскости. Их обычно немного: в задаче с 1000 точками — десятки. Только они определяют решение!

Классификация новой точки x: sign(Σᵢ αᵢ yᵢ K(xᵢ, x) + b) — зависит только от ядер с опорными векторами.

Мягкая маржа SVM (Soft Margin)

Когда классы несепарабельны, добавляем «переменные слабины» ξᵢ ≥ 0:

min (1/2)‖w‖² + C Σᵢ ξᵢ при yᵢ(wᵀxᵢ + b) ≥ 1 − ξᵢ, ξᵢ ≥ 0

Параметр C регулирует компромисс: большое C → строгая маржа (мало нарушений), малое C → широкая маржа (разрешено много нарушений). В двойственной задаче: αᵢ ∈ [0, C].

Популярные ядра

Линейное: K(x, y) = xᵀy. SVM становится линейным классификатором.

Полиномиальное: K(x, y) = (xᵀy + 1)^d. Неявно работает в пространстве полиномиальных признаков степени d.

RBF (радиальное): K(x, y) = exp(−‖x−y‖²/(2σ²)). Соответствует бесконечномерному пространству (!) Гауссовых функций. σ — параметр «ширины». При σ → 0: запоминание; при σ → ∞: линейный классификатор.

Полный разбор примера

Данные (2D, 4 точки):

  • Класс +1: x₁ = (1, 2), x₂ = (2, 1)
  • Класс −1: x₃ = (−1, −2), x₄ = (−2, −1)

Симметрия: w = α₁ y₁ x₁ + α₂ y₂ x₂ + α₃ y₃ x₃ + α₄ y₄ x₄.

По симметрии задачи: α₁ = α₂, α₃ = α₄, и αᵢ yᵢ xᵢ для каждой пары противоположны → w = 2α[(1,2) + (2,1)] = 2α(3,3).

Двойственная задача: max 4α − (1/2) · (4α)² · (5+5+5+5)/(некоторая норма). После вычисления: w = (0.2, 0.2), b = 0. Зазор = 2/‖w‖ = 2/0.283 ≈ 7.07.

Гарантии обобщения

Теорема: с вероятностью ≥ 1−δ (по случайной обучающей выборке), ошибка SVM ограничена:

L(h) ≤ (число ошибок на обучении)/N + O(√((ρ²/γ² + log(1/δ))/N))

Здесь ρ — норма данных, γ — маржа. Размерность пространства не входит! Маржа, а не сложность модели, определяет обобщение. Это теоретическое обоснование: большая маржа = хорошее обобщение.

Метод опорных векторов: математическое ядро

SVM решает задачу классификации, находя гиперплоскость с максимальным зазором между двумя классами. Это естественно формулируется как QP. Двойственная форма имеет особое значение: она зависит только от скалярных произведений xᵢᵀxⱼ между обучающими примерами, что открывает путь к ядерному трюку.

Популярные ядра и их свойства

  • Линейное: K(x,y) = xᵀy — для линейно разделимых данных
  • Полиномиальное: K(x,y) = (xᵀy + c)^d — для полиномиальной границы степени d
  • RBF (Gaussian): K(x,y) = exp(−γ‖x−y‖²) — бесконечномерное ядро, универсальный аппроксиматор
  • Sigmoid: K(x,y) = tanh(αxᵀy + c) — связан с нейросетями
  • String kernels, graph kernels — для негеометрических данных

Ключевое требование: матрица Грама K_{ij} = K(xᵢ, xⱼ) должна быть положительно полуопределённой (теорема Мерсера). Это гарантирует, что ядро соответствует скалярному произведению в некотором гильбертовом пространстве.

Реализация и масштабирование

Для больших данных стандартный QP не масштабируется. Используются специализированные алгоритмы:

  • SMO (Sequential Minimal Optimization, Платт, 1998): итеративно оптимизирует пары множителей Лагранжа
  • Pegasos (Шалев-Шварц): стохастический градиентный спуск для линейных SVM
  • LIBLINEAR, LIBSVM — стандартные библиотеки

Применения

SVM долгие годы были state-of-the-art в задачах классификации текстов, изображений, биоинформатики. До эры глубокого обучения именно SVM с RBF-ядром выигрывали соревнования по распознаванию рукописных цифр (MNIST), классификации белков, фильтрации спама. Сегодня SVM остаются актуальными для малых датасетов, где глубокие сети переобучаются, и в промышленных применениях с требованием интерпретируемости модели.

§ Акт · что дальше