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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[неперевірена версія][неперевірена версія]
м (Vlasenko D перейменував сторінку з Користувач:Vlasenko D/Оптимізація гіперпараметрів на Оптимізація гіперпараметрів: переніс в основний простір)
Рядок 124: Рядок 124:
 
=== Пошук по ґратці ===
 
=== Пошук по ґратці ===
   
* [[LIBSVM]] має скрипт для здійснення пошуку по ґратці.
 
 
* {{Нп|scikit-learn|||}} — це пакет на мові [[Python]], який містить [http://scikit-learn.sourceforge.net/modules/grid_search.html пошук по ґратці].
 
* {{Нп|scikit-learn|||}} — це пакет на мові [[Python]], який містить [http://scikit-learn.sourceforge.net/modules/grid_search.html пошук по ґратці].
 
* [https://github.com/autonomio/talos Talos] містить пошук по ґратці для пакета [[Keras]].
 
* [https://github.com/autonomio/talos Talos] містить пошук по ґратці для пакета [[Keras]].
 
* [[LIBSVM]] має скрипт для здійснення пошуку по ґратці.
   
 
=== Випадковий пошук ===
 
=== Випадковий пошук ===
   
 
* [https://github.com/hyperopt/hyperopt hyperopt] через [https://github.com/maxpumperla/hyperas hyperas] і [https://github.com/hyperopt/hyperopt-sklearn hyperopt-sklearn] — це пакети на мові [[Python]], які містять випадковий пошук.
 
* [https://github.com/hyperopt/hyperopt hyperopt] через [https://github.com/maxpumperla/hyperas hyperas] і [https://github.com/hyperopt/hyperopt-sklearn hyperopt-sklearn] — це пакети на мові [[Python]], які містять випадковий пошук.
* {{Нп|scikit-learn|||}} — пакет на мові [[Python]], що містить [http://scikit-learn.org/stable/modules/generated/sklearn.grid_search.RandomizedSearchCV.html випадковий пошук] .
+
* {{Нп|scikit-learn|||}} — пакет на мові [[Python]], що містить [http://scikit-learn.org/stable/modules/generated/sklearn.grid_search.RandomizedSearchCV.html випадковий пошук].
* [http://docs.h2o.ai/h2o/latest-stable/h2o-docs/automl.html H2O AutoML] забезпечує автоматичну підготовку даних, налаштування гіперпараметрів випадковим пошуком і багаторівневі збірки в розподіленій платформі машинного навчання.
 
 
* [https://github.com/autonomio/talos Talos] містить випадковий пошук з налаштуваннями для [[Keras]].
 
* [https://github.com/autonomio/talos Talos] містить випадковий пошук з налаштуваннями для [[Keras]].
 
* [http://docs.h2o.ai/h2o/latest-stable/h2o-docs/automl.html H2O AutoML] забезпечує автоматичну підготовку даних, налаштування гіперпараметрів випадковим пошуком і багаторівневі збірки в розподіленій платформі машинного навчання.
   
 
=== Байєсова оптимізація ===
 
=== Байєсова оптимізація ===
   
  +
* [https://github.com/automl/auto-sklearn Auto-sklearn]<ref name="autosklearn">{{cite journal | vauthors = Feurer M, Klein A, Eggensperger K, Springenberg J, Blum M, Hutter F | year = 2015 | title = Efficient and Robust Automated Machine Learning | url = https://papers.nips.cc/paper/5872-efficient-and-robust-automated-machine-learning | journal = Advances in Neural Information Processing Systems 28 (NIPS 2015) | pages = 2962–2970 }}</ref>&nbsp;— шар для байєсівської оптимізації поверх {{Нп|scikit-learn|||}}.
* [https://github.com/HIPS/Spearmint Spearmint]&nbsp;— це пакет для байєсівської оптимізації алгоритмів машинного навчання.
 
  +
* [https://github.com/facebook/Ax Ax]<ref name=AxBoTorch>{{cite web |url=https://ai.facebook.com/blog/open-sourcing-ax-and-botorch-new-ai-tools-for-adaptive-experimentation/ |title=Open-sourcing Ax and BoTorch: New AI tools for adaptive experimentation |year=2019}}</ref> експериментальна платформа на Python, яка підтримує Байєсову оптимізацію як дослідницьку стратегію.
 
* [http://www.cs.ubc.ca/labs/beta/Projects/autoweka/ Auto-WEKA]&nbsp;— шар для байєсівської оптимізації поверх [[Weka|WEKA]].
 
* [https://rmcantin.bitbucket.io/html/ Bayesopt]&nbsp;— ефективна імплементація байєсівської оптимізації на C/C++ з підтримкою Python, [[MATLAB|Matlab]] і [[GNU Octave|Octave]].
 
* [https://rmcantin.bitbucket.io/html/ Bayesopt]&nbsp;— ефективна імплементація байєсівської оптимізації на C/C++ з підтримкою Python, [[MATLAB|Matlab]] і [[GNU Octave|Octave]].
 
* [https://github.com/baptistar/BOCS BOCS]&nbsp;— пакет Matlab, який використовує {{Нп|напіввизначене програмування|||Semidefinite programming}} для мінімізації невідомої функції при дискретних вхідних даних<ref name="arXiv:1806.08838">{{cite arXiv |year=2018 |title=Bayesian Optimization of Combinatorial Structures |eprint=1806.08838|last1=Baptista |first1=Ricardo |last2=Poloczek |first2=Matthias |class=stat.ML }}</ref>. Містить також імплементацію для Python 3.
* [https://github.com/yelp/MOE MOE]&nbsp;— це бібліотека для [[Python]], [[C++]] і системи паралельних обчислень [[CUDA]], імплементує Байєсова глобальну оптимізацію, використовуючи гаусові процеси.
 
  +
* [https://github.com/automl/HpBandSter HpBandSter]&nbsp;— пакет на Python, який комбінує Байєсову оптимізацію зі стохастичними методами однорукого бандита.<ref name="arXiv:1807.01774">{{cite arXiv |year=2018 |title=BOHB: Robust and Efficient Hyperparameter Optimization at Scale |eprint=1807.01774|last1=Falkner |first1=Stefan |last2=Klein |first2=Aaron |last3=Hutter |first3=Frank |class=stat.ML }}</ref>
* [http://www.cs.ubc.ca/labs/beta/Projects/autoweka/ Auto-WEKA]&nbsp;— шар для байєсівської оптимізації поверх [[WEKA]].
 
* [https://github.com/automl/auto-sklearn Auto-sklearn]&nbsp;— шар для байєсівської оптимізації поверх {{Нп|scikit-learn|||}}.
 
 
* [https://github.com/mlr-org/mlrMBO mlrMBO] з [https://github.com/mlr-org/mlr mlr]&nbsp;— це пакет на мові [[R (мова програмування)|R]] для байєсівської оптимізації або для оптимізації на основі моделі невідомої функції (чорний ящик).
 
* [https://github.com/mlr-org/mlrMBO mlrMBO] з [https://github.com/mlr-org/mlr mlr]&nbsp;— це пакет на мові [[R (мова програмування)|R]] для байєсівської оптимізації або для оптимізації на основі моделі невідомої функції (чорний ящик).
 
* [https://github.com/yelp/MOE MOE]&nbsp;— це бібліотека для [[Python]], [[C++]] і системи паралельних обчислень [[CUDA]], імплементує Байєсова глобальну оптимізацію, використовуючи гаусові процеси.
  +
* [https://github.com/scikit-optimize/scikit-optimize scikit-optimize]&nbsp;— пакет на Python або послідовна модель оптимізації з інтерфейсом scipy.optimize.<ref name=skopt>{{Cite web|url=https://scikit-optimize.github.io/|title=skopt API documentation|website=scikit-optimize.github.io}}</ref>
  +
* [https://github.com/automl/SMAC3 SMAC]&nbsp;— бібліотека на мовах [[Python]]/[[Java]], імплементує Байєсову оптимізацію<ref name="SMAC">{{cite journal | vauthors = Hutter F, Hoos HH, Leyton-Brown K | title = Sequential Model-Based Optimization for General Algorithm Configuration | url = https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf | journal = Proceedings of the Conference on Learning and Intelligent OptimizatioN (LION 5)}}</ref>.
 
* [https://github.com/HIPS/Spearmint Spearmint]&nbsp;— це пакет для байєсівської оптимізації алгоритмів машинного навчання.
 
* [https://github.com/PhilippPro/tuneRanger tuneRanger]&nbsp;— це пакет на мові R для налаштування [[Random forest|випадкових лісів]] з використанням оптимізації на базі моделі.
 
* [https://github.com/PhilippPro/tuneRanger tuneRanger]&nbsp;— це пакет на мові R для налаштування [[Random forest|випадкових лісів]] з використанням оптимізації на базі моделі.
* [https://github.com/baptistar/BOCS BOCS]&nbsp;— пакет Matlab, який використовує {{Нп|напіввизначене програмування|||Semidefinite programming}} для мінімізації невідомої функції при дискретних вхідних даних. Містить також імплементацію для Python 3.
 
* [https://github.com/automl/SMAC3 SMAC]&nbsp;— бібліотека на мовах [[Python]]/[[Java]], імплементує Байєсову оптимізацію.
 
   
 
=== Засновані на градієнті ===
 
=== Засновані на градієнті ===
Рядок 153: Рядок 156:
 
=== Еволюційні методи ===
 
=== Еволюційні методи ===
   
* [https://github.com/rhiever/tpot TPOT]&nbsp;— це пакет на мові Python, який автоматично створює і оптимізує весь процес машинного навчання за допомогою [[Генетичне програмування|генетичного програмування]].
+
* [https://github.com/joeddav/devol devol]&nbsp;— це пакет на мові Python, який здійснює {{Нп|Пошук архітектури нейронної мережі|пошук архітектури глибокої нейронної мережі||Neural architecture search}} за допомогою [[Генетичне програмування|генетичного програмування]].
* [https://github.com/joeddav/devol devol]&nbsp;— пакет на мові Python, який здійснює {{Нп|Пошук архітектури нейронної мережі|пошук архітектури глибокої нейронної мережі||Neural architecture search}} за допомогою [[Генетичне програмування|генетичного програмування]].
 
 
* [https://github.com/DEAP/deap deap]&nbsp;— гнучкий [[Програмний каркас|фреймворк]] на Python для загальних еволюційних обчислень, він об'єднаний з пакетами розпаралелювання, такими як [https://github.com/soravux/scoop scoop] і [[Apache Spark|pyspark]] та іншими Python фреймворками, на зразок {{Нп|scikit-learn|||}} через [https://github.com/rsteca/sklearn-deap sklearn-deap].
 
* [https://github.com/DEAP/deap deap]&nbsp;— гнучкий [[Програмний каркас|фреймворк]] на Python для загальних еволюційних обчислень, він об'єднаний з пакетами розпаралелювання, такими як [https://github.com/soravux/scoop scoop] і [[Apache Spark|pyspark]] та іншими Python фреймворками, на зразок {{Нп|scikit-learn|||}} через [https://github.com/rsteca/sklearn-deap sklearn-deap].
  +
* [https://github.com/facebookresearch/nevergrad nevergrad]<ref name=nevergrad_issue1/>&nbsp;— пакет на мові Python, який включає методи контролю популяції та оптимізацію рою.<ref name=nevergrad/>
 
* [https://github.com/rhiever/tpot TPOT]&nbsp;— пакет на мові Python, який автоматично створює і оптимізує весь процес машинного навчання за допомогою [[Генетичне програмування|генетичного програмування]].
   
 
=== Інше ===
 
=== Інше ===
   
  +
* [[dlib]]<ref name=dlib_github>{{Cite web|url=https://github.com/davisking/dlib|title=A toolkit for making real world machine learning and data analysis applications in C++: davisking/dlib|date=February 25, 2019|via=GitHub}}</ref>&nbsp;— пакет на C++ з Python API, який має оптимізатор без параметрів [https://arxiv.org/abs/1703.02628 LIPO] та оптимізатор {{Нп|Довірча область|довірчої області||trust region}}, які працюють разом.<ref name=dlib_blog>{{cite web |last1=King |first1=Davis |title=A Global Optimization Algorithm Worth Using |url=http://blog.dlib.net/2017/12/a-global-optimization-algorithm-worth.html}}</ref>
 
* [https://github.com/callowbird/Harmonica Harmonica]&nbsp;— пакет на Python для спектральної оптимізації гіперпараметрів<ref name=abs1706.00764/>.
 
* [https://github.com/hyperopt/hyperopt hyperopt] через [https://github.com/maxpumperla/hyperas hyperas] і [https://github.com/hyperopt/hyperopt-sklearn hyperopt-sklearn]&nbsp;— це пакети Python, які включають заснований на [[Ядрова оцінка густини розподілу|дереві парзеновскіх оцінок]] алгоритм оптимізації розподілених гіперпараметрів.
 
* [https://github.com/hyperopt/hyperopt hyperopt] через [https://github.com/maxpumperla/hyperas hyperas] і [https://github.com/hyperopt/hyperopt-sklearn hyperopt-sklearn]&nbsp;— це пакети Python, які включають заснований на [[Ядрова оцінка густини розподілу|дереві парзеновскіх оцінок]] алгоритм оптимізації розподілених гіперпараметрів.
  +
* [https://github.com/facebookresearch/nevergrad nevergrad]<ref name=nevergrad_issue1>{{Cite web|url=https://github.com/facebookresearch/nevergrad/issues/1|title=[QUESTION] How to use to optimize NN hyperparameters · Issue #1 · facebookresearch/nevergrad|website=GitHub}}</ref>&nbsp;— пакет на Python для оптимізації без градієнтів з використанням таких методів, як диференційна еволюція, послідовне квадратичне програмування, fastGA, адаптація коваріаційної матриці, методи популяційного контролю і оптимізація рою частинок<ref name=nevergrad>{{Cite web|url=https://code.fb.com/ai-research/nevergrad/|title=Nevergrad: An open source tool for derivative-free optimization|date=December 20, 2018}}</ref>.
  +
* [https://github.com/Microsoft/nni nni]&nbsp;— пакет на Python, який включає налаштування гіперпараметрів для нейронних мереж в локальних і розподілених середовищах. Серед його методів TPE, випадкові, [[Алгоритм імітації відпалу|відпалу]], еволюційні, SMAC, пакетні, гратки і гіпербенд.
 
* [https://github.com/CMA-ES/pycma pycma]&nbsp;— це імплементація на мові Python алгоритму [[CMA-ES|адаптації коваріаційної матриці]] ({{lang-en|Covariance Matrix Adaptation Evolution Strategy}}).
 
* [https://github.com/CMA-ES/pycma pycma]&nbsp;— це імплементація на мові Python алгоритму [[CMA-ES|адаптації коваріаційної матриці]] ({{lang-en|Covariance Matrix Adaptation Evolution Strategy}}).
 
* [https://github.com/coin-or/rbfopt rbfopt]&nbsp;— пакет на мові Python, що використовує модель [[Радіальна базисна функція|радіально-базисної функції]]<ref name=abs1705.08520/>.
 
* [http://sumo.intec.ugent.be SUMO-Toolbox]&nbsp;— набір інструментів [[MATLAB]] для {{Нп|сурогатне моделювання|сурогатного моделювання||Surrogate model}}, що підтримує широкий набір гіперпараметрів оптимізаційних алгоритмів для багатьох типів моделей.
 
* [http://sumo.intec.ugent.be SUMO-Toolbox]&nbsp;— набір інструментів [[MATLAB]] для {{Нп|сурогатне моделювання|сурогатного моделювання||Surrogate model}}, що підтримує широкий набір гіперпараметрів оптимізаційних алгоритмів для багатьох типів моделей.
* [https://github.com/coin-or/rbfopt rbfopt]&nbsp;— пакет на мові Python, що використовує модель [[Радіальна базисна функція|радіально-базисної функції]].
 
* [https://github.com/callowbird/Harmonica Harmonica]&nbsp;— пакет на Python для спектральної оптимізації гіперпараметрів.
 
   
 
== Комерційні сервіси ==
 
== Комерційні сервіси ==

Версія за 09:02, 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].


Інше

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

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

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

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

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

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

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

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

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

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

Інше

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

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

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

Див. також

Примітки

  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. а б Diaz, Gonzalo; Fokoue, Achille; Nannicini, Giacomo; Samulowitz, Horst (2017). «An effective algorithm for hyperparameter optimization of neural networks». arXiv:1705.08520 [cs.AI]. 
  19. а б Hazan, Elad; Klivans, Adam; Yuan, Yang (2017). «Hyperparameter Optimization: A Spectral Approach». arXiv:1706.00764 [cs.LG]. 
  20. Efficient and Robust Automated Machine Learning. Advances in Neural Information Processing Systems 28 (NIPS 2015): 2962–2970. 2015.  Проігноровано невідомий параметр |vauthors= (довідка)
  21. Open-sourcing Ax and BoTorch: New AI tools for adaptive experimentation. 2019. 
  22. Baptista, Ricardo; Poloczek, Matthias (2018). «Bayesian Optimization of Combinatorial Structures». arXiv:1806.08838 [stat.ML]. 
  23. Falkner, Stefan; Klein, Aaron; Hutter, Frank (2018). «BOHB: Robust and Efficient Hyperparameter Optimization at Scale». arXiv:1807.01774 [stat.ML]. 
  24. skopt API documentation. scikit-optimize.github.io. 
  25. Sequential Model-Based Optimization for General Algorithm Configuration. Proceedings of the Conference on Learning and Intelligent OptimizatioN (LION 5).  Проігноровано невідомий параметр |vauthors= (довідка)
  26. а б [QUESTION] How to use to optimize NN hyperparameters · Issue #1 · facebookresearch/nevergrad. GitHub. 
  27. а б Nevergrad: An open source tool for derivative-free optimization. December 20, 2018. 
  28. A toolkit for making real world machine learning and data analysis applications in C++: davisking/dlib. February 25, 2019 — через GitHub. 
  29. King, Davis. A Global Optimization Algorithm Worth Using.