このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
ベイズ最適化のワークフロー
ベイズ最適化とは
最も一般的な形式の最適化とは、"目的関数" と呼ばれる実数値関数を最小化する点を見つけるプロセスです。ベイズ最適化は、このようなプロセスの 1 つの名前です。ベイズ最適化では、目的関数のガウス過程モデルを内部に保持し、目的関数の評価を使用してモデルに学習をさせます。ベイズ最適化の新機軸の 1 つは "獲得関数" の使用で、これによりアルゴリズムは次の評価点を決定します。獲得関数により、モデル化が十分ではない目的関数がある点における抽出と、まだ十分にはモデル化されていない領域の探索のバランスをとることができます。詳細は、ベイズ最適化のアルゴリズムを参照してください。
ベイズ最適化は、分類および回帰アルゴリズムの "ハイパーパラメーター" の最適化に非常に適していることから、Statistics and Machine Learning Toolbox™ の一部となっています。ハイパーパラメーターは、サポート ベクター マシンのボックス制約やロバスト アンサンブル分類の学習率などと同じく、分類器または回帰関数の内部パラメーターです。これらのパラメーターは分類器または回帰変数の性能に大きく影響を与えますが、概して最適化には困難または多大な時間が伴います。ベイズ最適化の特徴を参照してください。
通常、ハイパーパラメーターの最適化とは、分類器または回帰の交差検証損失を最小化しようとすることを意味します。
ベイズ最適化を実行する方法
ベイズ最適化はいくつかの方法で実行可能です。
fitcauto
およびfitrauto
— 予測子および応答データを関数fitcauto
またはfitrauto
に渡して、モデル タイプの選択とハイパーパラメーターの値を最適化します。他の方法とは異なり、fitcauto
またはfitrauto
を使用する場合は最適化の前に単一のモデルを指定する必要はありません。モデルの選択は最適化プロセスの一部として行われます。最適化により、交差検証損失が最小限に抑えられます。他の方法では単一のガウス過程回帰モデルが使用されますが、fitcauto
では複数のTreeBagger
モデル、fitrauto
では複数のRegressionGP
モデルを使用してモデル化されます。fitcauto
についてはベイズ最適化、fitrauto
についてはベイズ最適化を参照してください。分類学習器アプリおよび回帰学習器アプリ — 機械学習アプリ内で最適化可能モデルを選択し、ベイズ最適化を使用してハイパーパラメーターの値を自動的に調整します。最適化では、選択した検証オプションに基づいてモデルの損失が最小化されます。この方法は、近似関数を使用する場合よりも調整オプションが少ないですが、ベイズ最適化をアプリ内で直接実行できます。分類学習器アプリのハイパーパラメーターの最適化と回帰学習器アプリのハイパーパラメーターの最適化を参照してください。
近似関数 — 近似関数の多くでは、名前と値の引数
OptimizeHyperparameters
を含めることによりベイズ最適化が自動的に適用されます。最適化では交差検証損失は最小になります。このアプローチでは、bayesopt
を使用する場合より調整オプションは少なくなりますが、より簡単にベイズ最適化を実行できます。近似関数を使用したベイズ最適化を参照してください。bayesopt
—bayesopt
を直接呼び出すことにより最適化を最大限制御できます。このアプローチでは、目的関数を記述する必要があります。目的関数が必ずしも交差検証損失を表す必要はありません。bayesopt を使用したベイズ最適化を参照してください。
近似関数を使用したベイズ最適化
以下の手順に従い、ベイズ最適化による交差検証応答の誤差を最小化します。
名前と値の引数
OptimizeHyperparameters
を受け入れる近似関数の中から分類ソルバーまたは回帰ソルバーを選択します。最適化するハイパーパラメーターを決定し、名前と値の引数
OptimizeHyperparameters
で渡します。各近似関数について、一連のハイパーパラメーターから選択できます。各種近似関数で適格とされるハイパーパラメーターを参照するか、関数hyperparameters
を使用するか、近似関数のリファレンス ページを参照してください。パラメーター名の cell 配列を渡すことができます。また、
OptimizeHyperparameters
の値として'auto'
を設定して一般的な最適化対象ハイパーパラメーターを一揃い選択することも、'all'
を設定して使用可能なパラメーターをすべて最適化することもできます。アンサンブル近似関数
fitcecoc
、fitcensemble
およびfitrensemble
の場合は、弱学習器のパラメーターも cell 配列OptimizeHyperparameters
に含めます。オプションとして、名前と値の引数
HyperparameterOptimizationOptions
のオプション構造体を作成します。近似関数のハイパーパラメーター最適化オプションを参照してください。適切な名前と値の引数を使用して近似関数を呼び出します。
例については、ベイズ最適化の使用による分類器の当てはめの最適化とブースティング回帰アンサンブル回帰の最適化を参照してください。また、すべての近似関数のリファレンス ページにはベイズ最適化の例が含まれています。
bayesopt
を使用したベイズ最適化
以下の手順に従い、bayesopt
を用したベイズ最適化を実行します。
変数を準備します。ベイズ最適化用の変数を参照してください。
目的関数を作成します。ベイズ最適化の目的関数を参照してください。必要に応じて制約も作成します。ベイズ最適化の制約を参照してください。目的関数に追加のパラメーターを含めるには、関数のパラメーター化を参照してください。
オプション、つまり
bayseopt
のName,Value
ペアを決定します。bayesopt
にオプションを渡すことは必須ではありませんが、(解を改善しようとする場合は特に) 渡すことが一般的です。bayesopt
を呼び出します。解を調べます。
resume
を使用して最適化を再開するか、(通常はオプションを修正して) 最適化をやり直すことができます。
たとえば、bayesopt を使用した交差検証分類器の最適化を参照してください。
ベイズ最適化の特徴
ベイズ最適化アルゴリズムは、次のようなタイプの問題に最適です。
特徴 | 詳細 |
---|---|
低次元 | ベイズ最適化は次元数が少ない場合 (通常は 10 以下) に最適に機能します。変数が数十個ある問題をベイズ最適化で解くことができる場合もありますが、約 50 以上の次元には推奨されません。 |
計算負荷が高い目的関数 | ベイズ最適化は、評価に時間がかかる目的関数用に設計されています。相当な量のオーバーヘッド (通常は各反復について数秒) があります。 |
低精度 | ベイズ最適化では、結果が必ずしも非常に正確であるとは限りません。目的関数が確定的である場合、標準的な最適化アルゴリズムを |
大域解 | ベイズ最適化は大域的な手法です。他の多くのアルゴリズムとは異なり、さまざまな初期点からアルゴリズムを開始しなくても大域解を求めることができます。 |
ハイパーパラメーター | ベイズ最適化は、別の関数の "ハイパーパラメーター" の最適化に非常に適しています。ハイパーパラメーターは関数の動作を制御するパラメーターです。たとえば、関数 |
近似関数で使用可能なパラメーター
各種近似関数で適格とされるハイパーパラメーター
近似関数のハイパーパラメーター最適化オプション
近似関数を使用して最適化を行う場合、以下のオプションを名前と値の引数 HyperparameterOptimizationOptions
で使用できます。値は構造体として与えます。この構造体のフィールドは、すべてオプションです。
フィールド名 | 値 | 既定の設定 |
---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
オブジェクト関数のランタイムによって最適化が異なるので、名前に | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | 目的関数評価の最大数。 | 'bayesopt' および 'randomsearch' の場合は 30 、'gridsearch' の場合はグリッド全体 |
MaxTime | 制限時間。正の実数スカラーを指定します。制限時間の単位は、 | Inf |
NumGridDivisions | 'gridsearch' における各次元の値の個数。値は、各次元の値の個数を表す正の整数のベクトル、またはすべての次元に適用されるスカラーが可能です。カテゴリカル変数の場合、このフィールドは無視されます。 | 10 |
ShowPlots | プロットを表示するかどうかを示す論理値。true の場合、最良の観測された目的関数の値が反復回数に対してプロットされます。ベイズ最適化を使用する場合 (Optimizer が 'bayesopt' )、最良の推定された目的関数値もプロットされます。最良の観測された目的関数値および最良の推定された目的関数値は、反復表示の BestSoFar (observed) 列および BestSoFar (estim.) 列の値にそれぞれ対応しています。これらの値は、Mdl.HyperparameterOptimizationResults のプロパティ ObjectiveMinimumTrace および EstimatedObjectiveMinimumTrace で確認できます。問題にベイズ最適化の最適化パラメーターが 1 つまたは 2 つある場合、ShowPlots はパラメーターに対する目的関数のモデルもプロットします。 | true |
SaveIntermediateResults | Optimizer が 'bayesopt' である場合に結果を保存するかどうかを示す論理値。true の場合、'BayesoptResults' という名前のワークスペース変数が反復ごとに上書きされます。この変数は BayesianOptimization オブジェクトです。 | false |
Verbose | コマンド ラインに次を表示します。
詳細については、 | 1 |
UseParallel | ベイズ最適化を並列実行するかどうかを示す論理値。並列実行には Parallel Computing Toolbox™ が必要です。並列でのタイミングに再現性がないため、並列ベイズ最適化で再現性のある結果が生成されるとは限りません。詳細については、並列ベイズ最適化を参照してください。 | false |
Repartition | 反復ごとに交差検証を再分割するかどうかを示す論理値。 分割ノイズが考慮されるので、通常は | false |
以下の 3 つのオプションは 1 つだけ使用できます。 | ||
CVPartition | cvpartition によって作成される cvpartition オブジェクト | 交差検証フィールドが指定されていない場合 'Kfold',5 |
Holdout | ホールドアウトの比率を表す範囲 (0,1) のスカラー | |
Kfold | 1 より大きい整数 |
参考
bayesopt
| BayesianOptimization