Sobes.tech
Назад к вопросам
Senior
10

Что такое Bayesian Optimization и acquisition functions (EI, UCB, PI)?

Компании, где спрашивали
ИннотехИннотех

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Bayesian Optimization — это подход к поиску максимума или минимума дорогой функции, когда каждую проверку параметров делать дорого. Сначала строится вероятностная модель целевой функции, затем по ней выбирается следующая точка для измерения. Acquisition function балансирует между исследованием новых областей и эксплуатацией уже перспективных.

Определение:

Bayesian Optimization — это метод глобальной оптимизации «чёрного ящика», при котором целевая функция неизвестна или дорогая в вычислении, а число экспериментов ограничено. Вместо перебора всех вариантов строится surrogate model, чаще всего Gaussian Process, которая оценивает не только среднее значение функции, но и неопределённость. На основе этой модели acquisition function выбирает следующую точку для оценки.

Основные acquisition functions:

  • EI (Expected Improvement) — ожидаемое улучшение относительно лучшего найденного значения.
  • PI (Probability of Improvement) — вероятность того, что новая точка улучшит текущий лучший результат.
  • UCB (Upper Confidence Bound) — верхняя граница доверительного интервала, которая явно балансирует среднее и неопределённость.

Пример использования:

Bayesian Optimization часто используют для подбора гиперпараметров модели, когда один запуск обучения занимает минуты или часы.

# Идея: оптимизируем дорогую функцию f(x) с ограниченным числом запусков
# На практике библиотека сама строит surrogate model и выбирает точки

best_x = None
best_score = float("-inf")

for iteration in range(20):
    x_next = select_next_point_by_acquisition(model, objective_history)
    score = expensive_evaluate(x_next)   # дорогое измерение / обучение
    update_model(model, x_next, score)

    if score > best_score:
        best_score = score
        best_x = x_next

Пример из практики: подбор learning_rate, max_depth и regularization для градиентного бустинга. Вместо сотен случайных запусков BO использует прошлые результаты и быстрее находит хорошие конфигурации.

Пояснение кода:

Код выше иллюстрирует общий цикл Bayesian Optimization, а не конкретную библиотеку.

  1. Накапливаются результаты уже проверенных точек.
  2. Строится или обновляется surrogate model, которая предсказывает значение функции и неопределённость.
  3. Acquisition function выбирает следующую точку, где ожидается лучший компромисс между высоким значением и полезностью новой информации.
  4. Дорогая функция реально вычисляется только в выбранной точке.
  5. Модель обновляется, и цикл повторяется, пока не закончатся итерации или бюджет экспериментов.

Ключевые моменты:

  • Bayesian Optimization полезен, когда функция дорогая, шумная и количество попыток ограничено.
  • Ключевая идея — оптимизировать не саму неизвестную функцию напрямую, а acquisition function.
  • EI предпочитает точки, которые дают ожидаемый прирост относительно лучшего найденного результата.
  • PI более жадная: смотрит только на вероятность улучшения, часто хуже исследует пространство.
  • UCB использует сумму среднего и бонуса за неопределённость, поэтому естественно балансирует exploration/exploitation.
  • Для BO важно качество surrogate model и корректный учёт неопределённости; иначе выбор точек становится неэффективным.