COMRAD404 / GLOSSARY

Гиперпараметры (Hyperparameters)

Hyperparameters

Гиперпараметры — это настройки модели и процесса обучения, которые обычно задают до запуска и не извлекают напрямую из данных. Разбираем, как их подбирать и не путать с весами.

TL;DR

Настройки модели и процесса обучения, которые обычно задают до обучения и не извлекают напрямую из данных.

Гиперпараметры (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)
        ↓
Повторяющиеся запуски обучения и оценки
        ↓
Сравнение метрик
        ↓
Лучшая конфигурация для дальнейшей работы
  1. Задать модель. В scikit-learn гиперпараметры не обучаются внутри estimator и передаются как аргументы конструктора.
  2. Описать пространство поиска. В Optuna это можно сделать прямо в Python через suggest_categorical, suggest_int и suggest_float; в KerasTuner для этого есть контейнер HyperParameters.
  3. Выбрать стратегию поиска. В scikit-learn для этого есть GridSearchCV и RandomizedSearchCV. KerasTuner поддерживает Random Search, Bayesian Optimization и Hyperband. В Ray Tune workflow отдельно включает пространство поиска, search algorithm, опциональный scheduler, запуск Tuner и анализ ResultGrid; если search algorithm не задан, по умолчанию используется random search.
  4. Сравнить конфигурации. Смысл 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.

Источники

Вопросы и ответы

Гиперпараметры и параметры модели — это одно и то же?

Нет. Гиперпараметры задаются извне и обычно не обучаются напрямую из данных, а параметры модели и веса возникают в ходе обучения.

Когда задают гиперпараметры: только до обучения?

Обычно их задают до запуска конкретного обучения, но в процессе серии экспериментов вы можете менять их между запусками. Суть остаётся той же: это внешние настройки, а не значения, которые 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. Выбирать метод стоит по сложности задачи и вычислительному бюджету.

Источники

SOURCES

Вопросы и ответы

FAQ
Гиперпараметры и параметры модели — это одно и то же?

Нет. Гиперпараметры задаются извне и обычно не обучаются напрямую из данных, а параметры модели и веса возникают в ходе обучения.

Когда задают гиперпараметры: только до обучения?

Обычно их задают до запуска конкретного обучения, но в серии экспериментов их можно менять между запусками. Это внешние настройки, а не значения, которые 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. Метод выбирают по сложности задачи и вычислительному бюджету.

Читайте также

LINKS