Оптимізація гіперпараметрів

Оптимізація гіперпараметрів — задача машинного навчання по вибору множини оптимальних гіперпараметрів для алгоритму машинного навчання. Гіперпараметр є параметром, значення якого використовується для керування процесом навчання. На відміну від значень інших параметрів (наприклад, вагових коефіцієнтів), які потрібно вивчити.

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

Підходи ред.

Пошук по ґратці ред.

Традиційним методом оптимізації гіперпараметрів є пошук по ґратці (або варіація параметрів), який просто робить повний перебір по заданій вручну підмножині простору гіперпараметрів навчального алгоритму. Пошук по ґратці повинен супроводжуватися деякою мірою продуктивності, зазвичай для порівняння використовують перехресне затверджування на тренувальному наборі[3], або оцінкою на фіксованому перевірочному наборі (англ. holdout set)[4].

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

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

 
 

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

Пошук по ґратці страждає від прокляття розмірності, але часто легко розпаралелюється, оскільки зазвичай гіперпараметричні величини, з якими алгоритм працює, не залежать одна від одного[2].

Випадковий пошук ред.

Докладніше: Випадковий пошук

Випадковий пошук замінює повний перебір всіх комбінацій на їх випадковий вибір. Це можна легко застосувати до дискретних випадків, наведених вище, але метод можна узагальнити на неперервні та змішані простори. Випадковий пошук може перевершити пошук по ґратці, особливо, якщо лише мала кількість гіперпараметрів впливає на продуктивність алгоритму машинного навчання[2]. У цьому випадку кажуть, що завдання оптимізації має низьку внутрішню розмірність[5]. Випадковий пошук також легко паралелізується і, крім того, можливе використання попередніх даних через вибір розподілу для вибірки випадкових параметрів.

Байєсова оптимізація ред.

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

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

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

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

Еволюційна оптимізація ред.

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

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

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

На основі заселення ред.

Навчання на основі заселення (англ. Population Based Training) вивчає як значення гіперпараметрів, так і ваги мережі. Кілька процесів навчання працюють незалежно, використовуючи різні гіперпараметри. Моделі, які погано працюють ітеративно замінюються моделями, які використовують модифіковані значення гіперпараметрів кращого виконавця. Модифікація дозволяє еволюційно змінювати гіперпараметри і виключає необхідність ручного налаштування гіперпараметрів. Процес не робить припущень щодо архітектури моделі, функції втрат чи процедури навчання[18].

Інше ред.

Відбувається також розвиток методів на основі радіально-базисної функції[19] (РБФ) і спектрального методу[20].

Програмне забезпечення з відкритим кодом ред.

Пошук по ґратці ред.

Випадковий пошук ред.

  • hyperopt через hyperas і hyperopt-sklearn — це пакети на мові Python, які містять випадковий пошук.
  • scikit-learn — пакет на мові Python, що містить випадковий пошук.
  • Talos містить випадковий пошук з налаштуваннями для Keras.
  • H2O AutoML забезпечує автоматичну підготовку даних, налаштування гіперпараметрів випадковим пошуком і багаторівневі збірки в розподіленій платформі машинного навчання.

Байєсова оптимізація ред.

  • Auto-sklearn[21] — шар для байєсівської оптимізації поверх scikit-learn.
  • Ax[22] експериментальна платформа на Python, яка підтримує Байєсову оптимізацію як дослідницьку стратегію.
  • Auto-WEKA — шар для байєсівської оптимізації поверх WEKA.
  • Bayesopt — ефективна імплементація байєсівської оптимізації на C/C++ з підтримкою Python, Matlab і Octave.
  • BOCS — пакет Matlab, який використовує напіввизначене програмування[en] для мінімізації невідомої функції при дискретних вхідних даних[23]. Містить також імплементацію для Python 3.
  • HpBandSter — пакет на Python, який комбінує Байєсову оптимізацію зі стохастичними методами однорукого бандита.[24]
  • mlrMBO з mlr — це пакет на мові R для байєсівської оптимізації або для оптимізації на основі моделі невідомої функції (чорний ящик).
  • MOE — це бібліотека для Python, C++ і системи паралельних обчислень CUDA, імплементує Байєсова глобальну оптимізацію, використовуючи гаусові процеси.
  • scikit-optimize — пакет на Python або послідовна модель оптимізації з інтерфейсом scipy.optimize.[25]
  • SMAC — бібліотека на мовах Python/Java, імплементує Байєсову оптимізацію[26].
  • Spearmint — це пакет для байєсівської оптимізації алгоритмів машинного навчання.
  • tuneRanger — це пакет на мові R для налаштування випадкових лісів з використанням оптимізації на базі моделі.

Засновані на градієнті ред.

  • hypergrad — це пакет на мові Python для диференціювання по гіперпараметрам.

Еволюційні методи ред.

Інше ред.

  • dlib[29] — пакет на C++ з Python API, який має оптимізатор без параметрів LIPO та оптимізатор довірчої області[en], які працюють разом.[30]
  • Harmonica — пакет на Python для спектральної оптимізації гіперпараметрів[20].
  • hyperopt через hyperas і hyperopt-sklearn — це пакети Python, які включають заснований на дереві парзеновскіх оцінок алгоритм оптимізації розподілених гіперпараметрів.
  • nevergrad[27] — пакет на Python для оптимізації без градієнтів з використанням таких методів, як диференційна еволюція, послідовне квадратичне програмування, fastGA, адаптація коваріаційної матриці, методи популяційного контролю і оптимізація рою частинок[28].
  • nni — пакет на Python, який включає налаштування гіперпараметрів для нейронних мереж в локальних і розподілених середовищах. Серед його методів TPE, випадкові, відпалу, еволюційні, SMAC, пакетні, ґратки і гіпербенд.
  • pycma — це імплементація на мові Python алгоритму адаптації коваріаційної матриці (англ. Covariance Matrix Adaptation Evolution Strategy).
  • rbfopt — пакет на мові Python, що використовує модель радіально-базисної функції[19].
  • SUMO-Toolbox — набір інструментів MATLAB для сурогатного моделювання[en], що підтримує широкий набір гіперпараметрів оптимізаційних алгоритмів для багатьох типів моделей.

Комерційні сервіси ред.

  • Amazon Sagemaker використовує Гаусові процеси для налаштування гіперпараметрів.
  • BigML OptiML підтримує змішані області пошуку.
  • Google HyperTune підтримує змішані області пошуку.
  • Indie Solver підтримує багатокритеріальну, різнотипну та оптимізацію з обмеженнями.
  • Mind Foundry OPTaaS підтримує змішані області пошуку, багатокритеріальну і паралельну оптимізацію, оптимізацію з обмеженнями і сурогатні моделі.
  • SigOpt підтримує змішані області пошуку, підтримує багатокритеріальну, різнотипну та оптимізацію з обмеженнями і паралельну оптимізацію.

Див. також ред.

Примітки ред.

  1. а б Claesen, Marc; Bart De Moor (2015). Hyperparameter Search in Machine Learning. arXiv:1502.02127 [cs.LG].
  2. а б в Bergstra, James; Bengio, Yoshua (2012). Random Search for Hyper-Parameter Optimization (PDF). Journal of Machine Learning Research. 13: 281—305.
  3. Chin-Wei Hsu, Chih-Chung Chang and Chih-Jen Lin (2010). A practical guide to support vector classification. Technical Report, National Taiwan University.
  4. Chicco D (December 2017). Ten quick tips for machine learning in computational biology. BioData Mining. 10 (35): 35. doi:10.1186/s13040-017-0155-3. PMC 5721660. PMID 29234465.{{cite journal}}: Обслуговування CS1: Сторінки із непозначеним DOI з безкоштовним доступом (посилання)
  5. Ziyu, Wang; Frank, Hutter; Masrour, Zoghi; David, Matheson; Nando, de Feitas (2016). Bayesian Optimization in a Billion Dimensions via Random Embeddings. Journal of Artificial Intelligence Research (англ.). 55: 361—387. doi:10.1613/jair.4806.
  6. Hutter, Frank; Hoos, Holger; Leyton-Brown, Kevin (2011), Sequential model-based optimization for general algorithm configuration (PDF), Learning and Intelligent Optimization, Lecture Notes in Computer Science, 6683: 507—523, CiteSeerX 10.1.1.307.8813, doi:10.1007/978-3-642-25566-3_40, ISBN 978-3-642-25565-6
  7. а б в Bergstra, James; Bardenet, Remi; Bengio, Yoshua; Kegl, Balazs (2011), Algorithms for hyper-parameter optimization (PDF), Advances in Neural Information Processing Systems
  8. Snoek, Jasper; Larochelle, Hugo; Adams, Ryan (2012). Practical Bayesian Optimization of Machine Learning Algorithms (PDF). Advances in Neural Information Processing Systems. arXiv:1206.2944. Bibcode:2012arXiv1206.2944S.
  9. Thornton, Chris; Hutter, Frank; Hoos, Holger; Leyton-Brown, Kevin (2013). Auto-WEKA: Combined selection and hyperparameter optimization of classification algorithms (PDF). Knowledge Discovery and Data Mining. arXiv:1208.3719. Bibcode:2012arXiv1208.3719T.
  10. Larsen, Jan; Hansen, Lars Kai; Svarer, Claus; Ohlsson, M (1996). Design and regularization of neural networks: the optimal use of a validation set. Proceedings of the 1996 IEEE Signal Processing Society Workshop.
  11. Olivier Chapelle; Vladimir Vapnik; Olivier Bousquet; Sayan Mukherjee (2002). Choosing multiple parameters for support vector machines (PDF). Machine Learning. 46: 131—159. doi:10.1023/a:1012450327387.
  12. Chuong B; Chuan-Sheng Foo; Andrew Y Ng (2008). Efficient multiple hyperparameter learning for log-linear models. Advances in Neural Information Processing Systems 20.
  13. Domke, Justin (2012). Generic Methods for Optimization-Based Modeling (PDF). Aistats. 22. Архів оригіналу (PDF) за 24 січня 2014. Процитовано 12 липня 2019.
  14. Maclaurin, Douglas; Duvenaud, David; Adams, Ryan P. (2015). Gradient-based Hyperparameter Optimization through Reversible Learning. arXiv:1502.03492 [stat.ML].
  15. 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].
  16. 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].
  17. 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].
  18. Li, Ang; Spyra, Ola; Perel, Sagi; Dalibard, Valentin; Jaderberg, Max; Gu, Chenjie; Budden, David; Harley, Tim; Gupta, Pramod (5 лютого 2019). A Generalized Framework for Population Based Training. arXiv:1902.01894 [cs.AI].
  19. а б Diaz, Gonzalo; Fokoue, Achille; Nannicini, Giacomo; Samulowitz, Horst (2017). An effective algorithm for hyperparameter optimization of neural networks. arXiv:1705.08520 [cs.AI].
  20. а б Hazan, Elad; Klivans, Adam; Yuan, Yang (2017). Hyperparameter Optimization: A Spectral Approach. arXiv:1706.00764 [cs.LG].
  21. Feurer M, Klein A, Eggensperger K, Springenberg J, Blum M, Hutter F (2015). Efficient and Robust Automated Machine Learning. Advances in Neural Information Processing Systems 28 (NIPS 2015): 2962—2970.
  22. Open-sourcing Ax and BoTorch: New AI tools for adaptive experimentation. 2019.
  23. Baptista, Ricardo; Poloczek, Matthias (2018). Bayesian Optimization of Combinatorial Structures. arXiv:1806.08838 [stat.ML].
  24. Falkner, Stefan; Klein, Aaron; Hutter, Frank (2018). BOHB: Robust and Efficient Hyperparameter Optimization at Scale. arXiv:1807.01774 [stat.ML].
  25. skopt API documentation. scikit-optimize.github.io.
  26. Hutter F, Hoos HH, Leyton-Brown K. Sequential Model-Based Optimization for General Algorithm Configuration (PDF). Proceedings of the Conference on Learning and Intelligent OptimizatioN (LION 5).
  27. а б [QUESTION] How to use to optimize NN hyperparameters · Issue #1 · facebookresearch/nevergrad. GitHub.
  28. а б Nevergrad: An open source tool for derivative-free optimization. 20 грудня 2018.
  29. A toolkit for making real world machine learning and data analysis applications in C++: davisking/dlib. 25 лютого 2019 — через GitHub.
  30. King, Davis. A Global Optimization Algorithm Worth Using.