resume
ベイズ最適化の再開
説明
は、1 つ以上の名前と値の引数で指定された追加オプションを使用して、newresults
= resume(results
,Name,Value
)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");
求められた最良の点と、モデル化された最良の目的関数を表示します。
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);
newresults.XAtMinObjective
ans=1×2 table
x1 x2
_______ _______
0.95093 0.90364
newresults.MinEstimatedObjective
ans = -0.0106
今回は最良の点が真の最適な点に近く、目的関数モデルが真の関数に近づいています。
入力引数
results
— ベイズ最適化の結果
BayesianOptimization
オブジェクト
ベイズ最適化の結果。BayesianOptimization
オブジェクトを指定します。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: resume(results,'MaxObjectiveEvaluations',60)
Initial
で始まるものを除き、bayesopt
が受け入れる名前と値の引数をすべて使用できます。bayesopt
の入力引数を参照してください。
メモ
名前と値の引数 MaxObjectiveEvaluations
および MaxTime
は、results
に格納されている数値に対する "追加の" 時間または評価回数を意味します。したがって、たとえば、評価回数の既定値を使用すると、元の指定に 30
を加算することになります。
さらに、次の名前と値の引数を使用できます。
VariableDescriptions
— 変数の変更
OptimizableVariable
オブジェクト
変数の変更。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';
出力引数
newresults
— 最適化の結果
BayesianOptimization
オブジェクト
最適化の結果。BayesianOptimization
オブジェクトとして返されます。
バージョン履歴
R2016b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)