Оптимизация гиперпараметров - Hyperparameter optimization

В машинном обучении , оптимизация гиперпараметр или настройка является проблемой выбора набора оптимальных гиперпараметров для алгоритма обучения. Гиперпараметр - это параметр , значение которого используется для управления процессом обучения. Напротив, значения других параметров (обычно веса узлов) изучаются.

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

Подходы

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

Поиск по сетке

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

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

Например, типичный SVM- классификатор с мягкими границами, оснащенный ядром RBF, имеет как минимум два гиперпараметра, которые необходимо настроить для хорошей производительности с невидимыми данными: константа регуляризации C и гиперпараметр ядра γ. Оба параметра являются непрерывными, поэтому для выполнения поиска по сетке выбирается конечный набор «разумных» значений для каждого, скажем

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

Поиск по сетке страдает проклятием размерности , но часто до неловкости параллелен, потому что настройки гиперпараметров, которые он оценивает, обычно не зависят друг от друга.

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

Случайный поиск

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

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

Байесовская оптимизация

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

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

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

Другой подход к получению градиента относительно гиперпараметров состоит в дифференцировании шагов итеративного алгоритма оптимизации с использованием автоматического дифференцирования .

Эволюционная оптимизация

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

  1. Создайте начальную совокупность случайных решений (т. Е. Случайным образом сгенерируйте кортежи гиперпараметров, обычно 100+)
  2. Оцените кортежи гиперпараметров и получите их функцию пригодности (например, 10-кратную точность перекрестной проверки алгоритма машинного обучения с этими гиперпараметрами)
  3. Ранжируйте кортежи гиперпараметров по их относительной пригодности
  4. Заменить кортежи гиперпараметров с наихудшими показателями новыми кортежами гиперпараметров, созданными посредством кроссовера и мутации.
  5. Повторяйте шаги 2-4 до тех пор, пока не будет достигнута удовлетворительная производительность алгоритма или пока производительность алгоритма не перестанет улучшаться.

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

На основе населения

Обучение на основе населения (PBT) изучает как значения гиперпараметров, так и веса сети. Несколько процессов обучения работают независимо, используя разные гиперпараметры. Как и в случае с эволюционными методами, плохо работающие модели итеративно заменяются моделями, которые принимают модифицированные значения гиперпараметров и веса на основе лучших исполнителей. Эта замещающая модель теплого пуска является основным отличием PBT от других эволюционных методов. Таким образом, PBT позволяет гиперпараметрам развиваться и устраняет необходимость в ручной настройке. Процесс не делает никаких предположений относительно архитектуры модели, функций потерь или процедур обучения.

PBT и его варианты являются адаптивными методами: они обновляют гиперпараметры во время обучения моделей. Напротив, неадаптивные методы имеют неоптимальную стратегию назначения постоянного набора гиперпараметров для всего обучения.

На основе ранней остановки

Класс алгоритмов оптимизации гиперпараметров на основе ранней остановки специально создан для больших пространств поиска непрерывных и дискретных гиперпараметров, особенно когда вычислительные затраты для оценки производительности набора гиперпараметров высоки. Irace реализует повторяющийся гоночный алгоритм, который фокусирует поиск вокруг наиболее многообещающих конфигураций, используя статистические тесты, чтобы отбросить те, которые работают плохо. Другой алгоритм оптимизации гиперпараметров на ранней стадии - это последовательное сокращение вдвое (SHA), которое начинается как случайный поиск, но периодически сокращает малоэффективные модели, тем самым фокусируя вычислительные ресурсы на более перспективных моделях. Асинхронное последовательное сокращение вдвое (ASHA) дополнительно улучшает профиль использования ресурсов SHA, устраняя необходимость синхронной оценки и сокращения низкопроизводительных моделей. Hyperband - это алгоритм более высокого уровня, основанный на ранней остановке, который вызывает SHA или ASHA несколько раз с различными уровнями агрессивности отсечения, чтобы иметь более широкое применение и с меньшим количеством требуемых входных данных.

Другие

Также были разработаны RBF и спектральный подходы.

Программное обеспечение с открытым исходным кодом

Поиск по сетке

  • Определено , платформа обучения DL включает поиск по сетке для моделей PyTorch и TensorFlow (Keras и Estimator).
  • H2O AutoML обеспечивает поиск по сетке по алгоритмам в библиотеке машинного обучения с открытым исходным кодом H2O.
  • Катиб система Kubernetes-носителей , которые включают в себя поиск сетки.
  • scikit-learn - это пакет Python, который включает поиск по сетке .
  • Талос включает поиск по сетке для Кераса .
  • Tune - это библиотека Python для настройки распределенных гиперпараметров и поддерживает поиск по сетке.

Случайный поиск

  • Determined - это платформа обучения DL, которая поддерживает случайный поиск моделей PyTorch и TensorFlow (Keras и Estimator).
  • Hyperopt , также через hyperas и hyperopt-sklearn , - это пакеты Python, которые включают случайный поиск.
  • Катиб является Kubernetes-нативной системой , которая включает в себя случайный поиск.
  • scikit-learn - это пакет Python, который включает случайный поиск.
  • caret - это пакет R, который включает сетку и случайный поиск.
  • Талос включает настраиваемый случайный поиск Кераса .
  • Tune - это библиотека Python для настройки распределенных гиперпараметров, которая поддерживает случайный поиск по произвольным распределениям параметров.

Байесовский

  • Auto-sklearn - это слой оптимизации байесовских гиперпараметров поверх scikit-learn .
  • Axe - это платформа для экспериментов на Python, которая поддерживает байесовскую оптимизацию и оптимизацию бандитов в качестве исследовательских стратегий.
  • BOCS - это пакет Matlab, который использует полуопределенное программирование для минимизации функции черного ящика над дискретными входами. Также включена реализация Python 3.
  • HpBandSter - это пакет Python, который сочетает байесовскую оптимизацию с методами, основанными на бандитах .
  • Катиб является Kubernetes-нативной системой , которая включает в себя Байесовскую оптимизацию.
  • mlrMBO , также с mlr , представляет собой пакет R для основанной на модели / байесовской оптимизации функций черного ящика.
  • optuna - это пакет Python для оптимизации черного ящика, совместимый с произвольными функциями, которые необходимо оптимизировать.
  • scikit-optimize - это пакет Python или последовательная оптимизация на основе модели с интерфейсом scipy.optimize.
  • SMAC SMAC - это библиотека Python / Java, реализующая байесовскую оптимизацию.
  • tuneRanger - это пакет R для настройки случайных лесов с использованием оптимизации на основе модели.

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

  • FAR-HO - это пакет Python, содержащий реализации и оболочки Tensorflow для оптимизации гиперпараметров на основе градиента с алгоритмической дифференциацией в прямом и обратном режимах.
  • XGBoost - это программная библиотека с открытым исходным кодом, которая обеспечивает структуру повышения градиента для C ++, Java, Python, R и Julia.

Эволюционный

  • ОЭАП является рамочным Python для общего эволюционного вычисления , который является гибким и интегрируется с распараллеливания пакетами , как совок и pyspark и других структур Python , как sklearn через sklearn-ОЭАП .
  • Determined - это платформа обучения DL, которая поддерживает PBT для оптимизации моделей PyTorch и TensorFlow (Keras и Estimator).
  • devol - это пакет Python, который выполняет поиск архитектуры глубокой нейронной сети с использованием генетического программирования .
  • nevergrad - это пакет Python, который включает Differential_evolution , Evolution_strategy , Bayesian_optimization , методы контроля численности для шумного случая и Particle_swarm_optimization .
  • Tune - это библиотека Python для настройки распределенных гиперпараметров, которая использует nevergrad для поддержки эволюционных алгоритмов.

Ранняя остановка

  • Determined - это платформа обучения DL, которая поддерживает Hyperband для моделей PyTorch и TensorFlow (Keras и Estimator).
  • irace - это пакет R, который реализует повторяющийся гоночный алгоритм.
  • Катиб система Kubernetes-носителей , которая включает гиперполосную.

Другой

  • Determined - это обучающая платформа DL, которая поддерживает случайный, сеточный, PBT, Hyperband и NAS подходы к оптимизации гиперпараметров для моделей PyTorch и TensorFlow (Keras и Estimator).
  • dlib - это пакет C ++ с API Python, в котором есть оптимизатор без параметров, основанный на LIPO, и оптимизаторы доверенной области, работающие в тандеме.
  • Harmonica - это пакет Python для оптимизации спектральных гиперпараметров.
  • Hyperopt , также через hyperas и hyperopt-sklearn , представляют собой пакеты Python, которые включают оптимизацию распределенных гиперпараметров на основе Tree of Parzen Estimators .
  • Катиб является Kubernetes родной системы , которая включает в себя сетку, случайный поиск, Байесовский оптимизация, гиперполосный и NAS на основе обучения с подкреплением.
  • nevergrad - это пакет Python для оптимизации без градиента, использующий такие методы, как дифференциальная эволюция, последовательное квадратичное программирование, fastGA, адаптация ковариационной матрицы, методы контроля населения и оптимизация роя частиц.
  • Neural Network Intelligence (NNI) - это пакет Python, который включает настройку гиперпараметров для нейронных сетей в локальных и распределенных средах. Его методы включают TPE, случайный, отжиг, эволюцию, SMAC, пакетный, сеточный и гиперполосный.
  • параметр-sherpa - аналогичный пакет Python, который включает несколько методов поиска по сетке, байесовскую и генетическую оптимизацию.
  • photonai - это высокоуровневый Python API для проектирования и оптимизации конвейеров машинного обучения на основе сетки, случайного поиска и байесовской оптимизации.
  • pycma - это реализация Python стратегии эволюции адаптации ковариационной матрицы .
  • rbfopt представляет собой пакет Python , который использует функцию радиального базиса модели
  • Tune - это библиотека Python для выполнения настройки гиперпараметров, которая интегрирует / масштабирует многие существующие библиотеки оптимизации гиперпараметров, такие как hyperopt , nevergrad и scikit-optimize .

Коммерческие услуги

  • Amazon Sagemaker использует гауссовские процессы для настройки гиперпараметров.
  • BigML OptiML поддерживает смешанные поисковые домены
  • Google HyperTune поддерживает смешанные поисковые домены
  • Indie Solver поддерживает многокритериальную оптимизацию, а также оптимизацию ограничений.
  • Mind Foundry OPTaaS поддерживает смешанные домены поиска, многоцелевые, ограничения, параллельную оптимизацию и суррогатные модели.
  • SigOpt поддерживает домены смешанного поиска, многоцелевые, мультирешения, множественность, ограничения (линейные и черные ящики) и параллельную оптимизацию.

Смотрите также

использованная литература