Инструмент автоматизации HPO, который сэкономит ваше время и нервы

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

Чтобы обуздать этот небольшой экзистенциальный кризис, я поставил перед собой задачу изучить и изучить один (всего один) инструмент, отвечающий моим интересам. И вот тогда я приземлился на Optuna — фреймворк для оптимизации гиперпараметров, который, говоря простым языком, автоматизирует процесс выбора лучших гиперпараметров для вашей модели для получения желаемых результатов. Если это предложение не имело для вас смысла, я разделяю (или скорее *разделяю) вашу боль. После обширного чтения и понимания инструмента и его возможностей я представляю вам свое понимание Optuna.

Для начала давайте пройдемся по соответствующей терминологии.

Что такое гиперпараметр?

Гиперпараметры управляют поведением алгоритмов и моделей машинного обучения, определяя значения параметров модели, которые алгоритм в конечном итоге изучает. Думайте о них как о параметрах самого высокого уровня/верхней части, которые определяют значения параметров модели, вытекающие из него. Как правило, инженер-конструктор модели придумывает гиперпараметры для обучения модели. Этот процесс имеет решающее значение для успеха модели и требует тонны ручной тонкой настройки и повторения для правильной реализации, что приводит к тому, что инженер тратит много времени и творчества. Без соответствующих гиперпараметров, например, с помощью обнаружения объектов, модель не сможет правильно распознавать объект снова и снова.

Оптимизация гиперпараметров и ее ранние ограничения

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

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

  1. Ресурсоемкий — для запуска большого количества тестов требуются значительные вычислительные ресурсы.
  2. Не оптимально — поскольку значения-кандидаты устанавливаются людьми, могут быть более оптимальные гиперпараметры, которые они не устанавливали и, следовательно, даже не оценивались моделью.
  3. Отнимает много времени — установка гиперпараметров, тестирование, оценка, настройка гиперпараметров, тестирование, оценка, повторение… догадки и проверки — неэффективная стратегия.

Вот где Optuna приходит, чтобы спасти положение.

Что такое Оптуна?

Optuna — это платформа оптимизации гиперпараметров (HPO) с открытым исходным кодом, предназначенная для автоматизации поиска гиперпараметров в алгоритмах и моделях машинного обучения. Созданная Такуей Акибой в 2019 году, его структура опирается на три фундаментальных критерия: API-интерфейс определения при запуске, который позволяет пользователю гибко реализовывать пространства поиска, эффективную реализацию с использованием самых современных алгоритмов, лежащих в основе функциональности, и простоту. - подход к настройке, ориентированный на удобство использования в небольших и крупномасштабных экспериментах, а также на распараллеливание множественных поисков. Optuna также не зависит от фреймворка и предназначена для простой интеграции с любой из ваших любимых платформ машинного обучения и глубокого обучения, таких как TensorFlow, PyTorch, Scikit-Learn, Keras и т. д.

1. Определение путем выполнения

Большинство существующих фреймворков машинного обучения основаны на стратегии «Определи и запусти». Сеть определяется и фиксируется пользователем, а затем пользователь запускает и повторно запускает модель с обучающими данными. Сеть статически определена и встроена в сетевую архитектуру.

Optuna использует более эффективный подход, используя стратегию «Определение путем запуска». С их API-интерфейсом определения за запуском пользователю не нужно ничего определять в сети. Optuna систематизирует оптимизацию гиперпараметров, уделяя особое внимание минимизации (или максимизации) заданной целевой функции. Это дает пользователям исключительную модульность при написании сценариев кода с помощью Optuna, позволяя им динамически составлять области поиска для гиперпараметров.

2. Современные алгоритмы

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

3. Простота настройки

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

Основное использование

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

# Install optuna
!pip install optuna
# Import optuna
import optuna
# Define objective function. During optimization, Optuna repeats this function
def objective(trial): 
    
    '''Write your machine learning logic here!'''
    return evaluation_score 
study = optuna.create_study()
study.optimize(objective, n_trials=100) # Specify number of trials

Что такое целевая функция?

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

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

Заключение

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

Ресурсы: