🔴 Сложный ⏱️ 25 минут

Байесовская оптимизация: умный поиск лучших решений

Байесовская оптимизация: умный поиск лучших решений

🎯 Зачем это нужно?

Представь, что тебе нужно настроить нейросеть для распознавания мемов 🤖. У тебя есть куча параметров: learning rate, batch size, количество слоев… Если перебирать все комбинации, понадобится месяц GPU времени и 100k рублей!

Байесовская оптимизация решает эту проблему элегантно:

  • AutoML системы (Google AutoML, H2O.ai) используют её для автоматического подбора архитектур
  • A/B тестирование в Instagram/TikTok оптимизирует параметры рекомендательных алгоритмов
  • Фармацевтика ищет новые лекарства среди миллиардов молекул
  • Игровой AI в Dota 2 и StarCraft настраивает стратегии

📚 История вопроса

Метод появился в 1970-х, когда нефтяные компании искали месторождения. Представь: каждое бурение скважины стоит миллионы долларов, но ты не знаешь, где нефть! 🛢️

Идея гениальная: используй предыдущие результаты, чтобы предсказать, где бурить следующую скважину. Не случайно - а максимально информативно!

Современный бум начался с работы Джонаса Мокуса (1975) и взлетел с появлением мощных GPU для обучения гауссовских процессов.

💡 Интуиция

Обычная оптимизация как слепой котёнок: тыкается случайно или идёт по градиенту 🐱.

Байесовская оптимизация как умный детектив:

  1. Помнит все предыдущие эксперименты
  2. Строит модель того, как выглядит функция потерь
  3. Выбирает следующую точку максимально разумно

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

[МЕДИА: image_01] Описание: Сравнение случайного поиска и байесовской оптимизации на 2D функции Промпт: “educational comparison showing random search vs bayesian optimization on 2D function surface, left side shows random scattered points, right side shows intelligent adaptive sampling, gaussian process uncertainty visualization, modern technical illustration”

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

Задача: найти x* = argmax f(x), где f(x) - “чёрный ящик” (дорогая в вычислении функция).

Компоненты байесовской оптимизации:

  1. Surrogate model M(x) - дешёвая аппроксимация f(x) Обычно Gaussian Process: M(x) ~ GP(μ(x), k(x,x’))

  2. Acquisition function A(x) - определяет, где искать следующую точку Популярные: Expected Improvement (EI), Upper Confidence Bound (UCB)

Алгоритм:

for t = 1, 2, ..., T:
    1. Обучить surrogate model на данных D = {(x₁,y₁),...,(xₜ,yₜ)}
    2. Найти xₜ₊₁ = argmax A(x|M)  
    3. Вычислить yₜ₊₁ = f(xₜ₊₁)
    4. D ← D ∪ {(xₜ₊₁, yₜ₊₁)}

🔍 Примеры с разбором

Пример 1: Настройка гиперпараметров CNN

Нужно найти оптимальные параметры для классификации котиков vs собачек:

  • learning_rate ∈ [1e-5, 1e-1]
  • batch_size ∈ [16, 512]
  • dropout_rate ∈ [0, 0.8]

Шаг 1: Случайно пробуем 3 точки

  • (lr=0.01, bs=64, dr=0.5) → accuracy = 85%
  • (lr=0.001, bs=128, dr=0.2) → accuracy = 88% ✨
  • (lr=0.1, bs=32, dr=0.7) → accuracy = 72%

Шаг 2: GP строит модель неопределённости Высокая неопределённость → высокий потенциал улучшения

Шаг 3: EI acquisition function предлагает (lr=0.005, bs=96, dr=0.3) как наиболее перспективную

[МЕДИА: image_02] Описание: 3D визуализация поверхности acquisition function для гиперпараметров Промпт: “3D surface plot showing acquisition function landscape for hyperparameter optimization, peaks indicating promising regions to explore, gradient colors from blue to red, technical visualization with axis labels, clean modern style”

Пример 2: Молекулярный дизайн

Фармкомпания ищет лекарство от COVID-19 среди 10⁶⁰ возможных молекул! 💊

Представление: молекула → вектор дескрипторов (размер, полярность, etc.) Цель: максимизировать binding affinity к белку вируса

Вместо случайного перебора миллиардов молекул, байесовская оптимизация:

  1. Начинает с известных 100 соединений
  2. Предсказывает перспективные области в химическом пространстве
  3. Синтезирует только самые обещающие кандидаты
  4. За 500 экспериментов находит топ-10 соединений

Экономия: вместо $100M случайного скрининга → $2M целевого поиска!

🎮 Практика

Базовый уровень 🟢

Задание 1: У тебя есть функция f(x) = -(x-2)² + 5 на отрезке [0,4]. Ты уже знаешь значения:

  • f(0) = 1
  • f(4) = 1
  • f(1) = 4

Где бы ты поставил следующую точку при байесовской оптимизации и почему?

Задание 2: В игре нужно настроить AI бота. Параметры:

  • агрессивность ∈ [0, 1]
  • скорость реакции ∈ [0.1, 2.0]

После 3 игр:

  • (0.2, 1.5) → winrate = 45%
  • (0.8, 0.5) → winrate = 70%
  • (0.5, 1.0) → winrate = 85%

Опиши интуитивно, какая область пространства параметров выглядит наиболее перспективной.

Продвинутый уровень 🟡

Задание 3: Реализуй простую Expected Improvement функцию: EI(x) = σ(x) · [Z·Φ(Z) + φ(Z)] где Z = (μ(x) - f_best) / σ(x)

Что означают компоненты этой формулы? При каком условии EI(x) = 0?

Задание 4: Netflix хочет оптимизировать рекомендательную систему. Параметры:

  • λ (regularization) ∈ [0.001, 1]
  • факторов ∈ [10, 500]
  • learning_rate ∈ [1e-4, 1e-1]

Объясни, почему обычный grid search здесь неэффективен, и как байесовская оптимизация решает проблему.

Челлендж 🔴

Задание 5: Докажи, что при использовании GP с RBF ядром k(x,x’) = exp(-||x-x’||²/2σ²), неопределённость σ(x) максимальна в точках, наиболее удалённых от уже исследованных.

Задание 6: SpaceX оптимизирует траекторию ракеты с 20 параметрами. Каждый запуск стоит $50M. Сравни эффективность байесовской оптимизации vs genetic algorithm vs particle swarm optimization в таких условиях.

⚠️ Частые ошибки

Ошибка: “Байесовская оптимизация всегда лучше градиентных методов” ✅ Правильно: BO эффективна только для дорогих black-box функций с малой размерностью (<20D) 💡 Почему: При высокой размерности GP требует экспоненциально много данных

Ошибка: Использовать только exploitation (жадно идти к лучшим точкам)
Правильно: Сбалансировать exploration vs exploitation через acquisition function 💡 Почему: Без exploration можешь застрять в локальном оптимуме

Ошибка: Применять BO к быстрым функциям (вроде обычных loss functions) ✅ Правильно: BO имеет смысл, когда одно вычисление f(x) занимает минуты/часы 💡 Почему: Overhead от обучения GP должен окупаться дороговизной f(x)

Ошибка: Игнорировать категориальные параметры ✅ Правильно: Использовать специальные ядра (например, mixed continuous-categorical) 💡 Почему: Обычные GP работают только с вещественными числами

🎓 Главное запомнить

Суть: Умный поиск оптимума через построение probabilistic модели целевой функции ✅ Формула: xₜ₊₁ = argmax A(x|GP), где A - acquisition function
Применение: Настройка гиперпараметров, AutoML, молекулярный дизайн, A/B тесты

🔗 Связь с другими темами

Откуда пришли: Гауссовские процессы (урок 298) - основа surrogate модели Куда ведёт: Neural Architecture Search, Multi-objective optimization, Reinforcement Learning Связано с: Активное обучение, банditные алгоритмы, информационная теория

Понял тему? Закрепи в боте! 🚀

Попрактикуйся на задачах и получи персональные рекомендации от AI

💪 Начать тренировку
💬 Есть вопрос? Спроси бота!