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

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

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

Подходы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие

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

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

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

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

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

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

Байесовский

  • Авто-обучение[27] это слой оптимизации байесовского гиперпараметра поверх scikit-learn.
  • Топор[28] это платформа для экспериментов на основе Python, которая поддерживает байесовскую оптимизацию и оптимизацию бандитов в качестве исследовательских стратегий.
  • BOCS это пакет Matlab, который использует полуопределенное программирование для минимизации функции черного ящика над дискретными входами.[29] Также включена реализация Python 3.
  • HpBandSter - это пакет Python, который сочетает в себе байесовскую оптимизацию с методами, основанными на бандитах.[30]
  • Катиб - это собственная система Kubernetes, которая включает байесовскую оптимизацию.
  • mlrMBO, также с млр, является р пакет для оптимизации функций черного ящика на основе моделей / Байеса.
  • Optuna - это пакет Python для оптимизации черного ящика, совместимый с произвольными функциями, которые необходимо оптимизировать.
  • scikit-optimize представляет собой пакет Python или последовательную оптимизацию на основе модели с интерфейсом scipy.optimize.[31]
  • SMAC SMAC - это библиотека Python / Java, реализующая байесовскую оптимизацию.[32]
  • tuneRanger представляет собой пакет R для настройки случайных лесов с использованием оптимизации на основе моделей.

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

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

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

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

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

Другой

  • Определенный - это платформа обучения DL, которая поддерживает подходы случайного, сеточного, PBT, Hyperband и NAS к оптимизации гиперпараметров для моделей PyTorch и TensorFlow (Keras и Estimator).
  • dlib[35] представляет собой пакет C ++ с API Python, в котором есть оптимизатор без параметров, основанный на LIPO и регион доверия оптимизаторы работают в тандеме.[36]
  • Гармоника представляет собой пакет Python для оптимизации спектральных гиперпараметров.[26]
  • гиперопт, также через гиперы и гиперопт-склеарн, пакеты Python, которые включают Дерево оценщиков Парзена оптимизация распределенных гиперпараметров.
  • Катиб - это собственная система Kubernetes, которая включает сетку, случайный поиск, байесовскую оптимизацию, гиперполосу и NAS на основе обучения с подкреплением.
  • Nevergrad[33] представляет собой пакет Python для оптимизации без градиента с использованием таких методов, как дифференциальная эволюция, последовательное квадратичное программирование, fastGA, адаптация ковариационной матрицы, методы управления популяциями и оптимизация роя частиц.[34]
  • Интеллект нейронной сети (NNI) - это пакет Python, который включает настройку гиперпараметров для нейронных сетей в локальных и распределенных средах. Его методы включают TPE, случайный, отжиг, эволюцию, SMAC, пакетный, сеточный и гиперполосный.
  • параметр-шерпа - аналогичный пакет Python, который включает несколько методов поиска по сетке, байесовскую и генетическую оптимизацию.
  • фотонай представляет собой высокоуровневый API Python для проектирования и оптимизации конвейеров машинного обучения на основе сетки, случайного поиска и байесовской оптимизации.
  • пикма представляет собой реализацию Python Стратегия эволюции адаптации ковариационной матрицы.
  • rbfopt это пакет Python, который использует радиальная базисная функция модель[25]
  • Настроить представляет собой библиотеку Python для выполнения настройки гиперпараметров и интегрирует / масштабирует многие существующие библиотеки оптимизации гиперпараметров, такие как гиперопт, Nevergrad, и scikit-optimize.

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

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

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

Рекомендации

  1. ^ а б Claesen, Marc; Барт Де Мур (2015). «Поиск гиперпараметров в машинном обучении». arXiv:1502.02127 [cs.LG ].
  2. ^ а б c Бергстра, Джеймс; Бенжио, Йошуа (2012). «Случайный поиск для оптимизации гиперпараметров» (PDF). Журнал исследований в области машинного обучения. 13: 281–305.
  3. ^ Чин-Вэй Сю, Чжи-Чунг Чанг и Чи-Джен Линь (2010). Практическое руководство по классификации векторов. Технический отчет, Национальный Тайваньский университет.
  4. ^ Chicco D (декабрь 2017 г.). «Десять быстрых советов по машинному обучению в вычислительной биологии». BioData Mining. 10 (35): 35. Дои:10.1186 / s13040-017-0155-3. ЧВК  5721660. PMID  29234465.
  5. ^ Зию, Ван; Фрэнк, Хаттер; Масрур, Зоги; Дэвид, Мэтисон; Нандо, де Фейтас (2016). «Байесовская оптимизация в миллиард измерений с помощью случайных вложений». Журнал исследований искусственного интеллекта. 55: 361–387. arXiv:1301.1942. Дои:10.1613 / jair.4806.
  6. ^ Хаттер, Фрэнк; Хус, Хольгер; Лейтон-Браун, Кевин (2011), «Последовательная оптимизация на основе модели для общей конфигурации алгоритма» (PDF), Обучение и интеллектуальная оптимизация, Конспект лекций по информатике, 6683: 507–523, CiteSeerX  10.1.1.307.8813, Дои:10.1007/978-3-642-25566-3_40, ISBN  978-3-642-25565-6
  7. ^ а б c Бергстра, Джеймс; Барденет, Реми; Бенхио, Йошуа; Кегл, Балаж (2011), «Алгоритмы гиперпараметрической оптимизации» (PDF), Достижения в системах обработки нейронной информации
  8. ^ Снук, Джаспер; Ларошель, Хьюго; Адамс, Райан (2012). «Практическая байесовская оптимизация алгоритмов машинного обучения» (PDF). Достижения в системах обработки нейронной информации. arXiv:1206.2944. Bibcode:2012arXiv1206.2944S.
  9. ^ Торнтон, Крис; Хаттер, Фрэнк; Хус, Хольгер; Лейтон-Браун, Кевин (2013). «Авто-WEKA: Комбинированный выбор и гиперпараметрическая оптимизация алгоритмов классификации» (PDF). Обнаружение знаний и интеллектуальный анализ данных. arXiv:1208.3719. Bibcode:2012arXiv1208.3719T.
  10. ^ Ларсен, Ян; Хансен, Ларс Кай; Сварер, Клаус; Олссон, М. (1996). «Проектирование и регуляризация нейронных сетей: оптимальное использование валидационного набора» (PDF). Труды семинара Общества обработки сигналов IEEE 1996 г.: 62–71. CiteSeerX  10.1.1.415.3266. Дои:10.1109 / ННСП.1996.548336. ISBN  0-7803-3550-3.
  11. ^ Оливье Шапель; Владимир Вапник; Оливье Буске; Саян Мукерджи (2002). «Выбор нескольких параметров для опорных векторных машин» (PDF). Машинное обучение. 46: 131–159. Дои:10.1023 / а: 1012450327387.
  12. ^ Chuong B; Чуан-Шэн Фу; Эндрю И Нг (2008). «Эффективное обучение множеству гиперпараметров для лог-линейных моделей» (PDF). Достижения в системах обработки нейронной информации 20.
  13. ^ Домке, Джастин (2012). «Общие методы моделирования на основе оптимизации» (PDF). Аистатс. 22.
  14. ^ Маклорен, Дуглас; Дювено, Давид; Адамс, Райан П. (2015). «Оптимизация гиперпараметров на основе градиента посредством обратимого обучения». arXiv:1502.03492 [stat.ML ].
  15. ^ Франчески, Лука; Донини, Микеле; Фраскони, Паоло; Понтил, Массимилиано (2017). «Прямая и обратная гиперпараметрическая оптимизация на основе градиента» (PDF). Материалы 34-й Международной конференции по машинному обучению. arXiv:1703.01785. Bibcode:2017arXiv170301785F.
  16. ^ Мииккулайнен Р., Лян Дж., Мейерсон Э, Равал А., Финк Д., Франкон О, Раджу Б., Шахрзад Х., Наврузян А., Даффи Н., Ходжат Б. (2017). «Развивающиеся глубокие нейронные сети». arXiv:1703.00548 [cs.NE ].
  17. ^ Ядерберг М., Далибард В., Осиндеро С., Чарнецки В. М., Донахью Дж., Разави А., Виньялс О, Грин Т., Даннинг И., Симонян К., Фернандо С., Кавукчуоглу К. (2017). «Обучение нейронных сетей на основе популяции». arXiv:1711.09846 [cs.LG ].
  18. ^ Такой FP, Мадхаван В., Конти Е., Леман Дж., Стэнли К.О., Клун Дж. (2017). «Глубокая нейроэволюция: генетические алгоритмы - конкурентоспособная альтернатива для обучения глубоких нейронных сетей для обучения с подкреплением». arXiv:1712.06567 [cs.NE ].
  19. ^ Ли, Анг; Спайра, Ола; Перель, Саги; Далибард, Валентин; Ядерберг, Макс; Гу, Чэньцзе; Бадден, Дэвид; Харли, Тим; Гупта, Прамод (05.02.2019). «Обобщенная структура для обучения населения». arXiv:1902.01894 [cs.AI ].
  20. ^ а б Лопес-Ибаньес, Мануэль; Дюбуа-Лакост, Жереми; Перес Касерес, Лесли; Штюцле, Томас; Бираттари, Мауро (2016). «Пакет irace: повторяющиеся гонки для автоматической настройки алгоритма». Перспективы исследования операций (3): 43–58. Дои:10.1016 / j.orp.2016.09.002.
  21. ^ а б Бираттари, Мауро; Штюцле, Томас; Пакете, Луис; Варрентрапп, Клаус (2002). «Гоночный алгоритм для настройки метаэвристики». GECCO 2002: 11–18.
  22. ^ Джеймисон, Кевин; Талвалкар, Амит (27 февраля 2015 г.). «Нестохастическая идентификация наилучшего плеча и оптимизация гиперпараметров». arXiv:1502.07943 [cs.LG ].
  23. ^ Ли, Лиам; Джеймисон, Кевин; Ростамизаде, Афшин; Гонина, Екатерина; Хардт, Мориц; Рехт, Бенджамин; Талвалкар, Амит (16 марта 2020 г.). «Система для массовой параллельной настройки гиперпараметров». arXiv:1810.05934v5.
  24. ^ Ли, Лиша; Джеймисон, Кевин; ДеСальво, Джулия; Ростамизаде, Афшин; Талвалкар, Амит (16 марта 2020 г.). "Hyperband: новый бандитский подход к оптимизации гиперпараметров". arXiv:1603.06560v4.
  25. ^ а б Диас, Гонсало; Фокуэ, Ахилл; Нанничини, Джакомо; Самуловиц, Хорст (2017). «Эффективный алгоритм гиперпараметрической оптимизации нейронных сетей». arXiv:1705.08520 [cs.AI ].
  26. ^ а б Хазан, Элад; Кливанс, Адам; Юань, Ян (2017). «Оптимизация гиперпараметров: спектральный подход». arXiv:1706.00764 [cs.LG ].
  27. ^ Ферер М., Кляйн А., Эггенспергер К., Спрингенберг Дж., Блюм М., Хаттер Ф (2015). «Эффективное и надежное автоматизированное машинное обучение». Достижения в системах обработки нейронной информации 28 (NIPS 2015): 2962–2970.
  28. ^ «Открытый исходный код Axe и BoTorch: новые инструменты искусственного интеллекта для адаптивных экспериментов». 2019.
  29. ^ Баптиста, Рикардо; Полочек, Маттиас (2018). «Байесовская оптимизация комбинаторных структур». arXiv:1806.08838 [stat.ML ].
  30. ^ Фолкнер, Стефан; Кляйн, Аарон; Хаттер, Фрэнк (2018). «BOHB: надежная и эффективная оптимизация гиперпараметров в масштабе». arXiv:1807.01774 [stat.ML ].
  31. ^ "документация skopt API". scikit-optimize.github.io.
  32. ^ Хаттер Ф., Хус Х. Х., Лейтон-Браун К. «Последовательная оптимизация на основе модели для общей конфигурации алгоритма» (PDF). Материалы конференции по обучению и интеллектуальной оптимизации (LION 5).
  33. ^ а б «[ВОПРОС] Как использовать для оптимизации гиперпараметров NN · Проблема №1 · facebookresearch / nevergrad». GitHub.
  34. ^ а б «Nevergrad: инструмент с открытым исходным кодом для оптимизации без производных». 20 декабря 2018.
  35. ^ «Набор инструментов для создания реальных приложений машинного обучения и анализа данных на C ++: davisking / dlib». 25 февраля 2019 г. - через GitHub.
  36. ^ Кинг, Дэвис. «Стоит использовать алгоритм глобальной оптимизации».