Ядро

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(1 промежуточная версия не показана)
Строка 1: Строка 1:
== Ядра в машинном обучении ==
== Ядра в машинном обучении ==
-
'''Ядро''' (в контексте [[Машинное обучение|машинного обучения]], не путать с ядрами [[Сверточная нейронная сеть|сверточных нейронных сетей]]) — это функция, которая позволяет применять линейные алгоритмы в неявно заданном нелинейном пространстве признаков, не вычисляя координаты точек в этом пространстве напрямую. Этот подход, известный как '''ядерный трюк''', лежит в основе широкого класса алгоритмов, называемых [[Ядерные методы|ядерными методами]].
+
'''Ядро''' (англ. ''kernel'') в контексте [[Машинное обучение|машинного обучения]] — это функция, позволяющая вычислять скалярное произведение образов двух объектов в некотором, возможно, бесконечномерном, [[Признаковое пространство|признаковом пространстве]] без явного отображения объектов в это пространство. Этот приём, известный как '''kernel trick''' (ядерный трюк), лежит в основе множества алгоритмов, позволяя им эффективно выявлять нелинейные закономерности в данных, оставаясь при этом вычислительно реализуемыми. Ядра являются фундаментальным инструментом в таких методах, как [[Метод опорных векторов]], [[Гребневая регрессия|ядерная гребневая регрессия]] и [[Анализ главных компонент|ядерный метод главных компонент]].
-
Формально, ядром называется функция <tex>\kappa: \mathcal{X} \times \mathcal{X} \to \mathbb{R}</tex>, которая для любых двух объектов <tex>x, x' \in \mathcal{X}</tex> эквивалентна скалярному произведению их образов в некотором гильбертовом пространстве признаков <tex>\mathcal{H}</tex>:
+
== Интуитивное введение ==
 +
Многие классические алгоритмы машинного обучения, такие как [[Логистическая регрессия]] или базовый [[Метод опорных векторов|SVM]], являются линейными. Они способны строить лишь линейные разделяющие поверхности или линейные зависимости, что часто недостаточно для реальных данных. Традиционный подход к решению этой проблемы заключается в ручном конструировании новых, нелинейных признаков (например, полиномиальных признаков <tex>x_1^2, x_1 x_2, x_2^2</tex>) и последующем применении линейного алгоритма. Однако такой подход быстро становится вычислительно нереализуемым из-за "проклятия размерности", особенно если требуется отображение в пространство очень высокой или бесконечной размерности. Ядерный трюк предлагает элегантный обходной путь, заменяя все операции с координатами в расширенном пространстве вычислением специальной функции от исходных векторов.
-
<tex>\kappa(x, x') = \langle \phi(x), \phi(x') \rangle_{\mathcal{H}}</tex>,
+
== Формальное определение ==
 +
Функция двух переменных <tex>\kappa: \mathcal{X} \times \mathcal{X} \to \mathbb{R}</tex>, где <tex>\mathcal{X}</tex> — некоторое исходное пространство объектов, называется '''ядром''', если существует [[Гильбертово пространство|гильбертово пространство]] <tex>\mathcal{H}</tex> (называемое [[Воспроизводящее ядро гильбертова пространства|воспроизводящим ядром гильбертовым пространством]], RKHS) и отображение <tex>\varphi: \mathcal{X} \to \mathcal{H}</tex>, такие что для любых <tex>\mathbf{x}, \mathbf{x}' \in \mathcal{X}</tex> выполняется:
-
где <tex>\phi: \mathcal{X} \to \mathcal{H}</tex> — неявное отображение из исходного пространства в пространство признаков.
+
<tex>\kappa(\mathbf{x}, \mathbf{x}') = \langle \varphi(\mathbf{x}), \varphi(\mathbf{x}') \rangle_{\mathcal{H}}</tex>
-
=== Исторический контекст и мотивация ===
+
Ключевой момент здесь в том, что алгоритм, выраженный исключительно через скалярные произведения векторов, может быть "кирнелизован" простой заменой всех вхождений <tex>\langle \mathbf{x}_i, \mathbf{x}_j \rangle</tex> на <tex>\kappa(\mathbf{x}_i, \mathbf{x}_j)</tex>. Это эквивалентно неявному применению алгоритма в пространстве <tex>\mathcal{H}</tex>, но все вычисления остаются в исходном пространстве <tex>\mathcal{X}</tex>, завися только от размера выборки, а не от размерности <tex>\mathcal{H}</tex>.
-
Классические линейные методы, такие как [[Метод опорных векторов|SVM]] или [[Регрессия (математическая статистика)|линейная регрессия]], просты в обучении и интерпретации, но неспособны улавливать сложные нелинейные зависимости в данных. Ручное конструирование нелинейных признаков (например, полиномиальных) может привести к комбинаторному взрыву размерности. Ядра решают эту дилемму, позволяя эффективно работать в пространствах очень высокой или даже бесконечной размерности, избегая ''проклятия размерности'' за счет того, что все вычисления сводятся к операциям с ядровой функцией в исходном пространстве.
+
== Теорема Мерсера и положительная определенность ==
 +
Критерием того, что функция <tex>\kappa</tex> является допустимым ядром в некотором гильбертовом пространстве, служит '''теорема Мерсера''' (для компактных пространств). На практике используется более общее и конструктивное определение: функция <tex>\kappa</tex> является ядром тогда и только тогда, когда она '''симметрична''' (<tex>\kappa(\mathbf{x}, \mathbf{x}') = \kappa(\mathbf{x}', \mathbf{x})</tex>) и порождаемая ею '''[[Матрица Грама|матрица Грама]]''' <tex>\mathbf{K}</tex> является неотрицательно определенной (положительно полуопределенной) для любого конечного набора точек <tex>\{\mathbf{x}_1, \dots, \mathbf{n}\}</tex>. Матрица <tex>\mathbf{K}</tex> имеет элементы <tex>K_{ij} = \kappa(\mathbf{x}_i, \mathbf{x}_j)</tex>, и условие неотрицательной определенности означает, что для любого вектора <tex>\mathbf{c} \in \mathbb{R}^n</tex> выполняется <tex>\mathbf{c}^T \mathbf{K} \mathbf{c} \ge 0</tex>. Это условие гарантирует, что функция ядра неявно соответствует скалярному произведению в некотором, возможно, бесконечномерном, пространстве.
-
=== Необходимые математические условия ===
+
== Основные свойства ядер и конструирование ==
 +
Множество допустимых ядер замкнуто относительно ряда операций, что позволяет конструировать сложные ядра из простых "вручную", учитывая специфику данных. Если <tex>\kappa_1, \kappa_2</tex> — ядра на <tex>\mathcal{X}</tex>, <tex>a > 0</tex>, <tex>f: \mathcal{X} \to \mathbb{R}</tex>, <tex>\mathbf{A}</tex> — положительно определенная матрица, то следующие функции также являются ядрами:
 +
* <tex>\kappa(\mathbf{x}, \mathbf{x}') = \kappa_1(\mathbf{x}, \mathbf{x}') + \kappa_2(\mathbf{x}, \mathbf{x}')</tex> (сумма ядер)
 +
* <tex>\kappa(\mathbf{x}, \mathbf{x}') = a \cdot \kappa_1(\mathbf{x}, \mathbf{x}')</tex> (умножение на положительную константу)
 +
* <tex>\kappa(\mathbf{x}, \mathbf{x}') = \kappa_1(\mathbf{x}, \mathbf{x}') \cdot \kappa_2(\mathbf{x}, \mathbf{x}')</tex> (произведение ядер)
 +
* <tex>\kappa(\mathbf{x}, \mathbf{x}') = f(\mathbf{x}) \kappa_1(\mathbf{x}, \mathbf{x}') f(\mathbf{x}')</tex> (нормализация)
 +
* <tex>\kappa(\mathbf{x}, \mathbf{x}') = \mathbf{x}^T \mathbf{A} \mathbf{x}'</tex> (ядро с учетом линейного преобразования признаков)
-
Чтобы функция <tex>\kappa</tex> могла быть ядром, она должна удовлетворять определенным условиям. Важнейшим из них является теорема Мерсера, а также симметричность и положительная полуопределенность.
+
== Примеры стандартных ядер ==
 +
Рассмотрим наиболее распространенные семейства ядер, используемые на практике для данных в виде векторов <tex>\mathbf{x}, \mathbf{x}' \in \mathbb{R}^d</tex>.
-
'''Ядро Мерсера.''' Функция <tex>\kappa</tex> является ядром Мерсера тогда и только тогда, когда для любого конечного набора точек <tex>\{x_1, \dots, x_n\} \subset \mathcal{X}</tex> [[Матрица Грама|матрица Грама]] <tex>K</tex>, элементы которой <tex>K_{ij} = \kappa(x_i, x_j)</tex>, является симметричной и положительно полуопределенной (т.е. все ее собственные значения неотрицательны).
+
=== Линейное ядро ===
 +
<tex>\kappa(\mathbf{x}, \mathbf{x}') = \langle \mathbf{x}, \mathbf{x}' \rangle = \mathbf{x}^T \mathbf{x}'</tex>
 +
Простейшее ядро, соответствующее тождественному отображению <tex>\varphi(\mathbf{x}) = \mathbf{x}</tex>. Приводит к обычному линейному алгоритму. Полезно как базовый случай и для задач с высокой размерностью, где линейная разделимость уже достигнута.
-
'''Воспроизводящее ядро гильбертова пространства (RKHS).''' Для каждого ядра Мерсера существует уникальное [[Воспроизводящее ядро гильбертова пространства|воспроизводящее ядро гильбертова пространства]] (Reproducing Kernel Hilbert Space, RKHS) <tex>\mathcal{H}_\kappa</tex>. Ключевое свойство RKHS — ''воспроизводящее свойство'': для любой функции <tex>f \in \mathcal{H}_\kappa</tex> и любого <tex>x \in \mathcal{X}</tex> выполняется <tex>f(x) = \langle f, \kappa(\cdot, x) \rangle_{\mathcal{H}_\kappa}</tex>. Это свойство связывает представление функции в гильбертовом пространстве с вычислением ядра.
+
=== Полиномиальное ядро ===
 +
<tex>\kappa(\mathbf{x}, \mathbf{x}') = (\gamma \langle \mathbf{x}, \mathbf{x}' \rangle + c)^d</tex>
 +
где <tex>d \in \mathbb{N}</tex> — степень полинома, <tex>\gamma > 0</tex> — коэффициент масштабирования, <tex>c \ge 0</tex> — свободный член. Это ядро соответствует пространству всех мономиальных признаков степени вплоть до <tex>d</tex>. Оно позволяет улавливать полиномиальные взаимодействия между исходными признаками.
-
=== Распространенные ядра и конструирование ===
+
=== Радиально-базисное ядро (Гауссово, RBF) ===
 +
<tex>\kappa(\mathbf{x}, \mathbf{x}') = \exp\left( -\gamma \|\mathbf{x} - \mathbf{x}'\|^2 \right)</tex>
 +
где <tex>\gamma > 0</tex> — параметр ширины ядра. Это одно из самых популярных ядер. Оно соответствует бесконечномерному признаковому пространству и может моделировать чрезвычайно сложные, локальные зависимости. Параметр <tex>\gamma</tex> контролирует "радиус влияния" одного примера: большое значение приводит к переобучению (гибкая, изрезанная граница), маленькое — к недообучению (почти линейная граница).
-
Выбор ядра критичен для успеха модели. Наиболее распространены следующие семейства:
+
=== Сигмоидное ядро ===
 +
<tex>\kappa(\mathbf{x}, \mathbf{x}') = \tanh(\gamma \langle \mathbf{x}, \mathbf{x}' \rangle + c)</tex>
 +
Данное ядро происходит из области [[Нейронная сеть|нейронных сетей]]. Однако оно является допустимым (положительно определенным) только для некоторых значений параметров <tex>\gamma, c</tex>, что ограничивает его прямое использование в строгой ядерной теории, хотя на практике оно иногда применяется.
-
* '''Линейное ядро:''' <tex>\kappa(x, x') = \langle x, x' \rangle</tex>. Соответствует отсутствию преобразования, используется как базовый случай.
+
=== Ядра для специфических структур данных ===
-
* '''Полиномиальное ядро:''' <tex>\kappa(x, x') = (\gamma \langle x, x' \rangle + r)^d</tex>. Позволяет строить разделяющие поверхности в виде полиномов степени <tex>d</tex>. Параметр <tex>\gamma</tex> масштабирует данные, <tex>r</tex> управляет влиянием старших степеней.
+
Ядерный подход не ограничивается векторами из <tex>\mathbb{R}^d</tex>. Существуют ядра, определенные на строках (на основе [[Расстояние Левенштейна|расстояния редактирования]]), графах (ядро случайных блужданий, ''random walk kernel''), множествах, деревьях и других сложных объектах. Это позволяет применять весь арсенал ядерных методов к задачам [[Биоинформатика|биоинформатики]], [[Компьютерная лингвистика|обработки текстов]] и хемоинформатики.
-
* '''Ядро радиальной базисной функции (RBF):''' <tex>\kappa(x, x') = \exp\left(-\gamma \|x - x'\|^2\right)</tex>. Самое популярное нелинейное ядро, соответствующее признаковому пространству бесконечной размерности. Оно основано на расстоянии между объектами и является универсальным аппроксиматором. Параметр <tex>\gamma</tex> определяет радиус влияния одной точки.
+
-
* '''Сигмоидное ядро:''' <tex>\kappa(x, x') = \tanh(\gamma \langle x, x' \rangle + r)</tex>. Исторически связано с нейронными сетями, но его матрица Грама не всегда положительно полуопределена, что ограничивает применение.
+
-
* '''Ядра для специальных структур данных:''' Существуют ядра, определенные на строках (string kernels), графах (graph kernels), изображениях (например, ядро пересечения гистограмм) и вероятностных распределениях, которые позволяют применять ядерные методы в этих доменах.
+
-
Ядра можно комбинировать для создания новых:
+
== Ядерный трюк в действии: пример ядерной гребневой регрессии ==
-
* '''Сумма:''' <tex>\kappa(x, x') = \kappa_1(x, x') + \kappa_2(x, x')</tex>.
+
Рассмотрим задачу [[Линейная регрессия|линейной регрессии]] с квадратичной функцией потерь и L2-регуляризацией ([[Гребневая регрессия|гребневая регрессия]]). Решение в терминах исходных признаков дается формулой <tex>\mathbf{w} = (\mathbf{X}^T\mathbf{X} + \lambda \mathbf{I})^{-1}\mathbf{X}^T\mathbf{y}</tex>. Используя матричное тождество, его можно переписать в "дуальную форму", зависящую только от скалярных произведений <tex>\mathbf{X}\mathbf{X}^T</tex>:
-
* '''Произведение:''' <tex>\kappa(x, x') = \kappa_1(x, x') \cdot \kappa_2(x, x')</tex>.
+
<tex>\mathbf{y}_{\text{pred}}(\mathbf{x}_{\text{new}}) = \mathbf{y}^T (\mathbf{K} + \lambda \mathbf{I})^{-1} \mathbf{k}</tex>,
-
Эти операции сохраняют свойства положительной полуопределенности.
+
где <tex>\mathbf{K}</tex> — матрица Грама на обучающей выборке, а вектор <tex>\mathbf{k}</tex> состоит из ядерных оценок <tex>\kappa(\mathbf{x}_i, \mathbf{x}_{\text{new}})</tex>. Замена всех скалярных произведений на функцию ядра дает нелинейную '''ядерную гребневую регрессию''', способную аппроксимировать сложные нелинейные функции.
-
=== Ядерный трюк в алгоритмах ===
+
== Практические аспекты и выбор ядра ==
 +
Выбор ядра и его параметров — центральная задача при использовании ядерных методов.
 +
* '''Выбор типа ядра''': Обычно начинают с линейного ядра как с интерпретируемого baseline. Если оно не дает нужного качества, переходят к RBF-ядру, которое является универсальным аппроксиматором и хорошим выбором "по умолчанию" для нелинейных задач средней размерности. Специфические ядра (например, для графов) выбирают, исходя из природы данных.
 +
* '''Настройка гиперпараметров''': Критически важна. Осуществляется через [[Перекрестная проверка|кросс-валидацию]]. Для RBF-ядра настраивают <tex>\gamma</tex> (и параметр регуляризации <tex>C</tex> в SVM). Распространенная эвристика для <tex>\gamma</tex> в RBF — установка обратно пропорционально медиане попарных евклидовых расстояний между объектами.
 +
* '''Нормализация данных''': Перед применением ядер, чувствительных к масштабу признаков (особенно RBF и полиномиального), необходимо проводить стандартизацию признаков (вычитание среднего, деление на стандартное отклонение).
 +
* '''Вычислительная сложность''': Основной недостаток ядерных методов — необходимость вычисления и хранения матрицы Грама <tex>\mathbf{K}</tex> размера <tex>n \times n</tex>, где <tex>n</tex> — число объектов в обучающей выборке. Это требует <tex>O(n^2)</tex> памяти и, как правило, <tex>O(n^3)</tex> времени для обращения матрицы, что делает методы непрактичными для больших наборов данных (<tex>n > 10^5</tex>). Для преодоления этого ограничения разработаны различные методы аппроксимации (например, метод случайных признаков, аппроксимация Найстрома).
-
Основная идея заключается в том, что многие линейные алгоритмы можно сформулировать так, чтобы они зависели только от попарных скалярных произведений объектов <tex>\langle x_i, x_j \rangle</tex>. Замена этих произведений на вызов ядра <tex>\kappa(x_i, x_j)</tex> неявно выполняет обучение в пространстве <tex>\mathcal{H}</tex>.
+
== Заключение ==
-
 
+
Ядра это мощная и математически строгая концепция, позволяющая неявно строить нелинейные модели без необходимости работы с координатами в многомерных пространствах. Понимание принципов ядерного трюка не только дает в руки инженера эффективный инструмент (SVM, ядерная регрессия), но и формирует полезный взгляд на модели машинного обучения через призму функций сходства, что находит отклик и в более современных подходах.
-
* '''В Методе опорных векторов (SVM):''' Двойственная задача [[SVM]] зависит от скалярных произведений. Применение ядра позволяет строить нелинейные разделяющие поверхности. Решающее правило принимает вид <tex>f(x) = \text{sign}\left(\sum_{i} \alpha_i y_i \kappa(x_i, x) + b\right)</tex>, где <tex>x_i</tex> — опорные векторы. Это классический пример непараметрической ядерной машины.
+
-
* '''В Гребневой регрессии:''' Решение [[Гребневая регрессия|гребневой регрессии]] через ядерный трюк приводит к форме <tex>f(x) = Y^\top (K + \lambda I)^{-1} \mathbf{k}(x)</tex>, где <tex>\mathbf{k}(x)</tex> — вектор ядерых близостей объекта <tex>x</tex> ко всем объектам обучающей выборки.
+
-
* '''В Анализе главных компонент (PCA):''' [[Ядерный анализ главных компонент|Ядерный PCA]] выполняет поиск главных компонент в пространстве <tex>\mathcal{H}</tex>, решая задачу на собственные векторы центрированной матрицы Грама.
+
-
 
+
-
=== Практические аспекты: масштабируемость и аппроксимации ===
+
-
 
+
-
Главный недостаток ядерных методов их вычислительная сложность. Для построения и хранения матрицы Грама размером <tex>N \times N</tex> требуется <tex>O(N^2)</tex> памяти и до <tex>O(N^3)</tex> операций для ее обращения (как в случае [[Гауссовский процесс|Гауссовских процессов]]), что делает их неприменимыми для больших наборов данных.
+
-
 
+
-
Для решения этой проблемы разработаны методы аппроксимации:
+
-
* '''Случайные признаки (Random Fourier Features):''' Позволяют явно аппроксимировать ядро RBF конечномерным отображением, сводя задачу к линейной со сложностью <tex>O(N)</tex>.
+
-
* '''Разложение Нюстрёма (Nyström method):''' Аппроксимирует полную матрицу Грама с помощью низкорангового разложения на основе небольшого подмножества опорных точек.
+
-
 
+
-
=== Современное состояние и связь с глубоким обучением ===
+
-
 
+
-
Хотя пик популярности ядерных методов пришелся на начало 2000-х, они сохраняют важное теоретическое и прикладное значение. Связь с глубинным обучением проявляется в нескольких аспектах:
+
-
 
+
-
* '''Ядерные методы с множественным ядром (Multiple Kernel Learning, MKL):''' Изучают оптимальные комбинации ядер, что можно рассматривать как предшественника современных архитектур, автоматически настраивающих представления.
+
-
* '''Гауссовские процессы:''' Используются в Bayesian Optimization и предоставляют хорошо откалиброванную оценку неопределенности, чего лишены многие нейронные сети.
+
-
* '''Нейронные тангенциальные ядра (Neural Tangent Kernel, NTK):''' Теория, связывающая бесконечно широкие нейронные сети с ядерными методами. NTK описывает динамику обучения таких сетей в функциональном пространстве, давая строгое теоретическое обоснование их сходимости.
+
-
 
+
-
Ядерные методы остаются мощным инструментом, когда интерпретируемость и работа с малыми и средними выборками важнее масштабирования на миллиарды примеров.
+
== См. также ==
== См. также ==
-
 
* [[Метод опорных векторов]]
* [[Метод опорных векторов]]
 +
* [[Воспроизводящее ядро гильбертова пространства]]
 +
* [[Проклятие размерности]]
 +
* [[Теорема Мерсера]]
* [[Гауссовский процесс]]
* [[Гауссовский процесс]]
-
* [[Воспроизводящее ядро гильбертова пространства]]
 
-
* [[Ядерный анализ главных компонент]]
 
-
* [[Методы аппроксимации ядер]]
 
== Литература ==
== Литература ==
-
 
+
# Шлезингер М., Главач В. Десять лекций по статистическому и структурному распознаванию. — Киев: Наукова думка, 2004. — Глава о ядерных методах.
-
# Schölkopf, B., & Smola, A. J. (2002). ''Learning with Kernels: Support Vector Machines, Regularization, Optimization, and Beyond''. MIT Press.
+
# Schölkopf B., Smola A. J. Learning with Kernels: Support Vector Machines, Regularization, Optimization, and Beyond. MIT Press, 2002. — Фундаментальный труд по теории ядер.
-
# Bishop, C. M. (2006). ''Pattern Recognition and Machine Learning''. Springer. (Глава 6: Kernel Methods).
+
# Bishop C. M. Pattern Recognition and Machine Learning. Springer, 2006. Глава 6: Kernel Methods.
-
# Murphy, K. P. (2012). ''Machine Learning: A Probabilistic Perspective''. MIT Press. (Глава 14: Kernels).
+
# Shawe-Taylor J., Cristianini N. Kernel Methods for Pattern Analysis. — Cambridge University Press, 2004. — Всеобъемлющее введение в ядерные методы анализа закономерностей.
-
# Hofmann, T., Schölkopf, B., & Smola, A. J. (2008). Kernel methods in machine learning. ''The Annals of Statistics'', 36(3), 1171–1220.
+
# Murphy K. P. Machine Learning: A Probabilistic Perspective. MIT Press, 2012. Глава 14: Kernels.
-
# Rahimi, A., & Recht, B. (2007). Random Features for Large-Scale Kernel Machines. ''Advances in Neural Information Processing Systems (NIPS)''.
+
-
# Jacot, A., Gabriel, F., & Hongler, C. (2018). Neural Tangent Kernel: Convergence and Generalization in Neural Networks. ''Advances in Neural Information Processing Systems (NeurIPS)''.
+

Версия 16:47, 17 июля 2026

Содержание

Ядра в машинном обучении

Ядро (англ. kernel) в контексте машинного обучения — это функция, позволяющая вычислять скалярное произведение образов двух объектов в некотором, возможно, бесконечномерном, признаковом пространстве без явного отображения объектов в это пространство. Этот приём, известный как kernel trick (ядерный трюк), лежит в основе множества алгоритмов, позволяя им эффективно выявлять нелинейные закономерности в данных, оставаясь при этом вычислительно реализуемыми. Ядра являются фундаментальным инструментом в таких методах, как Метод опорных векторов, ядерная гребневая регрессия и ядерный метод главных компонент.

Интуитивное введение

Многие классические алгоритмы машинного обучения, такие как Логистическая регрессия или базовый SVM, являются линейными. Они способны строить лишь линейные разделяющие поверхности или линейные зависимости, что часто недостаточно для реальных данных. Традиционный подход к решению этой проблемы заключается в ручном конструировании новых, нелинейных признаков (например, полиномиальных признаков x_1^2, x_1 x_2, x_2^2) и последующем применении линейного алгоритма. Однако такой подход быстро становится вычислительно нереализуемым из-за "проклятия размерности", особенно если требуется отображение в пространство очень высокой или бесконечной размерности. Ядерный трюк предлагает элегантный обходной путь, заменяя все операции с координатами в расширенном пространстве вычислением специальной функции от исходных векторов.

Формальное определение

Функция двух переменных \kappa: \mathcal{X} \times \mathcal{X} \to \mathbb{R}, где \mathcal{X} — некоторое исходное пространство объектов, называется ядром, если существует гильбертово пространство \mathcal{H} (называемое воспроизводящим ядром гильбертовым пространством, RKHS) и отображение \varphi: \mathcal{X} \to \mathcal{H}, такие что для любых \mathbf{x}, \mathbf{x}' \in \mathcal{X} выполняется:

\kappa(\mathbf{x}, \mathbf{x}') = \langle \varphi(\mathbf{x}), \varphi(\mathbf{x}') \rangle_{\mathcal{H}}

Ключевой момент здесь в том, что алгоритм, выраженный исключительно через скалярные произведения векторов, может быть "кирнелизован" простой заменой всех вхождений \langle \mathbf{x}_i, \mathbf{x}_j \rangle на \kappa(\mathbf{x}_i, \mathbf{x}_j). Это эквивалентно неявному применению алгоритма в пространстве \mathcal{H}, но все вычисления остаются в исходном пространстве \mathcal{X}, завися только от размера выборки, а не от размерности \mathcal{H}.

Теорема Мерсера и положительная определенность

Критерием того, что функция \kappa является допустимым ядром в некотором гильбертовом пространстве, служит теорема Мерсера (для компактных пространств). На практике используется более общее и конструктивное определение: функция \kappa является ядром тогда и только тогда, когда она симметрична (\kappa(\mathbf{x}, \mathbf{x}') = \kappa(\mathbf{x}', \mathbf{x})) и порождаемая ею матрица Грама \mathbf{K} является неотрицательно определенной (положительно полуопределенной) для любого конечного набора точек \{\mathbf{x}_1, \dots, \mathbf{n}\}. Матрица \mathbf{K} имеет элементы K_{ij} = \kappa(\mathbf{x}_i, \mathbf{x}_j), и условие неотрицательной определенности означает, что для любого вектора \mathbf{c} \in \mathbb{R}^n выполняется \mathbf{c}^T \mathbf{K} \mathbf{c} \ge 0. Это условие гарантирует, что функция ядра неявно соответствует скалярному произведению в некотором, возможно, бесконечномерном, пространстве.

Основные свойства ядер и конструирование

Множество допустимых ядер замкнуто относительно ряда операций, что позволяет конструировать сложные ядра из простых "вручную", учитывая специфику данных. Если \kappa_1, \kappa_2 — ядра на \mathcal{X}, a > 0, f: \mathcal{X} \to \mathbb{R}, \mathbf{A} — положительно определенная матрица, то следующие функции также являются ядрами:

  • \kappa(\mathbf{x}, \mathbf{x}') = \kappa_1(\mathbf{x}, \mathbf{x}') + \kappa_2(\mathbf{x}, \mathbf{x}') (сумма ядер)
  • \kappa(\mathbf{x}, \mathbf{x}') = a \cdot \kappa_1(\mathbf{x}, \mathbf{x}') (умножение на положительную константу)
  • \kappa(\mathbf{x}, \mathbf{x}') = \kappa_1(\mathbf{x}, \mathbf{x}') \cdot \kappa_2(\mathbf{x}, \mathbf{x}') (произведение ядер)
  • \kappa(\mathbf{x}, \mathbf{x}') = f(\mathbf{x}) \kappa_1(\mathbf{x}, \mathbf{x}') f(\mathbf{x}') (нормализация)
  • \kappa(\mathbf{x}, \mathbf{x}') = \mathbf{x}^T \mathbf{A} \mathbf{x}' (ядро с учетом линейного преобразования признаков)

Примеры стандартных ядер

Рассмотрим наиболее распространенные семейства ядер, используемые на практике для данных в виде векторов \mathbf{x}, \mathbf{x}' \in \mathbb{R}^d.

Линейное ядро

\kappa(\mathbf{x}, \mathbf{x}') = \langle \mathbf{x}, \mathbf{x}' \rangle = \mathbf{x}^T \mathbf{x}' Простейшее ядро, соответствующее тождественному отображению \varphi(\mathbf{x}) = \mathbf{x}. Приводит к обычному линейному алгоритму. Полезно как базовый случай и для задач с высокой размерностью, где линейная разделимость уже достигнута.

Полиномиальное ядро

\kappa(\mathbf{x}, \mathbf{x}') = (\gamma \langle \mathbf{x}, \mathbf{x}' \rangle + c)^d где d \in \mathbb{N} — степень полинома, \gamma > 0 — коэффициент масштабирования, c \ge 0 — свободный член. Это ядро соответствует пространству всех мономиальных признаков степени вплоть до d. Оно позволяет улавливать полиномиальные взаимодействия между исходными признаками.

Радиально-базисное ядро (Гауссово, RBF)

\kappa(\mathbf{x}, \mathbf{x}') = \exp\left( -\gamma \|\mathbf{x} - \mathbf{x}'\|^2 \right) где \gamma > 0 — параметр ширины ядра. Это одно из самых популярных ядер. Оно соответствует бесконечномерному признаковому пространству и может моделировать чрезвычайно сложные, локальные зависимости. Параметр \gamma контролирует "радиус влияния" одного примера: большое значение приводит к переобучению (гибкая, изрезанная граница), маленькое — к недообучению (почти линейная граница).

Сигмоидное ядро

\kappa(\mathbf{x}, \mathbf{x}') = \tanh(\gamma \langle \mathbf{x}, \mathbf{x}' \rangle + c) Данное ядро происходит из области нейронных сетей. Однако оно является допустимым (положительно определенным) только для некоторых значений параметров \gamma, c, что ограничивает его прямое использование в строгой ядерной теории, хотя на практике оно иногда применяется.

Ядра для специфических структур данных

Ядерный подход не ограничивается векторами из \mathbb{R}^d. Существуют ядра, определенные на строках (на основе расстояния редактирования), графах (ядро случайных блужданий, random walk kernel), множествах, деревьях и других сложных объектах. Это позволяет применять весь арсенал ядерных методов к задачам биоинформатики, обработки текстов и хемоинформатики.

Ядерный трюк в действии: пример ядерной гребневой регрессии

Рассмотрим задачу линейной регрессии с квадратичной функцией потерь и L2-регуляризацией (гребневая регрессия). Решение в терминах исходных признаков дается формулой \mathbf{w} = (\mathbf{X}^T\mathbf{X} + \lambda \mathbf{I})^{-1}\mathbf{X}^T\mathbf{y}. Используя матричное тождество, его можно переписать в "дуальную форму", зависящую только от скалярных произведений \mathbf{X}\mathbf{X}^T: \mathbf{y}_{\text{pred}}(\mathbf{x}_{\text{new}}) = \mathbf{y}^T (\mathbf{K} + \lambda \mathbf{I})^{-1} \mathbf{k}, где \mathbf{K} — матрица Грама на обучающей выборке, а вектор \mathbf{k} состоит из ядерных оценок \kappa(\mathbf{x}_i, \mathbf{x}_{\text{new}}). Замена всех скалярных произведений на функцию ядра дает нелинейную ядерную гребневую регрессию, способную аппроксимировать сложные нелинейные функции.

Практические аспекты и выбор ядра

Выбор ядра и его параметров — центральная задача при использовании ядерных методов.

  • Выбор типа ядра: Обычно начинают с линейного ядра как с интерпретируемого baseline. Если оно не дает нужного качества, переходят к RBF-ядру, которое является универсальным аппроксиматором и хорошим выбором "по умолчанию" для нелинейных задач средней размерности. Специфические ядра (например, для графов) выбирают, исходя из природы данных.
  • Настройка гиперпараметров: Критически важна. Осуществляется через кросс-валидацию. Для RBF-ядра настраивают \gamma (и параметр регуляризации C в SVM). Распространенная эвристика для \gamma в RBF — установка обратно пропорционально медиане попарных евклидовых расстояний между объектами.
  • Нормализация данных: Перед применением ядер, чувствительных к масштабу признаков (особенно RBF и полиномиального), необходимо проводить стандартизацию признаков (вычитание среднего, деление на стандартное отклонение).
  • Вычислительная сложность: Основной недостаток ядерных методов — необходимость вычисления и хранения матрицы Грама \mathbf{K} размера n \times n, где n — число объектов в обучающей выборке. Это требует O(n^2) памяти и, как правило, O(n^3) времени для обращения матрицы, что делает методы непрактичными для больших наборов данных (n > 10^5). Для преодоления этого ограничения разработаны различные методы аппроксимации (например, метод случайных признаков, аппроксимация Найстрома).

Заключение

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

См. также

Литература

  1. Шлезингер М., Главач В. Десять лекций по статистическому и структурному распознаванию. — Киев: Наукова думка, 2004. — Глава о ядерных методах.
  2. Schölkopf B., Smola A. J. Learning with Kernels: Support Vector Machines, Regularization, Optimization, and Beyond. — MIT Press, 2002. — Фундаментальный труд по теории ядер.
  3. Bishop C. M. Pattern Recognition and Machine Learning. — Springer, 2006. — Глава 6: Kernel Methods.
  4. Shawe-Taylor J., Cristianini N. Kernel Methods for Pattern Analysis. — Cambridge University Press, 2004. — Всеобъемлющее введение в ядерные методы анализа закономерностей.
  5. Murphy K. P. Machine Learning: A Probabilistic Perspective. — MIT Press, 2012. — Глава 14: Kernels.
Личные инструменты