Оптимизация гиперпараметров — Википедия

Оптимизация гиперпараметров — задача машинного обучения по выбору набора оптимальных гиперпараметров для обучающего алгоритма.

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

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

Поиск по решётке

[править | править код]

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

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

Например, типичный классификатор с мягким зазором на основе метода опорных векторов (МОВ), оснащённый ядерной радиально-базисной функцией[англ.] имеет по меньшей мере два гиперпараметра, которые необходимо настроить для хорошей производительности на недоступных данных — константа C регуляризации и гиперпараметр ядра γ. Оба параметра являются непрерывными, так что для поиска по решётке выбирают конечный набор «приемлемых» значений, скажем

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

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

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

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

[править | править код]

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

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

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

[править | править код]

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

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

[править | править код]

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

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

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

[править | править код]

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

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

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

Развиваются также методы радиально-базисной функции (РБФ)[20] и спектральный метод[21].

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

[править | править код]

Поиск по решётке

[править | править код]

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

[править | править код]

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

[править | править код]

Основанные на градиенте

[править | править код]

Эволюционные методы

[править | править код]

Коммерческие сервисы

[править | править код]
  • BigML OptiML Архивная копия от 24 сентября 2020 на Wayback Machine поддерживает смешанные области поиска
  • Google HyperTune Архивная копия от 10 октября 2018 на Wayback Machine поддерживает смешанные области поиска
  • Indie Solver поддерживает многокритериальную и разнотипную оптимизацию и оптимизацию при ограничениях
  • SigOpt Архивная копия от 7 марта 2022 на Wayback Machine поддерживает смешанные области поиска, поддерживает многокритериальную и разнотипную оптимизацию и оптимизацию при ограничениях и параллельную оптимизацию.
  • Mind Foundry OPTaaS Архивная копия от 16 октября 2018 на Wayback Machine поддерживает смешанные области поиска, многокритериальную и параллельную оптимизацию, оптимизацию при ограничениях и суррогатные модели.

Примечания

[править | править код]
  1. 1 2 Claesen, Marc; Bart De Moor (2015). "Hyperparameter Search in Machine Learning". arXiv:1502.02127 [cs.LG].
  2. 1 2 3 Bergstra, Bengio, 2012, с. 281–305.
  3. Chin-Wei Hsu, Chih-Chung Chang and Chih-Jen Lin (2010). A practical guide to support vector classification Архивная копия от 25 июня 2013 на Wayback Machine. Technical Report, National Taiwan University.
  4. Chicco, 2017, с. 1–17.
  5. Ziyu, Frank, Masrour, David, de Feitas, 2016.
  6. Hutter, Hoos, Leyton-Brown, 2011.
  7. 1 2 3 Bergstra, Bardenet, Bengio, Kegl, 2011.
  8. Snoek, Larochelle, Adams, 2012.
  9. Thornton, Hutter, Hoos, Leyton-Brown, 2013.
  10. Larsen, Hansen, Svarer, Ohlsson, 1996.
  11. Chapelle, Vapnik, Bousquet, Mukherjee, 2002, с. 131–159.
  12. Chuong, Foo, Ng, 2008.
  13. Domke, 2012.
  14. 1 2 Maclaurin, Douglas; Duvenaud, David; Adams, Ryan P. (2015). "Gradient-based Hyperparameter Optimization through Reversible Learning". arXiv:1502.03492 [stat.ML].
  15. 1 2 Olson, Urbanowicz, Andrews, Lavender, Kidd, Moore, 2016, с. 123–137.
  16. 1 2 Olson, Bartley, Urbanowicz, Moore, 2016, с. 485–492.
  17. Miikkulainen R, Liang J, Meyerson E, Rawal A, Fink D, Francon O, Raju B, Shahrzad H, Navruzyan A, Duffy N, Hodjat B (2017). "Evolving Deep Neural Networks". arXiv:1703.00548 [cs.NE].{{cite arXiv}}: Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка)
  18. Jaderberg M, Dalibard V, Osindero S, Czarnecki WM, Donahue J, Razavi A, Vinyals O, Green T, Dunning I, Simonyan K, Fernando C, Kavukcuoglu K (2017). "Population Based Training of Neural Networks". arXiv:1711.09846 [cs.LG].{{cite arXiv}}: Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка)
  19. Such FP, Madhavan V, Conti E, Lehman J, Stanley KO, Clune J (2017). "Deep Neuroevolution: Genetic Algorithms Are a Competitive Alternative for Training Deep Neural Networks for Reinforcement Learning". arXiv:1712.06567 [cs.NE].{{cite arXiv}}: Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка)
  20. 1 2 Diaz, Gonzalo; Fokoue, Achille; Nannicini, Giacomo; Samulowitz, Horst (2017). "An effective algorithm for hyperparameter optimization of neural networks". arXiv:1705.08520 [cs.AI].
  21. 1 2 Hazan, Elad; Klivans, Adam; Yuan, Yang (2017). "Hyperparameter Optimization: A Spectral Approach". arXiv:1706.00764 [cs.LG].
  22. Martinez-Cantin, 2014, с. 3915−3919.
  23. Kotthoff, Thornton, Hoos, Hutter, Leyton-Brown, 2017, с. 1–5.
  24. Feurer, Klein, Eggensperger, Springenberg, Blum, Hutter, 2015, с. 2962–2970.
  25. Baptista, Ricardo; Poloczek, Matthias (2018). "Bayesian Optimization of Combinatorial Structures". arXiv:1806.08838 [stat.ML].
  26. Hutter, Hoos, Leyton-Brown, 2011, с. 507—523.
  27. Nikitin, Vychuzhanin, Sarafanov, Polonskaia, Revin, Barabanova, Maximov, Kalyuzhnaya, Boukhanovsky, 2022, с. 109–125.
  28. Gorissen, Crombecq, Couckuyt, Demeester, Dhaene, 2010, с. 2051–2055.

Литература

[править | править код]