Часть реализации!

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

  • Оценка моделей машинного обучения
  • Введение в настройку гиперпараметров
  • Исчерпывающий поиск
  • Изучение байесовской оптимизации
  • Изучение эвристического поиска
  • Изучение многоцелевой оптимизации

В этой статье мы подробнее обсудим, как использовать несколько мощных пакетов для реализации всех обсуждавшихся методов настройки гиперпараметров в предыдущей части. Мы обсудим краткое изложение второго раздела книги Настройка гиперпараметров с помощью Python, который состоит из 4 глав:

  • Глава 7. Настройка гиперпараметров с помощью scikit-learn
  • Глава 8. Настройка гиперпараметров с помощью Hyperopt
  • Глава 9. Настройка гиперпараметров с помощью Optuna
  • Глава 10. Расширенная настройка гиперпараметров с помощью DEAP и Microsoft NNI


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

Настройка гиперпараметров через scikit-learn

Scikit-learn (Sklearn) — один из пакетов Python, наиболее часто используемый специалистами по данным. Этот пакет предоставляет ряд модулей, связанных с машинным обучением (ML), готовых к использованию с минимальными усилиями, в том числе для задачи настройки гиперпараметров. Одним из основных преимуществ этого пакета является его согласованный интерфейс для многих реализованных классов, который нравится почти каждому специалисту по данным!

Помимо Sklearn, существуют и другие пакеты для задачи настройки гиперпараметров, которые построены поверх Sklearn или имитируют интерфейс Sklearn, например scikit-optimize и scikit-hyperband.

В этой главе мы узнаем обо всех важных вещах, связанных с scikit-learn, scikit-optimize и scikit-hyperband, а также о том, как использовать их для реализации методов настройки гиперпараметров, о которых мы узнали в предыдущих главах. . Мы узнаем, как реализовать следующие методы настройки гиперпараметров:

  • Поиск по сетке
  • Случайный поиск
  • Поиск от грубого к точному
  • Последовательный халвинг
  • Гипер группа
  • Байесовский оптимизационный гауссовский процесс
  • Случайный лес байесовской оптимизации
  • Деревья с байесовской оптимизацией с градиентным усилением

Мы начнем с того, как установить каждый из пакетов. Затем мы узнаем не только, как использовать эти пакеты с их конфигурациями по умолчанию, но и обсудим доступные конфигурации вместе с их использованием. Кроме того, мы обсудим, как реализация методов настройки гиперпараметров связана с теорией, которую мы изучили в предыдущих главах, поскольку в реализации могут быть некоторые незначительные отличия или корректировки.

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







Настройка гиперпараметров через Hyperopt

Hyperopt — это пакет оптимизации на Python, который предоставляет несколько реализаций методов настройки гиперпараметров, включая случайный поиск, имитацию отжига (SA), древовидные оценки Парзена (TPE) и адаптивную TPE (ATPE). Он также поддерживает различные типы гиперпараметров с различными типами распределения выборки.

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



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



Настройка гиперпараметров через Optuna

Optuna — это пакет Python, который предоставляет различные реализации методов настройки гиперпараметров, включая, помимо прочего, Grid Search, Random Search и Tree-Structured Parzen Estimators (TPE). Этот пакет также позволяет нам создать собственный класс метода настройки гиперпараметров и интегрировать его с другими популярными пакетами настройки гиперпараметров, такими как scikit-optimize.

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

  • Оценщики Парзена с древовидной структурой (TPE)
  • Случайный поиск
  • Поиск по сетке
  • Имитация отжига
  • Последовательный халвинг
  • Гипер группа

Optuna имеет два основных класса, а именно пробоотборники и секаторы. Сэмплеры отвечают за выполнение оптимизации настройки гиперпараметров, тогда как сокращатели отвечают за принятие решения о том, следует ли сокращать испытания на основе сообщаемых значений. Другими словами, секаторы действуют как методы ранней остановки, когда мы останавливаем итерацию настройки гиперпараметров всякий раз, когда кажется, что нет никакой дополнительной выгоды от продолжения процесса.

Стоит отметить, что реализация Succesive Halving и Hyper Band в Optuna отличается от реализации scikit. Здесь Optuna использует эти методы в качестве секатора, который будет поддерживать основной используемый метод настройки гиперпараметров — сэмплер.

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



Расширенная настройка гиперпараметров с помощью DEAP и Microsoft NNI

Распределенные эволюционные алгоритмы в Python (DEAP) и Microsoft NNI — это пакеты Python, которые предоставляют различные методы настройки гиперпараметров, не реализованные в других пакетах, которые мы обсуждали в главах 7–9, в том числе:

  • Генетический алгоритм
  • Оптимизация роя частиц
  • Метис
  • Конфигурация алгоритма последовательной модели (SMAC)
  • Гиперполоса байесовской оптимизации (BOHB)
  • Обучение населения

DEAP — это пакет Python, который позволяет вам реализовывать различные эволюционные алгоритмы, включая (но не ограничиваясь) генетический алгоритм (GA) и оптимизацию роя частиц (PSO). DEAP позволяет очень гибко создавать этапы оптимизации вашего эволюционного алгоритма.



Neural Network Intelligence (NNI) – это пакет, разработанный Microsoft, который можно использовать не только для задач настройки гиперпараметров, но и для поиска нейронной архитектуры, сжатия моделей,
и проектирования функций.



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

К концу этой главы вы сможете понять все важные вещи, которые вам нужно знать о DEAP и Microsoft NNI, и сможете реализовать различные методы настройки гиперпараметров, доступные в этих пакетах. Вы также сможете понять каждый из важных параметров классов и то, как они связаны с теорией, которую мы изучили в предыдущих главах. Наконец, вооружившись знаниями из предыдущих глав, вы также сможете понять,
что происходит, если возникнут ошибки или неожиданные результаты, и поймете, как настроить конфигурацию метода в соответствии с вашей конкретной проблемой.

Чего ждать от книги



Книга состоит из 14 глав, разделенных на 3 раздела. Эта книга охватывает все важные вещи, которые вам нужно знать о настройке гиперпараметров, начиная с концепций и теорий, реализаций и того, как применять их на практике. Наряду с подробными объяснениями того, как работает каждый метод, вы будете использовать карту решений, которая поможет вам определить лучший метод настройки для ваших требований. Книга также сопровождается реализацией кода, к которому вы можете получить свободный доступ на GitHub!



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

об авторе

Луис Оуэн — специалист по данным/инженер искусственного интеллекта из Индонезии, который всегда жаждет новых знаний. На протяжении всей своей карьеры он работал в различных областях промышленности, включая НПО, электронную коммерцию, диалоговый ИИ, OTA, Smart City и FinTech. Помимо работы, он любит проводить свое время, помогая энтузиастам науки о данных стать учеными данных, либо с помощью своих статей, либо посредством менторских сессий. Он также любит проводить свободное время, занимаясь своими хобби: просмотром фильмов и ведением побочных проектов.

В настоящее время Луис является инженером-исследователем НЛП в Yellow.ai, ведущей в мире платформе автоматизации CX. Посетите веб-сайт Луи, чтобы узнать о нем больше! Наконец, если у вас есть какие-либо вопросы или темы для обсуждения, свяжитесь с Луи через LinkedIn.