Добавить в корзинуПозвонить
Найти в Дзене
Nuances of programming

3 простых шага для оптимизации гиперпараметров в любом Python-скрипте

Итак, вы написали Python-скрипт, который обучает и оценивает модель машинного обучения. И теперь вам хочется оптимизировать гиперпараметры и повысить производительность модели.
Я помогу!
Оглавление

Источник: Nuances of Programming

Итак, вы написали Python-скрипт, который обучает и оценивает модель машинного обучения. И теперь вам хочется оптимизировать гиперпараметры и повысить производительность модели.

Я помогу!

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

Гиперпараметры -> целевая функция train_evaluate.py -> оценка
Гиперпараметры -> целевая функция train_evaluate.py -> оценка

Весь процесс состоит из 3 шагов, изучив которые вы научитесь оптимизировать параметры моделей так, как будто знали это всегда.

Готовы?

Поехали!

Полагаю, ваш скрипт main.py выглядит примерно так:

Шаг 1: отделяем параметры поиска от кода

Возьмите параметры, которые хотите оптимизировать, и поместите их в словарь в начало скрипта. Это действие позволит вам эффективно отделить параметры поиска от остального кода.

Шаг 2: заворачиваем логику обучения и оценки в функцию

Теперь вы можете поместить всю логику обучения и оценки внутрь функции train_evaluate. Эта функция принимает параметры на вход, а на выходе выдает результат проверки.

Шаг 3: запускаем скрипт оптимизации гиперпараметров

Осталось совсем немного.

Теперь мы используем train_evaluate в качестве цели в любой библиотеке оптимизации неизвестной функции («черного ящика»).

Я предпочитаю Scikit Optimize, но вы можете выбрать другую библиотеку.

Процедура следующая:

  • задаем область поиска SPACE;
  • создаем целевую функцию objective для минимизации;
  • запускаем оптимизацию через функцию forest_minimize.

В данном примере я опробую 100 различных конфигураций и начну с 10 случайно выбранных наборов параметров.

Вот и все.

Объект results содержит информацию о лучшей оценке и комбинации параметров для ее получения.

Примечание:

Если вы хотите визуализировать процесс обучения, а затем сохранить диагностические диаграммы, то добавьте обратный вызов и вызов функции, которые будут записывать каждый поиск значения гиперпараметра в Neptune. С этим вам поможет вспомогательная функция из библиотеки neptune-contrib.

Теперь при запуске вариации параметров вы увидите следующее:

-3

Посмотреть весь код, графики и результаты можно в эксперименте skopt по вариации гиперпараметров.

Заключение

В данной статье вы научились оптимизировать гиперпараметры любого Python-скрипта в 3 шага.

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

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

Читайте нас в телеграмме и vk

Перевод статьи Jakub Czakon:How to Do Hyperparameter Tuning on Any Python Script in 3 Easy Steps