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

Синтаксис целевой функции

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

bayesopt передает таблицу переменных в целевую функцию. Переменные имеют имена и типы, которые вы объявляете; см. «Переменные» для байесовской оптимизации.

Целевая функция имеет следующую сигнатуру:

[objective,coupledconstraints,userdata] = fun(x)
  1. objective - Значение целевой функции в x, настоящий скаляр.

  2. coupledconstraints - Значение связанных ограничений, если таковые имеются (необязательный выход), вектор вещественных значений. Отрицательное значение указывает, что ограничение выполнено, положительное значение указывает, что оно не удовлетворено. Для получения дополнительной информации см. раздел «Сопряженные ограничения».

  3. userdata - Дополнительные данные, которые ваша функция может вернуть для дальнейшего использования, таких как графическое изображение или логгирование (необязательный выход). Для получения примера см. «Байесовские Функции построения графика оптимизации».

Пример целевой функции

Эта целевая функция возвращает потери в перекрестной подгонке модели SVM с параметрами box и sigma. Цель также возвращает связанную ограничительную функцию, которая положительна (недопустима), когда количество векторов поддержки превышает 100 (100 допустимо, 101 нет).

function [objective,constraint] = mysvmfun(x,cdata,grp)
SVMModel = fitcsvm(cdata,grp,'KernelFunction','rbf',...
    'BoxConstraint',x.box,...
    'KernelScale',x.sigma);
objective = kfoldLoss(crossval(SVMModel));
constraint = sum(SVMModel.SupportVectors) - 100.5;

Чтобы использовать целевую функцию, принимая, что cdata и grp существовать в рабочей области, создать анонимную функцию, которая включает в себя данные, как описано в Параметризация Функций.

fun = @(x)mysvmfun(x,cdata,grp);
results = bayesopt(fun,vars) % Assumes vars exists

Ошибки целевой функции

bayesopt считает вашу целевую функцию возвращать ошибку, когда целевая функция возвращает что-либо, кроме конечного действительного скаляра. Для примера, если ваша целевая функция возвращает комплексное число, NaN, Inf, или матрица с несколькими записями, затем bayesopt считает, что ваши ошибки целевой функции. Если bayesopt встречается с ошибкой, продолжает оптимизировать и автоматически обновляет байесовскую модель точек, которые приводят к ошибкам. Эта байесовская модель является Error model. bayesopt включает модель Error в качестве связанного ограничения. См. «Сопряженные ограничения».

Когда ошибки существуют, можно построить график модели Error, установив bayesopt PlotFcn Пара "имя-значение" @plotConstraintModels. Или можно ретроспективно вызвать plot о результатах байесовской оптимизации и включить @plotConstraintModels.

Похожие темы