Введение
В части 1 этой серии статей мы рассмотрели основы оптимизации с участием человека в цикле (HITL). Мы поняли, как можно использовать человеческий интеллект для улучшения машинного обучения. В этой статье мы углубимся в практические аспекты HITL-оптимизации с использованием популярной библиотеки Optuna.
Optuna: библиотека HITL-оптимизации
Optuna — это библиотека с открытым исходным кодом для глубокого обучения и оптимизации гиперпараметров, которая поддерживает HITL-оптимизацию. Она предоставляет удобный интерфейс для определения пространства поиска, выполнения исследований и сбора информации от человека.
Интеграция Optuna с циклом HITL
Чтобы интегрировать Optuna с циклом HITL, необходимо выполнить следующие шаги:
Определить пространство поиска: Определите диапазон значений для гиперпараметров, которые необходимо оптимизировать. Optuna поддерживает различные типы пространств, такие как логарифмическое распределение, равномерное распределение и нормальное распределение.
Создать исследование: Создайте объект Study
в Optuna, который будет служить контейнером для всех итераций оптимизации. Исследование можно использовать для отслеживания истории оптимизации, хранения лучшего решения и сбора отзывов человека.
Выполнить исследование: Используйте метод suggest
в объекте Study
, чтобы предложить набор гиперпараметров для оценки. В зависимости от стратегии оптимизации Optuna выберет следующее множество гиперпараметров на основе предыдущих оценок и отзывов человека.
Оценить предложения: Оцените производительность модели, используя предложенные гиперпараметры, и соберите отзывы человека о результатах. Отзывы могут быть в виде числовой оценки, категориальной оценки или текстовых комментариев.
Обновить исследование: На основе отзывов человека обновите исследование новыми данными об оценке и отзывами. Optuna использует эти данные для адаптации стратегии оптимизации и улучшения предложений в будущем.
Пример использования Optuna для HITL-оптимизации
Рассмотрим следующий пример кода Python, который демонстрирует использование Optuna для HITL-оптимизации модели классификации:
import optuna
# Определить пространство поиска
space = {
'learning_rate': optuna.distributions.LogUniformDistribution(1e-4, 1e-1),
'batch_size': optuna.distributions.IntUniformDistribution(16, 128),
'num_hidden_layers': optuna.distributions.IntUniformDistribution(1, 3)
}
# Создать исследование
study = optuna.create_study(directions=['maximize'])
# Выполнить исследование
for iteration in range(10):
# Предложить набор гиперпараметров
params = study.suggest(space)
# Оценить модель
accuracy = evaluate_model(params)
# Получить отзыв человека
human_feedback = get_human_feedback()
# Обновить исследование
study.tell(params, accuracy, human_feedback)
# Получить лучшее решение
best_params = study.best_params
Заключение
Интеграция HITL-оптимизации в процесс машинного обучения может значительно улучшить производительность модели. Optuna предоставляет мощную платформу для поддержки HITL-оптимизации, позволяя исследователям сочетать сильные стороны как человека, так и машины. В этой статье мы рассмотрели практические аспекты использования Optuna для HITL-оптимизации, что дает исследователям базовые знания для внедрения этого подхода в свои собственные проекты.