36 KiB
title, tags, supervisor, status
| title | tags | supervisor | status | ||||
|---|---|---|---|---|---|---|---|
| Методы оптимизации и подбора гиперпараметров — таксономия, теория, источники |
|
мнс Павленко Б.В. | draft |
Методы оптимизации / подбора гиперпараметров
Раздел учебно-исследовательской методички. Цель — дать самодостаточную таксономию методов HPO (Hyper-Parameter Optimization), их теоретические основы, формулы, сравнительные таблицы и практическую методологию для DL-классификации.
1. Гиперпараметры vs параметры. Пространство поиска, бюджет, цель
Параметры (parameters) — переменные модели, которые настраиваются оптимизатором в ходе обучения напрямую минимизацией функции потерь (веса W, смещения b свёрток и линейных слоёв, \gamma,\beta в BatchNorm). Их градиент \partial \mathcal{L}/\partial W вычислим аналитически (backprop).
Гиперпараметры (hyper-parameters) — переменные, которые задаются до/над обучением и управляют либо самим процессом обучения (learning rate, weight decay, batch size, оптимизатор, расписание), либо ёмкостью и структурой модели (глубина, ширина, dropout, label smoothing), либо данными (аугментации). Градиент целевой метрики по ним обычно недоступен в замкнутой форме — отсюда отдельная дисциплина HPO.
Формально HPO — это задача оптимизации «чёрного ящика»:
\lambda^{\*} = \arg\min_{\lambda \in \Lambda}\; \mathcal{L}_{\text{val}}\big(A_\lambda(D_{\text{train}}),\, D_{\text{val}}\big),
где \lambda — вектор гиперпараметров из пространства поиска \Lambda; A_\lambda — алгоритм обучения, обученный с этой конфигурацией; \mathcal{L}_{\text{val}} — целевая функция (валидационный loss или 1-\text{accuracy}, 1-\text{R@1} и т. д.). Функция \mathcal{L}_{\text{val}}(\lambda) — дорогая (один replay = полное обучение), зашумлённая (random seed, недетерминизм GPU), недифференцируемая по \lambda и часто немонотонная.
Типы переменных в пространстве поиска \Lambda
| Тип | Пример | Шкала | Примечание |
|---|---|---|---|
| Непрерывный (continuous / real) | lr \in[10^{-5},10^{-1}], weight_decay, dropout |
log / linear | для lr, wd — логарифмическая |
| Целочисленный (integer / ordinal) | batch_size, число эпох заморозки, ширина слоя |
log2 / linear | порядок имеет смысл |
| Категориальный (categorical / nominal) | optimizer ∈ {SGD, AdamW, Lion}, тип scheduler |
— | порядка нет |
| Условный / иерархический (conditional) | momentum существует только если optimizer=SGD; betas — только для Adam |
— | дерево зависимостей → tree-structured space |
Условность (conditional space) — ключевая черта реальных задач: подпространство активно только при определённом значении родителя. Метод HPO должен это моделировать (TPE, SMAC — могут; чистый GP — хуже).
Бюджет (budget) — ограничение ресурсов: число trial'ов N, суммарное GPU-время, либо «fidelity» (число эпох / доля данных / разрешение). Цель методологии — найти хороший \lambda при фиксированном бюджете, а не глобальный оптимум любой ценой.
Цель (objective) — скаляр (single-objective) или вектор (multi-objective: accuracy ↔ latency/FLOPs — критично для edge-моделей вроде EdgeNeXt на Jetson). При multi-objective говорят о Pareto-фронте.
2. Базовые методы: Manual, Grid Search, Random Search
2.1 Manual / Babysitting («graduate student descent»)
Эксперт вручную меняет один-два гиперпараметра, смотрит на кривые обучения, корректирует. Плюсы: дёшево на старте, накапливает интуицию. Минусы: невоспроизводимо, не масштабируется, систематический bias, не параллелится.
2.2 Grid Search
Декартово произведение заранее заданных значений по каждой оси. Для d осей по k значений — k^d конфигураций (комбинаторный взрыв). Полностью параллелизуем, прост, воспроизводим. Главная беда — проклятие размерности и неэффективное покрытие при наличии «неважных» осей.
2.3 Random Search
Каждая конфигурация сэмплируется независимо из заданных распределений по осям ($\log$-uniform для lr/wd, uniform/categorical для остальных).
Ключевой источник: Bergstra & Bengio, 2012, «Random Search for Hyper-Parameter Optimization», JMLR 13:281–305.
Почему random эффективнее grid в высокой размерности. На практике целевая функция имеет низкую эффективную размерность (low effective dimensionality): из d гиперпараметров реально важны лишь d_{\text{eff}} \ll d. Grid тратит бюджет на повторную дискретизацию неважных осей: при k^d точках по каждой важной оси пробуется только k различных значений. Random Search при N trial'ах пробует N различных значений по каждой оси (с вероятностью 1), то есть гораздо плотнее покрывает проекцию на важные оси.
Интуиция «вероятности промаха»: если хорошая область занимает долю v объёма \Lambda, то вероятность хотя бы одного попадания за N случайных trial'ов:
P(\text{hit}) = 1 - (1 - v)^N .
Чтобы получить P \ge 1-\epsilon, нужно N \ge \dfrac{\log \epsilon}{\log(1-v)} — это не зависит от размерности d, в отличие от grid. Bergstra & Bengio эмпирически показали, что random search находит модели не хуже, чем тщательный grid+manual search из предыдущих работ, за малую долю вычислений.
# Минимальный Random Search в лог-шкале для lr/wd (PyTorch-агностично)
import numpy as np
def sample_config(rng):
return {
"lr": 10 ** rng.uniform(-4, -1), # log-uniform
"weight_decay": 10 ** rng.uniform(-6, -2), # log-uniform
"batch_size": int(rng.choice([64, 128, 256])),
"optimizer": rng.choice(["sgd", "adamw"]),
}
rng = np.random.default_rng(seed=42) # фиксируем seed → воспроизводимость
configs = [sample_config(rng) for _ in range(64)] # бюджет N=64 trial'ов
3. Bayesian Optimization (BO)
Идея: построить дешёвую суррогатную модель (surrogate) p(\mathcal{L}\mid\lambda) по уже наблюдённым (\lambda_i,\mathcal{L}_i) и выбирать следующую точку, максимизируя acquisition function — это Sequential Model-Based Optimization (SMBO). BO выборочно-эффективна (sample-efficient), но последовательна по природе (плохо параллелится без модификаций) и хуже масштабируется по d.
3.1 Суррогатные модели
Gaussian Process (GP). Апостериор по функции — гауссов: \mathcal{L}(\lambda)\sim \mathcal{GP}(\mu(\lambda),k(\lambda,\lambda')). Даёт замкнутые предсказательные среднее \mu(\lambda) и дисперсию \sigma^2(\lambda). Минусы: O(n^3) по числу наблюдений, плохо с категориальными/условными осями и высокой размерностью.
TPE (Tree-structured Parzen Estimator). Источник: Bergstra, Bardenet, Bengio, Kégl, 2011, «Algorithms for Hyper-Parameter Optimization», NeurIPS 24:2546–2554. Вместо p(y\mid\lambda) моделируется p(\lambda\mid y) двумя плотностями, разделяя trial'ы порогом y^{\*} (квантиль):
p(\lambda \mid y) =
\begin{cases}
\ell(\lambda), & y < y^{\*} \quad (\text{«хорошие»})\\[2pt]
g(\lambda), & y \ge y^{\*} \quad (\text{«плохие»})
\end{cases}
Можно показать, что максимизация Expected Improvement эквивалентна максимизации отношения \ell(\lambda)/g(\lambda). TPE естественно поддерживает категориальные и условные пространства (отсюда «tree-structured») и хорошо масштабируется по d. Open-source реализация — hyperopt (2013), а также ядро Optuna.
SMAC (random forest surrogate). Источник: Lindauer et al., 2022, «SMAC3», JMLR 23(54):1–9. Суррогат — random forest, дающий среднее и дисперсию по разбросу деревьев. RF хорошо работает с категориальными/условными осями, целочисленными переменными и высоким d; плюс агрессивный racing-механизм для сравнения конфигураций на нескольких instance.
3.2 Acquisition functions
Пусть f^{\*} — лучшее наблюдённое значение (минимизация), \mu,\sigma — апостериорные среднее и СКО суррогата.
| Acquisition | Формула | Поведение |
|---|---|---|
| PI (Probability of Improvement) | \mathrm{PI}(\lambda)=\Phi\!\Big(\dfrac{f^{\*}-\mu(\lambda)-\xi}{\sigma(\lambda)}\Big) |
жадная, склонна к exploitation |
| EI (Expected Improvement) | \mathrm{EI}(\lambda)=(f^{\*}-\mu-\xi)\Phi(z)+\sigma\,\phi(z),\;\; z=\dfrac{f^{\*}-\mu-\xi}{\sigma} |
баланс, индустриальный стандарт |
| UCB/LCB (Upper/Lower Confidence Bound) | \mathrm{LCB}(\lambda)=\mu(\lambda)-\beta_t\,\sigma(\lambda) |
\beta_t напрямую регулирует exploration |
Здесь \Phi,\phi — CDF и PDF стандартного нормального распределения, \xi\ge 0 — параметр jitter для exploration.
Exploration vs exploitation. Это центральный компромисс BO: \sigma(\lambda) велика в неисследованных областях (exploration), \mu(\lambda) мала в перспективных (exploitation). UCB/LCB даёт теоретические гарантии: Srinivas et al., 2010, «Gaussian Process Optimization in the Bandit Setting: No Regret and Experimental Design», ICML доказали сублинейную границу кумулятивного regret \tilde{O}(\sqrt{N\,\gamma_N}) для GP-UCB, где \gamma_N — максимальный information gain, а \beta_t выбирается по информационно-теоретическому правилу.
4. Эволюционные / популяционные методы
4.1 CMA-ES (Covariance Matrix Adaptation Evolution Strategy)
Поддерживает многомерное гауссово распределение \mathcal{N}(m,\,\sigma^2 C) над пространством поиска; на каждой итерации сэмплирует популяцию \lambda_i, оценивает, и адаптирует среднее m, шаг \sigma и матрицу ковариаций C по лучшим особям:
\lambda_i \sim m + \sigma\,\mathcal{N}(0,C),\qquad
m \leftarrow \sum_{i=1}^{\mu} w_i\,\lambda_{i:\text{best}} .
Сильна на непрерывных, не-сепарабельных, мультимодальных ландшафтах; не требует градиента. Минусы: категориальные/условные оси — неестественны; затраты на C растут с d^2.
4.2 Генетические алгоритмы (GA)
Популяция «особей» (конфигураций) эволюционирует через selection → crossover → mutation. Гибки к смешанным пространствам, легко параллелятся, но требуют много оценок и тонкой настройки операторов.
4.3 Population Based Training (PBT)
Источник: Jaderberg et al., 2017, «Population Based Training of Neural Networks», DeepMind, arXiv:1711.09846.
PBT обучает популяцию моделей параллельно и периодически выполняет две операции:
- exploit — слабые модели копируют веса И гиперпараметры лучших (truncation selection);
- explore — скопированные гиперпараметры возмущаются (perturb / resample).
Ключевая особенность: PBT находит расписание (schedule) гиперпараметров во времени, а не одну фиксированную точку — что часто оптимальнее (например, убывающий lr, меняющаяся сила аугментаций). Асинхронен, эффективно использует фиксированный бюджет, переиспользует частично обученные веса (не стартует с нуля).
5. Multi-fidelity / early-stopping
Базовая идея: дёшево отсеять заведомо плохих, не доводя их до полного обучения. «Fidelity» (точность оценки) = число эпох / доля данных / разрешение. Плохие конфигурации убиваются рано, бюджет переливается перспективным.
5.1 Successive Halving (SHA)
Запустить n конфигураций с малым бюджетом r; оставить верхние 1/\eta; увеличить их бюджет в \eta раз; повторять. За \log_\eta n «раундов» бюджет на конфигурацию растёт геометрически.
Проблема SHA — компромисс «n vs $B/n$»: при фиксированном суммарном бюджете B неясно, брать много конфигураций с малым бюджетом каждой или мало с большим (риск рано убить «медленный старт»).
5.2 Hyperband
Hyperband решает дилемму n vs B/n, запуская несколько «брекетов» (brackets) SHA с разными стартовыми (n,r): от «много конфигураций / агрессивное отсеивание» до «мало / щадящее». Это страхует от misleading early performance. Внешний цикл по s, внутренний — SHA:
s_{\max}=\lfloor\log_\eta(R)\rfloor,\qquad n_s=\Big\lceil \tfrac{s_{\max}+1}{s+1}\eta^{s}\Big\rceil,\qquad r_s=R\,\eta^{-s},
где R — максимальный бюджет на одну конфигурацию, \eta — фактор отсева (обычно 3). Hyperband даёт ускорение более чем на порядок против random search и model-based методов на DL/kernel-задачах.
5.3 ASHA (Asynchronous Successive Halving)
Источник: Li et al., 2020, «A System for Massively Parallel Hyperparameter Tuning», MLSys (arXiv:1810.05934).
SHA синхронна: «раунд» ждёт завершения всех конфигураций (stragglers тормозят). ASHA асинхронна: как только конфигурация дошла до уровня и попадает в топ-1/\eta на текущий момент — её сразу промотируют, не дожидаясь остальных; освободившийся ресурс берёт новую конфигурацию. Это даёт почти линейное масштабирование на сотни-тысячи воркеров. ASHA превосходит PBT, BOHB и Vizier в массово-параллельном режиме.
5.4 BOHB (Bayesian Optimization + HyperBand)
Hyperband сэмплирует конфигурации случайно — это его слабость на «больших» бюджетах. BOHB заменяет random-сэмплинг внутри Hyperband на TPE-суррогат (модель строится по уже виденным результатам на разных fidelity). Получает: anytime-производительность и параллелизм Hyperband + sample-efficiency BO. Ускорение поиска до ~50× по wall-clock. Реализация — HpBandSter (AutoML).
6. Gradient-based / hypergradients и meta-learning (кратко)
Если бы метрика была дифференцируема по \lambda, можно было бы делать градиентный спуск по гиперпараметрам. Подходы:
- Reversible learning / hypergradients. Maclaurin, Duvenaud, Adams, 2015, «Gradient-based Hyperparameter Optimization through Reversible Learning», ICML (arXiv:1502.03492): вычисляют точный градиент валидационной потери по тысячам гиперпараметров, разворачивая (reverse-mode) всю динамику SGD-with-momentum назад во времени. Позволяет настраивать расписания
lr/momentum, схемы регуляризации, инициализацию. - Implicit differentiation. Дифференцирование через условие стационарности обученных весов — избегает хранения всей траектории (масштабируется лучше).
- Meta-learning связь. Та же машинерия (внешний/внутренний цикл) лежит в основе MAML-подобных подходов: «гиперпараметром» становятся инициализация или сам алгоритм обучения.
Ограничение: применимо к непрерывным дифференцируемым гиперпараметрам (lr, wd, веса лоссов); не работает для категориальных/архитектурных. На практике в edge-классификации используется редко (дорого, нестабильно), но важно концептуально.
7. Инструменты-фреймворки
| Фреймворк | Основные алгоритмы | Плюсы | Минусы | Лицензия |
|---|---|---|---|---|
| Optuna (Akiba 2019, KDD) | TPE, CMA-ES, GP, Random; pruners (ASHA/Hyperband/Median) | define-by-run API (динамич. условные пространства), отличная визуализация, importance | surrogate-GP слабее спец-BO; sampler по умолчанию последовательный | MIT |
| Ray Tune | ASHA, Hyperband, PBT, BOHB; интегрирует Optuna/HyperOpt/Ax/Nevergrad | масштаб от ноутбука до кластера без правки кода, лучший параллелизм | overhead Ray, кривая входа | Apache-2.0 |
| Hyperopt (Bergstra 2011/2013) | TPE, Random, (Anneal) | классика TPE, условные пространства, MongoDB-параллелизм | вялое развитие, устаревший API, нет GP | BSD |
| scikit-optimize | GP-BO, RF, GBRT (gp_minimize) |
sklearn-совместим, прост | малый параллелизм, проект почти заморожен | BSD-3 |
| Ax / BoTorch (arXiv:1912.05686) | GP-BO на PyTorch, multi-objective (qEHVI), constraints | SOTA-BO, multi-objective/Pareto, neural-aware | избыточен для простого поиска; нужен GPyTorch | MIT |
| Nevergrad | CMA-ES, DE, PSO, TBPSA, oneshot (ask-and-tell) | богатый набор gradient-free, хорош для непрерывных/шумных | слабая поддержка условных, мало DL-инфраструктуры | MIT |
| SMAC3 (Lindauer 2022, JMLR) | RF-surrogate BO + racing, multi-fidelity (Hyperband) | силён на категор./условных/смешанных, AutoML-зрелость | сложнее в освоении, тяжелее зависимости | BSD-3 |
| NNI (Microsoft) | TPE, SMAC, Hyperband, PBT, NAS, Anneal, Evolution | широкий охват (HPO + NAS + compression), web-UI | объёмный, реже обновляется | MIT |
| W&B Sweeps | Grid, Random, Bayes (+early-terminate Hyperband) | трекинг + поиск в одном, агенты-воркеры, дашборды | BO базовый; SaaS-зависимость для UI | проприет. (SaaS) + open client (MIT) |
| KerasTuner | Random, Hyperband, BO | прост, нативно Keras/TF | только TF/Keras-экосистема, базовые алгоритмы | Apache-2.0 |
Практический выбор для edge-DL (EdgeNeXt и т. п.): Optuna (TPE + ASHA pruner) как дефолт; Ray Tune при многоузловом кластере; Ax/BoTorch при явной multi-objective (accuracy ↔ latency).
8. Практическая методология для DL-классификации
8.1 Что подбирать и в какой шкале
| Гиперпараметр | Типичный диапазон | Шкала | Приоритет |
|---|---|---|---|
learning_rate |
10^{-4}\ldots10^{-1} (SGD) / 10^{-5}\ldots10^{-3} (AdamW) |
log | ★★★ высший |
weight_decay |
10^{-6}\ldots10^{-2} |
log | ★★★ |
batch_size |
{64,128,256,512} | log2 | ★★ (связан с lr) |
optimizer |
{SGD+momentum, AdamW, Lion} | categorical | ★★ |
lr_scheduler |
{cosine, step, one-cycle, warmup+cosine} | categorical / cond | ★★ |
warmup_epochs |
0…10 | linear | ★ |
dropout / drop_path |
0.0…0.5 | linear | ★★ |
label_smoothing |
0.0…0.2 | linear | ★ |
аугментации (RandAugment N,M; mixup \alpha; cutmix) |
N\in[1,3], M\in[5,15], \alpha\in[0.1,1.0] |
mixed | ★★ |
| ёмкость / глубина модели (если NAS-lite) | пресеты {XS,S,M} | ordinal/cat | ★★ |
| глубина заморозки (freeze depth при fine-tuning) | 0…L блоков |
integer | ★★ (для transfer) |
Почему лог-шкала для lr/wd. Их эффект мультипликативен, а «хорошие» значения охватывают несколько порядков. Линейный сэмплинг между 10^{-5} и 10^{-1} отдал бы ~99 % проб диапазону [10^{-2},10^{-1}] и почти не пробовал малые значения. Лог-uniform делает плотность равномерной по порядкам: \log_{10}(\text{lr})\sim U(-4,-1).
8.2 Воспроизводимость и валидация
- Фиксация seed. Задавать
seedдля Python/NumPy/torch иtorch.use_deterministic_algorithms(True)(где возможно). Помнить:\mathcal{L}_{\text{val}}(\lambda)зашумлена — один seed даёт смещённую оценку. - Реплики (replicas). Топ-кандидатов переоценивать на
\ge 3seed'ах и сравнивать по среднему ± std; иначе «победитель» может оказаться счастливым seed'ом. - Валидационная стратегия. Hold-out (фикс. train/val) — стандарт для больших DL-датасетов (быстро, дёшево). k-fold CV — для малых датасетов (надёжнее, но в
kраз дороже; в DL применяют редко). Test-сет трогать только однократно в самом конце. - Бюджет. Заранее зафиксировать
Ntrial'ов или GPU-часы; multi-fidelity (ASHA) при тесном бюджете. - Отчёт о важности (importance). После поиска — fANOVA / permutation importance (есть в Optuna
plot_param_importances), чтобы понять, какие оси реально влияют, и сузить\Lambdaв следующей итерации.
# Optuna: TPE + ASHA-pruner, log-шкала для lr/wd, медианный pruning по эпохам
import optuna
def objective(trial):
lr = trial.suggest_float("lr", 1e-4, 1e-1, log=True)
wd = trial.suggest_float("weight_decay", 1e-6, 1e-2, log=True)
opt = trial.suggest_categorical("optimizer", ["sgd", "adamw"])
model, loader_tr, loader_val = build(lr, wd, opt) # пользовательская сборка
for epoch in range(MAX_EPOCHS):
train_one_epoch(model, loader_tr)
acc = evaluate(model, loader_val)
trial.report(acc, epoch) # для pruner'а
if trial.should_prune(): # ранний отсев
raise optuna.TrialPruned()
return acc
study = optuna.create_study(
direction="maximize",
sampler=optuna.samplers.TPESampler(seed=42), # фикс. seed
pruner=optuna.pruners.SuccessiveHalvingPruner(), # multi-fidelity
)
study.optimize(objective, n_trials=64) # бюджет
print(study.best_params)
optuna.importance.get_param_importances(study) # отчёт о важности
9. Типичные ошибки
| Ошибка | Суть | Как избежать |
|---|---|---|
| Утечка test в подбор | гиперпараметры выбираются по test-метрике → test перестаёт быть честной оценкой | test трогать один раз; подбор — только на val |
| Переобучение на валидации | при большом N и одном val-сете выбирается \lambda, случайно хороший на этом val |
nested CV / отдельный «дев»-сет; репорт ± std по seed'ам; ограничить N |
| Нечестное сравнение методов | сравнивать random vs BO при разном числе trial'ов или GPU-часов | фиксировать одинаковый бюджет (trial'ы или wall-clock) и одинаковое \Lambda |
Линейная шкала для lr/wd |
почти не пробуются малые значения | log-uniform |
| Один seed как «доказательство» | разброс по seed'ам > разницы между конфигурациями | \ge 3 реплик, сравнение по средним |
| Сравнение на разных $\Lambda$ | у random search границы шире/уже, чем у grid | единое пространство поиска для всех методов |
| Игнор зашумлённости objective | принятие решения по разнице в 0.1 % | стат-тест (напр., paired t-test, p<0.05) перед выводом |
| Подбор архитектуры по test (NAS-leak) | выбор размера/глубины по тестовой точности | архитектурный поиск — на val/dev |
Итоговая сравнительная таблица методов
| Метод | Размерность d |
Бюджет (sample-eff.) | Параллелизм | Категориальные | Условные | Anytime |
|---|---|---|---|---|---|---|
| Manual / Babysitting | низкая | низкая эфф. | нет | да (вручную) | да | да |
| Grid Search | низкая (k^d) |
очень низкая | полный (embarrassingly) | да | плохо | нет |
| Random Search | высокая ✓ | низкая–средняя | полный ✓ | да | да | да |
| BO — GP | низкая–средняя | высокая ✓ | слабый (последоват.) | плохо | плохо | да |
| BO — TPE | средняя–высокая ✓ | высокая | средний | да ✓ | да ✓ | да |
| BO — SMAC (RF) | средняя–высокая | высокая | средний | да ✓ | да ✓ | да |
| CMA-ES | средняя (непрер.) | средняя | да (популяция) | плохо | плохо | да |
| Genetic Algorithms | средняя–высокая | низкая–средняя | да ✓ | да | да | да |
| PBT | средняя | высокая (reuse весов) | да ✓ | ограниченно | ограниченно | да (расписание) |
| Successive Halving | высокая | высокая ✓ | средний (синхр.) | да | да | да |
| Hyperband | высокая ✓ | высокая ✓ | хороший | да | да | да ✓ |
| ASHA | высокая ✓ | высокая | массовый ✓ | да | да | да ✓ |
| BOHB | высокая ✓ | высокая ✓ (BO+HB) | хороший ✓ | да ✓ | да ✓ | да ✓ |
| Gradient/hypergradient | очень высокая (непрер.) | высокая | слабый | нет | нет | частично |
Anytime-свойство — способность выдать разумный «лучший на текущий момент» результат при остановке в любой момент (важно при ограниченном/непредсказуемом бюджете). Им обладают random search, BO и особенно multi-fidelity (Hyperband/ASHA/BOHB), тогда как grid search anytime-свойством не обладает.
Источники
- Bergstra J., Bengio Y. (2012). Random Search for Hyper-Parameter Optimization. JMLR 13:281–305.
- Bergstra J., Bardenet R., Bengio Y., Kégl B. (2011). Algorithms for Hyper-Parameter Optimization. NeurIPS 24:2546–2554.
- Srinivas N., Krause A., Kakade S., Seeger M. (2010). Gaussian Process Optimization in the Bandit Setting: No Regret and Experimental Design. ICML.
- Lindauer M. et al. (2022). SMAC3: A Versatile Bayesian Optimization Package for HPO. JMLR 23(54):1–9.
- Jaderberg M. et al. (2017). Population Based Training of Neural Networks. arXiv:1711.09846.
- Li L., Jamieson K., DeSalvo G., Rostamizadeh A., Talwalkar A. (2018). Hyperband: A Novel Bandit-Based Approach to Hyperparameter Optimization. arXiv:1603.06560.
- Li L. et al. (2020). A System for Massively Parallel Hyperparameter Tuning (ASHA). MLSys. arXiv:1810.05934.
- Falkner S., Klein A., Hutter F. (2018). BOHB: Robust and Efficient Hyperparameter Optimization at Scale. ICML. arXiv:1807.01774.
- Maclaurin D., Duvenaud D., Adams R.P. (2015). Gradient-based Hyperparameter Optimization through Reversible Learning. ICML. arXiv:1502.03492.
- Akiba T. et al. (2019). Optuna: A Next-generation Hyperparameter Optimization Framework. KDD. arXiv:1907.10902.
- Balandat M. et al. (2019). BoTorch / Ax: Bayesian Hyperparameter Optimization. arXiv:1912.05686.