Уловка с ядром кажется одной из самых запутанных концепций в статистике и машинном обучении; сначала это кажется настоящим математическим колдовством, не говоря уже о проблеме лексической двусмысленности (относится ли ядро ​​к: непараметрическому способу оценки плотности вероятности (статистики), набору векторов v для которое линейное преобразование T отображает в нулевой вектор, то есть T (v) = 0 (линейная алгебра), набор элементов в группе G, которые отображаются в единичный элемент посредством гомоморфизма между группами (теория групп), ядро ​​компьютерной операционной системы (информатика) или что-то связанное с семенами орехов или фруктов?).

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

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

Я, конечно, не смогу полностью объяснить трюк с ядром в этом посте. Я считаю, что по-настоящему глубокое понимание трюка с ядром требует строгой математической обработки, и этого нельзя сделать за то, что помечено как семиминутное чтение, не говоря уже о том, кто реально только узнал о трюке с ядром и SVM для короткий промежуток времени. Однако я постараюсь сделать следующее:

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

Введение в классификацию опорных векторов

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

В следующем 2-м примере мы можем разделить данные любой из трех строк, а затем просто назначить классы в зависимости от того, находится ли наблюдение выше или ниже линии. Данные представляют собой двумерные векторы, заданные функциями X1 и X2 с метками классов как y = 1 (синий) или y = 0 (красный).

Обучение классификатора линейных опорных векторов, как и почти любая проблема в машинном обучении и в жизни, является проблемой оптимизации. Мы максимизируем маржу - расстояние, разделяющее ближайшую пару точек данных, принадлежащих противоположным классам. Эти точки называются опорными векторами, потому что они представляют собой данные наблюдений, которые «поддерживают» или определяют границу принятия решения. Для обучения классификатора опорных векторов мы находим гиперплоскость максимального поля или оптимальную разделяющую гиперплоскость, которая оптимально разделяет два класса для обобщения новых данных и проведения точной классификации. предсказания.

Машины опорных векторов гораздо сложнее интерпретировать в более высоких измерениях. Намного сложнее визуализировать, как данные могут быть линейно разделены и как будет выглядеть граница принятия решения. Гиперплоскость в p-измерениях - это p-1-мерное «плоское» подпространство, которое лежит внутри большего p-мерного пространства. В двух измерениях гиперплоскость - это просто линия. В трехмерном пространстве гиперплоскость - это обычная двумерная плоскость. Математически мы имеем следующее:

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

Нелинейные преобразования

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

Очевидно, что визуализировать данные более высокого измерения сложно, поэтому сначала мы сосредоточимся на некоторых преобразованиях, применяемых к одномерным данным. В этом примере изображение слева показывает наши исходные точки данных. В одномерном пространстве эти данные нельзя разделить линейно, но после применения преобразования ϕ (x) = x² и добавления этого второго измерения к нашему пространству функций классы становятся линейно разделяемыми.

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

Здесь мы применяем преобразование ϕ (x) = x mod 2

Теперь давайте рассмотрим пример, в котором наши исходные данные нельзя линейно разделить в двух измерениях. Вот наши исходные данные, которые нельзя разделить линейно.

После следующего преобразования:

Наши данные становятся линейно разделимыми (2-мерной плоскостью) в 3-х измерениях.

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

Уловка с ядром

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

Уловка с ядром позволяет решить эту проблему. «Уловка» заключается в том, что методы ядра представляют данные только через набор парных сравнений сходства между исходными данными наблюдений x (с исходными координатами в пространстве более низкой размерности), вместо того, чтобы явно применять преобразования ϕ (x) и представление данных этими преобразованными координатами в пространстве признаков более высокого измерения.

В методах ядра набор данных X представлен матрицей ядра nxn парных сравнений сходства, где элементы (i, j) определяются функцией ядра: k ( xi, xj). Эта функция ядра имеет особое математическое свойство. Функция ядра действует как модифицированный скалярный продукт. У нас есть:

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

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

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

Ядровой функцией здесь является полиномиальное ядро ​​k (a, b) = (a ^ T * b) ²

Конечное преимущество трюка с ядром состоит в том, что целевая функция, которую мы оптимизируем, чтобы соответствовать границе решения более высокого измерения, включает только скалярное произведение преобразованных векторов признаков. Следовательно, мы можем просто заменить эти термины скалярного произведения на функцию ядра, и мы даже не используем ϕ (x).

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