Відмінності між версіями «Оптимізація гіперпараметрів»

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[перевірена версія][перевірена версія]
(→‎Пошук по ґратці: вікіфікація)
(→‎Підходи: доповнення)
Рядок 114: Рядок 114:
 
Еволюційна оптимізація використовується для оптимізації гіперпараметрів для статистичних алгоритмів<ref name="bergstra11" /> {{Нп|Автоматизоване машинне навчання|автоматизованого машинного навчання||Automated machine learning}}, для {{Нп|Пошук архітектури нейронної мережі|пошуку архітектури||Neural architecture search}} [[Глибинне навчання|глибоких нейронних мереж]]<ref name="miikkulainen1">{{cite arxiv | vauthors = Miikkulainen R, Liang J, Meyerson E, Rawal A, Fink D, Francon O, Raju B, Shahrzad H, Navruzyan A, Duffy N, Hodjat B | year = 2017 | title = Evolving Deep Neural Networks |eprint=1703.00548| class = cs.NE }}</ref><ref name="jaderberg1">{{cite arxiv | vauthors = Jaderberg M, Dalibard V, Osindero S, Czarnecki WM, Donahue J, Razavi A, Vinyals O, Green T, Dunning I, Simonyan K, Fernando C, Kavukcuoglu K | year = 2017 | title = Population Based Training of Neural Networks |eprint=1711.09846| class = cs.LG }}</ref>, а також для формування ваг в глибоких нейронних мережах<ref name="such1">{{cite arxiv | vauthors = Such FP, Madhavan V, Conti E, Lehman J, Stanley KO, Clune J | year = 2017 | title = Deep Neuroevolution: Genetic Algorithms Are a Competitive Alternative for Training Deep Neural Networks for Reinforcement Learning |eprint=1712.06567| class = cs.NE }}</ref>.
 
Еволюційна оптимізація використовується для оптимізації гіперпараметрів для статистичних алгоритмів<ref name="bergstra11" /> {{Нп|Автоматизоване машинне навчання|автоматизованого машинного навчання||Automated machine learning}}, для {{Нп|Пошук архітектури нейронної мережі|пошуку архітектури||Neural architecture search}} [[Глибинне навчання|глибоких нейронних мереж]]<ref name="miikkulainen1">{{cite arxiv | vauthors = Miikkulainen R, Liang J, Meyerson E, Rawal A, Fink D, Francon O, Raju B, Shahrzad H, Navruzyan A, Duffy N, Hodjat B | year = 2017 | title = Evolving Deep Neural Networks |eprint=1703.00548| class = cs.NE }}</ref><ref name="jaderberg1">{{cite arxiv | vauthors = Jaderberg M, Dalibard V, Osindero S, Czarnecki WM, Donahue J, Razavi A, Vinyals O, Green T, Dunning I, Simonyan K, Fernando C, Kavukcuoglu K | year = 2017 | title = Population Based Training of Neural Networks |eprint=1711.09846| class = cs.LG }}</ref>, а також для формування ваг в глибоких нейронних мережах<ref name="such1">{{cite arxiv | vauthors = Such FP, Madhavan V, Conti E, Lehman J, Stanley KO, Clune J | year = 2017 | title = Deep Neuroevolution: Genetic Algorithms Are a Competitive Alternative for Training Deep Neural Networks for Reinforcement Learning |eprint=1712.06567| class = cs.NE }}</ref>.
   
  +
=== На основі заселення ===
<!--=== Population-based ===
 
Population Based Training (PBT) learns both hyperparameter values and network weights. Multiple learning processes operate independently, using different hyperparameters. Poorly performing models are iteratively replaced with models that adopt modified hyperparameter values from a better performer. The modification allows the hyperparameters to evolve and eliminates the need for manual hypertuning. The process makes no assumptions regarding model architecture, loss functions or training procedures.<ref>{{cite arxiv|last=Li|first=Ang|last2=Spyra|first2=Ola|last3=Perel|first3=Sagi|last4=Dalibard|first4=Valentin|last5=Jaderberg|first5=Max|last6=Gu|first6=Chenjie|last7=Budden|first7=David|last8=Harley|first8=Tim|last9=Gupta|first9=Pramod|date=2019-02-05|title=A Generalized Framework for Population Based Training|eprint=1902.01894|class=cs.AI}}</ref>-->
+
Навчання на основі заселення ({{lang-en|Population Based Training}}) вивчає як значення гіперпараметрів, так і ваги мережі. Кілька процесів навчання працюють незалежно, використовуючи різні гіперпараметри. Моделі, які погано працюють ітеративно замінюються моделями, які використовують модифіковані значення гіперпараметрів кращого виконавця. Модифікація дозволяє еволюційно змінювати гіперпараметри і виключає необхідність ручного налаштування гіперпараметрів. Процес не робить припущень щодо архітектури моделі, функції втрат чи процедури навчання<ref>{{cite arxiv|last=Li|first=Ang|last2=Spyra|first2=Ola|last3=Perel|first3=Sagi|last4=Dalibard|first4=Valentin|last5=Jaderberg|first5=Max|last6=Gu|first6=Chenjie|last7=Budden|first7=David|last8=Harley|first8=Tim|last9=Gupta|first9=Pramod|date=2019-02-05|title=A Generalized Framework for Population Based Training|eprint=1902.01894|class=cs.AI}}</ref>.
   
 
=== Інше ===
 
=== Інше ===

Версія за 14:03, 13 липня 2019

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

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

Підходи

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

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

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

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

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

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

Випадковий пошук

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

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

Байєсова оптимізація

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

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

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

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

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

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

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

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

На основі заселення

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

Інше

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

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

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

Випадковий пошук

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

Байєсова оптимізація

  • Auto-sklearn[21] — шар для байєсівської оптимізації поверх scikit-learn[en].
  • 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. 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. Ten quick tips for machine learning in computational biology. BioData Mining 10 (35): 35. December 2017. PMC 5721660. PMID 29234465. doi:10.1186/s13040-017-0155-3.  Проігноровано невідомий параметр |vauthors= (довідка)
  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 (en) 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. Learning and Intelligent Optimization. Lecture Notes in Computer Science 6683: 507–523. ISBN 978-3-642-25565-6. doi:10.1007/978-3-642-25566-3_40.  Проігноровано невідомий параметр |citeseerx= (довідка)
  7. а б в Bergstra, James; Bardenet, Remi; Bengio, Yoshua; Kegl, Balazs (2011). Algorithms for hyper-parameter optimization. Advances in Neural Information Processing Systems. 
  8. Snoek, Jasper; Larochelle, Hugo; Adams, Ryan (2012). Practical Bayesian Optimization of Machine Learning Algorithms. Advances in Neural Information Processing Systems. Bibcode:2012arXiv1206.2944S. arXiv:1206.2944. 
  9. Thornton, Chris; Hutter, Frank; Hoos, Holger; Leyton-Brown, Kevin (2013). Auto-WEKA: Combined selection and hyperparameter optimization of classification algorithms. Knowledge Discovery and Data Mining. Bibcode:2012arXiv1208.3719T. arXiv:1208.3719. 
  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. 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. Aistats 22. 
  14. Maclaurin, Douglas; Duvenaud, David; Adams, Ryan P. (2015). «Gradient-based Hyperparameter Optimization through Reversible Learning». arXiv:1502.03492 [stat.ML]. 
  15. A bot will complete this citation soon. Click here to jump the queue«Evolving Deep Neural Networks». arXiv:1703.00548 [cs.NE]. 2017. 
  16. A bot will complete this citation soon. Click here to jump the queue«Population Based Training of Neural Networks». arXiv:1711.09846 [cs.LG]. 2017. 
  17. A bot will complete this citation soon. Click here to jump the queue«Deep Neuroevolution: Genetic Algorithms Are a Competitive Alternative for Training Deep Neural Networks for Reinforcement Learning». arXiv:1712.06567 [cs.NE]. 2017. 
  18. Li, Ang; Spyra, Ola; Perel, Sagi; Dalibard, Valentin; Jaderberg, Max; Gu, Chenjie; Budden, David; Harley, Tim та ін. (2019-02-05). «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. Efficient and Robust Automated Machine Learning. Advances in Neural Information Processing Systems 28 (NIPS 2015): 2962–2970. 2015.  Проігноровано невідомий параметр |vauthors= (довідка)
  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. Sequential Model-Based Optimization for General Algorithm Configuration. Proceedings of the Conference on Learning and Intelligent OptimizatioN (LION 5).  Проігноровано невідомий параметр |vauthors= (довідка)
  27. а б [QUESTION] How to use to optimize NN hyperparameters · Issue #1 · facebookresearch/nevergrad. GitHub. 
  28. а б Nevergrad: An open source tool for derivative-free optimization. December 20, 2018. 
  29. A toolkit for making real world machine learning and data analysis applications in C++: davisking/dlib. February 25, 2019 — через GitHub. 
  30. King, Davis. A Global Optimization Algorithm Worth Using.