A hyperparameter optimization framework – Optuna
Из названия все ясно. Лучшая утилита для оптимизации гиперпараметров вашей модели или нет? Многие перескакивает с метода подбора параметров GridSearch/Random из scikit-learn и постепенно переходят на библиотеку Optuna со своими решениями.
Почему?
Обычный GridSearch – примитивное перебирание по сетке, где мы смотрим только на качество решаемой задачи по accuracy, cross-entropy, mse. Экспоненциальный перебор всех узлов сетки параметров зависит напрямую от подаваемых координат.
Очевидно, простой "перебор" – подход зачастую крайне ресурсоемкий. А вот Random'изированный показывает лучший результат, так как подбирает случайные комбинации и сэмплирует результаты… Но что если строить вероятностные модели выборки гиперпараметров?
Optuna и работает по этому принципу — байесовской оптимизации GP или Tree-structured Parzen Estimator (TPE). Чем лучше TPE в сравнении с всякими серчами переборов? Он предполагает вероятностные модели и исходит из прогнозируемой эффективности модели.
Как видно, такой подход выглядит избирательнее и зачастую приводит к лучшим результатам. Особенно, в скорости: TPE работает в три раза быстрее, чем обычный сеточный перебор. В Optuna, помимо классических серчей, есть простые байесовские алгоритмы и возможность прунинга пространства гиперпараметров и даже CMA-ES, иначе генетические алгоритмы, о которых вы узнаете в конце курса.
Какие ещё преимущества у этого фреймворка?
У Optuna хорошая документация. Хотя и не слишком очевидно на старте, какие алгоритмы реализованы в библиотеке.
Есть Define-by-run, при помощи которого можно динамически описывать пространство параметров во время работы оптимизировать.
Можно явно задавать максимизацию или минимизацию функции качества.