주요 콘텐츠

bayesopt

베이즈 최적화를 사용하여 최적의 머신러닝 하이퍼파라미터 선택

설명

results = bayesopt(fun,vars)fun(vars)를 최소화하는 vars의 값을 찾으려고 시도합니다.

참고

목적 함수에 추가 파라미터를 포함하려면 함수를 파라미터화하기 항목을 참조하십시오.

예제

results = bayesopt(fun,vars,Name,Value)Name,Value 인수에 따라 최적화 과정을 수정합니다.

예제

예제

모두 축소

이 예제에서는 교차 검증 손실을 최소화하기 위해 bayesopt를 사용하여 BayesianOptimization 객체를 만드는 방법을 보여줍니다.

KNN 분류기의 하이퍼파라미터를 ionosphere 데이터에 대해 최적화합니다. 즉, 교차 검증 손실을 최소화하는 KNN 하이퍼파라미터를 찾습니다. bayesopt가 다음 하이퍼파라미터에 대해 최소화하도록 합니다.

  • 1~30 크기의 최근접 이웃 파라미터

  • 거리 함수 'chebychev', 'euclidean''minkowski'.

재현이 가능하도록 난수 시드값과 파티션을 설정하고 AcquisitionFunctionName 옵션을 'expected-improvement-plus'로 설정합니다. 반복 과정을 표시하지 않도록 하기 위해, 'Verbose'0으로 설정합니다. fun을 다음 데이터를 포함하는 익명 함수로 생성하여, 파티션 c와 피팅 데이터 XY를 목적 함수 fun에 전달합니다. 함수를 파라미터화하기 항목을 참조하십시오.

load ionosphere
rng default
num = optimizableVariable('n',[1,30],'Type','integer');
dst = optimizableVariable('dst',{'chebychev','euclidean','minkowski'},'Type','categorical');
c = cvpartition(351,'Kfold',5);
fun = @(x)kfoldLoss(fitcknn(X,Y,'CVPartition',c,'NumNeighbors',x.n,...
    'Distance',char(x.dst),'NSMethod','exhaustive'));
results = bayesopt(fun,[num,dst],'Verbose',0,...
    'AcquisitionFunctionName','expected-improvement-plus')

Figure contains an axes object. The axes object with title Objective function model, xlabel n, ylabel dst contains 5 objects of type line, surface, contour. One or more of the lines displays its values using only markers These objects represent Observed points, Model mean, Next point, Model minimum feasible.

Figure contains an axes object. The axes object with title Min objective vs. Number of function evaluations, xlabel Function evaluations, ylabel Min objective contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

results = 
  BayesianOptimization with properties:

                      ObjectiveFcn: @(x)kfoldLoss(fitcknn(X,Y,'CVPartition',c,'NumNeighbors',x.n,'Distance',char(x.dst),'NSMethod','exhaustive'))
              VariableDescriptions: [1×2 optimizableVariable]
                           Options: [1×1 struct]
                      MinObjective: 0.1197
                   XAtMinObjective: [1×2 table]
             MinEstimatedObjective: 0.1213
          XAtMinEstimatedObjective: [1×2 table]
           NumObjectiveEvaluations: 30
                  TotalElapsedTime: 24.1603
                         NextPoint: [1×2 table]
                            XTrace: [30×2 table]
                    ObjectiveTrace: [30×1 double]
                  ConstraintsTrace: []
                     UserDataTrace: {30×1 cell}
      ObjectiveEvaluationTimeTrace: [30×1 double]
                IterationTimeTrace: [30×1 double]
                        ErrorTrace: [30×1 double]
                  FeasibilityTrace: [30×1 logical]
       FeasibilityProbabilityTrace: [30×1 double]
               IndexOfMinimumTrace: [30×1 double]
             ObjectiveMinimumTrace: [30×1 double]
    EstimatedObjectiveMinimumTrace: [30×1 double]

결합 제약 조건이란 목적 함수를 평가해야만 평가할 수 있는 제약 조건입니다. 이 예제에서 목적 함수는 SVM 모델의 교차 검증 손실입니다. 결합 제약 조건은 서포트 벡터의 개수가 100개를 넘지 않아야 한다는 것입니다. 모델에 관한 자세한 내용은 bayesopt를 사용하여 교차 검증된 분류기 최적화하기 항목에 나와 있습니다.

분류를 위한 데이터를 생성합니다.

rng default
grnpop = mvnrnd([1,0],eye(2),10);
redpop = mvnrnd([0,1],eye(2),10);
redpts = zeros(100,2);
grnpts = redpts;
for i = 1:100
    grnpts(i,:) = mvnrnd(grnpop(randi(10),:),eye(2)*0.02);
    redpts(i,:) = mvnrnd(redpop(randi(10),:),eye(2)*0.02);
end
cdata = [grnpts;redpts];
grp = ones(200,1);
grp(101:200) = -1;
c = cvpartition(200,'KFold',10);
sigma = optimizableVariable('sigma',[1e-5,1e5],'Transform','log');
box = optimizableVariable('box',[1e-5,1e5],'Transform','log');

목적 함수는 파티션 c에 대한 SVM 모델의 교차 검증 손실입니다. 결합 제약 조건은 서포트 벡터의 개수에서 100.5를 뺀 값입니다. 이렇게 하면 100개의 서포트 벡터는 음의 제약 조건 값을 제공하지만 101개의 서포트 벡터는 양의 값을 제공합니다. 이 모델에는 200개의 데이터 점이 있으므로 결합 제약 조건 값의 범위는 -99.5(항상 적어도 하나의 서포트 벡터 존재)~ 99.5입니다. 양의 값은 제약 조건을 충족하지 않았다는 뜻입니다.

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

fun을 다음 데이터를 포함하는 익명 함수로 생성하여, 파티션 c와 피팅 데이터 cdatagrp를 목적 함수 fun에 전달합니다. 함수를 파라미터화하기 항목을 참조하십시오.

fun = @(x)mysvmfun(x,cdata,grp,c);

결합 제약 조건이 있음을 최적화 함수가 알 수 있도록 NumCoupledConstraints1로 설정합니다. 제약 조건 모델을 플로팅하는 옵션을 설정합니다.

results = bayesopt(fun,[sigma,box],'IsObjectiveDeterministic',true,...
    'NumCoupledConstraints',1,'PlotFcn',...
    {@plotMinObjective,@plotConstraintModels},...
    'AcquisitionFunctionName','expected-improvement-plus','Verbose',0);

대부분의 점들이 실현 불가능한 서포트 벡터 개수를 초래합니다.

목적 함수를 병렬로 평가하여 베이즈 최적화의 속도를 향상시킵니다.

베이즈 최적화를 위한 변수와 목적 함수를 준비합니다.

목적 함수는 이진 분류 문제인 전리층 데이터에 대한 교차 검증 오차율입니다. fitcsvm을 분류기로 사용하고 BoxConstraintKernelScale을 최적화할 파라미터로 사용합니다.

load ionosphere
box = optimizableVariable('box',[1e-4,1e3],'Transform','log');
kern = optimizableVariable('kern',[1e-4,1e3],'Transform','log');
vars = [box,kern];
fun = @(vars)kfoldLoss(fitcsvm(X,Y,'BoxConstraint',vars.box,'KernelScale',vars.kern,...
    'Kfold',5));

병렬 베이즈 최적화를 사용하여 가장 낮은 교차 검증 오차를 제공하는 파라미터를 탐색합니다.

results = bayesopt(fun,vars,'UseParallel',true);
Copying objective function to workers...
Done copying objective function to workers.
|===============================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |          box |         kern |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |
|===============================================================================================================|
|    1 |       2 | Accept |      0.2735 |     0.56171 |     0.13105 |     0.13108 |    0.0002608 |       0.2227 |
|    2 |       2 | Accept |     0.35897 |      0.4062 |     0.13105 |     0.13108 |       3.6999 |       344.01 |
|    3 |       2 | Accept |     0.13675 |     0.42727 |     0.13105 |     0.13108 |      0.33594 |      0.39276 |
|    4 |       2 | Accept |     0.35897 |      0.4453 |     0.13105 |     0.13108 |     0.014127 |       449.58 |
|    5 |       2 | Best   |     0.13105 |     0.45503 |     0.13105 |     0.13108 |      0.29713 |       1.0859 |
|    6 |       6 | Accept |     0.35897 |     0.16605 |     0.13105 |     0.13108 |       8.1878 |        256.9 |
|    7 |       5 | Best   |     0.11396 |     0.51146 |     0.11396 |     0.11395 |       8.7331 |       0.7521 |
|    8 |       5 | Accept |     0.14245 |     0.24943 |     0.11396 |     0.11395 |    0.0020774 |     0.022712 |
|    9 |       6 | Best   |     0.10826 |      4.0711 |     0.10826 |     0.10827 |    0.0015925 |    0.0050225 |
|   10 |       6 | Accept |     0.25641 |      16.265 |     0.10826 |     0.10829 |   0.00057357 |   0.00025895 |
|   11 |       6 | Accept |      0.1339 |      15.581 |     0.10826 |     0.10829 |       1.4553 |     0.011186 |
|   12 |       6 | Accept |     0.16809 |      19.585 |     0.10826 |     0.10828 |      0.26919 |   0.00037649 |
|   13 |       6 | Accept |     0.20513 |      18.637 |     0.10826 |     0.10828 |       369.59 |     0.099122 |
|   14 |       6 | Accept |     0.12536 |     0.11382 |     0.10826 |     0.10829 |       5.7059 |       2.5642 |
|   15 |       6 | Accept |     0.13675 |        2.63 |     0.10826 |     0.10828 |       984.19 |       2.2214 |
|   16 |       6 | Accept |     0.12821 |      2.0743 |     0.10826 |     0.11144 |    0.0063411 |    0.0090242 |
|   17 |       6 | Accept |      0.1339 |      0.1939 |     0.10826 |     0.11302 |   0.00010225 |    0.0076795 |
|   18 |       6 | Accept |     0.12821 |     0.20933 |     0.10826 |     0.11376 |       7.7447 |       1.2868 |
|   19 |       4 | Accept |     0.55556 |      17.564 |     0.10826 |     0.10828 |    0.0087593 |   0.00014486 |
|   20 |       4 | Accept |      0.1396 |      16.473 |     0.10826 |     0.10828 |     0.054844 |     0.004479 |
|===============================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |          box |         kern |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |
|===============================================================================================================|
|   21 |       4 | Accept |      0.1339 |     0.17127 |     0.10826 |     0.10828 |       9.2668 |       1.2171 |
|   22 |       4 | Accept |     0.12821 |    0.089065 |     0.10826 |     0.10828 |       12.265 |       8.5455 |
|   23 |       4 | Accept |     0.12536 |    0.073586 |     0.10826 |     0.10828 |       1.3355 |       2.8392 |
|   24 |       4 | Accept |     0.12821 |     0.08038 |     0.10826 |     0.10828 |       131.51 |       16.878 |
|   25 |       3 | Accept |     0.11111 |      10.687 |     0.10826 |     0.10867 |       1.4795 |     0.041452 |
|   26 |       3 | Accept |     0.13675 |     0.18626 |     0.10826 |     0.10867 |       2.0513 |      0.70421 |
|   27 |       6 | Accept |     0.12821 |    0.078559 |     0.10826 |     0.10868 |       980.04 |        44.19 |
|   28 |       5 | Accept |     0.33048 |    0.089844 |     0.10826 |     0.10843 |      0.41821 |       10.208 |
|   29 |       5 | Accept |     0.16239 |     0.12688 |     0.10826 |     0.10843 |       172.39 |       141.43 |
|   30 |       5 | Accept |     0.11966 |     0.14597 |     0.10826 |     0.10846 |       639.15 |        14.75 |

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 48.2085 seconds.
Total objective function evaluation time: 128.3472

Best observed feasible point:
       box         kern   
    _________    _________

    0.0015925    0.0050225

Observed objective function value = 0.10826
Estimated objective function value = 0.10846
Function evaluation time = 4.0711

Best estimated feasible point (according to models):
       box         kern   
    _________    _________

    0.0015925    0.0050225

Estimated objective function value = 0.10846
Estimated function evaluation time = 2.8307

bestPoint 함수를 사용하여 베이즈 모델 results에서 최적의 실현가능점을 반환합니다. 디폴트 기준인 min-visited-upper-confidence-interval을 사용합니다. 이 기준은 목적 함수 값의 상한 신뢰구간을 최소화하는 방문된 점을 실현가능점으로 결정합니다.

zbest = bestPoint(results)
zbest=1×2 table
       box         kern   
    _________    _________

    0.0015925    0.0050225

테이블 zbest에는 'BoxConstraint''KernelScale' 이름-값 쌍 인수에 대한 최적의 추정값이 포함되어 있습니다. 이들 값을 사용하여 새로운 최적화된 분류기를 훈련합니다.

Mdl = fitcsvm(X,Y,'BoxConstraint',zbest.box,'KernelScale',zbest.kern);

최적의 파라미터가 Mdl에서 관측됩니다.

Mdl.BoxConstraints(1)
ans = 0.0016
Mdl.KernelParameters.Scale
ans = 0.0050

입력 인수

모두 축소

목적 함수로, 함수 핸들 또는 Value가 함수 핸들인 parallel.pool.Constant (Parallel Computing Toolbox)로 지정됩니다. 일반적으로 fun은 훈련을 제어하기 위한 조정 가능한 하이퍼파라미터를 갖는 머신러닝 모델에 대한 손실 측정값(예: 오분류 오차)을 반환합니다. fun은 다음과 같은 시그니처를 포함합니다.

objective = fun(x)
% or
[objective,constraints] = fun(x)
% or
[objective,constraints,UserData] = fun(x)

fun은 변수 값들로 구성된 1×D 테이블 x를 받고, 목적 함수 값 fun(x)를 나타내는 실수형 스칼라 objective를 반환합니다.

선택적으로 fun은 다음도 반환합니다.

  • constraints: 결합 제약 조건(coupled constraint) 위반을 나타내는 실수형 벡터. 이에 대한 정의는 결합 제약 조건(Coupled Constraint) 항목을 참조하십시오. constraint(j) > 0은 제약 조건 j를 위반했음을 의미합니다. constraint(j) < 0은 제약 조건 j를 충족했음을 의미합니다.

  • UserData: 임의 유형(스칼라, 행렬, 구조체, 객체 등)의 엔터티. UserData를 사용하는 사용자 지정 플롯 함수에 대한 예제는 Create a Custom Plot Function 항목을 참조하십시오.

bayesoptparallel.pool.Constant와 함께 사용하는 방법에 관한 자세한 내용은 Placing the Objective Function on Workers 항목을 참조하십시오.

예: @objfun

데이터형: function_handle

변수 설명으로, 조정할 하이퍼파라미터를 정의하는 optimizableVariable 객체로 구성된 벡터로 지정됩니다.

예: [X1,X2], 여기서 X1X2optimizableVariable 객체임

이름-값 인수

모두 확장

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: results = bayesopt(fun,vars,'AcquisitionFunctionName','expected-improvement-plus')

알고리즘 제어

모두 확장

다음 평가 점을 선택하는 함수로, 나열된 선택 항목 중 하나로 지정됩니다.

최적화는 목적 함수의 런타임에 종속적이기 때문에 이름에 per-second가 포함된 획득 함수는 재현 가능한 결과를 산출하지 않습니다. 이름에 plus가 포함된 획득 함수는 특정 영역을 과도하게 사용하는 경우 해당 동작을 수정합니다. 자세한 내용은 획득 함수 유형 항목을 참조하십시오.

예: 'AcquisitionFunctionName','expected-improvement-per-second'

결정적 목적 함수를 지정하며, false 또는 true로 지정됩니다. fun이 확률적인 경우, 즉 fun(x)가 동일한 x에 대해 다양한 값을 반환할 수 있는 경우 IsObjectiveDeterministicfalse로 설정합니다. 이 경우, bayesopt는 최적화 중에 잡음 수준을 추정합니다.

예: 'IsObjectiveDeterministic',true

데이터형: logical

탐색 성향으로, 양의 실수로 지정됩니다. 'expected-improvement-plus''expected-improvement-per-second-plus' 획득 함수에 적용합니다. plus 항목을 참조하십시오.

예: 'ExplorationRatio',0.2

데이터형: double

가우스 과정 모델을 GPActiveSetSize개 이하의 점에 피팅하며, 양의 정수로 지정됩니다. bayesoptGPActiveSetSize개보다 많은 점을 방문한 경우, GP 모델을 사용한 후속 반복에서는 모델을 GPActiveSetSize개 점에 피팅합니다. bayesopt는 방문한 점들 중에서 무작위 비복원추출 방식으로 균일하게 점을 선택합니다. 점을 적게 사용하면 GP 모델 피팅이 더 빨라지지만, 피팅의 정확도는 떨어질 수 있습니다.

예: 'GPActiveSetSize',80

데이터형: double

병렬 계산으로, false(병렬로 계산하지 않음) 또는 true(병렬로 계산)로 지정됩니다. 병렬 연산에는 Parallel Computing Toolbox™가 필요합니다.

bayesopt는 복수의 목적 함수 평가를 병렬 워커에서 병렬로 동시에 수행합니다. 알고리즘에 관한 자세한 내용은 Parallel Bayesian Optimization 항목을 참조하십시오.

예: 'UseParallel',true

데이터형: logical

병렬 워커 목적 함수 값에 대한 대치(imputation) 방법으로, 'clipped-model-prediction', 'model-prediction', 'max-observed' 또는 'min-observed'로 지정됩니다. 평가할 새로운 점을 생성하기 위해, bayesopt는 모든 점(워커에서 평가 중인 점까지 포함)에 대해 가우스 과정을 피팅합니다. 과정 피팅을 위해, bayesopt는 현재 워커에 있는 점들에 대한 목적 함수 값을 대치합니다. ParallelMethod는 대치(imputation)에 사용하는 방법을 지정합니다.

  • 'clipped-model-prediction' — 다음 값들 중 최댓값으로 대치합니다.

    • x에서의 가우스 과정 평균 예측값

    • 방문한 실현가능점 중에서 관측된 최소 목적 함수 값

    • 모든 실현가능점 중 최소 모델 예측값

  • 'model-prediction' — 점 x에서의 가우스 과정 평균 예측값으로 대치합니다.

  • 'max-observed' — 실현가능점 중에서 관측된 최대 목적 함수 값으로 대치합니다.

  • 'min-observed' — 실현가능점 중에서 관측된 최소 목적 함수 값으로 대치합니다.

예: 'ParallelMethod','max-observed'

활성 병렬 워커 개수에 대한 허용오차로, 양의 정수로 지정됩니다. bayesopt가 평가할 점을 할당한 후에, 할당할 새로운 점을 계산하기 전에 활성 워커 개수가 MinWorkerUtilization개보다 적은지 확인합니다. 이 개수보다 적으면, bayesopt는 범위 내에서의 무작위 점을 사용 가능한 모든 워커에 할당합니다. 그렇지 않으면, bayesopt는 한 개 워커에 할당할 최적점을 계산합니다. bayesopt는 피팅된 점보다 훨씬 빠르게 무작위 점을 생성하므로 이러한 동작은 워커 활용도를 높일 수 있지만 점들이 양호하지 못할 수 있습니다. 자세한 내용은 Parallel Bayesian Optimization 항목을 참조하십시오.

예: 'MinWorkerUtilization',3

데이터형: double

시작 및 중지

모두 확장

목적 함수 평가 제한으로, 양의 정수로 지정됩니다.

예: 'MaxObjectiveEvaluations',60

데이터형: double

시간 제한으로, 음이 아닌 실수형 스칼라로 지정됩니다. 시간 제한은 초 단위이며, tictoc으로 측정됩니다. MaxTime의 값에 상관없이 항상 적어도 한 번 이상 최적화 반복이 수행됩니다.

bayesopt는 함수 계산을 중단시키지 않으므로 런타임이 MaxTime을 초과할 수 있습니다.

예: 'MaxTime',3600

데이터형: double

초기 평가 점의 개수로, 양의 정수로 지정됩니다. bayesopt는 각 변수에 대한 Transform 설정('none'은 균일 간격으로 지정하고, 'log'는 로그 간격으로 지정함)에 따라 변수 범위 내에서 무작위로 점을 선택합니다.

예: 'NumSeedPoints',10

데이터형: double

제약 조건

모두 확장

변수에 대한 결정적 제약 조건으로, 함수 핸들로 지정됩니다.

자세한 내용은 Deterministic Constraints — XConstraintFcn 항목을 참조하십시오.

예: 'XConstraintFcn',@xconstraint

데이터형: function_handle

조건부 변수 제약 조건으로, 함수 핸들로 지정됩니다.

자세한 내용은 Conditional Constraints — ConditionalVariableFcn 항목을 참조하십시오.

예: 'ConditionalVariableFcn',@condfun

데이터형: function_handle

결합 제약 조건의 개수로, 양의 정수로 지정됩니다. 자세한 내용은 Coupled Constraints 항목을 참조하십시오.

참고

결합 제약 조건이 있는 경우 NumCoupledConstraints가 필요합니다.

예: 'NumCoupledConstraints',3

데이터형: double

결합 제약 조건이 결정적인지 여부에 대한 표시로, 길이가 NumCoupledConstraints인 논리형 벡터로 지정됩니다. 자세한 내용은 Coupled Constraints 항목을 참조하십시오.

예: 'AreCoupledConstraintsDeterministic',[true,false,true]

데이터형: logical

리포트, 플롯 및 중단

모두 확장

명령줄 표시 수준으로, 0, 1 또는 2로 지정됩니다.

  • 0 — 명령줄을 표시하지 않습니다.

  • 1 — 각 반복에서 반복 횟수, 결과 리포트(다음 단락 참조), 목적 함수 모델, 목적 함수 평가 시간, 관측된 최적(최저) 목적 함수 값, 추정된 최적(최저) 목적 함수 값, 관측된 제약 조건 값(있는 경우)을 표시합니다. 병렬로 최적화를 수행하는 경우, 다음 워커에 작업을 할당한 후에 활성 워커 개수가 몇 개인지 보여주는 열도 표시합니다.

    각 반복의 결과 리포트는 다음 중 하나입니다.

    • Accept — 목적 함수가 유한한 값을 반환하고 모든 제약 조건을 충족합니다.

    • Best — 제약 조건을 충족하고 목적 함수가 실현가능점 중 최저값을 반환합니다.

    • Error — 목적 함수가 유한한 실수형 스칼라가 아닌 값을 반환합니다.

    • Infeas — 1개 이상의 제약 조건을 위반합니다.

  • 21과 동일하며, 다음 점을 선택하는 데 소요된 시간, 모델 피팅 시간, "plus" 획득 함수가 과다 사용을 선언한다는 표시, 병렬 활용도가 낮아서 병렬 워커가 무작위 점에 할당된다는 등의 진단 정보를 추가로 표시합니다.

예: 'Verbose',2

데이터형: double

각 반복 후에 호출되는 함수로, 함수 핸들로 구성된 셀형 배열 또는 함수 핸들로 지정됩니다. 출력 함수는 솔버를 중단할 수 있으며, 변수 생성이나 플로팅을 포함한 임의의 계산을 수행할 수 있습니다. 함수 핸들로 구성된 셀형 배열을 사용하여 여러 개의 출력 함수를 지정합니다.

다음과 같은 2개의 내장 출력 함수가 있습니다.

  • @assignInBase — 각 반복마다 BayesianOptimization 인스턴스를 생성하고 기본 작업 공간의 변수에 할당합니다. SaveVariableName 이름-값 쌍을 사용하여 변수 이름을 선택합니다.

  • @saveToFile — 각 반복마다 BayesianOptimization 인스턴스를 생성하고 현재 폴더의 파일에 저장합니다. SaveFileName 이름-값 쌍을 사용하여 파일 이름을 선택합니다.

또한 고유한 출력 함수를 직접 작성할 수 있습니다. 자세한 내용은 Bayesian Optimization Output Functions 항목을 참조하십시오.

예: 'OutputFcn',{@saveToFile @myOutputFunction}

데이터형: cell | function_handle

@saveToFile 출력 함수의 파일 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 파일 이름에는 '../optimizations/September2.mat'와 같은 경로를 포함할 수 있습니다.

예: 'SaveFileName','September2.mat'

데이터형: char | string

@assignInBase 출력 함수의 변수 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

예: 'SaveVariableName','September2Results'

데이터형: char | string

각 반복 후에 호출되는 플롯 함수로, 'all'이나 함수 핸들로 지정되거나 함수 핸들로 구성된 셀형 배열로 지정됩니다. 플롯 함수는 솔버를 중단할 수 있으며, 플로팅 외에도 변수 생성을 포함한 임의의 계산을 수행할 수 있습니다.

플롯 함수를 사용하지 않으려면 []로 지정합니다.

'all'은 모든 내장 플롯 함수를 호출합니다. 함수 핸들로 구성된 셀형 배열을 사용하여 여러 개의 플롯 함수를 지정합니다.

다음 표에는 내장 플롯 함수가 나와 있습니다.

모델 플롯 — D ≤ 2일 경우 적용설명
@plotAcquisitionFunction

획득 함수의 곡면을 플로팅합니다.

@plotConstraintModels

각 제약 조건 모델의 곡면을 플로팅합니다. 음수 값은 실현가능점을 나타냅니다.

또한 P(실현가능) 곡면을 플로팅합니다.

또한 오류 모델이 있는 경우 –1~1 범위에 플로팅합니다. 음수 값은 모델에 오류가 없을 가능성을 의미하고, 양수 값은 모델에 오류가 있을 가능성을 의미합니다. 이 모델은 다음 식을 따릅니다.

Plotted error = 2*Probability(error) – 1.

@plotObjectiveEvaluationTimeModel

목적 함수 평가 시간 모델의 곡면을 플로팅합니다.

@plotObjectiveModel

fun 모델의 곡면, 추정된 최솟값 위치, 다음 평가를 위해 제안된 점 위치를 플로팅합니다. 1차원 문제의 경우, 평균 함수의 위아래로 각각 하나의 신뢰구간과, 평균 위아래로 각각 1 잡음표준편차 범위를 플로팅합니다.

추적 플롯 — 모든 차원에 적용설명
@plotObjective

함수 평가 횟수 대비 관측된 각 함수 값을 플로팅합니다.

@plotObjectiveEvaluationTime

함수 평가 횟수 대비 관측된 각 함수 평가 시간을 플로팅합니다.

@plotMinObjective

함수 평가 횟수 대비 관측된 최소 함수 값과 추정된 최소 함수 값을 플로팅합니다.

@plotElapsedTime

최적화의 총 경과 시간, 함수 평가의 총 시간, 모델링 및 점 선택의 총 시간에 해당하는 3개의 곡선을 함수 평가 횟수에 따라 플로팅합니다.

고유한 플롯 함수를 직접 작성할 수도 있습니다. 자세한 내용은 Bayesian Optimization Plot Functions 항목을 참조하십시오.

참고

결합 제약 조건(coupled constraint)이 있는 경우, 반복 과정 표시와 플롯 함수는 다음과 같이 직관과 상반되는 결과를 도출할 수 있습니다.

  • 최소 목적 플롯이 증가할 수 있습니다.

  • 최적화가 이전에 실현가능점을 표시했더라도 해당 문제가 실현 불가능하다고 선언할 수 있습니다.

이러한 동작의 이유는 최적화가 진행됨에 따라 어떤 점이 실현 가능한지 여부에 대한 결정이 바뀔 수 있기 때문입니다. bayesopt는 제약 조건 모델을 기준으로 실현가능성 여부 결정하며, 이 모델은 bayesopt가 점을 평가하는 과정에서 변경됩니다. 따라서 나중에 해당 최소 점이 실현 불가능하다고 판단되면 “최소 목적 함수” 플롯이 증가할 수 있으며, 반복 과정 표시에서 실현가능점으로 표시되었던 점이 나중에 실현불가능점으로 판단될 수 있습니다.

예: 'PlotFcn','all'

데이터형: char | string | cell | function_handle

초기화

모두 확장

초기 평가 점으로, N×D 테이블로 지정됩니다. 여기서 N은 평가 점 개수이고 D는 변수 개수입니다.

참고

InitialX만 제공되는 경우 평가할 초기점으로 해석됩니다. 목적 함수는 InitialX에서 평가됩니다.

다른 초기화 파라미터도 제공되는 경우 InitialX는 사전 함수 평가 데이터로 해석됩니다. 목적 함수는 평가되지 않습니다. 누락값이 있으면 NaN으로 설정됩니다.

데이터형: table

InitialX에 대응하는 목적 함수 값으로, 길이가 N인 벡터로 지정됩니다. 여기서 N은 평가 점 개수입니다.

예: 'InitialObjective',[17;-3;-12.5]

데이터형: double

결합 제약 조건의 제약 조건 위반으로, N×K 행렬로 지정됩니다. 여기서 N은 평가 점 개수이고 K는 결합 제약 조건 개수입니다. 자세한 내용은 Coupled Constraints 항목을 참조하십시오.

데이터형: double

InitialX에 대한 오류로, 요소가 -1 또는 1이고 길이가 N인 벡터로 지정됩니다. 여기서 N은 평가 점 개수입니다. 오류가 없으면 -1, 오류가 있으면 1을 지정합니다.

예: 'InitialErrorValues',[-1,-1,-1,-1,1]

데이터형: double

InitialX에 대응하는 초기 데이터로, 길이가 N인 셀형 벡터로 지정됩니다. 여기서 N은 평가 점 개수입니다.

예: 'InitialUserData',{2,3,-1}

데이터형: cell

InitialX에서의 목적 함수 평가 시간으로, 길이가 N인 벡터로 지정됩니다. 여기서 N은 평가 점 개수입니다. 시간은 초 단위로 측정됩니다.

데이터형: double

처음 N번 반복에 대한 시간으로, 길이가 N인 벡터로 지정됩니다. 여기서 N은 평가 점 개수입니다. 시간은 초 단위로 측정됩니다.

데이터형: double

출력 인수

모두 축소

베이즈 최적화 결과로, BayesianOptimization 객체로 반환됩니다.

세부 정보

모두 축소

  • 다음 조건 중 하나에 해당하는 경우 베이즈 최적화를 재현할 수 없습니다.

    • 이름에 per-second가 포함된 획득 함수가 지정되어 있습니다(예: 'expected-improvement-per-second'). per-second 수정자는 최적화가 목적 함수의 런타임에 따라 달라짐을 의미합니다. 자세한 내용은 획득 함수 유형 항목을 참조하십시오.

    • 베이즈 최적화를 병렬로 실행하도록 지정되어 있습니다. 병렬 시간 재현이 불가능하기 때문에, 병렬 베이즈 최적화에서 반드시 재현 가능한 결과를 산출하지는 않습니다. 자세한 내용은 Parallel Bayesian Optimization 항목을 참조하십시오.

확장 기능

모두 확장

버전 내역

R2016b에 개발됨

모두 확장