Гиперпараметры (hyperparameters) — это настройки модели и процесса обучения, которые обычно задают до запуска обучения. В терминологии scikit-learn они определяют структуру модели и, в отличие от весов и параметров модели, обычно не обучаются напрямую из данных, а передаются estimator как аргументы конструктора.
Задача выбора таких настроек называется hyperparameter tuning или hyperparameter optimization (HPO). Если коротко: вы не «учите» гиперпараметры внутри модели, а сравниваете несколько конфигураций и оставляете ту, что лучше работает по вашей метрике.
Английский термин: hyperparameters. В официальной документации также встречаются формы hyper-parameters, hyperparameter tuning и hyperparameter optimization.
Простыми словами
Грубо говоря, гиперпараметры — это ручки настройки до старта эксперимента. Можно представить их как режим духовки перед выпечкой: температуру и время вы задаёте заранее, а вот сам результат появляется уже в процессе.
Аналогия неполная, но полезная: рецепт не извлекает температуру «из теста», так же и модель не получает гиперпараметры напрямую из данных. Их выбираете вы или внешний инструмент подбора.
Как это работает
В практических пайплайнах гиперпараметры лежат вне самой процедуры fit. Сначала вы задаёте модель и пространство поиска, затем выбираете метод подбора, запускаете серию обучений и сравниваете результаты.
Модель/estimator
↓
Гиперпараметры или пространство поиска
↓
Алгоритм подбора
(GridSearchCV / RandomizedSearchCV /
Random Search / Bayesian Optimization / Hyperband)
↓
Повторяющиеся запуски обучения и оценки
↓
Сравнение метрик
↓
Лучшая конфигурация для дальнейшей работы
- Задать модель. В scikit-learn гиперпараметры не обучаются внутри estimator и передаются как аргументы конструктора.
- Описать пространство поиска. В Optuna это можно сделать прямо в Python через
suggest_categorical,suggest_intиsuggest_float; в KerasTuner для этого есть контейнерHyperParameters. - Выбрать стратегию поиска. В scikit-learn для этого есть
GridSearchCVиRandomizedSearchCV. KerasTuner поддерживает Random Search, Bayesian Optimization и Hyperband. В Ray Tune workflow отдельно включает пространство поиска, search algorithm, опциональный scheduler, запускTunerи анализResultGrid; если search algorithm не задан, по умолчанию используется random search. - Сравнить конфигурации. Смысл HPO в том, чтобы выбрать не «красивые» числа, а набор настроек, который даёт лучший результат в вашей постановке.
Два часто встречающихся подхода заслуживают отдельного упоминания. В статье Practical Bayesian Optimization of Machine Learning Algorithms автоматическая настройка гиперпараметров описывается через Bayesian optimization с Gaussian process. В статье про Hyperband подбор формулируется как bandit-based adaptive resource allocation с early stopping.
Где применяется
- В scikit-learn-проектах — когда вы хотите системно сравнить конфигурации estimator через
GridSearchCVилиRandomizedSearchCV, а не менять числа вручную. - В Keras/TensorFlow — когда нужен официальный путь для tuning внутри экосистемы Keras. FAQ Keras прямо рекомендует KerasTuner.
- В Python-first экспериментах — когда пространство поиска удобнее описывать кодом. Для этого часто берут Optuna с Pythonic search space.
- В масштабируемых запусках — когда нужно тюнить много экспериментов на разных фреймворках. Ray Tune описан как библиотека Python для выполнения экспериментов и hyperparameter tuning «at any scale» и показывает интеграции с PyTorch, XGBoost, TensorFlow и Keras.
Та же логика встречается при обучении генеративных моделей и на этапах претрейнинга: сначала фиксируют конфигурацию запуска, затем сравнивают результаты между экспериментами.
Практический пример
Ниже — минимальная схема пространства поиска в стиле Optuna. Это не полный pipeline, а компактный пример того, как гиперпараметры описывают прямо в Python-коде.
def objective(trial):
model_type = trial.suggest_categorical('model_type', ['linear', 'tree'])
depth = trial.suggest_int('depth', 2, 12, step=2)
regularization = trial.suggest_float('regularization', 1e-5, 1e-1, log=True)
# 1) соберите модель из выбранной конфигурации
# 2) обучите её на train
# 3) верните метрику на validation
return validation_score
Что здесь важно на практике:
suggest_categoricalзадаёт выбор из фиксированных вариантов.suggest_intзадаёт целочисленный диапазон, при необходимости с шагом.suggest_floatзадаёт вещественный диапазон; документация Optuna отдельно показывает поддержку логарифмической шкалы.
Если вам не нужен Pythonic search space, а нужен более прямой перебор для estimator из scikit-learn, обычно начинают с GridSearchCV или RandomizedSearchCV. Если вы уже живёте в Keras, логично сначала проверить возможности KerasTuner, где поиск строится вокруг HyperParameters, Tuners, Oracles и HyperModels.
Чем отличается от…
| Термин | Что это | Когда задаётся | Обучается из данных |
|---|---|---|---|
| Гиперпараметры | Внешние настройки модели и процесса обучения | Обычно до запуска обучения или между экспериментами | Обычно нет |
| Параметры модели / веса | Внутренние значения модели | Появляются в ходе обучения | Да |
| Пространство поиска | Набор допустимых значений для гиперпараметров | До запуска HPO | Нет, это описание вариантов |
| Алгоритм подбора | Способ выбирать конфигурации: grid, random, Bayesian Optimization, Hyperband | До запуска HPO | Нет, это стратегия поиска |
Самая частая путаница — между гиперпараметрами и обучаемыми параметрами модели. Если коротко: гиперпараметры вы задаёте снаружи, а веса модель получает в процессе обучения.
Ограничения и заблуждения
- Заблуждение: «гиперпараметры — это и есть веса модели». Нет. Это разные сущности: веса и другие параметры модели возникают в ходе обучения, а гиперпараметры задаются извне.
- Заблуждение: «модель сама обучит и гиперпараметры тоже». В документации scikit-learn это прямо разделено: гиперпараметры не обучаются внутри estimator, для их подбора используются отдельные процедуры и инструменты.
- Заблуждение: «есть один лучший метод подбора». В реальной практике инструменты предлагают разные стратегии: от grid/random search до Bayesian Optimization и Hyperband. Выбор метода зависит не от моды, а от вашего search space и вычислительного бюджета.
- Ограничение сложных методов. Hyperband — это adaptive resource allocation с early stopping, а Bayesian optimization в классической работе описывается через Gaussian process. Оба подхода полезны, но это не замена ясной постановке задачи и корректной оценке качества.
- Редакционное ограничение. Актуальность версии у open-source HPO-инструментов нужно перепроверять перед внедрением. На 2026-08-16 у Ray в доступных источниках есть расхождение между последней видимой версией на PyPI и страницей GitHub releases, поэтому здесь безопаснее ссылаться на официальную документацию Ray Tune, а не на одну «финальную» цифру версии.
Практический вердикт. Если вы работаете внутри Keras/TensorFlow, начните с KerasTuner: его рекомендует сам Keras. Если нужен гибкий Python-first подход с search space в коде, обычно удобнее Optuna. Если вы запускаете много распределённых экспериментов на разных фреймворках, смотрите Ray Tune, но учитывайте более тяжёлую конфигурацию runtime.
Связанные термины и инструменты
Чтобы не смешивать темы, полезно отдельно посмотреть интерпретируемость: лучшая метрика после tuning не делает модель автоматически понятнее. Для более широкого контекста пригодится и материал про генеративный ИИ.
Из инструментов на 2026-08-16 можно быстро ориентироваться так: PyPI указывает KerasTuner 1.4.8 (релиз 2025-11-11; Python 3.8+ и TensorFlow 2.0+) и Optuna 4.9.0 (релиз 2026-06-01). Для Ray Tune лучше проверять актуальный пакет отдельно из-за расхождения версий между источниками.
- KerasTuner — для Keras-ориентированного tuning с Random Search, Bayesian Optimization и Hyperband.
- Optuna — для гибкого define-by-run и search space в Python.
- Ray Tune — для масштабируемого и распределённого hyperparameter tuning.
Источники
- Efficient Optimization Algorithms — Optuna 5.0.0.dev documentation
- GitHub – optuna/optuna: A hyperparameter optimization framework · GitHub
- Releases · optuna/optuna
- Getting Started with Ray Tune — Ray 2.55.1
- ray.tune.Tuner — Ray 2.56.0
- ray · PyPI
- GitHub – ray-project/ray: Ray is an AI compute engine. Ray consists of a core distributed runtime and a set of AI Libraries for accelerating ML workloads. · GitHub
- Releases · ray-project/ray
- Hyperband: A Novel Bandit-Based Approach to Hyperparameter Optimization
- Practical Bayesian Optimization of Machine Learning Algorithms
- Glossary of Common Terms and API Elements — scikit-learn 1.9.0 documentation
- 3.2. Tuning the hyper-parameters of an estimator — scikit-learn 1.5.2 documentation
- Keras FAQ
- KerasTuner API documentation
- keras-tuner · PyPI
- Pythonic Search Space — Optuna 4.9.0 documentation
- optuna · PyPI
- Ray Tune: Hyperparameter Tuning — Ray documentation
- Key Concepts of Ray Tune — Ray documentation
- Hyperband: A Novel Bandit-Based Approach to Hyperparameter Optimization
- Practical Bayesian Optimization of Machine Learning Algorithms
Вопросы и ответы
Гиперпараметры и параметры модели — это одно и то же?
Нет. Гиперпараметры задаются извне и обычно не обучаются напрямую из данных, а параметры модели и веса возникают в ходе обучения.
Когда задают гиперпараметры: только до обучения?
Обычно их задают до запуска конкретного обучения, но в процессе серии экспериментов вы можете менять их между запусками. Суть остаётся той же: это внешние настройки, а не значения, которые estimator сам извлекает из данных.
Что выбрать для начала: GridSearchCV, KerasTuner, Optuna или Ray Tune?
Если вы в scikit-learn, старт обычно простой: GridSearchCV или RandomizedSearchCV. В Keras официальный путь — KerasTuner. Для гибкого Pythonic search space часто выбирают Optuna. Для масштабируемых распределённых экспериментов — Ray Tune.
Bayesian optimization нужен всегда?
Нет. Это один из методов HPO. Официальные инструменты также поддерживают grid/random search, а KerasTuner — ещё и Hyperband. Выбирать метод стоит по сложности задачи и вычислительному бюджету.