Вопрос или проблема
Для набора переменных я хочу найти, для каких комбинаций переменных функция становится (близкой к) нулю. Поскольку оценка этой функции довольно дорогая, я хочу использовать байесовскую оптимизацию. Существуют некоторые пакеты на Python для этого, но мне нужна стохастическая версия, так как моя функция включает в себя некоторую случайность. Есть ли пакет, который предоставляет стохастические гауссовские процессы в качестве суррогатной модели?
Разница между стохастической моделью и “нормальной” моделью заключается в том, как они обрабатывают оценки функции. Нормальная модель будет оценивать функцию и считать это реальным значением в точке x. Стохастическая модель будет предполагать, что функция является стохастической и, следовательно, имеет случайный компонент (шум, ошибки и т.д.). Поэтому она не будет моделировать суррогатную модель так, чтобы она проходила через все точки, которые были оценены, а просто предположит, что функция выдает значения вокруг тех мест, где были оценки.
Таким образом, когда я использую не стохастическую модель и она оценивает точку рядом с текущим оптимумом, которая в среднем будет давать еще более низкое значение, но из-за случайных эффектов дает в этот раз более высокое значение, то не стохастическая модель не будет искать дальше в этом направлении, даже если это правильное направление.
Посмотрите на GPyOpt. Лично я только пробовал его, но он использует ГП для байесовской оптимизации и, следовательно, должен учитывать внутреннюю вариацию в поверхности потерь. Кроме того, Sheffield ML имеет отличную репутацию в области исследований ГП, поэтому я ожидаю, что код будет на высшем уровне.
Ответ или решение
Да, существует несколько Python-пакетов, которые позволяют реализовать стохастическое суррогатное моделирование с применением байесовской оптимизации, что идеально подходит для вашей задачи. Основная цель этих пакетов – оптимизация сложных или затратных функций, где важно учитывать случайные компоненты.
Примеры пакетов
-
GPyOpt
- Описание: Этот пакет, разработанный Sheffield Machine Learning, использует гауссовские процессы (GP) для выполнения байесовской оптимизации. GPyOpt предназначен для работы с высокоразмерными функциями, которые могут включать шум и вариативность в оценках.
- Сторонние зависимости: GPyOpt требует установку GPy, что позволяет гибко работать с различными архитектурами моделей.
- Спецификация стохастичности: В GPyOpt можно задавать уровень шума в данных, что делает его подходящим для вашего случая с случайной функцией. Это позволяет модели не жестко следовать за точечными оценками, а учитывать вариативность.
-
GPy
- Описание: Хотя он в первую очередь является библиотекой для работы с гауссовскими процессами, его можно использовать в связке с другими библиотеками для реализации байесовской оптимизации.
- Стохастичность: Модель позволяет добавлять компоненты случайности напрямую в процесс, что может быть очень полезно для вашей задачи.
-
Scikit-Optimize (skopt)
- Описание: Этот пакет предлагает простое и удобное API для байесовской оптимизации. Он поддерживает различные методы для построения оптимальных моделей.
- Случайность в моделировании: Scikit-Optimize использует гауссовские процессы, что позволяет экологически чисто работать с шумом в данные. Он предоставляет возможность настройки подразумевающего процесса, что качественно отражает ожидания по стохастичности.
-
BayesianOptimization
- Описание: Пакет BayesianOptimization предназначен для реализации байесовской оптимизации в Python с использованием гауссовых процессов. Он обеспечивает удобное использование и хорошую документацию.
- Работа с шумом: Эта библиотека включает метод для обработки шумных данных, что делает её подходящей для ситуаций, когда реализация функции подвержена случайным колебаниям.
Применение
При работе с этими библиотеками вы сможете:
- Задать функции, которые вы хотите оптимизировать, и установить параметры моделей, учитывающие случайность.
- Настроить предварительное распределение для ваших функций, чтобы адекватно отразить их стохастичную природу.
- Применять методы активного обучения, которые собирают данные в более информативных регионах пространства поиска.
Заключение
Разработка стохастического суррогатного моделирования с использованием байесовской оптимизации – сложная, но реализация которой сильно облегчается через указанные выше пакеты. Они предлагают гибкие и мощные инструменты для учета случайности в функциях, что непосредственно соответствует вашим требованиям. Выбор определенного инструмента зависит от предпочтений по интерфейсу и уровню контроля, который вам необходим для вашей задачи.