ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

resume

ベイズ最適化を再開

説明

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

すべて折りたたむ

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

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

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

目的関数を作成します。

function f = rosenbrocks(x)

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

fun = @rosenbrocks;

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

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

求められた最良の点と、モデル化された最良の目的関数を表示します。

results.XAtMinObjective
results.MinEstimatedObjective
ans =

  1x2 table

      x1        x2  
    ______    ______

    1.2421    1.5299


ans =

   -9.5402

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

newresults = resume(results,'IsObjectiveDeterministic',true,'MaxObjectiveEvaluations',30);
newresults.XAtMinObjective
newresults.MinEstimatedObjective
ans =

  1x2 table

      x1        x2  
    ______    ______

    1.0526    1.1098


ans =

   -0.0041

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

入力引数

すべて折りたたむ

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

名前と値のペアの引数

オプションの Name,Value 引数のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: 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 で導入