Рабочий процесс Байесовской оптимизации

Что такое байесовская оптимизация?

Оптимизация в самой общей форме является процессом определения местоположения точки, которая минимизирует действительную функцию, называемую objective function. Байесовская оптимизация является именем одного такого процесса. Байесовская оптимизация внутренне поддерживает Гауссову модель процесса целевой функции и использует вычисления целевой функции, чтобы обучить модель. Одним из нововведений в байесовской оптимизации является использование acquisition function, которую алгоритм использует для определения следующей точки для оценки. Функция сбора может сбалансировать выборку в точках, которые имеют низко смоделированные целевые функции, и исследование областей, которые еще не были хорошо смоделированы. Для получения дополнительной информации см. Байесовский алгоритм оптимизации.

Байесовская оптимизация является частью Statistics and Machine Learning Toolbox™, потому что она хорошо подходит для оптимизации hyperparameters алгоритмов классификации и регрессии. Гиперпараметр является внутренним параметром классификатора или регрессионой функции, таким как прямоугольное ограничение машины опорных векторов или скорость обучения устойчивого классификационного ансамбля. Эти параметры могут сильно повлиять на эффективность классификатора или регрессора, и, тем не менее, оптимизировать их обычно трудно или длительно. См. Байесовские характеристики оптимизации.

Как правило, оптимизация гиперпараметров означает, что вы пытаетесь минимизировать потери классификатора или регрессии при перекрестной валидации.

Способы выполнить байесову оптимизацию

Можно выполнить байесовскую оптимизацию несколькими способами:

  • fitcauto и fitrauto - Передайте предиктор и данные отклика в fitcauto или fitrauto функция для оптимизации через выбор типов модели и значений гиперзначений параметров. В отличие от других подходов, использование fitcauto или fitrauto не требует, чтобы вы задали одну модель до оптимизации; выбор модели является частью процесса оптимизации. Оптимизация минимизирует потери перекрестной валидации, которая моделируется с помощью мульти- TreeBagger модель в fitcauto и мульти- RegressionGP модель в fitrauto, а не одну регрессионую модель Гауссова процесса, используемую в других подходах. См. Байесову оптимизацию для fitcauto и байесовская оптимизация для fitrauto.

  • Приложения Classification Learner и Regression Learner - Выбирайте Optimizable модели в приложениях машинного обучения и автоматически настраивайте их значения гиперзначений параметров с помощью байесовской оптимизации. Оптимизация минимизирует потери модели на основе выбранных опций валидации. Этот подход имеет меньше параметров настройки, чем использование функции подгонки, но позволяет выполнить оптимизацию по Байесову непосредственно в приложениях См. Оптимизацию по гипероптимизации параметров управления в Classification Learner App и Оптимизацию по гипероптимизации параметров управления в Regression Learner App.

  • Функция Fit - Включите OptimizeHyperparameters Пара "имя-значение" во многих функциях аппроксимации для автоматического применения байесовской оптимизации. Оптимизация минимизирует потери перекрестной валидации. Этот подход дает вам меньше параметров настройки, чем использование bayesopt, но позволяет вам выполнить байесовскую оптимизацию легче. См. Байесовская оптимизация с использованием функции подгонки.

  • bayesopt - Оказывайте наибольший контроль над своей оптимизацией, вызывая bayesopt непосредственно. Этот подход требует, чтобы вы написали целевую функцию, которая не должна представлять потери перекрестной валидации. См. Байесовская оптимизация с использованием bayesopt.

Байесовская оптимизация с использованием функции аппроксимации

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

  1. Выберите свой решатель классификации или регрессии среди fitcdiscr, fitcecoc, fitcensemble, fitckernel, fitcknn, fitclinear, fitcnb, fitcsvm, fitctree, fitrensemble, fitrgp, fitrkernel, fitrlinear, fitrsvm, или fitrtree.

  2. Определитесь с гиперпараметрами, чтобы оптимизировать, и передайте их в OptimizeHyperparameters Пара "имя-значение". Для каждой функции подгонки можно выбрать из набора гиперпараметров. Смотрите Подходящие Гиперпараметры для Подгонки Функций, или используйте hyperparameters function, или обратитесь к странице с описанием функции аппроксимации.

    Можно передать массив ячеек с именами параметров. Можно также задать 'auto' как OptimizeHyperparameters значение, которое выбирает типовой набор гиперпараметров для оптимизации, или 'all' оптимизировать все доступные параметры.

  3. Для функций подгонки ансамбля fitcecoc, fitcensemble, и fitrensemble, также включите параметры слабых учащихся в OptimizeHyperparameters массив ячеек.

  4. Вы можете создать структуру опций для HyperparameterOptimizationOptions Пара "имя-значение". Смотрите опции оптимизации гипероптимизации параметров управления для функций подгонки.

  5. Вызовите функцию fit с соответствующими парами "имя-значение".

Для примеров смотрите Оптимизацию классификатора SVM Подгонки Используя Байесову Оптимизацию и Оптимизацию бустерного регрессионого ансамбля. Кроме того, каждая страница с описанием функции аппроксимации содержит пример байесовской оптимизации.

Байесовская оптимизация с использованием bayesopt

Чтобы выполнить байесовскую оптимизацию, используя bayesopt, следуйте этим шагам.

  1. Подготовьте свои переменные. Смотрите Переменные для байесовской оптимизации.

  2. Создайте свою целевую функцию. См. «Байесовские целевые функции оптимизации». При необходимости создайте ограничения тоже. См. «Ограничения в байесовской оптимизации». Чтобы включить дополнительные параметры в целевую функцию, см. «Параметризация функций».

  3. Определитесь с опциями, означающими bayseopt Name,Value пар. Вы не обязаны передавать какие-либо опции в bayesopt но обычно это так, особенно при попытке улучшить решение.

  4. Звонить bayesopt.

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

Для получения примера смотрите Оптимизацию классификатора SVM с перекрестной проверкой используя bayesopt.

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

Байесовские алгоритмы оптимизации лучше всего подходят для этих типов задач.

ОсобенностьПодробнее
Низкая размерность

Оптимизация Байеса лучше всего работает при небольшом количестве размерностей, обычно 10 или менее. Хотя байесовская оптимизация может решить некоторые задачи с несколькими десятками переменных, она не рекомендуется для размерностей, превышающих около 50.

Дорогая цель

Байесовская оптимизация предназначена для целевых функций, которые медленно оцениваются. Это имеет значительные накладные расходы, обычно несколько секунд для каждой итерации.

Низкая точность

Байесовская оптимизация не обязательно дает очень точные результаты. Если у вас есть детерминированная целевая функция, можно иногда улучшить точность, запустив стандартный алгоритм оптимизации из bayesopt решение.

Глобальное решение

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

Гиперпараметры

Байесовская оптимизация хорошо подходит для оптимизации hyperparameters другой функции. Гиперпараметр является параметром, который управляет поведением функции. Для примера, fitcsvm функция подходит для модели SVM с данными. Имеет гиперпараметры BoxConstraint и KernelScale для его 'rbf' KernelFunction. Для примера байесовской оптимизации, применяемой к гиперпараметрам, смотрите Оптимизацию Перекрестно-проверенного классификатора SVM с использованием bayesopt.

Параметры, доступные для функций подгонки

Подходящие гиперпараметры для подгонки функций

Имя функцииПодходящие параметры
fitcdiscrDelta
Gamma
DiscrimType
fitcecocCoding
подходящие для fitcdiscr параметры для 'Learners','discriminant'
подходящие для fitckernel параметры для 'Learners','kernel'
подходящие для fitcknn параметры для 'Learners','knn'
подходящие для fitclinear параметры для 'Learners','linear'
подходящие для fitcsvm параметры для 'Learners','svm'
подходящие для fitctree параметры для 'Learners','tree'
fitcensembleMethod
NumLearningCycles
LearnRate
подходящие для fitcdiscr параметры для 'Learners','discriminant'
подходящие для fitcknn параметры для 'Learners','knn'
подходящие для fitctree параметры для 'Learners','tree'
fitckernel'Learner'
'KernelScale'
'Lambda'
'NumExpansionDimensions'
fitcknnNumNeighbors
Distance
DistanceWeight
Exponent
Standardize
fitclinearLambda
Learner
Regularization
fitcnbDistributionNames
Width
Kernel
fitcsvmBoxConstraint
KernelScale
KernelFunction
PolynomialOrder
Standardize
fitctreeMinLeafSize
MaxNumSplits
SplitCriterion
NumVariablesToSample
fitrensembleMethod
NumLearningCycles
LearnRate
подходящие для fitrtree параметры для 'Learners','tree':
MinLeafSize
MaxNumSplits
NumVariablesToSample
fitrgpSigma
BasisFunction
KernelFunction
KernelScale
Standardize
fitrkernelLearner
KernelScale
Lambda
NumExpansionDimensions
Epsilon
fitrlinearLambda
Learner
Regularization
fitrsvmBoxConstraint
KernelScale
Epsilon
KernelFunction
PolynomialOrder
Standardize
fitrtreeMinLeafSize
MaxNumSplits
NumVariablesToSample

Опции оптимизации гипероптимизации параметров управления для функций подгонки

При оптимизации с помощью функции fit у вас есть эти опции, доступные в HyperparameterOptimizationOptions Пара "имя-значение". Задайте значение как структуру. Все поля в структуре являются необязательными.

Имя поляЗначенияДефолт
Optimizer
  • 'bayesopt' - Используйте байесовскую оптимизацию. Внутренне эта настройка вызывает bayesopt.

  • 'gridsearch' - Используйте поиск по сетке с NumGridDivisions значений на размерность.

  • 'randomsearch' - Поиск наугад среди MaxObjectiveEvaluations точки.

'gridsearch' ищет в случайном порядке, используя равномерную выборку без замены от сетки. После оптимизации можно получить таблицу в порядке сетки при помощи команды sortrows(Mdl.HyperparameterOptimizationResults).

'bayesopt'
AcquisitionFunctionName

  • 'expected-improvement-per-second-plus'

  • 'expected-improvement'

  • 'expected-improvement-plus'

  • 'expected-improvement-per-second'

  • 'lower-confidence-bound'

  • 'probability-of-improvement'

Функции сбора данных, имена которых включают per-second не дают воспроизводимых результатов, потому что оптимизация зависит от времени выполнения целевой функции. Функции сбора данных, имена которых включают plus изменять свое поведение при чрезмерной эксплуатации области. Для получения дополнительной информации см. Типы функций приобретения.

'expected-improvement-per-second-plus'
MaxObjectiveEvaluationsМаксимальное количество вычислений целевой функции.30 для 'bayesopt' или 'randomsearch', и вся сетка для 'gridsearch'
MaxTime

Временной предел, заданный как положительный действительный. Предел времени в секундах, что измеряется tic и toc. Время выполнения может превысить MaxTime потому что MaxTime не прерывает вычисления функции.

Inf
NumGridDivisionsДля 'gridsearch', количество значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности, или скаляром, который применяется ко всем размерностям. Это поле игнорируется для категориальных переменных.10
ShowPlotsЛогическое значение, указывающее, показывать ли графики. Если true, это поле строит график наилучшего значения целевой функции относительно числа итерации. Если существует один или два параметра оптимизации и если Optimizer является 'bayesopt', затем ShowPlots также строит график модели целевой функции относительно параметров.true
SaveIntermediateResultsЛогическое значение, указывающее, сохранять ли результаты при Optimizer является 'bayesopt'. Если true, это поле перезаписывает переменную рабочей области с именем 'BayesoptResults' при каждой итерации. Переменная является BayesianOptimization объект.false
Verbose

Отображение в командной строке.

  • 0 - Нет итерационного отображения

  • 1 - Итеративное отображение

  • 2 - Итеративное отображение с дополнительной информацией

Для получения дополнительной информации смотрите bayesopt Verbose аргумент пары "имя-значение".

1
UseParallelЛогическое значение, указывающее, запускать ли байесовскую оптимизацию параллельно, что требует Parallel Computing Toolbox™. Из-за непродуктивности параллельной синхронизации параллельная байесовская оптимизация не обязательно приводит к воспроизводимым результатам. Для получения дополнительной информации см. «Параллельная байесовская оптимизация».false
Repartition

Логическое значение, указывающее, следует ли повторять перекрестную валидацию при каждой итерации. Если falseОптимизатор использует один раздел для оптимизации.

true обычно дает наиболее устойчивые результаты, потому что эта настройка учитывает шум разбиения. Однако для хороших результатов true требует, по крайней мере, в два раза больше вычислений функции.

false
Используйте не более одного из следующих трех имен полей.
CVPartitionA cvpartition объект, созданный cvpartition.'Kfold',5 если вы не задаете какое-либо поле перекрестной проверки
HoldoutСкаляр в области значений (0,1) представляющий фракцию удержания.
KfoldЦелое число, больше 1.

См. также

|

Похожие темы