このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ベイズ最適化のワークフロー
ベイズ最適化とは
最も一般的な形式の最適化とは、"目的関数" と呼ばれる実数値関数を最小化する点を見つけるプロセスです。ベイズ最適化は、このようなプロセスの 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
を受け入れる近似関数の中から分類ソルバーまたは回帰ソルバーを選択します。分類近似関数:
fitcdiscr
、fitcecoc
、fitcensemble
、fitcgam
、fitckernel
、fitcknn
、fitclinear
、fitcnb
、fitcnet
、fitcsvm
、fitctree
回帰近似関数:
fitrensemble
、fitrgam
、fitrgp
、fitrkernel
、fitrlinear
、fitrnet
、fitrsvm
、fitrtree
分位点回帰近似関数:
fitrqlinear
、fitrqnet
最適化するハイパーパラメーターを決定し、名前と値の引数
OptimizeHyperparameters
で渡します。各近似関数について、一連のハイパーパラメーターから選択できます。各種近似関数で適格とされるハイパーパラメーターを参照するか、関数hyperparameters
を使用するか、近似関数のリファレンス ページを参照してください。パラメーター名の cell 配列を渡すことができます。また、
OptimizeHyperparameters
の値として'auto'
を設定して一般的な最適化対象ハイパーパラメーターを一揃い選択することも、'all'
を設定して使用可能なパラメーターをすべて最適化することもできます。アンサンブル近似関数
fitcecoc
、fitcensemble
およびfitrensemble
の場合は、弱学習器のパラメーターも cell 配列OptimizeHyperparameters
に含めます。オプションとして、名前と値の引数
HyperparameterOptimizationOptions
のオプション構造体またはオブジェクトを作成します。たとえば、交差検証損失 (既定) またはモデルのコンパクト サイズに基づいて最適化するように指定できます。また、オプションは同じでも制約範囲は異なる一連の最適化問題を実行することもできます。詳細については、近似関数のリファレンス ページに記載された名前と値の引数HyperparameterOptimizationOptions
の説明を参照してください。適切な名前と値の引数を使用して近似関数を呼び出します。
例については、ベイズ最適化の使用による分類器の当てはめの最適化とブースティング回帰アンサンブル回帰の最適化を参照してください。また、すべての近似関数のリファレンス ページにはベイズ最適化の例が含まれています。
bayesopt
を使用したベイズ最適化
以下の手順に従い、bayesopt
を用したベイズ最適化を実行します。
変数を準備します。ベイズ最適化用の変数を参照してください。
目的関数を作成します。ベイズ最適化の目的関数を参照してください。必要に応じて制約も作成します。ベイズ最適化の制約を参照してください。目的関数に追加のパラメーターを含めるには、関数のパラメーター化を参照してください。
オプション、つまり
bayseopt
のName,Value
ペアを決定します。bayesopt
にオプションを渡すことは必須ではありませんが、(解を改善しようとする場合は特に) 渡すことが一般的です。bayesopt
を呼び出します。解を調べます。
resume
を使用して最適化を再開するか、(通常はオプションを修正して) 最適化をやり直すことができます。
たとえば、bayesopt を使用した交差検証分類器の最適化を参照してください。
ベイズ最適化の特徴
ベイズ最適化アルゴリズムは、次のようなタイプの問題に最適です。
特徴 | 詳細 |
---|---|
低次元 | ベイズ最適化は次元数が少ない場合 (通常は 10 以下) に最適に機能します。変数が数十個ある問題をベイズ最適化で解くことができる場合もありますが、約 50 以上の次元には推奨されません。 |
計算負荷が高い目的関数 | ベイズ最適化は、評価に時間がかかる目的関数用に設計されています。相当な量のオーバーヘッド (通常は各反復について数秒) があります。 |
低精度 | ベイズ最適化では、結果が必ずしも非常に正確であるとは限りません。目的関数が確定的である場合、標準的な最適化アルゴリズムを |
グローバルな解 | ベイズ最適化はグローバルな手法です。他の多くのアルゴリズムとは異なり、さまざまな初期点からアルゴリズムを開始しなくてもグローバルな解を求めることができます。 |
ハイパーパラメーター | ベイズ最適化は、別の関数の "ハイパーパラメーター" の最適化に非常に適しています。ハイパーパラメーターは関数の動作を制御するパラメーターです。たとえば、関数 |
近似関数で使用可能なパラメーター
各種近似関数で適格とされるハイパーパラメーター
参考
bayesopt
| BayesianOptimization