主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

ベイズ最適化のワークフロー

ベイズ最適化とは

最も一般的な形式の最適化とは,"目的関数"と呼ばれる実数値関数を最小化する点を見つけるプロセスです。ベイズ最適化は,このようなプロセスの1つの名前です。ベイズ最適化では、目的関数のガウス過程モデルを内部に保持し、目的関数の評価を使用してモデルに学習をさせます。ベイズ最適化の新機軸の 1 つは"獲得関数"の使用で,これによりアルゴリズムは次の評価点を決定します。獲得関数により,モデル化が十分ではない目的関数がある点における抽出と,まだ十分にはモデル化されていない領域の探索のバランスをとることができます。詳細は,ベイズ最適化のアルゴリズムを参照してください。

ベイズ最適化は,分類および回帰アルゴリズムの“ハイパーパラメーター”の最適化に非常に適していることから,统计和机器学习工具箱™の一部となっています。ハイパーパラメーターは、サポート ベクター マシンのボックス制約やロバスト アンサンブル分類の学習率などと同じく、分類器または回帰関数の内部パラメーターです。これらのパラメーターは分類器または回帰変数の性能に大きく影響を与えますが、概して最適化には困難または多大な時間が伴います。ベイズ最適化の特徴を参照してください。

通常,ハイパーパラメーターの最適化とは,分類器または回帰の交差検証損失を最小化しようとすることを意味します。

ベイズ最適化を実行する方法

ベイズ最適化はいくつかの方法で実行可能です。

  • fitcautoおよびfitrauto——予測子および応答データを関数fitcautoまたはfitrautoに渡して,モデルタイプの選択とハイパーパラメーターの値を最適化します。他の方法とは異なり,fitcautoまたはfitrautoを使用する場合は最適化の前に単一のモデルを指定する必要はありません。モデルの選択は最適化プロセスの一部として行われます。最適化により,交差検証損失が最小限に抑えられます。他の方法では単一のガウス過程回帰モデルが使用されますが,fitcautoでは複数のTreeBaggerモデル,fitrautoでは複数のRegressionGPモデルを使用してモデル化されます。fitcautoについてはベイズ最適化fitrautoについてはベイズ最適化を参照してください。

  • 分類学習器アプリおよび回帰学習器アプリ——機械学習アプリ内で最適化可能モデルを選択し,ベイズ最適化を使用してハイパーパラメーターの値を自動的に調整します。最適化では,選択した検証オプションに基づいてモデルの損失が最小化されます。この方法は,近似関数を使用する場合よりも調整オプションが少ないですが,ベイズ最適化をアプリ内で直接実行できます。分類学習器アプリのハイパーパラメーターの最適化回帰学習器アプリのハイパーパラメーターの最適化を参照してください。

  • 近似関数——近似関数の多くでは,名前と値のペアOptimizeHyperparametersを含めることによりベイズ最適化が自動的に適用されます。最適化では交差検証損失は最小になります。このアプローチでは,bayesoptを使用する場合より調整オプションは少なくなりますが,より簡単にベイズ最適化を実行できます。近似関数を使用したベイズ最適化を参照してください。

  • bayesopt- - - - - -bayesoptを直接呼び出すことにより最適化を最大限制御できます。このアプローチでは,目的関数を記述する必要があります。目的関数が必ずしも交差検証損失を表す必要はありません。bayesoptを使用したベイズ最適化を参照してください。

近似関数を使用したベイズ最適化

以下の手順に従い,ベイズ最適化による交差検証応答の誤差を最小化します。

  1. 分類ソルバーまたは回帰ソルバーをfitcdiscrfitcecocfitcensemblefitckernelfitcknnfitclinearfitcnbfitcsvmfitctreefitrensemblefitrgpfitrkernelfitrlinearfitrsvmまたはfitrtreeから選択します。

  2. 最適化するハイパーパラメーターを決定し,名前と値のペアOptimizeHyperparametersで渡します。各近似関数について,一連のハイパーパラメーターから選択できます。各種近似関数で適格とされるハイパーパラメーターを参照するか,関数hyperparametersを使用するか,近似関数のリファレンスページを参照してください。

    パラメーター名の细胞配列を渡すことができます。また,OptimizeHyperparametersの値として“汽车”を設定して一般的な最適化対象ハイパーパラメーターを一揃い選択することも,“所有”を設定して使用可能なパラメーターをすべて最適化することもできます。

  3. アンサンブル近似関数fitcecocfitcensembleおよびfitrensembleの場合は,弱学習器のパラメーターも细胞配列OptimizeHyperparametersに含めます。

  4. オプションとして,名前と値のペアHyperparameterOptimizationOptionsのオプション構造体を作成します。近似関数のハイパーパラメーター最適化オプションを参照してください。

  5. 適切な名前と値のペアを使用して近似関数を呼び出します。

例については,ベイズ最適化の使用によるSVM分類器のあてはめの最適化ブースティング回帰アンサンブル回帰の最適化を参照してください。また,すべての近似関数のリファレンス ページにはベイズ最適化の例が含まれています。

bayesoptを使用したベイズ最適化

以下の手順に従い,bayesoptを用したベイズ最適化を実行します。

  1. 変数を準備します。ベイズ最適化用の変数を参照してください。

  2. 目的関数を作成します。ベイズ最適化の目的関数を参照してください。必要に応じて制約も作成します。ベイズ最適化の制約を参照してください。目的関数に追加のパラメーターを含めるには,関数のパラメーター化を参照してください。

  3. オプション,つまりbayseopt名称,值ペアを決定します。bayesoptにオプションを渡すことは必須ではありませんが,(解を改善しようとする場合は特に)渡すことが一般的です。

  4. bayesoptを呼び出します。

  5. 解を調べます。的简历を使用して最適化を再開するか,(通常はオプションを修正して)最適化をやり直すことができます。

たとえば,bayesoptを使用した交差検証済みSVM分類器の最適化を参照してください。

ベイズ最適化の特徴

ベイズ最適化アルゴリズムは,次のようなタイプの問題に最適です。

特徴 詳細
低次元

ベイズ最適化は次元数が少ない場合(通常は10以下)に最適に機能します。変数が数十個ある問題をベイズ最適化で解くことができる場合もありますが,約50以上の次元には推奨されません。

計算負荷が高い目的関数

ベイズ最適化は,評価に時間がかかる目的関数用に設計されています。相当な量のオーバーヘッド(通常は各反復について数秒)があります。

低精度

ベイズ最適化では,結果が必ずしも非常に正確であるとは限りません。目的関数が確定的である場合,標準的な最適化アルゴリズムをbayesoptソリューションから開始することにより,精度が向上する可能性があります。

大域解

ベイズ最適化は大域的な手法です。他の多くのアルゴリズムとは異なり,さまざまな初期点からアルゴリズムを開始しなくても大域解を求めることができます。

ハイパーパラメーター

ベイズ最適化は,別の関数の“ハイパーパラメーター”の最適化に非常に適しています。ハイパーパラメーターは関数の動作を制御するパラメーターです。たとえば、関数fitcsvmはSVMモデルをデータにあてはめます。これは,その“rbf”KernelFunctionBoxConstraintおよびKernelScaleというハイパーパラメーターをもちます。ハイパーパラメーターに適用されるベイズ最適化の例については、bayesoptを使用した交差検証済みSVM分類器の最適化を参照してください。

近似関数で使用可能なパラメーター

各種近似関数で適格とされるハイパーパラメーター

関数名 適格なハイパーパラメーター
fitcdiscr δ
γ
DiscrimType
fitcecoc 编码
“学习者”,“判别”で使用可能なfitcdiscrパラメーター
“学习者”,“内核”で使用可能なfitckernelパラメーター
“学习者”,“资讯”で使用可能なfitcknnパラメーター
“学习者”,“线性”で使用可能なfitclinearパラメーター
“学习者”,“支持向量机”で使用可能なfitcsvmパラメーター
“学习者”,“树”で使用可能なfitctreeパラメーター
fitcensemble 方法
NumLearningCycles
LearnRate
“学习者”,“判别”で使用可能なfitcdiscrパラメーター
“学习者”,“资讯”で使用可能なfitcknnパラメーター
“学习者”,“树”で使用可能なfitctreeパラメーター
fitckernel “学习者”
“KernelScale”
“λ”
“NumExpansionDimensions”
fitcknn NumNeighbors
距离
DistanceWeight
指数
标准化
fitclinear λ
学习者
正则化
fitcnb DistributionNames
宽度
内核
fitcsvm BoxConstraint
KernelScale
KernelFunction
PolynomialOrder
标准化
fitctree MinLeafSize
MaxNumSplits
SplitCriterion
NumVariablesToSample
fitrensemble 方法
NumLearningCycles
LearnRate
“学习者”,“树”に適格なfitrtreeのパラメーター
MinLeafSize
MaxNumSplits
NumVariablesToSample
fitrgp σ
BasisFunction
KernelFunction
KernelScale
标准化
fitrkernel 学习者
KernelScale
λ
NumExpansionDimensions
ε
fitrlinear λ
学习者
正则化
fitrsvm BoxConstraint
KernelScale
ε
KernelFunction
PolynomialOrder
标准化
fitrtree MinLeafSize
MaxNumSplits
NumVariablesToSample

近似関数のハイパーパラメーター最適化オプション

近似関数を使用して最適化を行う場合,以下のオプションを名前と値のペアHyperparameterOptimizationOptionsで使用できます。値は構造体として与えます。この構造体のフィールドは、すべてオプションです。

フィールド名 既定の設定
优化器
  • “bayesopt”——ベイズ最適化を使用。内部的にはbayesoptが呼び出されます。

  • “gridsearch”——次元ごとにNumGridDivisionsの値があるグリッド探索を使用。

  • “randomsearch”- - - - - -MaxObjectiveEvaluations個の点で無作為に探索。

“gridsearch”では,グリッドからの一様な非復元抽出により,無作為な順序で探索します。最適化後、sortrows (Mdl.HyperparameterOptimizationResults)コマンドを使用してグリッド順のテーブルを取得できます。

“bayesopt”
AcquisitionFunctionName

  • “expected-improvement-per-second-plus”

  • “expected-improvement”

  • “expected-improvement-plus”

  • “expected-improvement-per-second”

  • “lower-confidence-bound”

  • “probability-of-improvement”

オブジェクト関数のランタイムによって最適化が異なるので,名前に每秒が含まれている獲得関数は,再現性がある結果を生成しません。名前に+が含まれている獲得関数は,領域を過剰利用している場合に動作を変更します。詳細は,獲得関数のタイプを参照してください。

“expected-improvement-per-second-plus”
MaxObjectiveEvaluations 目的関数評価の最大的数。 “bayesopt”または“randomsearch”の場合は30.“gridsearch”の場合はグリッド全体
MaxTime

制限時間。正の実数を指定します。制限時間の単位は,抽搐tocによって測定される秒です。MaxTimeは関数評価を中断させないため,実行時間がMaxTimeを超える可能性があります。

NumGridDivisions “gridsearch”における各次元の値の個数。値は、各次元の値の個数を表す正の整数のベクトル、またはすべての次元に適用されるスカラーが可能です。カテゴリカル変数の場合、このフィールドは無視されます。 10
ShowPlots プロットを表示するかどうかを示す論理値。真正的の場合,最良の目的関数の値が反復回数に対してプロットされます。1つまたは2つの最適化パラメーターがあり,优化器“bayesopt”である場合,ShowPlotsはパラメーターに対する目的関数のモデルのプロットも行います。 真正的
SaveIntermediateResults 优化器“bayesopt”である場合に結果を保存するかどうかを示す論理値。真正的の場合,“BayesoptResults”という名前のワークスペース変数が反復ごとに上書きされます。この変数はBayesianOptimizationオブジェクトです。
详细的

コマンドラインへの表示。

  • 0——反復表示なし

  • 1——反復表示あり

  • 2——追加情報付きで反復表示あり

詳細については,bayesoptの名前と値のペアの引数详细的を参照してください。

1
UseParallel ベイズ最適化を並列実行するかどうかを示す論理値。並列実行には并行计算工具箱™が必要です。並列でのタイミングに再現性がないため,並列ベイズ最適化で再現性のある結果が生成されるとは限りません。詳細については,並列ベイズ最適化を参照してください。
重新分区

反復ごとに交差検証を再分割するかどうかを示す論理値。の場合,オプティマイザーは単一の分割を最適化に使用します。

分割ノイズが考慮されるので,通常は真正的にすると最も確実な結果が得られます。ただし,真正的で良好な結果を得るには,2倍以上の関数評価が必要になります。

以下の3つのフィールド名は1つだけ使用できます。
CVPartition cvpartitionによって作成されるcvpartitionオブジェクト。 交差検証フィールドが指定されていない場合“Kfold”,5
坚持 ホールドアウトの比率を表す範囲(0,1)のスカラー。
Kfold 1より大きい整数。

参考

|

関連するトピック