Метод радиальных базисных функций
Материал из MachineLearning.
| | Статья написана с использованием LLM Gemini 3.1 Pro и проверена участником Artem Abdulmanov 14:55, 17 июня 2026 (MSD)
Промпт приводится полностью в Обсуждение:Метод радиальных базисных функций |
|
Введение
Метод радиальных базисных функций (англ. Radial Basis Function Network, RBF) — это архитектура искусственных нейронных сетей, использующая радиально-симметричные функции в качестве функций активации. С геометрической точки зрения метод осуществляет нелинейное отображение входного пространства признаков в скрытое пространство более высокой размерности, где задача аппроксимации функций или разделения классов может быть решена линейными методами. Суть решаемой проблемы заключается в построении гладкой гиперповерхности в многомерном пространстве, которая интерполирует или аппроксимирует заданный набор обучающих данных, рассматривая каждый нейрон как локальный рецептор, реагирующий на близость входного вектора к определённому центру.
Мотивировка и историческая справка
Исторически RBF-сети возникли как решение задачи многомерной интерполяции. Предпосылкой к созданию метода стала необходимость преодолеть ограничения многослойных перцептронов (MLP), в частности, проблемы затухающего градиента и длительной сходимости.
Фундаментальное обоснование метода было заложено в работе D. Broomhead и D. Lowe (1988)[1], которые первыми предложили использовать радиальные базисные функции в контексте проектирования нейронных сетей, опираясь на теорию регуляризации. Важнейшую математическую базу обеспечила теорема Миккелли (1986)[1], строго доказавшая, что для широкого класса радиальных функций (включая гауссианы и мультиквадрики) интерполяционная матрица является невырожденной при условии уникальности точек данных. Это математически гарантирует существование точного решения задачи строгой интерполяции.
Математический аппарат и Архитектура
Архитектура RBF-сети строго структурирована и состоит из трёх слоёв:
- Входной слой: передаёт входной вектор
на скрытый слой без преобразований.
- Скрытый слой: состоит из нелинейных нейронов, каждый из которых параметризован вектором центра
и параметром ширины
.
- Выходной слой: линейно комбинирует отклики скрытого слоя.
Математически отклик сети вычисляется как линейная комбинация радиальных функций:
где:
-
— выход сети;
-
— количество нейронов скрытого слоя;
-
— весовой коэффициент связи между
-м нейроном скрытого слоя и выходным узлом;
-
— радиальная базисная функция;
-
— евклидова норма (расстояние).
Наиболее распространённым выбором функции является функция Гаусса (гауссиана):
где — расстояние от входа до центра, а
— ширина окна, определяющая радиус влияния нейрона. Чем ближе входной вектор
к центру
, тем сильнее отклик активации (максимум равен 1 при
).
Практика на PyTorch
Эффективная реализация RBF-слоя в PyTorch строится на векторизованном вычислении матрицы попарных расстояний между входным батчем и центрами. Ниже представлена архитектура пользовательского модуля с подробным документированием выполняемых тензорных преобразований.
import torch import torch.nn as nn class RBFNetwork(nn.Module): """ Реализация слоя радиальных базисных функций (RBF) на PyTorch. """ def __init__(self, in_features, num_centers, out_features): super(RBFNetwork, self).__init__() self.in_features = in_features self.num_centers = num_centers self.out_features = out_features # Центры RBF: обучаемые параметры, форма (num_centers, in_features) self.centers = nn.Parameter(torch.empty(num_centers, in_features)) # Ширины (сигмы) для каждого центра: форма (num_centers,) self.sigmas = nn.Parameter(torch.empty(num_centers)) # Выходной слой: линейная комбинация без свободного члена (обычно bias не нужен) self.linear = nn.Linear(num_centers, out_features, bias=False) self._reset_parameters() def _reset_parameters(self): # Инициализация центров из стандартного нормального распределения nn.init.normal_(self.centers, mean=0.0, std=1.0) # Инициализация ширин строго положительной константой nn.init.constant_(self.sigmas, val=1.0) # Инициализация весов выходного слоя nn.init.xavier_uniform_(self.linear.weight) def forward(self, x): # x имеет форму (batch_size, in_features) # Вычисляем попарные евклидовы расстояния # Функция cdist оптимизирована и работает быстрее кастомных реализаций # distances форма: (batch_size, num_centers) distances = torch.cdist(x, self.centers, p=2.0) # Применяем Гауссову функцию активации # rbf_out форма: (batch_size, num_centers) rbf_out = torch.exp(-(distances ** 2) / (2 * self.sigmas ** 2)) # Возвращаем линейную взвешенную сумму откликов # Выходная форма: (batch_size, out_features) return self.linear(rbf_out)
Схема обучения и рекомендации
В отличие от классического сквозного обратного распространения ошибки, для RBF-сетей предпочтителен гибридный двухэтапный подход (two-stage training):
- Обучение без учителя для скрытого слоя: Расположение центров
обычно подбирается методами кластеризации (чаще всего K-Means). Ширины
задаются эвристически, например, равными среднему расстоянию до
ближайших центров, что обеспечивает адекватное перекрытие базисных функций.
- Обучение с учителем для выходного слоя: Поскольку выход сети линейно зависит от весов
, после фиксации параметров скрытого слоя оптимальные веса можно вычислить аналитически в один шаг с помощью псевдообратной матрицы Мура-Пенроуза (решение задачи наименьших квадратов) или обучить стандартным градиентным спуском, что займёт минимальное количество эпох из-за выпуклости функции потерь по отношению к этим весам.
Частые ошибки инженеров:
- Проклятие размерности: В пространствах высокой размерности (сотни признаков) евклидово расстояние между любыми двумя точками стремится к одной и той же величине. В результате отклики всех Гауссиан становятся неразличимы (либо все равны нулю, либо константе), и сеть теряет выразительную способность.
- Неоптимальный выбор ширины окна: Слишком малые значения
приводят к катастрофическому переобучению (нейроны реагируют только на точечные попадания из обучающей выборки), а слишком большие — к сильному сглаживанию и недообучению, так как сеть вырождается в глобальную константу.
- Избыточное количество центров: Размещение центра для каждого объекта обучающей выборки делает матрицу интерполяции громоздкой и вычислительно неэффективной (ошибка строгой интерполяции вместо сглаживающей аппроксимации).
Современные подходы и State-of-the-Art (SOTA)
Хотя классические RBF-сети уступили место глубоким MLP и трансформерам в задачах компьютерного зрения и NLP, они переживают мощный ренессанс в специфических научно-инженерных доменах:
- Физико-информированные нейросети (PINNs): При решении дифференциальных уравнений в частных производных (PDE) RBF обеспечивают аналитическую гладкость производных старших порядков, в отличие от ReLU-сетей. Использование RBF-активаций позволяет существенно повысить точность аппроксимации физических процессов локально в вычислительной сетке.
- Суррогатное моделирование: RBF остаются индустриальным SOTA-стандартом в задачах оптимизации дорогостоящих функций (Black-box optimization), где вычислительный бюджет ограничен десятками симуляций, и требуется построить предельно точную поверхность отклика (Response Surface Methodology).
См. также
- Метод опорных векторов
- Кластеризация методом k-средних
- Искусственная нейронная сеть
- Метрический классификатор
Примечания
Литература
- Broomhead D. S., Lowe D. Multivariable functional interpolation and adaptive networks // Complex Systems. — 1988. — Т. 2. — С. 321–355.
- Micchelli C. A. Interpolation of scattered data: distance matrices and conditionally positive definite functions // Constructive Approximation. — 1986. — Т. 2. — С. 11–22.
- Хайкин С. Нейронные сети: полный курс. — Вильямс, 2006. — С. 1104.

