Оптимизация гиперпараметров
Оптимизация гиперпараметров — задача машинного обучения по выбору набора оптимальных гиперпараметров[англ.] для обучающего алгоритма.
Одни и те же виды моделей машинного обучения могут требовать различные предположения, веса или скорости обучения для различных видов данных. Эти параметры называются гиперпараметрами и их следует настраивать так, чтобы модель могла оптимально решить задачу обучения. Для этого находится кортеж гиперпараметров, который даёт оптимальную модель, оптимизирующую заданную функцию потерь на заданных независимых данных[1]. Целевая функция берёт кортеж гиперпараметров и возвращает связанные с ними потери[1]. Часто используется перекрёстная проверка для оценки этой обобщающей способности[2].
Подходы
Поиск по решётке
Традиционным методом осуществления оптимизации гиперпарамеров является поиск по решётке (или вариация параметров), который просто делает полный перебор по заданному вручную подмножеству пространства гиперпараметров обучающего алгоритма. Поиск по решётке должен сопровождаться некоторым измерением производительности, обычно измеряемой посредством перекрёстной проверки на тренировочном множестве[3], или прогонкой алгоритма на устоявшемся проверочном наборе[4].
Поскольку пространство параметров алгоритма машинного обучения для некоторых параметров может включать пространства с вещественными или неограниченными значениями, вручную установить границу и дискретизацию может оказаться необходимым до применения поиска по решётке.
Например, типичный классификатор с мягким зазором на основе метода опорных векторов (МОВ), оснащённый ядерной радиально-базисной функцией[англ.] имеет по меньшей мере два гиперпараметра, которые необходимо настроить для хорошей производительности на недоступных данных — константа C регуляризации и гиперпараметр ядра γ. Оба параметра являются непрерывными, так что для поиска по решётке выбирают конечный набор «приемлемых» значений, скажем
- [math]\displaystyle{ C \in \{10, 100, 1000\} }[/math]
- [math]\displaystyle{ \gamma \in \{0.1, 0.2, 0.5, 1.0\} }[/math]
Поиск по решётке затем прогоняет МОВ для каждой пары (C, γ) в декартовом произведении этих двух множеств и проверяет производительность при выбранных параметрах на устоявшемся проверочном наборе (или с помощью внутренней перекрёстной проверки на тренировочном наборе и в этом случае несколько МОВ прогоняют попарно). Наконец, алгоритм поиска по решётке выдаёт в качестве результата наивысший результат, достигнутый на процедуре проверки.
Поиск по решётке страдает от проклятия размерности, но часто легко параллелизуем, поскольку обычно гиперпараметрические величины, с которыми алгоритм работает, не зависят друг от друга[2].
Случайный поиск
Случайный поиск заменяет полный перебор всех комбинаций на выборку их случайным образом. Это можно легко применить к дискретным установкам, приведённым выше, но метод может быть также обобщен к непрерывным и смешанным пространствам. Случайный поиск может превзойти поиск по решётке, особенно в случае, если только малое число гиперпараметров оказывает влияние на производительность алгоритма обучения машины[2]. В этом случае говорят, что задача оптимизации имеет низкую внутреннюю размерность[5]. Случайный поиск также легко параллелизуем и, кроме того, позволяют использовать предварительные данные путём указания распределения для выборки случайных параметров.
Байесовская оптимизация
Байесовская оптимизация — это метод глобальной оптимизации для неизвестной функции (чёрного ящика) с шумом. Применённая к гиперпараметрической оптимизации байесовская оптимизация строит стохастическую модель функции отображения из значений гиперпараметра в целевую функцию, применённую на множестве проверки. Путём итеративного применения перспективной конфигурации гиперпараметров, основанной на текущей модели, а затем её обновления, байесовская оптимизация стремится собрать как можно больше информации об этой функции и, в частности, место оптимума. Метод пытается сбалансировать зондирование (гиперпараметры, для которых изменение наименее достоверно известно) и использование (гиперпараметры, которые, как ожидается, наиболее близки к оптимуму). На практике байесовская оптимизация показала[6][7][8][9] лучшие результаты с меньшими вычислениями по сравнению с поиском по решётке и случайным поиском ввиду возможности суждения о качестве экспериментов ещё до их выполнения.
Оптимизация на основе градиентов
Для конкретных алгоритмов обучения можно вычислить градиент гиперпараметров и оптимизировать их с помощью градиентного спуска. Первое использование этих техник фокусировалось на нейронных сетях[10]. Затем эти методы были распространены на другие модели, такие как методы опорных векторов[11] или логистическая регрессия[12].
Другой подход использования градиентов гиперпараметров состоит в дифференцировании шагов алгоритма итеративной оптимизации с помощью автоматического дифференцирования[англ.][13][14].
Эволюционная оптимизация
Эволюционная оптимизация — это методология для глобальной оптимизации неизвестных функций с шумом. При оптимизации гиперпараметров эволюционная оптимизация использует эволюционные алгоритмы для поиска гиперпараметров для данного алгоритма[7]. Эволюционная оптимизация гиперпараметров следует процессу, навеянному биологической концепцией эволюции:
- Создаём начальную популяцию случайных решений (то есть сгенерированный случайно кортеж гиперпараметров, обычно 100+)
- Оцениваем кортежи гиперпараметров и получаем их функцию приспособленности (например, с помощью 10-кратной точности перекрёстной проверки алгоритма обучения машины с этими гиперпараметрами)
- Ранжируем кортежи гиперпараметров по их относительной пригодности
- Заменяем кортежи гиперпараметров с худшей производительностью на новые кортежи гиперпараметров, образованных скрещиванием[англ.] и мутацией[англ.]
- Повторяем шаги 2—4, пока не получим удовлетворительной производительности алгоритма или пока производительность не перестанет улучшаться
Эволюционная оптимизация используется для оптимизации гиперпараметров для статистических алгоритмов обучения машин[7], автоматического обучения машин[15][16], для поиска архитектуры глубоких нейронных сетей[17][18], а также для формирования весов в глубоких нейронных сетях[19].
Другое
Развиваются также методы радиально-базисной функции (РБФ)[20] и спектральный метод[21].
Программное обеспечение с открытым кодом
Список примеров в этой статье не основывается на авторитетных источниках, посвящённых непосредственно предмету статьи. |
Поиск по решётке
- LIBSVM[англ.] приходит со скриптом для осуществления поиска по решётке.
- scikit-learn — это пакет на языке Python, который включает поиск по решётке Архивная копия от 2 сентября 2011 на Wayback Machine.
- Talos Архивная копия от 15 октября 2018 на Wayback Machine включает поиск по решётке для пакета Keras.
Случайный поиск
- hyperopt Архивная копия от 25 октября 2018 на Wayback Machine через hyperas Архивная копия от 25 октября 2018 на Wayback Machine и hyperopt-sklearn Архивная копия от 18 июня 2019 на Wayback Machine — это пакеты на языке Python, которые включают случайный поиск.
- scikit-learn — это пакет на языке Python, включающий случайный поиск.
- H2O AutoML Архивная копия от 19 сентября 2018 на Wayback Machine обеспечивает автоматическую подготовку данных, настройку гиперпараметров случайным поиском и многоуровневые сборки в распределённой платформе обучения машин.
- Talos Архивная копия от 15 октября 2018 на Wayback Machine включает допускающий настройку случайный поиск для Keras.
Байесовская оптимизация
- Spearmint Архивная копия от 19 октября 2018 на Wayback Machine — это пакет для байесовской оптимизации алгоритмов обучения машин.
- Bayesopt Архивная копия от 10 декабря 2017 на Wayback Machine[22], эффективная имплементация байесовской оптимизации на C/C++ с поддержкой Python, Matlab и Octave.
- MOE Архивная копия от 14 октября 2018 на Wayback Machine — это библиотека для Python, C++ и системы параллельных вычислений CUDA, имплементирующая байесовскую глобальную оптимизацию, используя гауссовы процессы.
- Auto-WEKA Архивная копия от 13 октября 2018 на Wayback Machine[23] — это уровень для байесовской оптимизации поверх WEKA.
- Auto-sklearn Архивная копия от 3 октября 2018 на Wayback Machine[24] — это уровень для байесовской оптимизации поверх scikit-learn.
- mlrMBO Архивная копия от 25 октября 2018 на Wayback Machine с mlr Архивная копия от 10 июня 2018 на Wayback Machine — это пакет на языке R[англ.] для байесовской оптимизации или для оптимизации на основе модели неизвестной функции (чёрный ящик).
- tuneRanger Архивная копия от 13 июня 2018 на Wayback Machine — это пакет на языке R для настройки случайных лесов используя оптимизацию на базе модели.
- BOCS Архивная копия от 1 ноября 2018 на Wayback Machine — это пакет Matlab, использующий полуопределённое программирование для минимизации неизвестной функции при дискретных входных данных.[25] Включена также имплементация для Python 3.
- SMAC Архивная копия от 25 октября 2018 на Wayback Machine — это библиотека на языках Python/Java, имплементирующая байесовскую оптимизацию[26].
Основанные на градиенте
- hypergrad Архивная копия от 25 октября 2018 на Wayback Machine — это пакет на языке Python для дифференцирования по гиперпараметрам[14].
Эволюционные методы
- TPOT Архивная копия от 6 октября 2017 на Wayback Machine[15][16] — это пакет на языке Python, который автоматически создаёт и оптимизирует пайплайны машинного обучения с помощью генетического программирования.
- FEDOT Архивная копия от 18 ноября 2021 на Wayback Machine[27] — это фреймворк на языке Python, который автоматически создаёт и оптимизирует структуры и гиперпараметры графовых композитных пайплайнов машинного обучения для различных задач и типов данных.
- devol Архивная копия от 25 октября 2018 на Wayback Machine — это пакет на языке Python, который осуществляет поиск архитектуры глубокой нейронной сети с помощью генетического программирования.
- deap Архивная копия от 25 октября 2018 на Wayback Machine — это гибкий Python фреймворк для общих эволюционых вычислений, который объединён с пакетами распараллеливания, такими как scoop Архивная копия от 10 августа 2018 на Wayback Machine и pyspark и другими Python фреймворками, наподобие scikit-learn через sklearn-deap Архивная копия от 11 июня 2018 на Wayback Machine.
Другое
- hyperopt Архивная копия от 25 октября 2018 на Wayback Machine через hyperas Архивная копия от 25 октября 2018 на Wayback Machine и hyperopt-sklearn Архивная копия от 18 июня 2019 на Wayback Machine — это пакеты Python, которые включают основанный на дереве парзеновских оценок алгоритм оптимизации распределённых гиперпараметров.
- pycma Архивная копия от 25 октября 2018 на Wayback Machine — это имплементация на языке Python алгоритма адаптации ковариационной матрицы[англ.](англ. Covariance Matrix Adaptation Evolution Strategy).
- SUMO-Toolbox Архивная копия от 8 марта 2022 на Wayback Machine[28] — это набор инструментов MATLAB для суррогатного моделирования[англ.], поддерживающий широкий набор оптимизирующих гиперпараметры алгоритмов для многих типов моделей.
- rbfopt Архивная копия от 25 октября 2018 на Wayback Machine — это пакет на языке Python, использующий модель радиально-базисной функции[20]
- Harmonica Архивная копия от 24 июля 2017 на Wayback Machine — это пакет на Python для спектральной оптимизации гиперпараметров[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 поддерживает смешанные области поиска, многокритериальную и параллельную оптимизацию, оптимизацию при ограничениях и суррогатные модели.
См. также
- Автоматическое обучение машин (AutoML)
- Дилемма смещения–дисперсии
- Снижение размерности
- Выбор признаков[англ.]
- Метаоптимизация[англ.]
- Выбор модели
- Автонастройка[англ.]
Примечания
- ↑ 1,0 1,1 Claesen, Marc & Bart De Moor (2015), Hyperparameter Search in Machine Learning, arΧiv:1502.02127 [cs.LG].
- ↑ 2,0 2,1 2,2 Bergstra, Bengio, 2012, с. 281–305.
- ↑ 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.
- ↑ Chicco, 2017, с. 1–17.
- ↑ Ziyu, Frank, Masrour, David, de Feitas, 2016.
- ↑ Hutter, Hoos, Leyton-Brown, 2011.
- ↑ 7,0 7,1 7,2 Bergstra, Bardenet, Bengio, Kegl, 2011.
- ↑ Snoek, Larochelle, Adams, 2012.
- ↑ Thornton, Hutter, Hoos, Leyton-Brown, 2013.
- ↑ Larsen, Hansen, Svarer, Ohlsson, 1996.
- ↑ Chapelle, Vapnik, Bousquet, Mukherjee, 2002, с. 131–159.
- ↑ Chuong, Foo, Ng, 2008.
- ↑ Domke, 2012.
- ↑ 14,0 14,1 Maclaurin, Douglas; Duvenaud, David & Adams, Ryan P. (2015), Gradient-based Hyperparameter Optimization through Reversible Learning, arΧiv:1502.03492 [stat.ML].
- ↑ 15,0 15,1 Olson, Urbanowicz, Andrews, Lavender, Kidd, Moore, 2016, с. 123–137.
- ↑ 16,0 16,1 Olson, Bartley, Urbanowicz, Moore, 2016, с. 485–492.
- ↑
- ↑ 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, arΧiv:1711.09846 [cs.LG].
- ↑ 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, arΧiv:1712.06567 [cs.NE].
- ↑ 20,0 20,1 Diaz, Gonzalo; Fokoue, Achille; Nannicini, Giacomo & Samulowitz, Horst (2017), An effective algorithm for hyperparameter optimization of neural networks, arΧiv:1705.08520 [cs.AI].
- ↑ 21,0 21,1 Hazan, Elad; Klivans, Adam & Yuan, Yang (2017), Hyperparameter Optimization: A Spectral Approach, arΧiv:1706.00764 [cs.LG].
- ↑ Martinez-Cantin, 2014, с. 3915−3919.
- ↑ Kotthoff, Thornton, Hoos, Hutter, Leyton-Brown, 2017, с. 1–5.
- ↑ Feurer, Klein, Eggensperger, Springenberg, Blum, Hutter, 2015, с. 2962–2970.
- ↑ Baptista, Ricardo & Poloczek, Matthias (2018), Bayesian Optimization of Combinatorial Structures, arΧiv:1806.08838 [stat.ML].
- ↑ Hutter, Hoos, Leyton-Brown, 2011, с. 507—523.
- ↑ Nikitin, Vychuzhanin, Sarafanov, Polonskaia, Revin, Barabanova, Maximov, Kalyuzhnaya, Boukhanovsky, 2022, с. 109–125.
- ↑ Gorissen, Crombecq, Couckuyt, Demeester, Dhaene, 2010, с. 2051–2055.
Литература
- James Bergstra, Yoshua Bengio. Random Search for Hyper-Parameter Optimization // J. Machine Learning Research. — 2012. — Т. 13.
- Chicco D. Ten quick tips for machine learning in computational biology // BioData Mining. — 2017. — Декабрь (т. 10). — P. 1–17. — doi:10.1186/s13040-017-0155-3. — PMID 29234465.
- Wang Ziyu, Hutter Frank, Zoghi Masrour, Matheson David, Nando de Feitas. Bayesian Optimization in a Billion Dimensions via Random Embeddings (англ.) // Journal of Artificial Intelligence Research. — 2016. — Vol. 55. — doi:10.1613/jair.4806. Архивировано 23 апреля 2018 года.
- James Bergstra, Remi Bardenet, Yoshua Bengio, Balazs Kegl. Algorithms for hyper-parameter optimization // Advances in Neural Information Processing Systems. — 2011.
- Jasper Snoek, Hugo Larochelle, Ryan Adams. Practical Bayesian Optimization of Machine Learning Algorithms // Advances in Neural Information Processing Systems. — 2012. — . — arXiv:1206.2944.
- Chris Thornton, Frank Hutter, Holger Hoos, Kevin Leyton-Brown. Auto-WEKA: Combined selection and hyperparameter optimization of classification algorithms // Knowledge Discovery and Data Mining. — 2013. — . — arXiv:1208.3719.
- Jan Larsen, Lars Kai Hansen, Claus Svarer, M Ohlsson. Design and regularization of neural networks: the optimal use of a validation set // Proceedings of the 1996 IEEE Signal Processing Society Workshop. — 1996.
- Olivier Chapelle, Vladimir Vapnik, Olivier Bousquet, Sayan Mukherjee. Choosing multiple parameters for support vector machines // Machine Learning. — 2002. — Vol. 46. — doi:10.1023/a:1012450327387.
- Chuong B., Chuan-Sheng Foo, Andrew Y Ng. Efficient multiple hyperparameter learning for log-linear models // Advances in Neural Information Processing Systems 20. — 2008.
- Justin Domke. Generic Methods for Optimization-Based Modeling // AISTATS. — 2012. — Т. 22.
- Ruben Martinez-Cantin. BayesOpt: A Bayesian Optimization Library for Nonlinear Optimization, Experimental Design and Bandits // Journal of Machine Learning Research. — 2014. — Т. 15. — С. 3915−3919. — . — arXiv:1405.7430.
- Kotthoff L., Thornton C., Hoos H.H., Hutter F., Leyton-Brown K. Auto-WEKA 2.0: Automatic model selection and hyperparameter optimization in WEKA // Journal of Machine Learning Research. — 2017.
- Feurer M., Klein A., Eggensperger K., Springenberg J., Blum M., Hutter F. Efficient and Robust Automated Machine Learning // Advances in Neural Information Processing Systems 28 (NIPS 2015). — 2015.
- Hutter F., Hoos H.H., Leyton-Brown K. Sequential Model-Based Optimization for General Algorithm Configuration // Proceedings of the conference on Learning and Intelligent OptimizatioN (LION 5). — Rome, Italy: Springer-Verlag, 2011.
- Olson R.S., Urbanowicz R.J., Andrews P.C., Lavender N.A., Kidd L., Moore J.H. Automating biomedical data science through tree-based pipeline optimization // Proceedings of EvoStar 2016. — 2016. — Т. 9597. — (Lecture Notes in Computer Science). — ISBN 978-3-319-31203-3. — doi:10.1007/978-3-319-31204-0_9.
- Olson R.S., Bartley N., Urbanowicz R.J., Moore J.H. Evaluation of a Tree-based Pipeline Optimization Tool for Automating Data Science. — 2016. — С. Proceedings of EvoBIO 2016. — ISBN 9781450342063. — doi:10.1145/2908812.2908918. — arXiv:1603.06212.
- Dirk Gorissen, Karel Crombecq, Ivo Couckuyt, Piet Demeester, Tom Dhaene. A Surrogate Modeling and Adaptive Sampling Toolbox for Computer Based Design // J. Machine Learning Research. — 2010. — Т. 11. — С. 2051–2055.
- Nikolay O. Nikitin, Pavel Vychuzhanin, Mikhail Sarafanov, Iana S. Polonskaia, Ilia Revin, Irina V. Barabanova, Gleb Maximov, Anna V. Kalyuzhnaya, Alexander Boukhanovsky. Automated evolutionary approach for the design of composite machine learning pipelines // Future Generation Computer Systems. — 2022. — Т. 127. — С. 109-125.
Для улучшения этой статьи желательно: |