Main Content

resume

ベイズ最適化の再開

説明

newresults = resume(results,Name,Value) は、1 つ以上の名前と値の引数で指定された追加オプションを使用して、results を生成した最適化を再開します。

すべて折りたたむ

この例では、ベイズ最適化を再開する方法を示します。この最適化は、非線形最適化のテスト ケースとして有名な Rosenbrock の関数と呼ばれる確定的関数に関するものです。この関数には、点 [1,1] に大域的最小値 0 があります。

-5 および 5 という境界がある 2 つの実数変数を作成します。

x1 = optimizableVariable("x1",[-5,5]);
x2 = optimizableVariable("x2",[-5,5]);
vars = [x1,x2];

Rosenbrock の関数に対応する rosenbrocks という名前の目的関数を定義します。

type rosenbrocks.m % Display contents of rosenbrocks.m file
function f = rosenbrocks(x)

f = 100*(x.x2 - x.x1^2)^2 + (1 - x.x1)^2;

メモ: このページの右上にあるボタンをクリックしてこの例を MATLAB® で開くと、MATLAB で例のフォルダーが開きます。このフォルダーには、目的関数のファイルが含まれています。

目的関数の関数ハンドルを作成します。

fun = @rosenbrocks;

再現性を得るため、乱数シードを設定し、最適化の獲得関数を "expected-improvement-plus" に設定します。

rng("default")
results = bayesopt(fun,vars,"Verbose",0, ...
    "AcquisitionFunctionName","expected-improvement-plus");

Figure contains an axes object. The axes object with title Objective function model, xlabel x1, ylabel x2 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.XAtMinObjective
ans=1×2 table
      x1        x2  
    ______    ______

    1.7902    3.2287

results.MinEstimatedObjective
ans = -9.1194

最良の点が最適な点にあまり近くなく、この関数モデルは不正確です。30 個の点を追加して (合計 60 個の点で) 最適化を再開します。今回は、目的関数が確定的であることをオプティマイザーに指定します。

newresults = resume(results,"IsObjectiveDeterministic",true, ...
    "MaxObjectiveEvaluations",30);

Figure contains an axes object. The axes object with title Objective function model, xlabel x1, ylabel x2 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.

newresults.XAtMinObjective
ans=1×2 table
      x1         x2   
    _______    _______

    0.95093    0.90364

newresults.MinEstimatedObjective
ans = -0.0106

今回は最良の点が真の最適な点に近く、目的関数モデルが真の関数に近づいています。

入力引数

すべて折りたたむ

ベイズ最適化の結果。BayesianOptimization オブジェクトを指定します。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: resume(results,'MaxObjectiveEvaluations',60)

Initial で始まるものを除き、bayesopt が受け入れる名前と値の引数をすべて使用できます。bayesopt入力引数を参照してください。

メモ

名前と値の引数 MaxObjectiveEvaluations および MaxTime は、results に格納されている数値に対する "追加の" 時間または評価回数を意味します。したがって、たとえば、評価回数の既定値を使用すると、元の指定に 30 を加算することになります。

さらに、次の名前と値の引数を使用できます。

変数の変更。OptimizableVariable オブジェクトを指定します。

最適化の変数について、以下のプロパティのみを変更できます。

  • 実数または整数の変数の Range。たとえば、以下のようにします。

    xvar = optimizableVariable('x',[-10,10]);
    % Modify the range:
    xvar.Range = [1,5];
  • 'integer''real'Type。たとえば、以下のようにします。

    xvar.Type = 'integer';
  • 実数または整数の変数の、'log''none' の間での Transform。たとえば、以下のようにします。

    xvar.Transform = 'log';

出力引数

すべて折りたたむ

最適化の結果。BayesianOptimization オブジェクトとして返されます。

バージョン履歴

R2016b で導入